Dies ist noch ein Forschungsprojekt in Arbeit.
Dieses Projekt zielt darauf ab, mehrere hochmoderne Algorithmen mit großflächigen Strahlungsfeldern zu Benchmarking zu bezeichnen. Wir verwenden austauschig Begriffe "unbegrenzter Nerf" und "großem Maßstab Nerf", da wir feststellen, dass die dahinter steckenden Techniken eng miteinander verbunden sind.
Anstatt ein großes und kompliziertes Code -System zu verfolgen, verfolgen wir ein einfaches Code -Repo mit SOTA -Leistung für unbegrenzte NERFs.
In diesem Repository wird erwartet, dass Sie die folgenden Ergebnisse erzielen:
| Benchmark | Methoden | PSNR |
|---|---|---|
| Unbefragte Panzer und Tempel | Nerf ++ | 20.49 |
| Unbefragte Panzer und Tempel | Plenoxel | 20.40 |
| Unbefragte Panzer und Tempel | DVGO | 20.10 |
| Unbefragte Panzer und Tempel | Unsere | 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 | Unsere | 28.98 |
Trainingsplits:
Drehung:
Ich hoffe, unsere Bemühungen könnten Ihre Forschung oder Projekte helfen!
Klonen Sie dieses Repository. Verwenden Sie Tiefe == 1, um eine große Geschichte herunterzuladen.
git clone --depth=1 [email protected]:sjtuytc/LargeScaleNeRFPytorch.git
mkdir data
mkdir logsConda -Umgebung schaffen.
conda create -n large-scale-nerf python=3.9
conda activate large-scale-nerfInstallieren Sie Pytorch und andere Bibliotheken. Stellen Sie sicher, dass Ihre Pytorch -Version mit Ihrem CUDA kompatibel ist.
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.txtInstallieren Sie gitterbasierte Betreiber, um nicht das Ausführen jedes Mal zu vermeiden, dass Cuda Lib erforderlich ist. (Überprüfen Sie über "NVCC -v", um sicherzustellen, dass Sie einen neuesten CUDA haben.)
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 ../../Installieren Sie andere LIBS, die für die Rekonstruktion benutzerdefinierter Szenen verwendet werden. Dies ist nur erforderlich, wenn Sie Ihre Szenen erstellen müssen.
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_scatterSie können auch die Laptop -Version von Colmap verwenden, wenn Sie keinen Zugriff auf Sudo -Zugriff auf Ihrem Server haben. Wir haben jedoch festgestellt, dass Sie die SOTA -Leistung nicht erhalten, wenn Sie Colmap -Parameter nicht ordnungsgemäß einrichten.
Klicken Sie auf die folgenden Unterabschnittstitel, um die Schritte zu erweitern / zusammenzubrechen.
(1) Unbegrenzte Panzer und Tempel. Laden Sie hier Daten herunter. Dann die Daten entpacken.
cd data
gdown --id 11KRfN91W1AxAW6lOFs4EeYDbeoQZCi87
unzip tanks_and_temples.zip
cd ../(2) Der Datensatz von 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. Was Sie wissen sollten, bevor Sie die Daten herunterladen:
Die heruntergeladenen Daten würden so aussehen:
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
Sie müssen nur "python run_fouriergrid.py" ausführen, um den Zyklus des Zugtest-Renders zu beenden. Erklärungen einiger Argumente:
--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.Während wir Major der Befehle in Skripten/Train_fouriergrid.sh auflisten, listen wir einige der folgenden Befehle für eine bessere Reproduzierbarkeit auf.
# 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 30Die alte Version von Block-Nerf dient immer noch als Grundlinie, wird jedoch bald veraltet. Wir werden später hauptsächlich an gitterbasierten Modellen arbeiten, weil sie einfach und schnell sind. Führen Sie den folgenden Befehl aus, um die alten Block-nernf-Experimente zu reproduzieren:
bash scripts/block_nerf_train.sh
bash scripts/block_nerf_eval.shSetzen Sie Ihre Bilder unter Datenordner. Die Struktur sollte wie:
data
| ——————Madoka // Your folder name here.
| └——————source // Source images should be put here.
| └——————--- | 1.png
| └——————--- | 2.png
| └——————--- | ...Die Beispieldaten werden in unserem Google Drive -Ordner bereitgestellt. Die Madoka und Otobai finden Sie in diesem Link.
Führen Sie Colmap durch, um Szenen zu rekonstruieren. Dies würde wahrscheinlich lange kosten.
python FourierGrid/tools/imgs2poses.py data/MadokaSie können Daten/Madoka durch Ihren Datenordner ersetzen. Wenn Ihre Colmap-Version größer als 3.6 ist (was nicht passieren sollte, wenn Sie APT-Get verwenden), müssen Sie export_path in output_path in der colmap_wrapper.py ändern.
Training von Nerf -Szenen.
python FourierGrid/run_FourierGrid.py --config configs/custom/Madoka.pySie können Konfigurationen/benutzerdefinierte/madoka.py durch andere Konfigurationen ersetzen.
Validierung der Trainingsergebnisse, um ein Fly-through-Video zu generieren.
python FourierGrid/run_FourierGrid.py --config configs/custom/Madoka.py --render_only --render_video --render_video_factor 8Unsere neuesten theoretischen Arbeiten zu gitterbasierten Modellen ( Mund- und Best Paper Award-Kandidat und vollständige Bewertung (5/5/5) bei 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}
}
Erwägen Sie die folgenden großartigen Werke:
@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}
}
Wir beziehen uns auf den Code und die Daten von DVGO, Nerf-PL und SVOX2, danke für ihre großartige Arbeit!
Wir verfolgen wöchentliche Nerf -Papiere und klassifizieren sie. Alle früheren veröffentlichten NERF -Artikel wurden der Liste hinzugefügt. Wir bieten eine englische Version und eine chinesische Version. Wir begrüßen Beiträge und Korrekturen über PR.
Wir bieten auch eine Excel -Version (die Meta -Daten) aller Nerf -Papiere. Sie können Ihre eigenen Kommentare hinzufügen oder Ihre eigenen Papieranalyse -Tools basierend auf den strukturierten Meta -Daten erstellen.
Vielen Dank an diese wunderbaren Menschen (Emoji -Schlüssel):
Zelin Zhao ? | Ez-yang | Alex-Zhang ? | Fan Lu ? | Maybeshwill-CV ? | Buer1121 ? |
Dieses Projekt folgt der All-Contributors-Spezifikation. Beiträge jeglicher Art willkommen!