

SDFStudio - это унифицированная и модульная структура для нейронной неявной реконструкции поверхности, построенной на вершине удивительного проекта NerfStudio. Мы обеспечиваем унифицированную реализацию трех основных методов реконструкции поверхности: Unisurf, VolSDF и NEU. SDFStudio также поддерживает различные представления сцены, такие как MLPS, Tri-Plane и Multi-Res. Особенности сетки и несколько стратегий отбора проб точки, такие как выборка под руководством поверхности, как в Unisurf, и выборочная выборка с воксельной поверхностью от NeuralReconw. Кроме того, он интегрирует последние достижения в области, такие как использование монокулярных сигналов (MonoSDF), регуляризации геометрии (Unisurf) и последовательность с несколькими просветительными обзорами (гео-е-е-ею. Благодаря объединенной и модульной реализации, SDFStudio позволяет легко передавать идеи из одного метода в другой. Например, Mono-neus применяет идею от MonoSDF к NEU, а Geo-VolsDF применяет идею от гео-эус до VolSDF.
2023.06.16 : Добавить bakedangelo , который сочетает в себе BakedSDF с численными сетями и прогрессивной подготовкой Neuralangelo .
2023.06.16 : Добавить neus-facto-angelo , который сочетает в себе neus-facto с численными сетями и прогрессивной подготовкой Neuralangelo .
2023.06.16 : поддержка Neuralangelo.
2023.03.12 : поддержка BakedSdf.
2022.12.28 : Поддержка нейронной реконструкции поверхности RGB-D.
CUDA должен быть установлен в системе. Эта библиотека была протестирована с версией 11.3. Вы можете найти больше информации об установке CUDA здесь.
SDFStudio требует python >= 3.7 . Мы рекомендуем использовать Conda для управления зависимостями. Обязательно установите Conda, прежде чем продолжить.
conda create --name sdfstudio -y python=3.8
conda activate sdfstudio
python -m pip install --upgrade pipУстановите Pytorch с CUDA (этот репо был протестирован с CUDA 11.3) и Tiny-Cuda-NN
pip install torch==1.12.1+cu113 torchvision==0.13.1+cu113 -f https://download.pytorch.org/whl/torch_stable.html
pip install git+https://github.com/NVlabs/tiny-cuda-nn/ # subdirectory=bindings/torchgit clone https://github.com/autonomousvision/sdfstudio.git
cd sdfstudio
pip install --upgrade pip setuptools
pip install -e .
# install tab completion
ns-install-cliСледующее будет обучать неосновную модель,
# Download some test data: you might need to install curl if your system don't have that
ns-download-data sdfstudio
# Train model on the dtu dataset scan65
ns-train neus-facto --pipeline.model.sdf-field.inside-outside False --vis viewer --experiment-name neus-facto-dtu65 sdfstudio-data --data data/sdfstudio-demo-data/dtu-scan65
# Or you could also train model on the Replica dataset room0 with monocular priors
ns-train neus-facto --pipeline.model.sdf-field.inside-outside True --pipeline.model.mono-depth-loss-mult 0.1 --pipeline.model.mono-normal-loss-mult 0.05 --vis viewer --experiment-name neus-facto-replica1 sdfstudio-data --data data/sdfstudio-demo-data/replica-room0 --include_mono_prior TrueЕсли все работает, вы должны увидеть следующий прогресс обучения:

Навигация по ссылке в конце терминала загрузит WebViewer (разработанный NerfStudio). Если вы работаете на удаленной машине, вам нужно будет перенаправить порт WebSocket (по умолчанию до 7007). Благодаря графическому процессору RTX3090, для итераций 20 тысяч займет ~ 15 минут, но вы уже можете увидеть разумные результаты реконструкции после 2K итераций в WebViewer.

Также можно загрузить предварительную модель, запустив
ns-train neus-facto --trainer.load-dir {outputs/neus-facto-dtu65/neus-facto/XXX/sdfstudio_models} sdfstudio-data --data data/sdfstudio-demo-data/dtu-scan65 Это автоматически возобновит обучение. Если вы не хотите возобновить обучение, --viewer.start-train False Обратите внимание, что порядок команды имеет значение, подкоманда DataParser должен прийти после модельного подкоманда.
После того, как у вас есть обученная модель, вы можете экспортировать сетку и отобрать сетку.
ns-extract-mesh --load-config outputs/neus-facto-dtu65/neus-facto/XXX/config.yml --output-path meshes/neus-facto-dtu65.ply ns-render-mesh --meshfile meshes/neus-facto-dtu65.ply --traj interpolate --output-path renders/neus-facto-dtu65.mp4 sdfstudio-data --data data/sdfstudio-demo-data/dtu-scan65
Вы получите следующее видео, если все работает должным образом.
Сначала мы должны создать путь для камеры. Это может быть сделано у зрителя под вкладкой «рендеринг». Ориентируйте свое 3D -представление в место, где вы хотите запустить видео, затем нажмите «Добавить камеру». Это установит первую кадр ключа камеры. Продолжайте новые точки зрения, добавляя дополнительные камеры для создания пути камеры. Мы предоставляем другие параметры для дальнейшего уточнения пути вашей камеры. После удовлетворения нажмите «рендеринг», который отобразит модал, который содержит команду, необходимую для визуализации видео. Убейте работу по обучению (или создайте новый терминал, если у вас есть много вычислительных веществ) и команды для создания видео.
Для просмотра всех параметров экспорта видео запустите:
ns-render --helpМы предоставляем много других моделей, чем Neus-Facto, см. Документацию. Например, если вы хотите обучить оригинальную модель Neus, используйте следующую команду:
ns-train neus --pipeline.model.sdf-field.inside-outside False sdfstudio-data --data data/sdfstudio-demo-data/dtu-scan65 Для полного списка включенных моделей запустите ns-train --help . Пожалуйста, обратитесь к документации для более подробного объяснения для каждого метода.
Каждая модель содержит много параметров, которые можно изменить, слишком много, чтобы перечислить здесь. Используйте команду --help , чтобы увидеть полный список параметров конфигурации.
Обратите внимание, что этот порядок параметров имеет значение! Например, вы не можете установить --machine.num-gpus после параметра --data
ns-train neus-facto --help
NerfStudio поддерживает три различных метода для отслеживания прогресса обучения, используя зрителя, Tensorboard, а также веса и уклоны. Эти инструменты визуализации также можно использовать в SDFStudio. Вы можете указать, какой визуализатор использовать путем приложения --vis {viewer, tensorboard, wandb} к команде обучения. Обратите внимание, что только один может использоваться за раз. Кроме того, зритель работает только для быстрых методов (т. Е. NeuS-facto и NeuS-acc ), для более медленных методов, таких как NeuS-facto-bigmlp , используют другие регистраторы.
Пожалуйста, обратитесь к документации в формате данных и формате данных, если вы хотите использовать пользовательские наборы данных.

Если вы используете эту библиотеку или найдите документацию, полезную для вашего исследования, пожалуйста, рассмотрите возможность ссылаться:
@misc { Yu2022SDFStudio ,
author = { Yu, Zehao and Chen, Anpei and Antic, Bozidar and Peng, Songyou and Bhattacharyya, Apratim
and Niemeyer, Michael and Tang, Siyu and Sattler, Torsten and Geiger, Andreas } ,
title = { SDFStudio: A Unified Framework for Surface Reconstruction } ,
year = { 2022 } ,
url = { https://github.com/autonomousvision/sdfstudio } ,
}