从图像提取三角形3D模型,材料和照明的拓扑,材料和照明的联合优化,材料和照明。
对于可区分的四面行曲,我们从NVIDIA的Kaolin:Pytorch图书馆进行了改编的代码,用于加速3D深度学习研究。
2023-10-20 :我们添加了用slangpy编写的Renderutils库的版本,以利用语的Autodiff功能,而不是手工制作的前进和向后传球的CUDA扩展功能。这实质上简化了代码,其运行时性能与以前相同。此版本可在此存储库的slang分支中找到。
2023-09-15 :我们增加了对FlexiCubes等侧面技术的支持。请参阅Config 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}
}
版权所有©2022,NVIDIA Corporation。版权所有。
这项工作可根据NVIDIA源代码许可提供。
有关业务查询,请访问我们的网站并提交表格:NVIDIA研究许可。
需要Python 3.6+,VS2019+,CUDA 11.3+和Pytorch 1.10+
用Python 3.9和Pytorch 1.10在Anaconda3中测试
安装CUDA工具包(需要构建Pytorch扩展程序)。我们支持CUDA 11.3及以上。选择与已安装的CUDA工具包兼容Pytorch的适当版本。以下是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 GPU设计的。要在中端GPU上运行,请减少.json文件中的批处理大小参数。
简单属1重建示例:
python train.py --config configs/bob.json
可视化培训进度(仅在Windows上支持):
python train.py --config configs/bob.json --display-interval 20
多GPU示例(仅Linux。实验:使用单个GPU生成论文中的所有结果),使用Pytorch DDP生成
torchrun --nproc_per_node=4 train.py --config configs/bob.json
在下面,我们显示起点和最终结果。右边的引用。


结果将存储在out文件夹中。 Keenan Crane创建并释放到了公共领域。
包括示例
spot.json提取点模型的3D模型。图像观测值的几何形状,材料和照明。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配置所必需的。
书呆子数据集我们使用的是书呆子纸中的数据集,该数据集具有现实世界的摄影测量法和不准确(手动注释)分割掩码。使用git克隆书呆子数据集,然后使用script scale_images.py将它们重新列为512 x 512像素分辨率。这是运行任何nerd_*.json配置所必需的。
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