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++ によるデスクトップ開発」が必要なのでこれを有効にする。
※Visual Studio 2022だと後のconda env create --file environment.yml
コマンドで仮想環境を作成するところでエラーになってしまったので、2019で進めるのが良さそう
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
コマンドで仮想環境を作成する。
そこそこ処理時間がかかるのでしばらく待つ。
ここでエラーになる場合は、前手順で用意したソフトのバージョンや環境変数の設定に誤りがないか見直す。
または公式の FAQ を参考に対応する。
環境構築は以上。
独自データ作成
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フォルダへ移動し、オプションに上記手順で作成したトレーニング済みデータのフォルダを指定して実行する。
例) E:\Git\lileaLab\GaussianSplatting\viewer\bin\SIBR_gaussianViewer_app -m output\123456ab-1
操作方法は少し特殊。
移動はWASDQEだけど、視点の回転はマウスではなくUIOJKLキーになっている。
両手で操作する感じ。詳しくはこちら。
マウス操作で見たい場合は、Yキーを押すとトラックボールモードになりマウスで画面操作できるようになる。
以上!
こりゃ次世代の自由視点映像だ。#GaussianSplatting
60fps出るからドローン映像かのような滑らかさ。
NeRFと比べかなり鮮明で軽快。独自写真データでの生成手順、使い方もブログにまとめました!https://t.co/cscf2CyHkN pic.twitter.com/btV1Oj1XIl
— 龍 lilea (@lileaLab) September 4, 2023
サンプルを試す
環境構築や独自データの用意はせず、Gaussian Splattingがどんなものなのかとサンプルだけ実行してみたい場合の手順です。
(トレーニング済みデータをビューワーで閲覧する)
README の初めにあるリンク「Pre-trained Models」からトレーニング済みサンプルデータをDLする。
同じくその隣にある「Viewers for Windows」からビューワーをDLする。
DLしたらコマンドプロンプトでビューワーの実行ファイルを指定し、オプションで開きたいサンプルデータセットのフォルダをオプションを指定する。
それぞれDドライブ直下に解凍した場合の例) D:\viewers\bin\SIBR_gaussianViewer_app.exe -m D:\models\bicycle
ビューワーの操作は前項目で書いたものと同様。
以上。