Ini masih merupakan proyek penelitian yang sedang berlangsung.
Proyek ini bertujuan untuk membandingkan beberapa algoritma bidang pancaran skala besar yang canggih. Kami bertukar istilah "nerf tak terbatas" dan "nerf skala besar" karena kami menemukan teknik di baliknya terkait erat.
Alih -alih mengejar sistem kode yang besar dan rumit, kami mengejar repo kode sederhana dengan kinerja SOTA untuk kutu buku yang tidak terbatas.
Anda diharapkan mendapatkan hasil berikut dalam repositori ini:
| Benchmark | Metode | Psnr |
|---|---|---|
| Tank & Kuil yang Tidak Terbatas | Nerf ++ | 20.49 |
| Tank & Kuil yang Tidak Terbatas | Plenoksel | 20.40 |
| Tank & Kuil yang Tidak Terbatas | Dvgo | 20.10 |
| Tank & Kuil yang Tidak Terbatas | Milik kita | 20.85 |
| Benchmark MIP-BERF-360 | Nerf | 24.85 |
| Benchmark MIP-BERF-360 | Nerf ++ | 26.21 |
| Benchmark MIP-BERF-360 | MIP-BERF-360 | 28.94 |
| Benchmark MIP-BERF-360 | Dvgo | 25.42 |
| Benchmark MIP-BERF-360 | Milik kita | 28.98 |
Perpecahan pelatihan:
Rotasi:
Semoga upaya kami dapat membantu penelitian atau proyek Anda!
Kloning repositori ini. Gunakan kedalaman == 1 untuk menghindari unduh sejarah besar.
git clone --depth=1 [email protected]:sjtuytc/LargeScaleNeRFPytorch.git
mkdir data
mkdir logsMenciptakan lingkungan conda.
conda create -n large-scale-nerf python=3.9
conda activate large-scale-nerfInstal Pytorch dan Libs lainnya. Pastikan versi Pytorch Anda kompatibel dengan CUDA Anda.
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.txtPasang operator berbasis grid untuk menghindari menjalankannya setiap saat, Cuda Lib diperlukan. (Periksa melalui "NVCC -V" untuk memastikan bahwa Anda memiliki CUDA terbaru.)
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 ../../Instal LIB lain yang digunakan untuk merekonstruksi adegan khusus . Ini hanya diperlukan saat Anda perlu membangun adegan Anda.
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_scatterAnda dapat menggunakan versi laptop Colmap juga jika Anda tidak memiliki akses ke akses sudo di server Anda. Namun, kami menemukan jika Anda tidak mengatur parameter colmap dengan benar, Anda tidak akan mendapatkan kinerja SOTA.
Klik judul sub-bagian berikut untuk memperluas / keruntuhan langkah.
(1) Tangki & kuil yang tidak terikat. Unduh data dari sini. Lalu unzip data.
cd data
gdown --id 11KRfN91W1AxAW6lOFs4EeYDbeoQZCi87
unzip tanks_and_temples.zip
cd ../(2) Dataset MIP-BERF-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. Apa yang harus Anda ketahui sebelum mengunduh data:
Data yang diunduh akan terlihat seperti ini:
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
Anda hanya perlu menjalankan "python run_fouriergrid.py" untuk menyelesaikan siklus render-render kereta. Penjelasan beberapa argumen:
--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.Sementara kami mencantumkan utama perintah dalam skrip/train_fouriergrid.sh, kami mencantumkan beberapa perintah di bawah ini untuk reproduktifitas yang lebih baik.
# 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 30Versi lama block-nerf masih disediakan untuk berfungsi sebagai garis dasar, tetapi akan segera ditinggalkan. Kami terutama akan bekerja pada model berbasis grid nanti karena sederhana dan cepat. Jalankan perintah berikut untuk mereproduksi eksperimen block-nerf lama:
bash scripts/block_nerf_train.sh
bash scripts/block_nerf_eval.shLetakkan gambar Anda di bawah folder data. Strukturnya harus seperti:
data
| ——————Madoka // Your folder name here.
| └——————source // Source images should be put here.
| └——————--- | 1.png
| └——————--- | 2.png
| └——————--- | ...Data sampel disediakan di folder Google Drive kami. Madoka dan Otobai dapat ditemukan di tautan ini.
Jalankan Colmap untuk merekonstruksi adegan. Ini mungkin akan menghabiskan waktu lama.
python FourierGrid/tools/imgs2poses.py data/MadokaAnda dapat mengganti data/Madoka dengan folder data Anda. Jika versi colmap Anda lebih besar dari 3,6 (yang seharusnya tidak terjadi jika Anda menggunakan APT-get), Anda perlu mengubah export_path menjadi output_path di colmap_wrapper.py.
Melatih adegan nerf.
python FourierGrid/run_FourierGrid.py --config configs/custom/Madoka.pyAnda dapat mengganti configs/custom/madoka.py dengan konfigurasi lain.
Memvalidasi hasil pelatihan untuk menghasilkan video terbang.
python FourierGrid/run_FourierGrid.py --config configs/custom/Madoka.py --render_only --render_video --render_video_factor 8Pekerjaan teoritis terbaru kami tentang model berbasis grid ( oral & kandidat penghargaan kertas terbaik & skor ulasan lengkap (5/5/5) di 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}
}
Pertimbangkan mengutip karya -karya hebat berikut:
@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}
}
Kami merujuk pada kode dan data dari DVGO, NERF-PL dan SVOX2, terima kasih atas pekerjaan hebat mereka!
Kami melacak kertas nerf mingguan dan mengklasifikasikannya. Semua makalah NERF yang diterbitkan sebelumnya telah ditambahkan ke daftar. Kami menyediakan versi bahasa Inggris dan versi Cina. Kami menyambut kontribusi dan koreksi melalui PR.
Kami juga menyediakan versi Excel (data meta) dari semua makalah NERF, Anda dapat menambahkan komentar Anda sendiri atau membuat alat analisis kertas Anda sendiri berdasarkan data meta terstruktur.
Terima kasih kepada orang -orang yang luar biasa ini (Kunci Emoji):
Zelin Zhao ? | Ez-Yang | Alex-Zhang ? | Fan Lu ? | Maybeshewill-cv ? | buer1121 ? |
Proyek ini mengikuti spesifikasi semua-kontributor. Kontribusi apa pun yang baik!