SDFStudio 项目介绍
SDFStudio 是一个用于神经隐式表面重建的统一框架,其建立在杰出的“Nerfstudio”项目之上。项目为主要的三种隐式表面重建方法——UniSurf、VolSDF 和 NeuS 提供了统一的实现,并支持多种场景表示方式,如多层感知器(MLP)、三平面表示,以及多分辨率特征网格等。此外,它还整合了诸如 UniSurf 的表面引导采样和 NeuralReconW 的体素表面引导采样的多种点采样策略。
此外,SDFStudio 还融合了近期在该领域的一些新进展,比如单摄像机线索(MonoSDF)、几何正则化(UniSurf)和多视图一致性(Geo-NeuS)的利用等。得益于其统一和模块化的实现,SDFStudio 可以轻松地将一种方法中的理念转移到另一种方法中。例如,Mono-NeuS 将 MonoSDF 的理念应用到了 NeuS 中,而 Geo-VolSDF 则将 Geo-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: 支持 Neural RGB-D Surface Reconstruction。
快速入门
安装和环境配置
首先,安装需要的 CUDA 环境,项目已在 CUDA 11.3 上测试过。推荐使用 Conda 来管理依赖关系,并保证 Python 版本为 3.7 及以上。可以通过以下命令创建 Conda 环境:
conda create --name sdfstudio -y python=3.8
conda activate sdfstudio
python -m pip install --upgrade pip
接下来,安装 PyTorch 和 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/torch
最后克隆 SDFStudio 仓库并安装:
git clone https://github.com/autonomousvision/sdfstudio.git
cd sdfstudio
pip install --upgrade pip setuptools
pip install -e .
# 安装命令行补全
ns-install-cli
模型训练
可以通过以下命令训练一个 NeuS-facto 模型:
# 下载测试数据
ns-download-data sdfstudio
# 用 dtu 数据集的 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
# 使用单目先验在 Replica 数据集的 room0 上训练模型
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
在 RTX3090 GPU 上进行训练时,20K 次迭代约需 15 分钟,但在 2K 次迭代后即可在 webviewer 中看到合理的重建结果。
导出结果
模型训练完成后,可以将结果导出为网格并渲染。
提取网格
使用以下命令从训练模型中提取网格:
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
自定义数据使用
如需使用自定义的数据集,请参考数据集和数据格式的相关文档。
项目基础
SDFStudio 是基于以下项目和团队开发的:
- Nerfstudio:由 nerfstudio 团队开发,为 NeRF 提供友好的协作平台。
- Tyro:由 Brent Yi 开发,提供易于使用的配置系统。
- nerfacc:由 Ruilong Li 开发,为 NeRF 渲染提速的库。