

SDFStudio es un marco unificado y modular para la reconstrucción de superficie implícita neural, construida sobre el increíble proyecto NerfStudio. Proporcionamos una implementación unificada de tres métodos principales de reconstrucción de superficie implícitos: Unisurf, Volsdf y Neus. SDFStudio también admite varias representaciones de escenas, como MLP, Tri-Plane y Multi-RES. Las cuadrículas de características y las estrategias de muestreo de múltiples puntos, como el muestreo guiado por la superficie, como en unisurf, y muestreo guiado por la superficie vóxel de NeuralReconW. Además, integra avances recientes en el área, como la utilización de señales monoculares (MONOSDF), regularización de la geometría (unisurf) y consistencia múltiple (Geo-Neus). Gracias a la implementación unificada y modular, SDFStudio facilita la transferencia de ideas de un método a otro. Por ejemplo, Mono-Neus aplica la idea de Monosdf a Neus, y Geo-Volsdf aplica la idea de Geo-Neus a Volsdf.
2023.06.16 : Agregue bakedangelo que combina BakedSDF con cuadrículas numéricas y entrenamiento progresivo de Neuralangelo .
2023.06.16 : Agregue neus-facto-angelo que combina neus-facto con gridaciones numéricas y entrenamiento progresivo de Neuralangelo .
2023.06.16 : Apoyo a Neuralangelo.
2023.03.12 : Soporte Bakedsdf.
2022.12.28 : Apoya la reconstrucción de la superficie Neural RGB-D.
CUDA debe instalarse en el sistema. Esta biblioteca ha sido probada con la versión 11.3. Puede encontrar más información sobre la instalación de CUDA aquí.
SDFStudio requiere python >= 3.7 . Recomendamos usar CondA para administrar las dependencias. Asegúrese de instalar conda antes de continuar.
conda create --name sdfstudio -y python=3.8
conda activate sdfstudio
python -m pip install --upgrade pipInstale Pytorch con CUDA (este repositorio se ha probado con CUDA 11.3) y 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-cliEl siguiente entrenará un modelo de facto neus ,
# 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 TrueSi todo funciona, debería ver el siguiente progreso de capacitación:

Navegar al enlace al final del terminal cargará el WebViewer (desarrollado por NerfStudio). Si se está ejecutando en una máquina remota, deberá transmitir el puerto WebSocket (predeterminado es 7007). Con una GPU RTX3090, lleva ~ 15 minutos para 20k iteraciones, pero ya puede ver resultados de reconstrucción razonables después de 2K iteraciones en el WebViewer.

También es posible cargar un modelo previo al estado ejecutando
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 Esto reanudará automáticamente la capacitación. Si no desea reanudar la capacitación, agregue --viewer.start-train False a su comando de entrenamiento. Tenga en cuenta que el orden de comando es importante, el subcomando Dataparser debe venir después del subcomando del modelo.
Una vez que tenga un modelo capacitado, puede exportar malla y representar la malla.
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
Obtendrá el siguiente video si todo funciona correctamente.
Primero debemos crear una ruta para que la cámara lo siga. Esto se puede hacer en el espectador en la pestaña "Render". Oriente su vista 3D a la ubicación donde desea que se inicie el video, luego presione "Agregar cámara". Esto establecerá el primer cuadro de la tecla de la cámara. Continúe con nuevos puntos de vista agregando cámaras adicionales para crear la ruta de la cámara. Proporcionamos otros parámetros para refinar aún más la ruta de su cámara. Una vez satisfecho, presione "Render" que mostrará un modal que contiene el comando necesario para representar el video. Mata el trabajo de entrenamiento (o cree una nueva terminal si tiene mucho cálculo) y el comando para generar el video.
Para ver todas las opciones de exportación de videos ejecutados:
ns-render --helpProporcionamos muchos otros modelos que no sean Neus-facto, vea la documentación. Por ejemplo, si desea entrenar el modelo Neus original, use el siguiente comando:
ns-train neus --pipeline.model.sdf-field.inside-outside False sdfstudio-data --data data/sdfstudio-demo-data/dtu-scan65 Para una lista completa de modelos incluidos, ejecute ns-train --help . Consulte la documentación para obtener una explicación más detallada para cada método.
Cada modelo contiene muchos parámetros que se pueden cambiar, demasiados para enumerar aquí. Use el comando --help para ver la lista completa de opciones de configuración.
¡Tenga en cuenta que el orden de los parámetros es importante! Por ejemplo, no puede establecer --machine.num-gpus después del parámetro --data
ns-train neus-facto --help
NerfStudio admite tres métodos diferentes para rastrear el progreso del entrenamiento, utilizando el espectador, la placa tensor y los pesos y los sesgos. Estas herramientas de visualización también se pueden usar en SDFStudio. Puede especificar qué visualizador usar al agregar --vis {viewer, tensorboard, wandb} al comando de entrenamiento. Tenga en cuenta que solo uno puede usarse a la vez. Además, el espectador solo funciona para métodos que son rápidos (es decir, NeuS-facto y NeuS-acc ), para métodos más lentos como NeuS-facto-bigmlp , usan los otros registradores.
Consulte los conjuntos de datos y la documentación del formato de datos si desea utilizar conjuntos de datos personalizados.

Si usa esta biblioteca o encuentra la documentación útil para su investigación, 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 } ,
}