这仍然是一个正在进行的研究项目。
该项目旨在基准测试几种最先进的大规模辐射场算法。我们交换使用术语“无界的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 ? |
该项目遵循全企业规范。欢迎任何形式的贡献!