นี่ยังคงเป็นโครงการวิจัยที่กำลังดำเนินการอยู่
โครงการนี้มีจุดมุ่งหมายเพื่อเปรียบเทียบการเปรียบเทียบอัลกอริทึมความสว่างขนาดใหญ่ที่ล้ำสมัยหลายแห่ง เราแลกเปลี่ยนคำว่า "Nerf ที่ไม่ได้ จำกัด " และ "Nerf ขนาดใหญ่" เพราะเราพบว่าเทคนิคที่อยู่เบื้องหลังพวกเขาเกี่ยวข้องอย่างใกล้ชิด
แทนที่จะติดตามระบบรหัสขนาดใหญ่และซับซ้อนเราได้ติดตามรหัส repo ง่าย ๆ ด้วยประสิทธิภาพ SOTA สำหรับ NERF ที่ไม่มีขอบเขต
คุณคาดว่าจะได้รับผลลัพธ์ต่อไปนี้ในที่เก็บนี้:
| เกณฑ์มาตรฐาน | วิธีการ | PSNR |
|---|---|---|
| รถถังและวัดที่ไม่มีขอบเขต | nerf ++ | 20.49 |
| รถถังและวัดที่ไม่มีขอบเขต | plenoxels | 20.40 |
| รถถังและวัดที่ไม่มีขอบเขต | ดีวีดี | 20.10 |
| รถถังและวัดที่ไม่มีขอบเขต | ของเรา | 20.85 |
| มาตรฐาน MIP-NENF-360 | คนโง่ | 24.85 |
| มาตรฐาน MIP-NENF-360 | nerf ++ | 26.21 |
| มาตรฐาน MIP-NENF-360 | MIP-NENF-360 | 28.94 |
| มาตรฐาน MIP-NENF-360 | ดีวีดี | 25.42 |
| มาตรฐาน MIP-NENF-360 | ของเรา | 28.98 |
การฝึกอบรมแยก:
การหมุน:
หวังว่าความพยายามของเราจะช่วยวิจัยหรือโครงการของคุณ!
โคลนที่เก็บนี้ ใช้ความลึก == 1 เพื่อหลีกเลี่ยงการดาวน์โหลดประวัติขนาดใหญ่
git clone --depth=1 [email protected]:sjtuytc/LargeScaleNeRFPytorch.git
mkdir data
mkdir logsสร้างสภาพแวดล้อม Conda
conda create -n large-scale-nerf python=3.9
conda activate large-scale-nerfติดตั้ง pytorch และ libs อื่น ๆ ตรวจสอบให้แน่ใจว่าเวอร์ชัน pytorch ของคุณเข้ากันได้กับ 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.txtติดตั้งตัวดำเนินการที่ใช้กริดเพื่อหลีกเลี่ยงการทำงานทุกครั้งที่จำเป็นต้องใช้ CUDA LIB (ตรวจสอบผ่าน "NVCC -V" เพื่อให้แน่ใจว่าคุณมี 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 ../../ติดตั้ง libs อื่น ๆ ที่ใช้สำหรับการสร้างฉาก ที่กำหนดเอง ใหม่ สิ่งนี้จำเป็นก็ต่อเมื่อคุณต้องการสร้างฉากของคุณ
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_scatterคุณสามารถใช้ Colmap เวอร์ชันแล็ปท็อปได้เช่นกันหากคุณไม่สามารถเข้าถึง Sudo Access บนเซิร์ฟเวอร์ของคุณได้ อย่างไรก็ตามเราพบว่าหากคุณไม่ได้ตั้งค่าพารามิเตอร์ COLMAP อย่างถูกต้องคุณจะไม่ได้รับประสิทธิภาพ SOTA
คลิกที่ชื่อส่วนย่อยต่อไปนี้เพื่อขยาย / ล่มสลายขั้นตอน
(1) รถถังและวัดที่ไม่มีขอบเขต ดาวน์โหลดข้อมูลจากที่นี่ จากนั้นคลายซิปข้อมูล
cd data
gdown --id 11KRfN91W1AxAW6lOFs4EeYDbeoQZCi87
unzip tanks_and_temples.zip
cd ../(2) ชุดข้อมูล MIP-NENF-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) อ่าว Mission San Fran Cisco สิ่งที่คุณควรรู้ก่อนดาวน์โหลดข้อมูล:
ข้อมูลที่ดาวน์โหลดจะมีลักษณะเช่นนี้:
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
คุณจะต้องเรียกใช้ "Python run_fouriergrid.py" เพื่อจบวัฏจักรการทดสอบรถไฟ คำอธิบายของข้อโต้แย้งบางอย่าง:
--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.ในขณะที่เราแสดงรายการหลักของคำสั่งในสคริปต์/train_fouriergrid.sh เราแสดงรายการคำสั่งบางอย่างด้านล่างเพื่อการทำซ้ำที่ดีขึ้น
# 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 30รุ่นเก่าของ Block-Nerf ยังคงมีให้เพื่อใช้เป็นพื้นฐาน แต่จะเลิกใช้ในไม่ช้า เราจะทำงานกับโมเดลที่ใช้กริดเป็นหลักในภายหลังเพราะมันง่ายและรวดเร็ว เรียกใช้คำสั่งต่อไปนี้เพื่อทำซ้ำการทดลองบล็อกเก่าแก่:
bash scripts/block_nerf_train.sh
bash scripts/block_nerf_eval.shใส่ภาพของคุณภายใต้โฟลเดอร์ Data โครงสร้างควรเป็นเช่น:
data
| ——————Madoka // Your folder name here.
| └——————source // Source images should be put here.
| └——————--- | 1.png
| └——————--- | 2.png
| └——————--- | ...ข้อมูลตัวอย่างมีอยู่ในโฟลเดอร์ Google Drive ของเรา Madoka และ Otobai สามารถพบได้ที่ลิงค์นี้
เรียกใช้ Colmap เพื่อสร้างฉากขึ้นใหม่ นี่อาจจะมีค่าใช้จ่ายเป็นเวลานาน
python FourierGrid/tools/imgs2poses.py data/Madokaคุณสามารถแทนที่ Data/Madoka ด้วยโฟลเดอร์ข้อมูลของคุณ หากเวอร์ชัน colmap ของคุณมีขนาดใหญ่กว่า 3.6 (ซึ่งไม่ควรเกิดขึ้นหากคุณใช้ APT-GET) คุณต้องเปลี่ยน Export_Path เป็น Output_Path ใน colmap_wrapper.py
การฝึกอบรมฉาก nerf
python FourierGrid/run_FourierGrid.py --config configs/custom/Madoka.pyคุณสามารถแทนที่ configs/custom/madoka.py โดย configs อื่น ๆ
ตรวจสอบผลการฝึกอบรมเพื่อสร้างวิดีโอบินผ่าน
python FourierGrid/run_FourierGrid.py --config configs/custom/Madoka.py --render_only --render_video --render_video_factor 8ผลงานทางทฤษฎีล่าสุดของเราเกี่ยวกับโมเดลที่ใช้กริด ( ผู้สมัครรางวัล Paper & Best Paper Award & Full Review Score (5/5/5) ที่ 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}
}
พิจารณาอ้างถึงผลงานที่ยอดเยี่ยมต่อไปนี้:
@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}
}
เราอ้างถึงรหัสและข้อมูลจาก DVGO, NERF-PL และ SVOX2 ขอบคุณสำหรับการทำงานที่ยอดเยี่ยมของพวกเขา!
เราติดตามเอกสาร nerf รายสัปดาห์และจัดประเภทพวกเขา เอกสาร NERF ที่เผยแพร่ก่อนหน้านี้ทั้งหมดได้ถูกเพิ่มลงในรายการ เราให้บริการเวอร์ชันภาษาอังกฤษและเวอร์ชันภาษาจีน เรายินดีต้อนรับการมีส่วนร่วมและการแก้ไขผ่าน PR
นอกจากนี้เรายังมีเวอร์ชัน Excel (ข้อมูลเมตา) ของเอกสาร NERF ทั้งหมดคุณสามารถเพิ่มความคิดเห็นของคุณเองหรือสร้างเครื่องมือวิเคราะห์กระดาษของคุณเองตามข้อมูลเมตาที่มีโครงสร้าง
ขอบคุณไปที่คนที่ยอดเยี่ยมเหล่านี้ (คีย์อีโมจิ):
Zelin Zhao - | Ez-yang | อเล็กซ์-จาง - | แฟน Lu - | MAYBESHEWILL-CV - | Buer1121 - |
โครงการนี้เป็นไปตามข้อกำหนดทั้งหมดของผู้เข้าร่วม การมีส่วนร่วมทุกชนิดยินดีต้อนรับ!