이것은 여전히 진행중인 연구 프로젝트입니다.
이 프로젝트는 여러 최첨단 대규모 Radiance Fields 알고리즘을 벤치마킹하는 것을 목표로합니다. 우리는 "무한 nerf"와 "대규모 nerf"라는 용어를 교환 적으로 사용합니다. 왜냐하면 우리는 그 기술이 밀접하게 관련되어 있기 때문입니다.
크고 복잡한 코드 시스템을 추구하는 대신, 우리는 무한 NERF에 대한 SOTA 성능을 가진 간단한 코드 리포지토리를 추구합니다.
이 저장소에서 다음과 같은 결과를 얻을 것으로 예상됩니다.
| 기준 | 행동 양식 | PSNR |
|---|---|---|
| 무한한 탱크 및 사원 | nerf ++ | 20.49 |
| 무한한 탱크 및 사원 | 플레 옥셀 | 20.40 |
| 무한한 탱크 및 사원 | DVGO | 20.10 |
| 무한한 탱크 및 사원 | 우리 것 | 20.85 |
| MIP-NERF-360 벤치 마크 | 네르프 | 24.85 |
| MIP-NERF-360 벤치 마크 | nerf ++ | 26.21 |
| MIP-NERF-360 벤치 마크 | MIP-rENF-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.txtCuda Lib가 필요로하는 Cuda Lib가 매번 실행하지 않도록 그리드 기반 운영자를 설치하십시오. (최신 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 ../../사용자 정의 장면을 재구성하는 데 사용되는 다른 리브를 설치하십시오. 이것은 장면을 구축해야 할 때만 필요합니다.
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 30Old 버전의 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 드라이브 폴더에 제공됩니다. Madoka와 Otobai는이 링크에서 찾을 수 있습니다.
Colmap을 실행하여 장면을 재구성하십시오. 아마 오랜 시간이 걸릴 것입니다.
python FourierGrid/tools/imgs2poses.py data/Madoka데이터 폴더로 데이터/Madoka를 교체 할 수 있습니다. COLMAP 버전이 3.6보다 큰 경우 (APT-GET을 사용하는 경우 발생하지 않아야 함) COLMAP_WRPARPER.py에서 Export_Path를 output_path로 변경해야합니다.
NERF 장면을 훈련시킵니다.
python FourierGrid/run_FourierGrid.py --config configs/custom/Madoka.py다른 구성으로 구성/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 후보 및 전체 검토 점수)에 대한 최신 이론적 작업 ( 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 ? | 에즈 양 | Alex-Zhang ? | 팬 루 ? | Maybeshewill-CV ? | buer1121 ? |
이 프로젝트는 All-Contritors 사양을 따릅니다. 모든 종류의 공헌을 환영합니다!