これはまだ進行中の研究プロジェクトです。
このプロジェクトは、いくつかの最先端の大規模な輝きフィールドアルゴリズムをベンチマークすることを目的としています。 「無制限のナーフ」と「大規模なnerf」という用語を使用して、それらの背後にある技術が密接に関連していることがわかります。
大きくて複雑なコードシステムを追求する代わりに、固定されていないNERFのSOTAパフォーマンスを備えたシンプルなコードリポジトリを追求します。
このリポジトリで次の結果を得ることが期待されています。
| ベンチマーク | 方法 | psnr |
|---|---|---|
| バウンドされていないタンクと寺院 | nerf ++ | 20.49 |
| バウンドされていないタンクと寺院 | プレノキセル | 20.40 |
| バウンドされていないタンクと寺院 | DVGO | 20.10 |
| バウンドされていないタンクと寺院 | 私たちのもの | 20.85 |
| MIP-NERF-360ベンチマーク | nerf | 24.85 |
| MIP-NERF-360ベンチマーク | nerf ++ | 26.21 |
| MIP-NERF-360ベンチマーク | MIP-NERF-360 | 28.94 |
| MIP-NERF-360ベンチマーク | DVGO | 25.42 |
| MIP-NERF-360ベンチマーク | 私たちのもの | 28.98 |
トレーニングの分割:
回転:
私たちの努力があなたの研究やプロジェクトに役立つことを願っています!
このリポジトリをクローンします。深さ== 1を使用して、大きな履歴をダウンロードしないようにします。
git clone --depth=1 [email protected]:sjtuytc/LargeScaleNeRFPytorch.git
mkdir data
mkdir logsコンドラ環境を作成します。
conda create -n large-scale-nerf python=3.9
conda activate large-scale-nerfPytorchおよびその他のLibsをインストールします。 PytorchバージョンがCUDAと互換性があることを確認してください。
pip install --upgrade pip
conda install pytorch==1.13.1 torchvision==0.14.1 torchaudio==0.13.1 pytorch-cuda=11.6 -c pytorch -c nvidia
pip install -r requirements.txtグリッドベースのオペレーターをインストールして、毎回実行しないようにします。CudaLibが必要です。 (最新のCUDAを確実に持っていることを確認するには、「NVCC -V」を介して確認してください。)
apt-get install g++ build-essential # ensure you have g++ and other build essentials, sudo access required.
cd FourierGrid/cuda
python setup.py install
cd ../../カスタムシーンの再構築に使用される他のLIBをインストールします。これは、シーンを構築する必要がある場合にのみ必要です。
sudo apt-get install colmap
sudo apt-get install imagemagick # required sudo accesss
conda install pytorch-scatter -c pyg # or install via https://github.com/rusty1s/pytorch_scatterサーバー上のsudoアクセスにアクセスできない場合は、コルマップのラップトップバージョンも使用できます。ただし、ColMapパラメーターを適切に設定しないと、SOTAパフォーマンスが得られないことがわかりました。
次のサブセクションタイトルをクリックして、手順を展開 /崩壊させます。
(1)無制限の戦車と寺院。ここからデータをダウンロードしてください。次に、データを解凍します。
cd data
gdown --id 11KRfN91W1AxAW6lOFs4EeYDbeoQZCi87
unzip tanks_and_temples.zip
cd ../(2)MIP-NERF-360データセット。
cd data
wget http://storage.googleapis.com/gresearch/refraw360/360_v2.zip
mkdir 360_v2
unzip 360_v2.zip -d 360_v2
cd ../(3)サンフランシスコミッションベイ。データをダウンロードする前に知っておくべきこと:
ダウンロードされたデータは次のようになります:
data
|
|——————360_v2 // the root folder for the Mip-NeRF-360 benchmark
| └——————bicycle // one scene under the Mip-NeRF-360 benchmark
| | └——————images // rgb images
| | └——————images_2 // rgb images downscaled by 2
| | └——————sparse // camera poses
| ...
|——————tanks_and_temples // the root folder for Tanks&Temples
| └——————tat_intermediate_M60 // one scene under Tanks&Temples
| | └——————camera_path // render split camera poses, intrinsics and extrinsics
| | └——————test // test split
| | └——————train // train split
| | └——————validation // validation split
| ...
|——————pytorch_waymo_dataset // the root folder for San Fran Cisco Mission Bay
| └——————cam_info.json // extracted cam2img information in dict.
| └——————coordinates.pt // global camera information used in Mega-NeRF, deprecated
| └——————train // train data
| | └——————metadata // meta data per image (camera information, etc)
| | └——————rgbs // rgb images
| | └——————split_block_train.json // split block informations
| | └——————train_all_meta.json // all meta informations in train folder
| └——————val // val data with the same structure as train
「Python run_fouriergrid.py」を実行して、トレインテストレンダーサイクルを終了する必要があります。いくつかの議論の説明:
--program: the program to run, normally --program train will be all you need.
--config: the config pointing to the scene file, e.g., --config FourierGrid/configs/tankstemple_unbounded/truck_single.py.
--num_per_block: number of blocks used in large-scale NeRFs, normally this is set to -1, unless specially needed.
--render_train: render the trained model on the train split.
--render_train: render the trained model on the test split.
--render_train: render the trained model on the render split.
--exp_id: add some experimental ids to identify different experiments. E.g., --exp_id 5.
--eval_ssim / eval_lpips_vgg: report SSIM / LPIPS(VGG) scores.スクリプト/train_fouriergrid.shのコマンドのメジャーをリストしますが、より良い再現性のために以下のコマンドのいくつかをリストします。
# Unbounded tanks and temples
python run_FourierGrid.py --program train --config FourierGrid/configs/tankstemple_unbounded/playground_single.py --num_per_block -1 --render_train --render_test --render_video --exp_id 57
python run_FourierGrid.py --program train --config FourierGrid/configs/tankstemple_unbounded/train_single.py --num_per_block -1 --render_train --render_test --render_video --exp_id 12
python run_FourierGrid.py --program train --config FourierGrid/configs/tankstemple_unbounded/truck_single.py --num_per_block -1 --render_train --render_test --render_video --exp_id 4
python run_FourierGrid.py --program train --config FourierGrid/configs/tankstemple_unbounded/m60_single.py --num_per_block -1 --render_train --render_test --render_video --exp_id 6
# 360 degree dataset
python run_FourierGrid.py --program train --config FourierGrid/configs/nerf_unbounded/room_single.py --num_per_block -1 --eval_ssim --eval_lpips_vgg --render_train --render_test --render_video --exp_id 9
python run_FourierGrid.py --program train --config FourierGrid/configs/nerf_unbounded/stump_single.py --num_per_block -1 --eval_ssim --eval_lpips_vgg --render_train --render_test --render_video --exp_id 10
python run_FourierGrid.py --program train --config FourierGrid/configs/nerf_unbounded/bicycle_single.py --num_per_block -1 --eval_ssim --eval_lpips_vgg --render_train --render_test --render_video --exp_id 11
python run_FourierGrid.py --program train --config FourierGrid/configs/nerf_unbounded/bonsai_single.py --num_per_block -1 --eval_ssim --eval_lpips_vgg --render_train --render_test --render_video --exp_id 3
python run_FourierGrid.py --program train --config FourierGrid/configs/nerf_unbounded/garden_single.py --num_per_block -1 --eval_ssim --eval_lpips_vgg --render_train --render_test --render_video --exp_id 2
python run_FourierGrid.py --program train --config FourierGrid/configs/nerf_unbounded/kitchen_single.py --num_per_block -1 --eval_ssim --eval_lpips_vgg --render_train --render_test --render_video --exp_id 2
python run_FourierGrid.py --program train --config FourierGrid/configs/nerf_unbounded/counter_single.py --num_per_block -1 --eval_ssim --eval_lpips_vgg --render_train --render_test --render_video --exp_id 2
# San Francisco Mission Bay dataset
python run_FourierGrid.py --program train --config FourierGrid/configs/waymo/waymo_no_block.py --num_per_block 100 --render_video --exp_id 30Block-nerfの古いバージョンは、ベースラインとして機能するためにまだ提供されていますが、まもなく非推奨になります。シンプルで高速であるため、主にグリッドベースのモデルで作業します。以下のコマンドを実行して、古いブロックNERF実験を再現します。
bash scripts/block_nerf_train.sh
bash scripts/block_nerf_eval.sh画像をデータフォルダーの下に置きます。構造は次のようなものでなければなりません:
data
| ——————Madoka // Your folder name here.
| └——————source // Source images should be put here.
| └——————--- | 1.png
| └——————--- | 2.png
| └——————--- | ...サンプルデータは、Googleドライブフォルダーに記載されています。マドカとオトバイはこのリンクで見つけることができます。
ColMapを実行してシーンを再構築します。これはおそらく長い時間がかかるでしょう。
python FourierGrid/tools/imgs2poses.py data/Madokaデータフォルダーでデータ/マドカを置き換えることができます。 colMapバージョンが3.6より大きい場合(APT-Getを使用する場合は発生しないはずです)、colmap_wrapper.pyのexport_pathをoutput_pathに変更する必要があります。
nerfシーンのトレーニング。
python FourierGrid/run_FourierGrid.py --config configs/custom/Madoka.pyconfigs/custom/madoka.pyを他の構成で置き換えることができます。
トレーニング結果を検証して、フライスルービデオを生成します。
python FourierGrid/run_FourierGrid.py --config configs/custom/Madoka.py --render_only --render_video --render_video_factor 8グリッドベースのモデルに関する私たちの最新の理論的作業(口頭およびベストペーパーアワード候補&フルレビュースコア(5/5/5)のCVPR24):
@misc{zhao2024grounding,
title={Grounding and Enhancing Grid-based Models for Neural Fields},
author={Zelin Zhao and Fenglei Fan and Wenlong Liao and Junchi Yan},
year={2024},
eprint={2403.20002},
archivePrefix={arXiv},
primaryClass={cs.CV}
}
次の素晴らしい作品を引用することを検討してください。
@inproceedings{dvgo,
title={Direct voxel grid optimization: Super-fast convergence for radiance fields reconstruction},
author={Sun, Cheng and Sun, Min and Chen, Hwann-Tzong},
booktitle={Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition},
pages={5459--5469},
year={2022}
}
@InProceedings{Tancik_2022_CVPR,
author = {Tancik, Matthew and Casser, Vincent and Yan, Xinchen and Pradhan, Sabeek and Mildenhall, Ben and Srinivasan, Pratul P. and Barron, Jonathan T. and Kretzschmar, Henrik},
title = {Block-NeRF: Scalable Large Scene Neural View Synthesis},
booktitle = {Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition (CVPR)},
month = {June},
year = {2022},
pages = {8248-8258}
}
DVGO、NERF-PL、SVOX2のコードとデータを参照してください。
毎週のNERF論文を追跡し、それらを分類します。以前に公開されたすべてのNERF論文がリストに追加されました。英語版と中国語版を提供しています。 PRを介した貢献と修正を歓迎します。
また、すべてのNERFペーパーのExcelバージョン(メタデータ)を提供します。構造化されたメタデータに基づいて、独自のコメントを追加したり、独自のペーパー分析ツールを作成したりできます。
これらの素晴らしい人々に感謝します(絵文字キー):
Zelin Zhao ? | ez-yang | アレックス・チャン ? | ファンlu ? | Maybeshewill-CV ? | buer1121 ? |
このプロジェクトは、全委員会の仕様に従います。あらゆる種類の貢献を歓迎します!