Это все еще исследовательский проект.
Этот проект направлен на сравнение нескольких современных крупномасштабных алгоритмов поля сияния. Мы обмениваемся терминами «неограниченного NERF» и «крупномасштабного NERF», потому что мы находим, что методы, стоящие за ними, тесно связаны.
Вместо того, чтобы преследовать большую и сложную систему кода, мы преследуем простую кодовую репо с производительностью SOTA для неограниченных NERFS.
Ожидается, что вы получите следующие результаты в этом хранилище:
| Эталон | Методы | PSNR |
|---|---|---|
| Неограниченные танки и храмы | Nerf ++ | 20.49 |
| Неограниченные танки и храмы | Plenoxels | 20.40 |
| Неограниченные танки и храмы | DVGO | 20.10 |
| Неограниченные танки и храмы | Наш | 20,85 |
| MIP-SNERF-360 | Нерф | 24.85 |
| MIP-SNERF-360 | Nerf ++ | 26.21 |
| MIP-SNERF-360 | Mip-nerf-360 | 28.94 |
| MIP-SNERF-360 | DVGO | 25.42 |
| MIP-SNERF-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 на вашем сервере. Тем не менее, мы обнаружили, что если вы не настроите параметры Colmap должным образом, вы не получите производительность SOTA.
Нажмите на следующие названия подраздела, чтобы развернуть / развернуть шаги.
(1) Неограниченные резервуары и храмы. Загрузите данные отсюда. Затем расстегнут разарные данные.
cd data
gdown --id 11KRfN91W1AxAW6lOFs4EeYDbeoQZCi87
unzip tanks_and_temples.zip
cd ../(2) Набор данных MIP-SNERF-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) Сан -Фрэн Cisco Mission Bay. Что вы должны знать перед загрузкой данных:
Загруженные данные выглядят так:
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.В то время как мы перечисляем основные команды в Scripts/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-Snerf все еще предоставлена, чтобы служить базовой линией, но скоро она будет устареть. Позже мы будем работать на моделях на основе сетки, потому что они просты и быстры. Запустите следующую команду, чтобы воспроизвести старые эксперименты по блоке-панели:
bash scripts/block_nerf_train.sh
bash scripts/block_nerf_eval.shПоместите свои изображения в папку данных. Структура должна быть похожа на:
data
| ——————Madoka // Your folder name here.
| └——————source // Source images should be put here.
| └——————--- | 1.png
| └——————--- | 2.png
| └——————--- | ...Примерные данные представлены в нашей папке Google Drive. Мадока и Отобай можно найти по этой ссылке.
Запустите Colmap, чтобы реконструировать сцены. Это, вероятно, будет стоить много времени.
python FourierGrid/tools/imgs2poses.py data/MadokaВы можете заменить данные/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 на другие конфигурации.
Проверка результатов обучения для генерации пролетающего видео.
python FourierGrid/run_FourierGrid.py --config configs/custom/Madoka.py --render_only --render_video --render_video_factor 8Наша последняя теоретическая работа по моделям на основе сетки ( кандидат на премию Oral & Best Paper и полная оценка обзора (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, вы можете добавить свои собственные комментарии или сделать свои собственные инструменты анализа бумаги на основе структурированных метаданных.
Спасибо этим замечательным людям (ключ эмодзи):
Зелин Чжао ? | Эз-ян | Алекс-Занг ? | Фанат Лу ? | Maybeshewill-CV ? | Buer1121 ? |
Этот проект следует за спецификацией всех контролей. Взносы любого вида приветствуются!