這仍然是一個正在進行的研究項目。
該項目旨在基準測試幾種最先進的大規模輻射場算法。我們交換使用術語“無界的nerf”和“大規模nerf”,因為我們發現它們背後的技術密切相關。
我們沒有追求大型且複雜的代碼系統,而是為無限的NERF提供了一個簡單的代碼回購。
期望您在此存儲庫中獲得以下結果:
| 基準 | 方法 | 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環境。
conda create -n large-scale-nerf python=3.9
conda activate large-scale-nerf安裝Pytorch和其他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需要安裝基於網格的操作員,以避免每次運行,CUDA LIB都需要。 (通過“ NVCC -V”檢查以確保您擁有最新的CUDA。)
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的筆記本電腦版本。但是,我們發現,如果您無法正確設置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)San Fran Cisco Mission Bay。在下載數據之前,您應該知道什麼:
下載的數據看起來像這樣:
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 30舊版本的Block-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 Drive文件夾中提供。可以在此鏈接上找到小型馬多和Otobai。
運行Colmap以重建場景。這可能會花費很長時間。
python FourierGrid/tools/imgs2poses.py data/Madoka您可以通過數據文件夾替換數據/大麻。如果您的Colmap版本大於3.6(如果使用APT-GEG,則不應發生),則需要將Export_Path更改為colmap_wrapper.py中的output_path。
培訓NERF場景。
python FourierGrid/run_FourierGrid.py --config configs/custom/Madoka.py您可以通過其他配置替換configs/custom/madoka.py。
驗證訓練結果以生成直發視頻。
python FourierGrid/run_FourierGrid.py --config configs/custom/Madoka.py --render_only --render_video --render_video_factor 8我們有關基於網格模型的最新理論工作( Oral&Best Paper Award Cantifuts&Full Review Scoret(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 | Alex-Zhang ? | lu ? | Maybeshewill-CV ? | Buer1121 ? |
該項目遵循全企業規範。歡迎任何形式的貢獻!