こんにちは、アルフォンソと申します。カシカのエンジニアです。
今日は、Gaussian Splattingを簡単に使い始める方法を説明したいと思います。
This article English version is HERE
例のクマのgaussian splatingデモも展示してます。 pic.twitter.com/eJC9IbRAkB
— 株式会社カシカ (@kashikacojp) September 18, 2023
Gaussian Splatting インストール
はじめに、Gaussin Splattingを使うのために、いろいろな プログラムとライブラリをインストールする必要があります。
ハードウェア要件
- CUDA-ready GPU / CUDA 7.0+
- 24 GB VRAM (小さいデータであれば、少ないVRAMでも可能)
ソフトウェア要件
- Git
- Conda
- Visual Studio 2019 (または新しいバージョン)
- CUDA Toolkit SDK 11.8
- COLMAP
- ImageMagik
- FFMPEG
CondaとVisual StudioとGitのインストールは、インストーラをダウンロードして、指示に従ってください。簡単です。
CUDA Toolkitのインストールは少し面倒かもしれません, インストールするにはこのガイドをお勧めします here.
nvcc
(CUDAコンパイラ)をPATH
に入れるのは忘れないでください。
まだ, Colmap と ImageMagick と FFMPEGダウンロードしてインストールする必要があります。インストールの後でインストールのフォルダーをPATH
に入れていください。
次のステップでは、Gaussian Splatting gitのリポジトリのクローンを作成するのために、次のコマンドを使用してください。
git clone https://github.com/graphdeco-inria/gaussian-splatting --recursive
(--recursive
オプションは重要です。Gaussian Splattingのリポジトリには外部 gitのサブモジュールがあり、これもダウンロードする必要があります。)
次に、Gaussian Splattingのフォルダー内で、次のコマンドを (1 つずつ) 実行します。
SET DISTUTILS_USE_SDK=1
conda env create --file environment.yml
conda activate gaussian_splatting
これにより、Gaussian Splatting用の Conda 環境が作成されます。この環境名はgaussian_splatting
です。Gaussian Splattingを使用するには、最初に Conda 環境をアクティブにする必要があります。これには、次のコマンド conda activate gaussian_splatting
を使用します。
ノート 1. Conda は PowerShell で実行せず、Conda はコマンド プロンプトで実行してください。
ノート 2. エラーやインストールの問題が発生した場合は、このガイドに従ってください。
画像の取り込み方法
前回のガイドでは、NERF が SIFT(Scale-Invariant Feature Transform) を使用してカメラの位置を計算していることを説明しました。Gaussian Splattingは Instant NGP と同じようにColmapを使用してカメラ位置を取得します。したがって、画像には SIFT 機能が必要です。エッジ、コーナー、境界線。SIFT の機能が不十分な場合、カメラ位置推定は正しく行われません。
撮影のクイックヒント:
- 穴ができないようにする. モデルに穴ができないようにするため、 あらゆる角度からオブジェクトを撮影することが重要です。
- 少ないほど良い. 使用する画像を手動で選択する。トリミングされた、焦点が合っていない、または遮られたオブジェクトを含む画像を破棄します。 最小限の枚数で、あらゆる角度から撮影することが重要です。
- 静的オブジェクトのみ. Gaussian Splatting は静的オブジェクトでのみ機能します。撮影中にオブジェクトが動かないことが重要です。
ビデオからの画像 (オプション)
ffmpegを使用すると、ビデオから入力画像を抽出できます。 これには次のコマンドを使用します:
ffmpeg -i input_video.mp4 -qscale:v 1 -qmin 1 -vf fps=4 $04d.jpg
これにより、毎秒 4 フレームが抽出され、JPG 画像が 4 桁の番号名で保存されます。
オブジェクトのマスキング (オプション)
オプションで、オブジェクトを背景から分離できます。これの利点は、出力モデルがより小さく明確になることです。 このために、rembg という Python ライブラリを使用します。 この AIライブラリは、オブジェクトと背景を分離することができます。
Conda 環境内で pip
を使用して rembg をインストールします:
pip install rembg[cli]
次に、フォルダー内のすべての写真を処理するのために、次のコマンドを使用してください:
rembg p path/to/input path/to/output
最高の画像の選択
最高の写真を選択することを忘れないでください。これは重要、たった 1 枚の間違った画像がノイズを生み出す。オブジェクトの焦点がずれたり、切り取られたり、遮られたりしてはいけません。
トレーニング済みモデルのビューア
トレーニング済みモデルはoption
フォルダーに保存されます。フォルダー名はランダムです。フォルダーを見つけるには、作成日を確認するだけです。
トレーニングの結果は点群です。この点群は、特別なビューアを使用してのみレンダリングできます。 ビューアのダウンロードはこちらから here。
ビューアをダウンロードして解凍します。 そして、次のコマンドを実行します
SIBR_gaussianViewer_app -m output/random_folder_name
結果は次のようになります:
古い車:
盆栽(マスク済み):
くま (マスク済み):