0. 参考にした記事
①Instant NGPのセットアップ方法
- 全体的にサポートが手厚い.(特にインストール関連)
②Instant-ngpの構築方法は?| AI研究所
- こちらもサポートは手厚い
- 構築~実行までのディレクトリ構造はここを真似た.
③初心者による初心者のためのInstant NGP備忘録
- ①のブログに対してコメントを入れるようなスタイル.
- 間違いやすい箇所,楽な方法を超シンプルに解説.あくまでも①ありき.
④Instant NeRFを試す環境を作る
- 見つけるのが遅かったからあまり使わなかったけど参考になる
⑤Instant NGPを動かしたメモ
- 最後の最後の躓きを解消してくれた救世主サイト.
- ありがちなエラーをまとめてくれているので,困ったときはこれ.
1.インストール
以下の記事がインストール関連の記事の中で最も参考になった.この記事の手順に従えば問題はない.
ざっと必要なツール一覧
- Visual Studio 2019
- CMake
- CUDA Toolkit
- Optix
- git
- COLMAP
gitのインストールは以下の記事を参考にした.
- Path指定の際のEドライブではじまるものは,よく分からないがそのままやればいい.
- Path指定の際にバージョンの値が必要なものもあるので,そこだけ注意.
2.構築
2-1. ファイルのコピー
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.6\extras\visual_studio_integration\MSBuildExtensions
の中のファイルを,以下のディレクトリにすべてコピー
C:\ProgramFiles(x86)\MicrosoftVisualStudio\2019\Community\MSBuild\Microsoft\VC\v160\BuildCustomizations
2-2. npgディレクトリを作成,ngpディレクトリへ移動
- C:\Tutorial\ngpを作成
- Anaconda Promtで作成したngpディレクトリへ移動
2-3. クローン
- クローンする
git clone –recursive https://github.com/nvlabs/instant-ngp
- クローンが完了したら,instant-ngpディレクトリへ移動.
2-4. ビルド
以下のコマンドをDeveloper Command Promptで.
cd C:\Tutorial\ngp\instant-ngp
cmake . -B build
cmake –build build –config RelWithDebInfo -j 16
jに続く値は「タスクマネージャー>パフォーマンス>CPU」からコア数を調べることが可能.私の場合はコア数=8.
2-5. Python仮想環境構築
- Anaconda Promtで
conda create -n ngp python=3.9
Remove existing environmentやProceedと出たら「y」と入力.
- ngpをアクティベート
conda activate ngp
- パッケージを一括インストール
pip install -r requirements.txt
2-6. 補足
- 2.5終了時にTutorial/ngp/instant-ngpにOpenEXR-1.3.2-cp39-cp39-win_amd64.whlがなかったら下からダウンロードして,instant-ngpのディレクトリ内に移動.
- Anaconda Promptでpiexrをインストール
pip install OpenEXR-1.3.2-cp39-cp39-win_amd64.whl
3.データセットの用意
3-1. 公式によるデータセット(ショベルカー)を使う場合
- 以下から保存する.
- Tutorial/ngp/instant-ngp/dataの直下にtoy_trackの名前で保存
3-2. 自前のデータセットを使う場合
- instant-ngp/dataに保存
- 4K以下の解像度の画像であること
- 画像の枚数は最低でも50枚程度(少ないとモデルの精度悪化)
3-3. jsonファイルを作成
3-3-1. 公式データセットの場合
Anaconda Promptで
python scripts/colmap2nerf.py --colmap_matcher exhaustive --run_colmap --aabb_scale 16 --images data/toy_truck
3-3-2. 自前データセットの場合
Anaconda Promptで
python scripts/colmap2nerf.py --colmap_matcher exhaustive --run_colmap --aabb_scale 16 --images <image/path>
- 生成されたjsonファイルは,transforms.jsonの名前でinstant-ngpディレクトリに出力される
- コマンド実行時にnumpyがないとエラーになった場合:pip install numpy
- コマンド実行時にcv2がないとエラーになった場合:pip install opencv-python
- 必要なものがインストールできたら,再度上記のコマンドを実行
3-4. ディレクトリを整理
- 推論に用いるデータセットがdata/toy_truck/data/toy_truckの中になるように整理
- instant-ngpフォルダにできたtransforms.jsonをdata/toy_truckに移動
4.instant-ngpを実行
- Anaconda Promptで
<path_to_your_ngp>\instant-ngp\build\instant-ngp.exe --scene data/<image_set_name>
C:\Tutorial\ngp\instant-ngp\build\instant-ngp.exe –scene data/test
5.データセットを入れ替えるとき or 再実行するとき
すべてAnaconda Promptで
conda activate ngp
cd C:\Tutorial\ngp\instant-ngp
ここまでは共通.
データセットそのままの場合は以下の2つ.
python scripts/colmap2nerf.py --colmap_matcher exhaustive --run_colmap --aabb_scale 16 --images data/toy_truck
C:\Tutorial\ngp\instant-ngp\build\instant-ngp.exe –scene data/toy_truck
データセットを入れ替えた場合は以下の2つ.
python scripts/colmap2nerf.py --colmap_matcher exhaustive --run_colmap --aabb_scale 16 --images <image/path>
<path_to_your_ngp>\instant-ngp\build\instant-ngp.exe --scene data/<image_set_name>