nerfstudioは、NeRF (Neural Radiance Fields) の作成、トレーニング、テストを簡単に行うためのツールで、NeRFを基にした複数の手法が組み込まれており、それらを利用して効率的に3D再構築を行うことができます。
実行環境
今回はWindowsにインストールしましたが、可能であればLinuxへのインストールをお勧めします。
OS | Windows11 24H2 |
nerfstuido | v1.1.5 |
グラフィックボード | NVIDIA GeForce RTX 3060 12GB |
ソフトウェア要件
インストール前に必要なソフトがあります。
CUDA Toolkit 11.8
NVIDIAのGPUを活用した高速計算を行うための開発ツールです。
Git
Gitは分散型バージョン管理システムで、GitHubのリポジトリ管理に使用されます。
Miniconda
condaを使用して、仮想環境を作成します。
Microsoft C++ Build Tools
Visual Studioを使用せずにMSVC (Microsoft Visual C++) のツールをインストールできるインストーラーです。これにより、C++アプリケーションのビルドに必要なツールをインストールできます。
C++によるデスクトップ開発にチェックを入れ、右側のインストール詳細からMSVC v142にチェックを入れてインストールしてください。(MSVC v143ではビルドに失敗しました)
Rust
オープンソースのプログラミング言語の一つです。インストールにはC++のビルドツールが必要なので、先にMicrosoft C++ Build Toolsをインストールしておいてください。
そのままEnterキーを押して、標準インストールを行ってください。
インストール
Anaconda Prompt (miniconda3)を開きます。
MSVC (Microsoft Visual C++) の環境設定
"C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Auxiliary\Build\vcvarsall.bat" x64 -vcvars_ver=14.29
仮想環境を作成
conda create -n nerfstudio python=3.8
仮想環境をアクティブ化
conda activate nerfstudio
Pytorchインストール (v2.1.2 CUDA 11.8)
pip install torch==2.1.2 torchvision==0.16.2 torchaudio==2.1.2 --index-url https://download.pytorch.org/whl/cu118
ninjaインストール
pip install ninja
tiny-cuda-nnインストール
pip install git+https://github.com/NVlabs/tiny-cuda-nn/#subdirectory=bindings/torch
nerfstudioインストール
pip install nerfstudio
トレーニング
トレーニング手法には、推奨されているNerfactoを使用します。詳細については、ドキュメントをご確認ください。
まずはサンプルが用意されていますので、試してみてください。
フォルダ作成
md Nerfstudio
ディレクトリ移動
cd Nerfstudio
サンプルのダウンロード
ns-download-data nerfstudio --capture-name=poster
nerfactoでトレーニング(モデル選択)
ns-train nerfacto --data data\nerfstudio\poster
モデル | 説明 | VRAM | 速度 |
---|---|---|---|
nerfacto | デフォルトモデル | ~6GB | 高速 |
nerfacto-big | より大きく、高品質 | ~12GB | 遅い |
nerfacto-huge | さらに大きく、さらに高品質 | ~24GB | 最も遅い |
depth-nerfacto | 深度に基づくモデル | ~6GB | 高速 |
http://localhost:7007/にアクセスすると、ウェブビューアが読み込まれます。
30,000ステップでトレーニングが終了し、outputsフォルダにファイルが保存されています。
レンダリング
ビューアの起動(config.ymlのパス)
ns-viewer --load-config outputs\poster\nerfacto\config.yml
http://localhost:7007/にアクセスし、Renderタブを開いてください。
キーフレームを追加してカメラパスの設定が完了したら、「Generate Command」をクリックしてください。
Render Commandが表示されるのでコピーします。ビューアを終了し、コマンドを実行するとビデオが生成されます。
レンダリング結果
カスタムデータの使用
自分で撮影したデータを使用する場合は、Nerfstudioフォーマットに変換する必要があります。今回は、簡単でおすすめのRealityCaputureを使用する方法を紹介します。詳しくは、ドキュメントをご確認ください。
画像をアラインメントします。画像を読み込み、ALIGNMENTタブのAlign Imagesを実行します。
カメラのアラインメントをCSVファイルとしてエクスポートします。ExportのRegistrationをクリックし、Internal/External camera parametersを選択して保存してください。
データをNerfstudioフォーマットに変換(画像フォルダ、csvファイル、保存フォルダ名)
ns-process-data realitycapture --data Tree_photos --csv tree.csv --output-dir tree-date
トレーニング(保存フォルダ)
ns-train nerfacto --data tree-date