

SDFStudio est un cadre unifié et modulaire pour la reconstruction de surface implicite neuronale, construit au-dessus du projet Nerfstudio impressionnant. Nous fournissons une mise en œuvre unifiée de trois principales méthodes de reconstruction de surface implicites principales: l'UniSurf, le VOLSDF et le NEUS. SDFStudio prend également en charge diverses représentations de scènes, telles que les MLP, le tri-plan et le multi-séries. Des grilles de caractéristiques et des stratégies d'échantillonnage à points multiples telles que l'échantillonnage guidé en surface comme dans l'UNISURF, et l'échantillonnage guidé par la surface voxel à partir de Neuralreconw. Il intègre en outre les avancées récentes dans le domaine telles que l'utilisation des signaux monoculaires (monosdf), la régularisation de la géométrie (UNISURF) et la cohérence multi-visualités (Geo-NEUS). Grâce à l'implémentation unifiée et modulaire, SDFStudio facilite le transfert d'idées d'une méthode à une autre. Par exemple, Mono-NEUS applique l'idée de monosdf à NEUS, et Geo-VolsDF applique l'idée de Geo-NEUS à VolSDF.
2023.06.16 : Ajouter bakedangelo qui combine BakedSDF avec des griffants numériques et une formation progressive de Neuralangelo .
2023.06.16 : Ajouter neus-facto-angelo qui combine neus-facto avec des gridants numériques et une formation progressive de Neuralangelo .
2023.06.16 : Soutenir Neuralangelo.
2023.03.12 : Support BakedSdf.
2022.12.28 : Soutenir la reconstruction de surface RVB-D neuronale.
CUDA doit être installé sur le système. Cette bibliothèque a été testée avec la version 11.3. Vous pouvez trouver plus d'informations sur l'installation de CUDA ici.
SDFStudio nécessite python >= 3.7 . Nous vous recommandons d'utiliser Conda pour gérer les dépendances. Assurez-vous d'installer Conda avant de continuer.
conda create --name sdfstudio -y python=3.8
conda activate sdfstudio
python -m pip install --upgrade pipInstallez Pytorch avec Cuda (ce dépôt a été testé avec CUDA 11.3) et 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-cliCe qui suit entraînera un modèle 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 TrueSi tout fonctionne, vous devriez voir les progrès de la formation suivants:

La navigation vers le lien à la fin du terminal chargera le webViewer (développé par Nerfstudio). Si vous utilisez une machine distante, vous devrez transférer le port WebSocket (par défaut 7007). Avec un GPU RTX3090, il faut environ 15 minutes pour les itérations de 20k, mais vous pouvez déjà voir des résultats de reconstruction raisonnables après 2k itérations dans le webviewer.

Il est également possible de charger un modèle pré-entraîné en exécutant
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 Cela reprendra automatiquement la formation. Si vous ne souhaitez pas reprendre la formation, ajoutez --viewer.start-train False à votre commande de formation. Notez que l'ordre de commande compte, la sous-commande de données de données doit venir après la sous-commande du modèle.
Une fois que vous avez un modèle qualifié, vous pouvez exporter le maillage et rendre le maillage.
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
Vous obtiendrez la vidéo suivante si tout fonctionne correctement.
Nous devons d'abord créer un chemin à suivre pour la caméra. Cela peut être fait dans le spectateur sous l'onglet "Render". Orientez votre vue 3D à l'emplacement où vous souhaitez que la vidéo commence, puis appuyez sur "Ajouter une caméra". Cela définira le premier cadre de clé de caméra. Continuez à de nouveaux points de vue ajoutant des caméras supplémentaires pour créer le chemin de la caméra. Nous fournissons d'autres paramètres pour affiner davantage votre chemin de caméra. Une fois satisfait, appuyez sur "Render" qui affichera un modal qui contient la commande nécessaire pour rendre la vidéo. Tuez le travail de formation (ou créez un nouveau terminal si vous avez beaucoup de calcul) et la commande pour générer la vidéo.
Pour afficher toutes les options d'exportation vidéo:
ns-render --helpNous fournissons de nombreux autres modèles que NEUS-FACTO, voyons la documentation. Par exemple, si vous souhaitez former le modèle NEUS original, utilisez la commande suivante:
ns-train neus --pipeline.model.sdf-field.inside-outside False sdfstudio-data --data data/sdfstudio-demo-data/dtu-scan65 Pour une liste complète des modèles inclus, exécutez ns-train --help . Veuillez vous référer à la documentation pour une explication plus détaillée pour chaque méthode.
Chaque modèle contient de nombreux paramètres qui peuvent être modifiés, trop pour énumérer ici. Utilisez la commande --help pour voir la liste complète des options de configuration.
Remarque, cet ordre de paramètres est important! Par exemple, vous ne pouvez pas définir --machine.num-gpus après le paramètre --data
ns-train neus-facto --help
Nerfstudio prend en charge trois méthodes différentes pour suivre les progrès de la formation, en utilisant le spectateur, le tensorboard et les poids et les biais. Ces outils de visualisation peuvent également être utilisés dans SDFStudio. Vous pouvez spécifier le visualiseur à utiliser en ajoutant --vis {viewer, tensorboard, wandb} dans la commande de formation. Notez qu'un seul peut être utilisé à la fois. De plus, le spectateur ne fonctionne que pour des méthodes rapides (c'est-à-dire NeuS-facto et NeuS-acc ), pour des méthodes plus lentes comme NeuS-facto-bigmlp , utilisez les autres bûcherons.
Veuillez vous référer aux ensembles de données et à la documentation du format de données si vous aimez utiliser des ensembles de données personnalisés.

Si vous utilisez cette bibliothèque ou trouvez la documentation utile pour vos recherches, veuillez envisager de citer:
@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 } ,
}