Este sigue siendo un proyecto de investigación en progreso.
Este proyecto apunta a la evaluación comparativa de varios algoritmos de campos de radiación a gran escala de última generación. Intercambiamos los términos "nerf ilimitados" y "nerf a gran escala" porque encontramos que las técnicas detrás de ellas están estrechamente relacionadas.
En lugar de buscar un sistema de código grande y complicado, buscamos un repositorio de código simple con el rendimiento de Sota para los NERF ilimitados.
Se espera que obtenga los siguientes resultados en este repositorio:
| Punto de referencia | Métodos | PSNR |
|---|---|---|
| Tanques y templos ilimitados | Nerf ++ | 20.49 |
| Tanques y templos ilimitados | Plenoxeles | 20.40 |
| Tanques y templos ilimitados | Dvgo | 20.10 |
| Tanques y templos ilimitados | Nuestro | 20.85 |
| MIP-NERF-360 Benchmark | Nerf | 24.85 |
| MIP-NERF-360 Benchmark | Nerf ++ | 26.21 |
| MIP-NERF-360 Benchmark | MIP-NERF-360 | 28.94 |
| MIP-NERF-360 Benchmark | Dvgo | 25.42 |
| MIP-NERF-360 Benchmark | Nuestro | 28.98 |
Divisiones de entrenamiento:
Rotación:
¡Espero que nuestros esfuerzos puedan ayudar a su investigación o proyectos!
Clon este repositorio. Use la profundidad == 1 para evitar descargar un historial grande.
git clone --depth=1 [email protected]:sjtuytc/LargeScaleNeRFPytorch.git
mkdir data
mkdir logsCrear entorno de condimentista.
conda create -n large-scale-nerf python=3.9
conda activate large-scale-nerfInstale pytorch y otras libs. Asegúrese de que su versión de Pytorch sea compatible con su 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 operadores basados en la cuadrícula para evitar ejecutarlos cada vez, requerido CUDA lib. (Verifique a través de "NVCC -V" para asegurarse de tener un último 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 otras libs utilizadas para reconstruir escenas personalizadas . Esto solo es necesario cuando necesitas construir tus escenas.
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_scatterTambién puede usar la versión para computadora portátil de COLMAP si no tiene acceso a Sudo Access en su servidor. Sin embargo, descubrimos que si no configura los parámetros COLMAP correctamente, no obtendrá el rendimiento de SOTA.
Haga clic en los siguientes títulos de subsección para expandir / colapsar los pasos.
(1) Tanques y templos ilimitados. Descargue datos de aquí. Luego descomprima los datos.
cd data
gdown --id 11KRfN91W1AxAW6lOFs4EeYDbeoQZCi87
unzip tanks_and_temples.zip
cd ../(2) El conjunto de datos 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. Lo que debe saber antes de descargar los datos:
Los datos descargados se verían así:
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
Solo necesita ejecutar "Python Run_fouriergrid.py" para terminar el ciclo de prueba de prueba de tren. Explicaciones de algunos 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.Si bien enumeramos el mayor de los comandos en Scripts/Train_FourierGrid.sh, enumeramos algunos de los comandos a continuación para una mejor reproducibilidad.
# 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 30La versión anterior de Block-Nerf todavía se proporciona para servir como línea de base, pero pronto se desaprobará. Trabajaremos principalmente en modelos basados en la red más adelante porque son simples y rápidos. Ejecute el siguiente comando para reproducir los viejos experimentos de bloque de bloques:
bash scripts/block_nerf_train.sh
bash scripts/block_nerf_eval.shColoque sus imágenes en la carpeta de datos. La estructura debe ser como:
data
| ——————Madoka // Your folder name here.
| └——————source // Source images should be put here.
| └——————--- | 1.png
| └——————--- | 2.png
| └——————--- | ...Los datos de muestra se proporcionan en nuestra carpeta Google Drive. El Madoka y Otobai se pueden encontrar en este enlace.
Ejecute Colmap para reconstruir escenas. Esto probablemente costaría mucho tiempo.
python FourierGrid/tools/imgs2poses.py data/MadokaPuede reemplazar datos/Madoka por su carpeta de datos. Si su versión de ColMap es mayor que 3.6 (que no debería suceder si usa apt-get), debe cambiar export_path a output_path en el colmap_wrapper.py.
Entrenamiento de escenas nerf.
python FourierGrid/run_FourierGrid.py --config configs/custom/Madoka.pyPuede reemplazar Configs/Custom/Madoka.py por otras configuraciones.
Validando los resultados de la capacitación para generar un video de vuelo.
python FourierGrid/run_FourierGrid.py --config configs/custom/Madoka.py --render_only --render_video --render_video_factor 8Nuestro último trabajo teórico sobre modelos basados en la cuadrícula ( Oral & Best Paper Award candidato y puntaje completo de revisión (5/5/5) en 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 las siguientes grandes obras:
@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}
}
Nos referimos al código y los datos de DVGO, NERF-PL y SVOX2, ¡gracias por su gran trabajo!
Hacemos un seguimiento de los documentos semanales de NERF y los clasificamos. Todos los documentos de NERF publicados anteriormente se han agregado a la lista. Proporcionamos una versión en inglés y una versión china. Agradecemos contribuciones y correcciones a través de PR.
También proporcionamos una versión de Excel (los meta datos) de todos los documentos de NERF, puede agregar sus propios comentarios o hacer sus propias herramientas de análisis en papel basadas en los meta datos estructurados.
Gracias a estas maravillosas personas (Key Emoji):
Zelin Zhao ? | Ez-yang | Alex-Zhang ? | Fan Lu ? | Maybeshewill-cv ? | BUER1121 ? |
Este proyecto sigue la especificación de todos los contribuyentes. ¡Contribuciones de cualquier tipo bienvenido!