

SDFSTUDIO是基于Awesome Nerfstudio项目顶部的神经隐式表面重建的统一且模块化的框架。我们提供了三种主要的隐式表面重建方法的统一实施:Unisurf,volsdf和Neus。 SDFSTUDIO还支持各种场景表示,例如MLP,Tri-Plane和Multi-Res。具有特征网格和多点采样策略,例如Unisurf中的表面引导采样,以及来自NeuralReconw的Voxel-Surface指导采样。它进一步整合了该领域的最新进展,例如单眼线索(MONOSDF),几何正规化(UNISURF)和多视图一致性(GEO-NEUS)。多亏了统一和模块化的实现,SDFSTUDIO使您可以轻松地将想法从一种方法传输到另一种方法。例如,Mono-Neus将MonoSDF的想法应用于NEU,而Geo-Volsdf将其从地理Neus应用于Volsdf。
2023.06.16 :添加bakedangelo ,将BakedSDF与数值弹簧和Neuralangelo的逐步训练相结合。
2023.06.16 :添加neus-facto-angelo ,将neus-facto与数值弹簧结合在一起,并逐步训练Neuralangelo 。
2023.06.16 :支持Neuralangelo。
2023.03.12 :支持Bakedsdf。
2022.12.28 :支持神经RGB-D表面重建。
CUDA必须安装在系统上。该库已通过版本11.3进行了测试。您可以在此处找到有关安装CUDA的更多信息。
sdfstudio需要python >= 3.7 。我们建议使用Conda来管理依赖关系。在进行之前,请确保安装CONDA。
conda create --name sdfstudio -y python=3.8
conda activate sdfstudio
python -m pip install --upgrade pip安装带有CUDA的Pytorch(此存储库已用CUDA 11.3进行了测试)和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-cli以下将训练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 True如果一切正常,您应该看到以下培训进度:

导航到终端末尾的链接将加载WebViewer(由Nerfstudio开发)。如果您在远程计算机上运行,则需要向转发Websocket端口(默认为7007)。使用RTX3090 GPU,20K迭代需要约15分钟,但是在WebViewer中进行了2k迭代后,您已经可以看到合理的重建结果。

也可以通过运行来加载验证的模型
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 这将自动恢复培训。如果您不想恢复培训,请在培训命令中添加--viewer.start-train False 。请注意,命令的顺序很重要,需要在模型子命令之后进行dataparser子命令。
一旦拥有训练有素的型号,您就可以导出网格并渲染网格。
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
如果一切正常,您将获得以下视频。
首先,我们必须为相机创建一条路径。这可以在“渲染”选项卡下的观众中完成。将3D视图定向到您希望启动视频的位置,然后按“添加相机”。这将设置第一个相机钥匙框。继续添加其他相机以创建相机路径的新观点。我们提供其他参数,以进一步完善您的相机路径。一旦满足,请按“渲染”,该“渲染”将显示一个模式,其中包含渲染视频所需的命令。杀死培训工作(如果您有很多计算,则创建一个新的终端),并命令生成视频。
查看所有视频导出选项运行:
ns-render --help我们提供除Neus-Facto以外的许多其他模型,请参阅文档。例如,如果要训练原始的NEUS模型,请使用以下命令:
ns-train neus --pipeline.model.sdf-field.inside-outside False sdfstudio-data --data data/sdfstudio-demo-data/dtu-scan65对于包含型号的完整列表,运行ns-train --help 。请参阅文档以获取每种方法的更详细说明。
每个模型都包含许多可以更改的参数,在此处列出了太多参数。使用--help命令查看配置选项的完整列表。
请注意,参数顺序很重要!例如,您无法设置--machine.num-gpus之后--data参数
ns-train neus-facto --help
Nerfstudio支持三种不同的方法,使用查看器,张板以及重量和偏见来跟踪训练进度。这些可视化工具也可以在SDFSTUDIO中使用。您可以指定通过附加的可视化器--vis {viewer, tensorboard, wandb}到训练命令。请注意,一次只能使用一个。此外,查看器仅适用于快速的方法(即NeuS-facto和NeuS-acc ),对于诸如NeuS-facto-bigmlp之类的较慢的方法,请使用其他日志记录器。
如果您想使用自定义数据集,请参阅数据集和数据格式文档。

如果您使用此库或发现对您的研究有用的文档,请考虑引用:
@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 } ,
}