「NeRFのようなコンテンツを無料で自由に作成したい」
「3Dコンテンツを高画質で高速にレンダリングしたい」
このような場合には、3D Gaussian Splattingがオススメです。
この記事では、3D Gaussian Splattingについて解説しています。
本記事の内容
- 3D Gaussian Splattingとは?
- 3D Gaussian Splattingのシステム要件
- 3D Gaussian Splattingのインストール
- 3D Gaussian Splattingの動作確認
それでは、上記に沿って解説していきます。
3D Gaussian Splattingとは?
3D Gaussian Splattingについては、次の記事で説明しています。
上記記事の内容をもとに、実際に試してみてください。
そうすれば、3D Gaussian Splattingについてのイメージがわくようになります。
それに、ビューアーが動かない環境だと話になりません。
後ほど説明しますが、そこそこ要求スペックは厳しいです。
また、正直、GitHubの公式ページだけ見ると混乱してしまいます。
3D Gaussian Splatting自体は、3Dを2Dにレンダリングする技術に過ぎません。
そのレンダリングが、凄いというところなんですけどね。
でも、公式ページを見ているとその線引きがよくわかりません。
例えば、画像を3Dデータに変換するところまでも3D Gaussian Splattingの範疇に見えてしまいます。
しかし、その3Dデータへの変換処理はCOLMAPが担っています。
COLMAPは、3D Gaussian Splattingとは独立して存在しているソフトウェアになります。
あくまで、3D Gaussian Splattingで用いるデータを生成するためにCOLMAPが用いられているだけです。
まとめると、3D Gaussian Splattingには大きく以下の機能があると言えます。
- モデルを生成するための学習機能
- 学習済みモデルの照会機能
「学習済みモデルの照会機能」は、ビューアーのことです。
ビューアーについては、上記で紹介した記事をご覧ください。
以上、3D Gaussian Splattingについて説明しました。
次は、3D Gaussian Splattingのシステム要件を説明します。
3D Gaussian Splattingのシステム要件
モデルを生成するためのシステム要件を説明します。
このシステム要件をクリアできるかどうかが、最もポイントになるかもしれません。
まずは、ハードウェア要件から確認しましょう。
- CUDA-ready GPU with Compute Capability 7.0+
- 24 GB VRAM (to train to paper evaluation quality)
要は、NVIDIAの24GBのVRAMが必要ということです。
正直、かなりハードルは高いと言えます。
ただ、24GBより少なくても動くらしいです。
興味のある方は、チャレンジしてみてください。
次は、ソフトウェア要件を確認します。
- Conda
- C++ Compiler for PyTorch extensions
- CUDA SDK 11 for PyTorch extensions, install after Visual Studio
- C++ Compiler and CUDA SDK must be compatible
それぞれを以下で説明します。
Conda
Condaの利用が推奨されています。
しかし、Condaを利用する必要はありません。
個人的にCondaとpipを併用することを避けています。
併用する時点でパッケージ管理として、矛盾しています。
「管理できてへんやん!!」と。
pipだけでもインストール可能です。
その方法を後ほど説明します。
C++ Compiler for PyTorch extensions
長たらしいですが、C++のコンパイラが必要ということです。
開発者は、Visual Studio 2019 for Windowsを利用しています。
Visual Studio 2019のインストールについては、次の記事で説明しています。
現在では、パッケージ名称などが変わっているかもしれません。
とにかく、コマンドプロンプト(もしくはPowerShell)で「cl」コマンドが動けばOKです。
C:\>cl Microsoft(R) C/C++ Optimizing Compiler Version 19.29.30151 for x86 Copyright (C) Microsoft Corporation. All rights reserved. 使い方: cl [ オプション... ] ファイル名... [ /link リンク オプション... ]
バージョンも19であれば、安心と言えます。
CUDA SDK 11 for PyTorch extensions, install after Visual Studio
これも長たらしいですが、CUDA Toolkit 11系が必要ということです。
開発者は、11.8を利用しています。
CUDA Toolkitのインストールは、次の記事内で説明しています。
ダウンロードは、次のページから可能です。
(※ログイン不要に戻ったみたいですね)
https://developer.nvidia.com/cuda-toolkit-archive
今回であれば、11.8をダウンロードしましょう。
とりあえず、次のように確認できればOKです。
C:\>nvcc --version nvcc: NVIDIA (R) Cuda compiler driver Copyright (c) 2005-2022 NVIDIA Corporation Built on Wed_Sep_21_10:41:10_Pacific_Daylight_Time_2022 Cuda compilation tools, release 11.8, V11.8.89 Build cuda_11.8.r11.8/compiler.31833905_0
ここで11.8以外のバージョンが出る場合は、環境変数「CUDA_PATH」を変更しましょう。
C++ Compiler and CUDA SDK must be compatible
CUDA ToolkitとC++コンパイラの相性のことですね。
つまり、Visual Studio 2019のC++コンパイラなら問題ありません。
それ以外のコンパイラなら、知りませんよということですね。
ハードウェア要件をクリアできるかどうかは、マシンスペック次第のところがあります。
GeForce RTX 4090か3090であれば、大丈夫です。
(※検証はGeForce RTX 3090で行っています)
そして、ソフトウェア要件はそれなりに頑張らないといけません。
「cl」と「nvcc –version」の両方のコマンドが機能するまで、頑張ってください。
以上、3D Gaussian Splattingのシステム要件を説明しました。
次は、3D Gaussian Splattingのインストールを説明します。
3D Gaussian Splattingのインストール
3D Gaussian Splattingのインストールは、簡単です。
簡単ですが、Python仮想環境の利用をオススメします。
仮想環境を構築した時点で次のコマンドを実行しておきます。
おまじないレベルで実行する習慣にしておけばよいでしょう。
python.exe -m pip install --upgrade pip setuptools
検証は、次のバージョンのPythonで行います。
> python -V Python 3.10.4
前提として、PyTorchのインストールは済ませておきましょう。
PyTorch 2系のGPU版をインストールします。
CUDA 11.8をインストール済みのため、以下のコマンドでインストールできます。
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118
では、3D Gaussian Splattingの本体のインストールです。
GitHubからCloneします。
git clone https://github.com/graphdeco-inria/gaussian-splatting.git --recursive
このとき、「–recursive」を付けるのを忘れないでください。
それは、「submodules」以下もダウンロードする必要があるからです。
ダウンロードできたら、以下のファイルを作成します。
requirements.txt
plyfile=0.8.1 tqdm submodules/diff-gaussian-rasterization submodules/simple-knn
保存先は、リポジトリルートとしましょう。
以下のように設置すればOK。
ファイルを設置できたら、次のコマンドでインストールを行います。
pip install -r requirements.txt
インストールが完了したら、3D Gaussian Splattingのインストールは完了です。
言った通り、Condaは必要ありません。
以上、3D Gaussian Splattingのインストールを説明しました。
次は、3D Gaussian Splattingの動作確認を説明します。
3D Gaussian Splattingの動作確認
3D Gaussian Splattingの動作確認を行います。
手順は、以下の通りに進めます。
- 学習用データの準備
- 3D Gaussian Splattingモデル生成
- 3D Gaussian Splattingモデル照会
以下でそれぞれを説明します。
学習用データの準備
COLMAPを利用します。
次の記事に従って、インストールしてください。
環境変数「Path」への登録も必須です。
モデルを生成するためには、そのための学習用データが必要です。
その学習用データは、COLMAPを用いて作成します。
COLMAPでは、画像から3Dモデルを再構築しています。
その3Dモデルが、3D Gaussian Splattingにおける学習データとなります。
その意味では、COLMAPは3D Gaussian Splattingの一部みたいなモノです。
そのため、3D Gaussian Splattingでは便利なスクリプト(convert.py)が用意されています。
スクリプト内でCOLMAPを次のように呼び出しています。
parser = ArgumentParser("Colmap converter") parser.add_argument("--no_gpu", action='store_true') parser.add_argument("--skip_matching", action='store_true') parser.add_argument("--source_path", "-s", required=True, type=str) parser.add_argument("--camera", default="OPENCV", type=str) parser.add_argument("--colmap_executable", default="", type=str) parser.add_argument("--resize", action="store_true") parser.add_argument("--magick_executable", default="", type=str)
3D Gaussian Splattingの学習で必要となるデータやディレクトリを自動で作成します。
よって、convert.pyを利用すべきと言えます。
convert.pyを利用するには、以下のコマンドを実行します。
python convert.py -s $TARGET_PATH
コマンドの実行前には、$TARGET_PATHの直下に「input」という名称のディレクトリを作成しておきます。
そして、「input」に画像を保存します。
$TARGET_PATHを「D:\tmp\target」とすると、次のような構成になります。
「input」の中は、次のような状況です。
画像は、COLMAPの動作確認時に用いたモノ(south-building.zip)を利用しています。
自分で画像を用意したい場合は、次の記事を参考にしてください。
画像を配置できたら、次のコマンドを実行します。
python convert.py -s D:\tmp\target
しばらく、待つことになります。
128個の画像ファイルで10分前後の時間がかかりました。
(※環境や画像によって異なります)
処理が完了すると、$TARGET_PATH以下は次のような状況になっています。
これで3D Gaussian Splattingの学習に必要なデータが準備できました。
3D Gaussian Splattingモデル生成
準備ができたら、次のコマンドを実行するだけです。
python train.py -s $TARGET_PATH -m $TARGET_PATH/output
実際に実行したのは、以下のコマンドになります。
python train.py -s D:\tmp\target -m D:\tmp\target\output
今回のデータでは、処理に約30分かかりました。
処理が完了すると、指定した場所に「output」フォルダを確認できます。
「output」の中身は、以下となっています。
これで3D Gaussian Splattingのモデルが作成されました。
3D Gaussian Splattingモデル照会
学習済みモデルを専用ビューアーで確認しましょう。
3D Gaussian Splattingビューアーについては、次の記事で説明しています。
上記記事を参考にして、ビューアーを準備してください。
準備できたら、次のコマンドでビューアーを起動します。
SIBR_gaussianViewer_app -m $TARGET_PATH/output
実際には、次のコマンドを実行しています。
SIBR_gaussianViewer_app -m D:\tmp\target\output
ビューアーが起動すると、次のような画面を確認できます。
画像数が128個と少ないので、粗いモデルになっています。
でも、一応3D Gaussian Splattingのモデルとして機能していることが確認できます。
ここまでの動作が確認できたら、オリジナルの画像で3D Gaussian Splattingモデルを生成してみましょう。
以上、3D Gaussian Splattingの動作確認を説明しました。