pytorch+cudaのinstant-ngp(nerfのみ)は、pytorch-lightning(高速の高品質)で訓練されています。このレポは、将来の研究を促進するための簡潔なPytorchインターフェイスを提供することを目的としており、あなたがそれを共有できれば感謝しています(そして、引用は高く評価されています)!
他の代表的なビデオはGallery.MDにあります
この実装には、他のライブラリへの依存関係により厳しい要件があります。ハードウェア/ソフトウェアの不一致のためにインストールの問題に遭遇した場合、さまざまなプラットフォームをサポートするつもりはないと思います(貢献することを歓迎します)。
git clone https://github.com/kwea123/ngp_plでこのレポをクローンします
python> = 3.8(anaconda経由のインストールをお勧めします。 conda create -n ngp_pl python=3.8を使用してコンドラ環境を作成し、 conda activate ngp_plにしてアクティブ化します)
Pythonライブラリ
pip install torch==1.11.0 --extra-index-url https://download.pytorch.org/whl/cu113torch-scatterをインストールしますtinycudannをインストールする(Pytorch拡張機能)apexをインストールしますpip install -r requirements.txtでコア要件をインストールしますCUDA拡張機能: pip > = 22.1にアップグレードし、 pip install models/csrc/を実行します(コードpullたびにこれを実行してください)
NSVFからPreprocessed Dataset( Synthetic_NeRF 、 Synthetic_NSVF 、bledendmvs、 BlendedMVS 、 TanksAndTemples )をダウンロードしてください。 DataloAderにハードコーディングされた修正があるため、フォルダー名を変更しないでください。
ここからデータをダウンロードしてください。
カスタムデータの場合、 colmap実行し、 cameras.bin points3D.binあるフォルダーsparse/0 images.bin取得します。 ColMap形式の次のデータもサポートされています。
ここからデータをダウンロードしてください。トレーニングのためにHDR画像をLDR画像に変換するには、 python misc/prepare_rtmv.py <path/to/RTMV>実行し、各シーンフォルダーの下にimages/フォルダーを作成し、これらの画像を使用してトレーニング(およびテスト)します。
QuickStart: python train.py --root_dir <path/to/lego> --exp_name Lego
レゴシーンを30kステップ(各ステップで8192光線で)トレーニングし、最後に1つのテストを実行します。トレーニングプロセスは約5分以内に終了する必要があります(テスト画像の保存は遅いです。 --no_save_testを無効にします)。 PSNRのテストは最後に表示されます。
Opt.pyには、その他のオプションがあります。
他のパブリックデータセットトレーニングについては、 benchmarkingの下のスクリプトを参照してください。
test.ipynbを使用して画像を生成します。 LEGOの前提型モデルはこちらから入手できます
GUIの使用量: python show_gui.py実行した後、トレーニングで使用される同じハイパーパラメーター( dataset_name 、 root_dirなど)が続き、 -ckpt_path --ckpt_path <path/to/.ckpt>
品質( Synthetic-NeRFでのPSNRの平均テスト)と推論速度( Legoシーン)と同時作業Torch-NGP(デフォルト設定)と論文を比較しました。すべて約5分間訓練されています。
| 方法 | AVG PSNR | FPS | GPU |
|---|---|---|---|
| トーチ-NGP | 31.46 | 18.2 | 2080 ti |
| 私の | 32.96 | 36.2 | 2080 ti |
| インスタントNGPペーパー | 33.18 | 60 | 3090 |
品質に関しては、鉱山はTorch-NGPよりもわずかに優れていますが、結果は異なる実行で変動する可能性があります。
速度に関しては、鉱山はトーチNGPよりも高速ですが、インスタントNGPのように半分しか速いです。速度はシーンに依存します(シーンのほとんどが空の場合、速度は高速になります)。




左:Torch-NGP。右:私のもの。
ベンチマークを実行するには、 benchmarkingの下でスクリプトを使用します。
次の結果は、1 RTX 2080 TIを使用してトレーニングされている私の結果です(定性的な結果はこちら):
| マイク | フィカス | 椅子 | ホットドッグ | 材料 | ドラム | 船 | レゴ | 平均 | |
|---|---|---|---|---|---|---|---|---|---|
| psnr | 35.59 | 34.13 | 35.28 | 37.35 | 29.46 | 25.81 | 30.32 | 35.76 | 32.96 |
| ssim | 0.988 | 0.982 | 0.984 | 0.980 | 0.944 | 0.933 | 0.890 | 0.979 | 0.960 |
| lpips | 0.017 | 0.024 | 0.025 | 0.038 | 0.070 | 0.076 | 0.133 | 0.022 | 0.051 |
| FPS | 40.81 | 34.02 | 49.80 | 25.06 | 20.08 | 37.77 | 15.77 | 36.20 | 32.44 |
| トレーニング時間 | 3m9s | 3M12S | 4M17S | 5M53S | 4M55S | 4m7s | 9m20s | 5m5s | 5m00s |
| ワインホルダー | SteamTrain | ヒキガエル | ロボット | 自転車 | 宮殿 | 宇宙船 | ライフスタイル | 平均 | |
|---|---|---|---|---|---|---|---|---|---|
| psnr | 31.64 | 36.47 | 35.57 | 37.10 | 37.87 | 37.41 | 35.58 | 34.76 | 35.80 |
| ssim | 0.962 | 0.987 | 0.980 | 0.994 | 0.990 | 0.977 | 0.980 | 0.967 | 0.980 |
| lpips | 0.047 | 0.023 | 0.024 | 0.010 | 0.015 | 0.021 | 0.029 | 0.044 | 0.027 |
| FPS | 47.07 | 75.17 | 50.42 | 64.87 | 66.88 | 28.62 | 35.55 | 22.84 | 48.93 |
| トレーニング時間 | 3M58S | 3m44s | 7m22s | 3m25s | 3m11s | 6m45s | 3m25s | 4M56S | 4M36S |
| イグナティウス | トラック | 納屋 | キャタピラー | 家族 | 平均 | |
|---|---|---|---|---|---|---|
| psnr | 28.30 | 27.67 | 28.00 | 26.16 | 34.27 | 28.78 |
| *fps | 10.04 | 7.99 | 16.14 | 10.91 | 6.16 | 10.25 |
* test-trajで評価されました
| *ジェイド | *噴水 | キャラクター | 彫像 | 平均 | |
|---|---|---|---|---|---|
| psnr | 25.43 | 26.82 | 30.43 | 26.79 | 27.38 |
| ** fps | 26.02 | 21.24 | 35.99 | 19.22 | 25.61 |
| トレーニング時間 | 6M31S | 7m15s | 4m50s | 5M57S | 6M48s |
*背景を黒から白に手動で切り替えるので、数字は論文のものに直接匹敵しません。
** test-trajで評価されました