Este ainda é um projeto de pesquisa em andamento.
Este projeto visa benchmarking vários algoritmos de Radiance Fields em larga escala de última geração. Trocamos os termos "nerf ilimitado" e "nerf em larga escala" porque encontramos que as técnicas por trás deles estão intimamente relacionadas.
Em vez de buscar um sistema de código grande e complicado, buscamos um repositório de código simples com o desempenho do SOTA para Nerfs ilimitados.
Espera -se que você obtenha os seguintes resultados neste repositório:
| Benchmark | Métodos | Psnr |
|---|---|---|
| Tanques e templos ilimitados | NERF ++ | 20.49 |
| Tanques e templos ilimitados | Plenoxels | 20.40 |
| Tanques e templos ilimitados | DVGO | 20.10 |
| Tanques e templos ilimitados | Nosso | 20.85 |
| MIP-ERF-360 Benchmark | Nerf | 24.85 |
| MIP-ERF-360 Benchmark | NERF ++ | 26.21 |
| MIP-ERF-360 Benchmark | MIP-ERF-360 | 28.94 |
| MIP-ERF-360 Benchmark | DVGO | 25.42 |
| MIP-ERF-360 Benchmark | Nosso | 28.98 |
Divisão de treinamento:
Rotação:
Espero que nossos esforços possam ajudar sua pesquisa ou projetos!
Clone este repositório. Use profundidade == 1 para evitar o download de um grande histórico.
git clone --depth=1 [email protected]:sjtuytc/LargeScaleNeRFPytorch.git
mkdir data
mkdir logsCrie o ambiente condá.
conda create -n large-scale-nerf python=3.9
conda activate large-scale-nerfInstale o Pytorch e outros Libs. Verifique se a versão Pytorch é compatível com o seu 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.txtInstale os operadores baseados em grade para evitar executá-los todas as vezes, é necessário CUDA LIB. (Verifique via "NVCC -V" para garantir que você tenha um mais recente 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 ../../Instale outros LIBs usados para reconstruir cenas personalizadas . Isso só é necessário quando você precisa construir suas cenas.
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_scatterVocê também pode usar a versão de laptop do Colmap se não tiver acesso ao Sudo Access no seu servidor. No entanto, descobrimos que, se você não configurar os parâmetros Colmap corretamente, não obteria o desempenho do SOTA.
Clique nos seguintes títulos de subseção para expandir / colapso etapas.
(1) Tanques e templos ilimitados. Baixar dados aqui. Em seguida, descompacte os dados.
cd data
gdown --id 11KRfN91W1AxAW6lOFs4EeYDbeoQZCi87
unzip tanks_and_temples.zip
cd ../(2) o conjunto de dados MIP-SERF-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. O que você deve saber antes de baixar os dados:
Os dados baixados ficariam assim:
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
Você só precisa executar "python run_fouriergrid.py" para terminar o ciclo de renderização do teste de trem. Explicações de alguns argumentos:
--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.Enquanto listamos major dos comandos nos scripts/trens_fouriergrid.sh, listamos alguns dos comandos abaixo para obter uma melhor reprodutibilidade.
# 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 30A versão antiga do Block-Enerf ainda é fornecida para servir como linha de base, mas será preterida em breve. Trabalharemos principalmente em modelos baseados em grade mais tarde, porque eles são simples e rápidos. Execute o seguinte comando para reproduzir as experiências antigas de bloco-nerf:
bash scripts/block_nerf_train.sh
bash scripts/block_nerf_eval.shColoque suas imagens na pasta de dados. A estrutura deve ser como:
data
| ——————Madoka // Your folder name here.
| └——————source // Source images should be put here.
| └——————--- | 1.png
| └——————--- | 2.png
| └——————--- | ...Os dados da amostra são fornecidos em nossa pasta do Google Drive. O Madoka e Otobai podem ser encontrados neste link.
Execute Colmap para reconstruir cenas. Isso provavelmente custaria muito tempo.
python FourierGrid/tools/imgs2poses.py data/MadokaVocê pode substituir os dados/madoka pela pasta de dados. Se a sua versão Colmap for maior que 3,6 (o que não deve acontecer se você usar o APT-GET), você precisará alterar o export_path para output_path no colmap_wrapper.py.
Treinando cenas NERF.
python FourierGrid/run_FourierGrid.py --config configs/custom/Madoka.pyVocê pode substituir as configurações de configurações/custom/madoka.py por outras configurações.
Validar os resultados do treinamento para gerar um vídeo de mosca.
python FourierGrid/run_FourierGrid.py --config configs/custom/Madoka.py --render_only --render_video --render_video_factor 8Nosso mais recente trabalho teórico sobre modelos baseados em grade ( Oral & Best Paper Award Candidate & Full Review Score (5/5/5) em 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}
}
Considere citar os seguintes grandes trabalhos:
@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}
}
Nós nos referimos ao código e dados de DVGO, NERF-PL e SVOX2, obrigado pelo seu ótimo trabalho!
Rastreamos os papéis NERF semanais e os classificamos. Todos os artigos NERF publicados anteriores foram adicionados à lista. Fornecemos uma versão em inglês e uma versão chinesa. Congratulamo -nos com contribuições e correções via pr.
Também fornecemos uma versão do Excel (os meta dados) de todos os papéis NERF, você pode adicionar seus próprios comentários ou fazer suas próprias ferramentas de análise de papel com base nos meta dados estruturados.
Obrigado a essas pessoas maravilhosas (key emoji):
Zelin Zhao ? | Ez-yang | Alex-Zhang ? | Fan Lu ? | Maybeshewill-cv ? | Buer1121 ? |
Este projeto segue a especificação de todos os contribuintes. Contribuições de qualquer tipo de boas -vindas!