3D Gaussian Splattingのインストールと使い方

3D Gaussian Splattingのインストールと使い方 ツール

「NeRFのようなコンテンツを無料で自由に作成したい」
「3Dコンテンツを高画質で高速にレンダリングしたい」

このような場合には、3D Gaussian Splattingがオススメです。
この記事では、3D Gaussian Splattingについて解説しています。

本記事の内容

  • 3D Gaussian Splattingとは?
  • 3D Gaussian Splattingのシステム要件
  • 3D Gaussian Splattingのインストール
  • 3D Gaussian Splattingの動作確認

それでは、上記に沿って解説していきます。

3D Gaussian Splattingとは?

GitHub - graphdeco-inria/gaussian-splatting: Original reference implementation of "3D Gaussian Splatting for Real-Time Radiance Field Rendering"
Original reference implementation of "3D Gaussian Splatting for Real-Time Radiance Field Rendering" - graphdeco-inria/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の動作確認を説明しました。

タイトルとURLをコピーしました