DeepSDF: Learning Continuous Signed Distance Functions for Shape Representation

基本信息

项目 内容
论文标题 DeepSDF: Learning Continuous Signed Distance Functions for Shape Representation
作者 Jeong Joon Park, Peter Florence, Julian Straub, Richard Newcombe, Steven Lovegrove
作者单位 University of Washington
时间 2019
发表会议/期刊

方法概览

特点 文章性质
输入 3D坐标点 + 潜在编码(latent code),或部分/噪声的3D观测(如深度图、点云)
输出 连续有符号距离函数(SDF),可通过提取零等值面转换为Mesh
所属领域 三维形状生成与重建

一、摘要精简

DeepSDF 提出了一种基于学习的连续有符号距离函数(SDF)表示方法,用于 3D 形状的高质量表示、插值与补全。该方法通过深度神经网络直接回归空间点的 SDF 值,将形状表面隐式编码为 SDF 的零水平集,同时显式区分空间内外部。与传统单形状 SDF 不同,DeepSDF 可表示一类形状,通过 latent 码实现形状的紧凑编码。其在形状表示和补全任务上达到当时最先进性能,且模型体积较之前工作减小一个数量级(仅 7.4 MB 即可表示数千个 3D 形状),支持从部分、有噪声的 3D 输入中恢复完整形状。


二、引言与动机

  • 问题:传统的3D表示方法(如体素、点云、网格)在表达复杂拓扑、连续表面和高分辨率细节方面存在限制,且深度卷积网络直接扩展到3D时计算和内存成本高。 体素基方法计算和内存成本随分辨率立方增长,难以达到高保真;点云基方法缺乏拓扑信息,无法生成闭合表面;网格基方法受限于固定拓扑,难以建模复杂形状;传统 SDF 多为单形状表示,无法泛化到一类形状。同时,深度学习方法直接扩展到 3D 领域时,面临复杂度激增和拓扑适应性差的问题。因此,DeepSDF 的出发点是构建一种连续、高效、泛化能力强的 3D 形状表示,既保留 SDF 对表面的精准描述能力,又能通过深度学习建模一类形状的共性,实现从部分输入到完整形状的重建与补全,填补现有表示方法在保真度、灵活性和压缩效率之间的缺口。
  • 出发点:利用连续SDF隐式表示形状表面,将形状表面视为学习到的分类器的决策边界(零等值面),从而实现对复杂拓扑的连续、紧凑表示。

三、创新点

  1. 连续隐式形状表示:首次提出通过深度学习直接学习一类形状的连续 SDF,将形状表面表示为 SDF 的零水平集,天然支持复杂拓扑和闭合表面,避免离散表示(如体素、点云)的精度损失与拓扑缺陷。
  2. Auto-Decoder 框架:采用无编码器的自解码器(Auto-decoder)结构,无需训练编码器,直接通过联合优化 latent 码和解码器参数学习形状表示;引入零均值高斯先验正则化 latent 空间,确保形状 manifold 的紧凑性与连续性,支持形状插值生成。
  3. 高效形状补全与泛化:通过优化 latent 码拟合部分输入数据(如稀疏点云、深度图),利用模型学到的形状先验补全缺失部分,无需针对补全任务专门训练;模型体积仅 7.4 MB,较传统方法减小一个数量级,泛化能力覆盖多类形状(椅子、飞机、沙发等)。
  4. 带截断的 SDF 回归策略:设计带截断参数 δ 的 L1 损失,将 SDF 值约束在 [-δ, δ] 范围内,使网络专注于表面附近的细节学习,平衡表面精度与 raycasting 效率,同时支持解析法向量计算(通过网络梯度求解)。
  5. 紧凑的模型尺寸:仅用7.4 MB即可表示数千个3D形状(如椅子类别),比传统体素表示更高效。

四、网络架构

DeepSDF 的核心架构为全连接神经网络(Feed-Forward Network),无编码器,仅含解码器模块:

  • 整体结构:8 层全连接层,每层采用 weight normalization(替代 batch normalization 以避免训练不稳定),中间层(共 7 层)维度为 512,激活函数为 ReLU, dropout 概率为 0.2;输出层采用 tanh 激活,直接回归 SDF 值。
  • 输入:3D坐标点 xx + 潜在编码 zz(拼接后输入)
  • 跳跃连接:潜在编码 zz 在输入层和第4层再次拼接,提升训练效果
  • 输出:SDF值 ss,通过 $ anh$ 激活函数约束范围
  • 正则化:使用权重归一化(Weight Normalization)替代批归一化
  • 训练范式:联合优化解码器参数 θ 和每个形状对应的 latent 码 z_i,推理时固定 θ,通过优化 z 拟合输入数据。

五、特征提取方式

DeepSDF 无专门的特征提取编码器,特征通过以下方式融入网络:

  1. 形状特征编码:形状特征存储在 latent 码 z 中,z 随机初始化(N (0, 0.01²)),通过训练过程与解码器参数共同优化,最终每个 z 唯一对应一类形状的核心特征。
  2. 空间位置特征:3D 空间点坐标(x,y,z)直接与 latent 码拼接输入网络,为网络提供空间位置信息,使网络能够学习不同位置的 SDF 值映射。
  3. 特征融合:通过全连接层的权重共享与第四层的跳连接,将 latent 码中的形状特征与空间位置特征深度融合,使网络能够精准回归任意空间点的 SDF 值,进而隐式建模形状表面。

六、生成的三维模型细节

  • 输出类型:仅为几何表面(Mesh),不带贴图材质
  • 表面质量:可生成高细节、连续、封闭的表面,支持准确的法向量计算(通过网络梯度 rac{\partial f}{\partial x}
  • 可视化方式:通过Marching Cubes提取零等值面,或直接通过光线投射渲染

七、三维模型生成流程

  1. 数据预处理:

    • 将 ShapeNet 中的网格模型归一化到单位球内,通过虚拟相机渲染采集表面点及其法向量,过滤非水密网格。
    • 采样 500,000 个空间点,表面附近采样密度更高,计算每个点的真实 SDF 值(符号由点与表面法向量的点积决定)。
  2. 模型训练:

    1. 为每个形状采样大量 (x,s)(x, s) 对(SDF样本)

    2. 初始化每个形状的 latent 码 z_i(N (0, 0.01²))和解码器参数 θ。

    3. 最小化带截断的 L1 损失与 latent 码的 L2 正则化损失,联合优化 z_i 和 θ,使解码器能根据 z_i 和 3D 点坐标准确回归 SDF 值。联合优化网络参数 $ heta$ 和每个形状的潜在编码 ziz_i,最小化损失函数:

      \sum_{i=1}^{N} \left( \sum_{j=1}^{K} \mathcal{L}(f_{ heta}(z_i, x_j), s_j) + rac{1}{\sigma^2} \| z_i \|_2^2

    4. 给定部分输入数据(如稀疏点云、深度图),固定解码器参数 θ,通过 MAP 估计优化 latent 码 z,使解码器输出与输入数据的 SDF 值匹配。

    5. 对优化后的 z,在 3D 空间中密集采样点,通过解码器预测 SDF 值,利用 Marching Cubes 算法从 SDF 的零水平集提取闭合 Mesh。

  3. 形状生成:在 latent 空间中对两个形状的 z 进行线性插值,将插值后的 z 输入解码器,提取零水平集得到插值形状。


八、相关工作与实验比较

参考的之前工作

  1. 3D 形状表示:PointNet(点云特征学习)、AtlasNet(参数化网格生成)、OGN(八叉树体素表示)、3D-EPN(体素 SDF 补全)。
  2. 生成模型:GAN(生成对抗网络)、VAE(变分自编码器)、Auto-decoder(自解码器,用于无编码器的表示学习)。
  3. 形状补全:基于体素的编码器 - 解码器补全方法、径向基函数(RBF)表面拟合、泊松表面重建。

对比的工作

  1. 核心对比对象:OGN(八叉树体素表示)、AtlasNet(25 补丁 / 球面参数化网格)、3D-EPN(体素 SDF 补全)。
  2. 评价指标:
    • 几何相似度:Chamfer Distance(CD,30,000 个采样点)、Earth Mover’s Distance(EMD,500 个采样点)。
    • 网格质量:Mesh Accuracy(90% 生成点到真值的最小距离)、Mesh Completion(真值点在生成网格 Δ=0.01 范围内的比例)。
    • 法向量精度:Cosine Similarity(生成网格与真值网格的法向量余弦相似度)。

九、损失函数

  • 损失函数:带截断的 L1L_1 损失

    L(fheta(x),s)=extclamp(fheta(x),δ)extclamp(s,δ)\mathcal{L}(f_{ heta}(x), s) = | ext{clamp}(f_{ heta}(x), \delta) - ext{clamp}(s, \delta) |

    其中 $ ext{clamp}(x, \delta) := \min(\delta, \max(-\delta, x))\delta$ 控制截断范围。

  • 正则项:潜在编码 zzL2L_2 正则化(基于零均值高斯先验)


十、数据集

训练数据集

  • 来源:ShapeNet v2(形状表示任务)、ShapeNet v1(形状补全任务),涵盖椅子、飞机、桌子、台灯、沙发等类别。
  • 数据规模:筛选后保留高质量水密网格,每个形状采样 500,000 个空间点及对应的 SDF 值。
  • 输入:归一化后的空间点坐标(x,y,z)及其真实 SDF 值 s。
  • 输出:解码器参数 θ 和每个形状对应的 latent 码 z_i。

测试数据集

  • 来源:ShapeNet 的测试集(与训练集类别一致,无重叠),部分补全实验采用 3D-EPN 的测试集。
  • 输入:部分 / 有噪声的 3D 数据,包括稀疏点云、单视角深度图(含自由空间点)、带高斯噪声的深度图(α=0.01~0.05)。
  • 输出:完整的 SDF(可提取 Mesh),用于评估几何相似度、网格质量与补全效果。

十一、消融实验

  1. 网络深度:测试4~16层网络,发现带跳跃连接的8层网络在精度与效率间取得平衡
  2. 截断距离 δ\deltaδ\delta 越小,表面附近精度越高;δ\delta 越大,射线追踪越快
  3. 跳跃连接:加入潜在编码 zz 在中间层的拼接可显著提升训练效果
  4. 潜在编码维度:实验使用256维(重建)和128维(补全)
  5. 自解码器 vs 自编码器:在MNIST上对比VAE、AE与AD,显示AD在潜在空间完整性和重建质量上更优

十二、其他亮点

  • 噪声鲁棒性:在噪声深度图上仍能实现稳定的形状补全
  • 形状插值:潜在空间中线性插值可生成语义合理的过渡形状
  • 计算效率:模型尺寸极小(7.4 MB),适用于嵌入式或实时应用