3D Gaussian Splattingの使い方 (Windows環境構築)

NeRFとは異なる、新たなRadiance Fieldの技術「3D Gaussian Splatting for Real-Time Radiance Field Rendering」の使い方、環境構築手順をまとめました。

手順は公式GitHubのREADMEにもありますが、こうした環境構築に慣れてない自分は結構てこづったので、必要な手順を細かくまとめました。

・こちらはWindows用の手順です。
・環境構築やコマンドラインでの使い方にハードルを感じる場合は、GUIでの操作が可能なJawsetのPostshotが便利です。

サンプルだけ触ってみたい人は

記事の最後にその手順をまとめました。
データをDLして専用ビューワーで開くのみです。
環境構築や自前のデータを用意せず3D Gaussian Splattingがどんなものか触ってみたい人向け。

環境構築参考サイト

環境構築手順はこちらの方もまとめられているので、うまくいかない場合はこちらも合わせて参考にしてみてください。
The NeRF Guru氏 – YouTube
Alex Carlier氏 – ブログ
ft-lab氏 – ブログ

環境構築手順

上記サイトでは3D Gaussian Splattingを使ううえでその他の便利な機能の導入も紹介されていますが、以下にまとめた手順は純粋にGaussian Splattingのみを使うためのものです。

前提としてHardware Requirementsをクリアしてる必要があります。
(VRAMは24GB推奨ですが足りなくとも処理自体は可能 詳しくはFAQ参照)

ハードがOKであれば、Software Requirements に書かれている必要なソフトを用意します。

Software Requirements
・Conda (recommended for easy setup)
・C++ Compiler for PyTorch extensions (we used Visual Studio 2019 for Windows)
・CUDA SDK 11 for PyTorch extensions, install after Visual Studio (we used 11.8, known issues with 11.6)
・C++ Compiler and CUDA SDK must be compatible

具体的には以下に順に説明します。

Visual Studio編

・C++ Compiler for PyTorch extensions (we used Visual Studio 2019 for Windows)

Visual Studio 2019 をインストールする。
インストール出来たらVisual Studio Installerを立ち上げる。
「C++ によるデスクトップ開発」が必要なのでこれを有効にする。

CUDA編

・CUDA SDK 11 for PyTorch extensions, install after Visual Studio (we used 11.8, known issues with 11.6)

CUDA Toolkit 11.8が必要なのでインストールする。
(私の環境には元々CUDA 11.7が入ってたのでそのまま進めたが、だめだった。ちゃんと11.8を入れる)

インストーラーは ここ からDL。

インストールしたら、システム環境変数を確認する。

CUDA_PATHの値がインストールしたCUDA11.8のバージョンになっていることを確認する。
別のバージョンになっていた場合は11.8のパスを指定する。

環境変数Pathも以下の通り追加する。

C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.8\bin
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.8\libnvvp

バッチ編

後の手順でcl.exeへの参照があるので、事前に
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build\vcvars64.bat
のバッチファイルをダブルクリックで実行し環境変数を設定する。

実行すると一瞬黒いコマンドプロンプトの画面が立ち上がりすぐ消える。

Git編

GitHubからクローンするのでGitをインストールする。
https://git-scm.com/

Gitのインストールが必要なのは、GitHubからはzipファイルのダウンロードではなくクローンするため。
zipダウンロードだとサブモジュールが読み込まれないので注意。

Gitをインストールしたら、コマンドプロンプトを起動する。

GitHubからクローンするのでクローン先のディレクトリを作成し、そこへ移動する。
例) cd E:\Git\lileaLab\GaussianSplatting

クローンする。
git clone https://github.com/graphdeco-inria/gaussian-splatting --recursive

末尾にある --recusiveはサブモジュールもインストールするためのオプション。

Anaconda編

・Conda (recommended for easy setup)

Pythonの仮想環境を使うため、Anacondaをインストールする。https://www.anaconda.com/

インストールできたら、Anaconda Promptを起動する。

SET DISTUTILS_USE_SDK=1を実行する。

※DISTUTILS_USE_SDKとは こちら を参考

クローンしたディレクトリに移動する。
例) cd E:\Git\lileaLab\GaussianSplatting/gaussian-splatting

conda env create --file environment.ymlコマンドで仮想環境を作成する。

ここでエラーになる場合は、前手順で用意したソフトのバージョンや環境変数の設定に誤りがないか見直しましょう。

環境構築は以上。

独自データ作成

COLMAP編

独自データの作成ではCOLMAPが使われるのでGitHubからDLしインストールしておく。
https://github.com/colmap/colmap/releases

インストールしたら環境変数を設定しておく。

独自の画像データを用意したら、一つのフォルダにまとめる。
ここでは仮にDataとする。Dataフォルダ内にinputフォルダを作成し、その中に画像を一式入れる。
Data
└input
. ├image0001.jpg
. ├image0002.jpg
. ├image0003.jpg
. ︙

独自データの作成にはクローンしたデータ内にあるconvert.pyを使う。
オプションでCOLMAP.batの場所と、独自データを保存したフォルダを指定する。
例) python convert.py --colmap_executable "D:\GoogleDrive\ProgramFiles\Colmap\COLMAP.bat" -s E:\Git\lileaLab\GaussianSplatting\Data

しばらくするとCOLMAPデータが出来上がる。
(写真の枚数や解像度によってそこそこ時間かかる)

トレーニング編

トレーニングの実行にはtrain.pyを使用する。
前手順で作成したCOLMAPデータのフォルダを指定する。
例) python train.py -s E:\Git\lileaLab\GaussianSplatting\Data

写真の枚数によってそれなりに時間かかる。

トレーニングが完了すると gaussian-splatting > output フォルダ内に「123456ab-1」の様なランダムな文字列のフォルダが作成されている。

このフォルダを次の手順で用意するビューワーで読み込む。

トレーニング実行でout of memoryになる場合

RuntimeError: CUDA out of memory

対策A) 写真をリサイズして小さくする

対策B) –densify_grad_threshold を増やす
デフォルト0.0002 2D位置勾配に基づいてポイントを高密度化するかどうかを決定する制限

対策C) –densification_interval を増やす
デフォルト100 高密度化する頻度(100回の反復ごと)

対策D) –densify_until_iter を減らす
デフォルト15_000 高密度化が停止する反復

独自トレーニングデータの閲覧

ビューワーを使用してトレーニング済みデータを読み込む。
ビューワーは こちら にビルド済みの実行ファイルがあるのでこれをDLし解凍する。

解凍したviewers

コマンドプロンプトでviewersフォルダへ移動し、オプションに上記手順で作成したトレーニング済みデータのフォルダを指定して実行する。
例) E:\Git\lileaLab\GaussianSplatting\viewer\bin\SIBR_gaussianViewer_app -m output\123456ab-1

ビューアーが立ち上がる。

操作方法は少し特殊。
移動はWASDQEだけど、視点の回転はマウスではなくUIOJKLキーになっている。
両手で操作する感じ。詳しくはこちら

マウス操作で見たい場合は、Yキーを押すとトラックボールモードになりマウスで画面操作できるようになる。

以上!

サンプルを試す

環境構築や独自データの用意はせず、Gaussian Splattingがどんなものなのかとサンプルだけ実行してみたい場合の手順です。
(トレーニング済みデータをビューワーで閲覧する)

README の初めにあるリンク「Pre-trained Models」からトレーニング済みサンプルデータをDLする。

同じくその隣にある「Viewers for Windows」からビューワーをDLする。

DLしたらコマンドプロンプトでビューワーの実行ファイルを指定し、オプションで開きたいサンプルデータセットのフォルダをオプションを指定する。
それぞれDドライブ直下に解凍した場合の例) D:\viewers\bin\SIBR_gaussianViewer_app.exe -m D:\models\bicycle

ビューワーが立ち上がる。

ビューワーの操作は前項目で書いたものと同様。

以上。