

O SDFStudio é uma estrutura unificada e modular para a reconstrução de superfície implícita neural, construída sobre o incrível projeto NerfStudio. Fornecemos uma implementação unificada de três principais métodos de reconstrução de superfície implícitos: Unisurf, Volsdf e NEUS. O SDFStudio também suporta várias represeções de cenas, como MLPs, Tri-Plane e Multi-RES. Grades de recursos e estratégias de amostragem de múltiplos pontos, como amostragem guiada por superfície como no Unisurf, e amostragem guiada de voxel-superfície do NeuralReconw. Além disso, integra avanços recentes na área, como a utilização de pistas monoculares (MONOSDF), regularização da geometria (Unisurf) e consistência de várias vistas (Geo-Neus). Graças à implementação unificada e modular, o SDFStudio facilita a transferência de idéias de um método para outro. Por exemplo, o Mono-Neus aplica a idéia de MonosDF a Neus, e Geo-VolsDF aplica a idéia de Geo-Neus a Volsdf.
2023.06.16 : Adicione bakedangelo , que combina BakedSDF com as grades numéricas e o treinamento progressivo de Neuralangelo .
2023.06.16 : Adicione neus-facto-angelo , que combina neus-facto com redes numéricas e treinamento progressivo de Neuralangelo .
2023.06.16 : Suporte Neuralangelo.
2023.03.12 : Suporte Bakedsdf.
2022.12.28 : Apoie a reconstrução de superfície RGB-D neural.
O CUDA deve ser instalado no sistema. Esta biblioteca foi testada com a versão 11.3. Você pode encontrar mais informações sobre a instalação do CUDA aqui.
SDFStudio requer python >= 3.7 . Recomendamos o uso do CONDA para gerenciar dependências. Certifique -se de instalar o CONDA antes de prosseguir.
conda create --name sdfstudio -y python=3.8
conda activate sdfstudio
python -m pip install --upgrade pipInstale Pytorch com CUDA (este repo foi testado com CUDA 11.3) e 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-cliO seguinte treinará um modelo de neus-facto ,
# 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 TrueSe tudo funcionar, você deve ver o seguinte progresso de treinamento:

Navegar para o link no final do terminal, carregará o WebViewer (desenvolvido pelo NerfStudio). Se você estiver em execução em uma máquina remota, precisará portar a porta do WebSocket (padrão para 7007). Com uma GPU RTX3090, leva ~ 15 minutos para iterações de 20k, mas você já pode ver resultados razoáveis de reconstrução após 2K iterações no WebViewer.

Também é possível carregar um modelo pré -terenciado executando
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 Isso retomará automaticamente o treinamento. Se você não deseja retomar o treinamento, adicione --viewer.start-train False ao seu comando de treinamento. Observe que a ordem do comando é importante, o subcomando DataParser precisa vir após o subcomando do modelo.
Depois de ter um modelo treinado, você pode exportar malha e renderizar a malha.
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
Você receberá o seguinte vídeo se tudo funcionar corretamente.
Primeiro, devemos criar um caminho para a câmera seguir. Isso pode ser feito no espectador na guia "renderizar". Oriente sua visualização 3D para o local em que você deseja que o vídeo inicie e pressione "Adicionar câmera". Isso definirá o primeiro quadro de chave da câmera. Continue até novos pontos de vista adicionando câmeras adicionais para criar o caminho da câmera. Fornecemos outros parâmetros para refinar ainda mais o caminho da sua câmera. Depois de satisfeito, pressione "renderizar", que exibirá um modal que contém o comando necessário para renderizar o vídeo. Mate o trabalho de treinamento (ou crie um novo terminal se tiver muita computação) e o comando para gerar o vídeo.
Para visualizar todas as opções de exportação de vídeo executadas:
ns-render --helpFornecemos muitos outros modelos que não o NEUS-FACTO, consulte a documentação. Por exemplo, se você deseja treinar o modelo NEUS original, use o seguinte comando:
ns-train neus --pipeline.model.sdf-field.inside-outside False sdfstudio-data --data data/sdfstudio-demo-data/dtu-scan65 Para uma lista completa de modelos incluídos, execute ns-train --help . Consulte a documentação para obter uma explicação mais detalhada para cada método.
Cada modelo contém muitos parâmetros que podem ser alterados, muitos para listar aqui. Use o comando --help para ver a lista completa das opções de configuração.
Observe que a ordem dos parâmetros é importante! Por exemplo, você não pode definir --machine.num-gpus após o parâmetro --data
ns-train neus-facto --help
O NerfStudio suporta três métodos diferentes para rastrear o progresso do treinamento, usando o espectador, o tensorboard e os pesos e os vieses. Essas ferramentas de visualização também podem ser usadas no SDFStudio. Você pode especificar qual visualizador usar anexando --vis {viewer, tensorboard, wandb} ao comando de treinamento. Observe que apenas um pode ser usado de cada vez. Além disso, o visualizador funciona apenas para métodos que são rápidos (ou seja, NeuS-facto e NeuS-acc ), para métodos mais lentos como NeuS-facto-bigmlp , use os outros madeireiros.
Consulte os conjuntos de dados e documentação do formato de dados se você deseja usar conjuntos de dados personalizados.

Se você usar esta biblioteca ou encontrar a documentação útil para sua pesquisa, considere citar:
@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 } ,
}