Il s'agit toujours d'un projet de recherche en cours.
Ce projet vise à analyser plusieurs algorithmes de champs de radiance à grande échelle. Nous utilisons des termes échangeant "Nerf illimité" et "Nerf à grande échelle" parce que nous constatons que les techniques derrière elles sont étroitement liées.
Au lieu de poursuivre un système de code important et compliqué, nous poursuivons un simple référentiel de code avec des performances SOTA pour les nerfs illimités.
Vous devez obtenir les résultats suivants dans ce référentiel:
| Référence | Méthodes | PSNR |
|---|---|---|
| Tanks et temples illimités | Nerf ++ | 20.49 |
| Tanks et temples illimités | Plénoxels | 20.40 |
| Tanks et temples illimités | DVGO | 20.10 |
| Tanks et temples illimités | La nôtre | 20.85 |
| Benchmark MIP-nerf-360 | Nerf | 24.85 |
| Benchmark MIP-nerf-360 | Nerf ++ | 26.21 |
| Benchmark MIP-nerf-360 | MIP-nerf-360 | 28.94 |
| Benchmark MIP-nerf-360 | DVGO | 25.42 |
| Benchmark MIP-nerf-360 | La nôtre | 28.98 |
Français de formation:
Rotation:
J'espère que nos efforts pourraient aider vos recherches ou projets!
Cloner ce référentiel. Utilisez la profondeur == 1 pour éviter de télécharger une grande histoire.
git clone --depth=1 [email protected]:sjtuytc/LargeScaleNeRFPytorch.git
mkdir data
mkdir logsCréer un environnement conda.
conda create -n large-scale-nerf python=3.9
conda activate large-scale-nerfInstallez Pytorch et autres Libs. Assurez-vous que votre version Pytorch est compatible avec votre 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.txtInstallez les opérateurs basés sur la grille pour éviter de les exécuter à chaque fois, Cuda Lib requise. (Vérifiez via "NVCC -V" pour vous assurer que vous avez un dernier 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 ../../Installez d'autres LIB utilisées pour reconstruire des scènes personnalisées . Ce n'est nécessaire que lorsque vous avez besoin de construire vos scènes.
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_scatterVous pouvez également utiliser la version ordinateur portable de COLMAP si vous n'avez pas accès à l'accès sudo sur votre serveur. Cependant, nous avons constaté que si vous ne configurez pas correctement les paramètres COLMAP, vous n'obtiendrez pas les performances SOTA.
Cliquez sur les titres de sous-section suivants pour étendre / effondrer les étapes.
(1) Tanks et temples illimités. Téléchargez les données d'ici. Décompressez ensuite les données.
cd data
gdown --id 11KRfN91W1AxAW6lOFs4EeYDbeoQZCi87
unzip tanks_and_temples.zip
cd ../(2) L'ensemble de données 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. Ce que vous devez savoir avant de télécharger les données:
Les données téléchargées ressembleraient à ceci:
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
Il vous suffit d'exécuter "Python run_fouriergrid.py" pour terminer le cycle de contrainte de test de train. Explications de certains arguments:
--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.Bien que nous répertorions la majeure des commandes dans Scripts / Train_fouriergrid.sh, nous énumèrez certaines des commandes ci-dessous pour une meilleure reproductibilité.
# 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 30L'ancienne version de Block-nerf est toujours fournie pour servir de base, mais elle sera bientôt obsolète. Nous travaillerons principalement sur des modèles basés sur la grille plus tard car ils sont simples et rapides. Exécutez la commande suivante pour reproduire les anciennes expériences de bloc de blocs:
bash scripts/block_nerf_train.sh
bash scripts/block_nerf_eval.shMettez vos images dans le dossier de données. La structure doit être comme:
data
| ——————Madoka // Your folder name here.
| └——————source // Source images should be put here.
| └——————--- | 1.png
| └——————--- | 2.png
| └——————--- | ...Les exemples de données sont fournies dans notre dossier Google Drive. Le Madoka et l'Otobai se trouvent sur ce lien.
Exécutez Colmap pour reconstruire les scènes. Cela coûterait probablement longtemps.
python FourierGrid/tools/imgs2poses.py data/MadokaVous pouvez remplacer Data / Madoka par votre dossier de données. Si votre version COLMAP est supérieure à 3,6 (ce qui ne devrait pas se produire si vous utilisez Apt-Get), vous devez modifier Export_Path vers Output_Path dans le colmap_wrapper.py.
Formation de scènes nerf.
python FourierGrid/run_FourierGrid.py --config configs/custom/Madoka.pyVous pouvez remplacer les configts / personnalisés / madoka.py par d'autres configurations.
Valider les résultats de la formation pour générer une vidéo à la mouche.
python FourierGrid/run_FourierGrid.py --config configs/custom/Madoka.py --render_only --render_video --render_video_factor 8Nos derniers travaux théoriques sur les modèles basés sur la grille ( Oral & Best Paper Award Prix & Full Review Score (5/5/5) sur 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}
}
Pensez à citer les grandes œuvres suivantes:
@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}
}
Nous nous référons au code et aux données de DVGO, NERF-PL et SVOX2, merci pour leur excellent travail!
Nous suivons les articles de nerf hebdomadaires et les classons. Tous les précédents articles Nerf publiés ont été ajoutés à la liste. Nous fournissons une version anglaise et une version chinoise. Nous accueillons les contributions et les corrections via PR.
Nous fournissons également une version Excel (les méta-données) de tous les articles NERF, vous pouvez ajouter vos propres commentaires ou créer vos propres outils d'analyse papier basés sur les méta-données structurées.
Merci à ces gens merveilleux (clé emoji):
Zelin Zhao ? | Ez-yang | Alex-Zhang ? | Fan Lu ? | Maybeshewill-cv ? | buer1121 ? |
Ce projet suit les spécifications de tous les contributeurs. Contributions de toute nature bienvenue!