zju3dv/manhattan_sdf

Code for "Neural 3D Scene Reconstruction with the Manhattan-world Assumption" CVPR 2022 Oral

Manhattan‑SDF – 带有曼哈顿世界先验的神经3D重建

是什么 – 一种从RGB‑D图像重建室内3D场景的研究代码库,通过学习符号距离函数(SDF)表示实现。它扩展了最近的神经渲染方法(NeRF、VolSDF、NeuS等),引入了曼哈顿世界假设,即大多数表面与三个正交轴对齐,这有助于正则化几何结构,并在杂乱的室内扫描中提升重建质量。

主要组件

  • 基于VolSDF框架构建的神经SDF模型,修改为强制执行轴对齐平面先验。
  • 接收多视角ScanNet数据(或自定义数据集)并优化SDF与相机位姿的训练流水线。
  • 将学习到的SDF转换为水密.obj网格的网格提取脚本。
  • 用于与COLMAP、ACMP、NeRF、UNISURF、NeuS和VolSDF等基线进行定量比较的评估工具。

快速开始

  1. 环境 – 运行 conda env create -f environment.yml 并通过 conda activate manhattan 激活环境。
  2. 数据 – 从提供的Google云端硬盘链接下载预处理的ScanNet场景,并按配置文件要求放置在 data/ 目录下。
  3. 训练 – 示例命令:
    python train_net.py --cfg_file configs/scannet/0050.yaml gpus 0, exp_name scannet_0050
    
  4. 网格提取 – 训练完成后,运行:
    python run.py --type mesh_extract --output_mesh result.obj \
        --cfg_file configs/scannet/0050.yaml gpus 0, exp_name scannet_0050
    
  5. 评估 – 使用相同的 run.py 并配合 --type evaluate 以复现论文中的结果。

自定义数据 – 仓库包含 docs/CUSTOM.md 指南,说明如何将该流程适配到您自己的图像集(相机内参、位姿格式等)。

为何重要 – 通过利用曼哈顿世界先验,该方法在具有大量轴对齐墙壁和家具的场景中,相比原始神经SDF/NeRF方法,实现了更清晰、更准确的室内重建。这使其在室内地图构建、AR/VR内容创作和机器人感知等应用中非常有用。

引用 – 如果您使用该代码,请引用CVPR‑2022论文:

@inproceedings{guo2022manhattan,
  title={Neural 3D Scene Reconstruction with the Manhattan-world Assumption},
  author={Guo, Haoyu and Peng, Sida and Lin, Haotong and Wang, Qianqian and Zhang, Guofeng and Bao, Hujun and Zhou, Xiaowei},
  booktitle={CVPR},
  year={2022}
}

致谢 – 基于VolSDF(Lior Yariv)、COLMAP以及README中引用的多个开源实现。

相关

  • 项目
  • 项目
  • 项目
  • 项目