Совместная оптимизация топологии, материалов и освещения из наблюдений с несколькими видами, как описано в бумаге, извлекая треугольные 3D-модели, материалы и освещение из изображений.
Для дифференцируемого марширования тетрахдонов мы адаптировали код из Kaolin Nvidia: библиотека Pytorch для ускорения 3D исследований в области глубокого обучения.
2023-10-20 : мы добавили версию библиотеки Renderutils, написанную в Slangpy, чтобы использовать возможности Autodiff Slang вместо расширений CUDA с ручным проходами вперед и назад. Это существенно упрощает код с той же производительности времени выполнения, что и раньше. Эта версия доступна в slang ветви этого репо.
2023-09-15 : мы добавили поддержку методики Isosurfacing Isosurfecing Flexicubes. Пожалуйста, см. configs/bob_flexi.json для примера использования, и обратитесь к документации Flexicubes для получения подробной информации.
@inproceedings{Munkberg_2022_CVPR,
author = {Munkberg, Jacob and Hasselgren, Jon and Shen, Tianchang and Gao, Jun and Chen, Wenzheng
and Evans, Alex and M"uller, Thomas and Fidler, Sanja},
title = "{Extracting Triangular 3D Models, Materials, and Lighting From Images}",
booktitle = {Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition (CVPR)},
month = {June},
year = {2022},
pages = {8280-8290}
}
Copyright © 2022, Nvidia Corporation. Все права защищены.
Эта работа предоставляется в соответствии с лицензией NVIDIA исходного кода.
Для запросов на деловые запросы, пожалуйста, посетите наш веб -сайт и отправьте форму: Nvidia Research Licensing.
Требуется Python 3.6+, VS2019+, CUDA 11,3+ и Pytorch 1.10+
Протестировано в Anaconda3 с Python 3.9 и Pytorch 1.10
Установите инструментарий CUDA (необходимый для создания расширений Pytorch). Мы поддерживаем CUDA 11.3 и выше. Выберите соответствующую версию Pytorch, совместимую с установленным инструментом CUDA. Ниже приведен пример с CUDA 11.6
conda create -n dmodel python=3.9
activate dmodel
conda install pytorch torchvision torchaudio cudatoolkit=11.6 -c pytorch -c conda-forge
pip install ninja imageio PyOpenGL glfw xatlas gdown
pip install git+https://github.com/NVlabs/nvdiffrast/
pip install --global-option="--no-networks" git+https://github.com/NVlabs/tiny-cuda-nn#subdirectory=bindings/torch
imageio_download_bin freeimage
activate dmodel
Наш подход предназначен для высококлассных графических процессоров NVIDIA с большим количеством памяти. Чтобы запустить графические процессоры среднего класса, уменьшите параметр размера партии в файлах .json.
Простой род 1 пример реконструкции:
python train.py --config configs/bob.json
Визуализируйте прогресс обучения (поддерживается только в Windows):
python train.py --config configs/bob.json --display-interval 20
Пример мульти -графического процессора (только Linux. Экспериментальный: все результаты в статье были сгенерированы с использованием одного GPU ) с использованием DDP Pytorch
torchrun --nproc_per_node=4 train.py --config configs/bob.json
Ниже мы показываем отправную точку и конечный результат. Ссылки справа.


Результаты будут храниться в папке out . Модели Spot and Bob были созданы и выпущены в общественном доступе Keenan Crane.
Включены примеры
spot.json - извлечение трехмерной модели точечной модели. Геометрия, материалы и освещение из наблюдений изображений.spot_fixlight.json - то же самое, что и выше, но предполагает известное освещение среды.spot_metal.json - Пример совместного обучения материалов и высокочастотного освещения среды для демонстрации разделения -суме.bob.json - простой пример модели рода 1. Кроме того, мы включаем конфигурации ( nerf_*.json , nerd_*.json ), чтобы воспроизвести основные результаты статьи. Мы полагаемся на наборы данных сторонних лиц, которые предоставляются их соответствующим авторам. Обратите внимание, что отдельные лицензии применяются к каждому набору данных. Для автоматической загрузки и предварительной обработки все наборы данных запустите скрипт download_datasets.py :
activate dmodel
cd data
python download_datasets.py
Ниже следует больше информации и инструкций о том, как вручную установить наборы данных (в случае сбоя автоматического сценария).
NERF Синтетический набор данных нашего представления Результаты интерполяции Используйте синтетический набор данных из исходной бумаги NERF. Чтобы вручную установить его, загрузите архив синтетического набора данных NERF и расстегнуть его в папку nvdiffrec/data . Это требуется для запуска любого из nerf_*.json Config.
Набор данных NERD Мы используем наборы данных из бумаги NERD, которая имеет реальную фотограмметрию и неточные (аннотированные вручную) маски сегментации. Клонировать наборы данных NERD, используя GIT и Rescale их до 512 x 512 пикселей разрешается, используя Script scale_images.py . Это требуется для запуска любого из nerd_*.json Config.
activate dmodel
cd nvdiffrec/data/nerd
git clone https://github.com/vork/ethiopianHead.git
git clone https://github.com/vork/moldGoldCape.git
python scale_images.py
cd docker
./make_image.sh nvdiffrec:v1
Запустите интерактивный контейнер Docker: docker run --gpus device=0 -it --rm -v /raid:/raid -it nvdiffrec:v1 bash
Отдельный Docker: docker run --gpus device=1 -d -v /raid:/raid -w=[path to the code] nvdiffrec:v1 python train.py --config configs/bob.json