Otimização articular da topologia, materiais e iluminação de observações de imagem com várias visões, conforme descrito nos modelos 3D triangulares de extração de papel, materiais e iluminação das imagens.
Para os tetrahers de marcha diferenciáveis, adaptamos o código da Biblioteca de Pytorch da NVIDIA para acelerar a pesquisa de aprendizado profundo em 3D.
2023-10-20 : Adicionamos uma versão da Biblioteca Renderutils escrita em Slangpy para alavancar os recursos do Autodiff da gíria em vez de extensões de CUDA com passes criados manualmente para frente e para trás. Isso simplifica substancialmente o código, com o mesmo desempenho de tempo de execução de antes. Esta versão está disponível no ramo de slang deste repositório.
2023-09-15 : Adicionamos suporte para a técnica de IsoSurfacing Flexicubes. Consulte o Config configs/bob_flexi.json para um exemplo de uso e consulte a documentação do Flexicubes para obter detalhes.
@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. Todos os direitos reservados.
Este trabalho é disponibilizado sob a licença de código -fonte da NVIDIA.
Para consultas de negócios, visite nosso site e envie o formulário: licenciamento de pesquisa da NVIDIA.
Requer python 3.6+, vs2019+, cuda 11.3+ e pytorch 1.10+
Testado em Anaconda3 com Python 3.9 e Pytorch 1.10
Instale o kit de ferramentas CUDA (necessário para criar as extensões Pytorch). Apoiamos o CUDA 11.3 e acima. Escolha a versão apropriada do Pytorch compatível com o kit de ferramentas CUDA instalado. Abaixo está um exemplo com 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
Nossa abordagem foi projetada para GPUs NVIDIA de ponta com grandes quantidades de memória. Para executar em GPUs de gama média, reduza o parâmetro de tamanho em lote nos arquivos .json.
Exemplo de reconstrução do gênero 1 simples:
python train.py --config configs/bob.json
Visualize o progresso do treinamento (suportado apenas no Windows):
python train.py --config configs/bob.json --display-interval 20
Exemplo multi -GPU (somente Linux. Experimental: todos os resultados no artigo foram gerados usando uma única GPU ), usando Pytorch DDP
torchrun --nproc_per_node=4 train.py --config configs/bob.json
Abaixo, mostramos o ponto de partida e o resultado final. Referências à direita.


Os resultados serão armazenados na pasta out . Os modelos Spot e Bob foram criados e lançados em domínio público por Keenan Crane.
Exemplos incluídos
spot.json - Extraindo um modelo 3D do modelo de ponto. Geometria, materiais e iluminação de observações de imagem.spot_fixlight.json - o mesmo que acima, mas assumindo a iluminação do ambiente conhecida.spot_metal.json - Exemplo de aprendizado conjunto de materiais e iluminação de ambiente de alta frequência para mostrar soma dividida.bob.json - Exemplo simples de um modelo do gênero 1. Além disso, incluímos as configurações ( nerf_*.json , nerd_*.json ) para reproduzir os principais resultados do artigo. Contamos com conjuntos de dados de terceiros, que são cortesia de seus respectivos autores. Observe que as licenças individuais se aplicam a cada conjunto de dados. Para baixar e pré-processar automaticamente todos os conjuntos de dados, execute o script download_datasets.py :
activate dmodel
cd data
python download_datasets.py
Abaixo segue mais informações e instruções sobre como instalar manualmente os conjuntos de dados (caso o script automatizado falhe).
Conjunto de dados sintéticos do NERF Nossos resultados de interpolação de visualização usam o conjunto de dados sintéticos do papel NERF original. Para instalá -lo manualmente, faça o download do arquivo de conjunto de dados sintéticos do NERF e descompacte -o na pasta nvdiffrec/data . Isso é necessário para executar qualquer uma das configurações nerf_*.json .
Conjunto de conjuntos de dados NERD Usamos conjuntos de dados do papel nerd, que apresenta fotogrametria do mundo real e máscaras de segmentação imprecisas (anotadas manualmente). Clone os conjuntos de dados NERD usando o GIT e redigam -os para resolução de 512 x 512 pixels usando o script scale_images.py . Isso é necessário para executar qualquer uma das configurações 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
Inicie um contêiner interativo do docker: docker run --gpus device=0 -it --rm -v /raid:/raid -it nvdiffrec:v1 bash
Docker destacado: docker run --gpus device=1 -d -v /raid:/raid -w=[path to the code] nvdiffrec:v1 python train.py --config configs/bob.json