使用 DeepSDF 进行 3D 生成建模

2025年1月7日 | 阅读 6 分钟

引言

在本教程中,我们将学习深度SDF的三维生成模型。计算机图形学、三维计算机视觉和机器人学领域已经开发了许多用于渲染和重建三维几何体的方法。

这些方法在完整性、性能和压缩能力之间取得了平衡。在这项工作中,我们介绍了一种连续学习的有符号距离函数 (SDF) 图像表示方法——深度SDF,它能够实现图像质量、效果以及进一步处理具有部件和流行三维输入的任务。

深度SDF与其经典对应物一样,通过一个固定的体积来表示图像的表面:体积中心到表面区域的距离,以及符号表示图像内部 (-) 或外部 (+) 的区域。因此,我们的表示法明确地将空间划分为图像内部的一部分,同时将图像的边界隐式地编码为学习函数的零水平集。虽然经典的 SDF 以解析或离散体素形式通常表示图像表面,但深度SDF可以表示整个图像类。三维计算机视觉提供了许多表示三维图像的方法。这些技术可以保留已知图像的内存值,创建新图像,以及基于有限或噪声数据编辑/重建图像。

什么是三维形状表示?

几何体通常应用于几何模式算法。我们可以确定最适合这些算法的函数。然而,我们可以看到一些操作会控制计算。因此,我们需要选择正确的代表来确保这些项目的成功,其中包括样条曲面、三角形网格、点云和规则网格。相反,我们通常希望保留图像的中性值。一个基本的二维例子是使用参数形式表示圆:(x = r cos θ, y = r sin θ)。

我们将要研究的方法称为有符号距离函数 (SDF)。给定空间中的一个点 [x,y,z] 作为输入,有符号距离函数 (SDF) 显示该点到被表示对象表面最近点的距离。SDF输出的符号表示空间点是在对象表面内部(负)还是外部(正)。通过这种方式,可以通过查找 SDF 等于 0 的位置来确定位置。

深度学习可用于表示三维图像。我们可以通过训练神经网络来提取三维图像的表示来实现这一点。这个过程允许网络在其权重中存储多个图像的表示。通过这种方法,我们可以指示神经网络生成新图像。这被称为生成模型,并且具有更高的效率。在本教程中,我们使用 SDF 的概念来提出创建高效、富有表现力和可扩展的三维模型的新想法。他们的贡献如下:

  1. 设计用于创建基于图像的具有连续隐式表面的三维模型。
  2. 一种基于概率自编码器的三维形状学习方法。
  3. 演示并应用这些原则于设计和实现。

相关工作

为了学习对象的紧凑表示,我们可以使用自编码器,它是一种编码器-解码器架构,首先用于学习输入的表示,然后重建表示。然而,我们建议使用仅解码器网络,其中每个数据点都分配一个潜在向量。在这里,通过反向传播优化了解码器权重。理论上,我们寻求最佳的潜在向量来将新观测与固定的解码器参数匹配。在这里,我们讨论像自编码器这样的网络。自编码器被称为输入-训练网络。

3D Generative Modeling with DeepSDF
3D Generative Modeling with DeepSDF

用神经网络建模 SDF

在这里,我们描述了基于前馈网络任意零等值线边界的设计模型,该模型用于表示 SDF。

3D Generative Modeling with DeepSDF

核心思想是使用深度神经网络直接从点样本中恢复连续 SDF,使训练好的网络能够估计问题的 SDF 值。这种方法最直接地应用于为特定目标训练深度网络。

3D Generative Modeling with DeepSDF

考虑到目标,我们准备了一系列包含三维点模式及其 SDF 值的 X 对。使用这种方法,训练多层全连接神经网络来最小化以下损失函数:

3D Generative Modeling with DeepSDF

找出图像的隐藏区域

为每个环境训练一个特定的神经网络既不可行也不高效。理想情况下,我们希望使用一个神经网络来建模许多图像。为了实现这一点,我们将潜在向量 z 包含在内,该向量可以被视为编码所需结果,作为神经网络的第二个输入。现在,神经网络是底层代码和查询的函数,它输出该点处图像的估计 SDF。

如何获取图像的潜在向量?

我们使用自编码器网络在没有编码器的情况下学习图像嵌入,给定 N 张图像的数据。我们还准备了一组 KKK 个点以及它们的有符号距离值。潜在向量从正态分布 N(0, 0.01A²) 随机初始化。现在,我们使用与之前相同的函数来表示每个训练集与每个潜在向量和网络参数的共同后验。

3D Generative Modeling with DeepSDF

在推理过程中,网络不是固定的,并且可以从最大后验预测中估计每个图像的图像代码。更重要的是,这种方法可以应用于不同大小和分布的 SDF 模型。这意味着深度SDF可以执行各种半分析任务,例如深度映射。

数据准备

我们可以使用 ShapeNet 数据集,它提供了完整的三维网格图像。为了准备数据,他们首先将每个网格归一化为一个单位,并在中心附近以更紧密的模式采样了 500,000 个空间点。

使用深度SDF进行三维生成模型的示例

展示了深度SDF在细节和描述几何细节方面的能力。我们讨论了 4 个实验来测试其能力。

1. 训练数据表示

首先,他们评估了模型从仅有限大小的潜在代码表示已知图像(已在训练中)的能力。用于比较的度量是 Chamfer 距离 (CD),计算方法是两个点云最近邻居之间的平方距离之和。我们发现他们提出的模型在现有模型中表现更好。

3D Generative Modeling with DeepSDF

2. 使用学习到的特征表示

在编码未知图像方面,它在不同类型的图像(椅子、飞机、桌子、汽车、灯)上优于其他模型。他们观察到其他模型难以捕捉图像的精细细节,而深度SDF能够创建更详细的模型。

3D Generative Modeling with DeepSDF

3. 使用之前的图像来补全部分图像

图像处理是解析最能描述图像分析部分的潜在代码。给定一个潜在向量,就可以通过使用模型轻松生成所有图像。作者使用该图像的采样点和深度视图测试了补全解决方案。作者表示他们的设计更美观且经过重新设计。

3D Generative Modeling with DeepSDF

4. 学习平滑且完整的图形

我们证明了学习到的嵌入是完整且持久的。然后,我们将解码器的结果与潜在向量空间中图像对之间的插值结合起来。我们观察到结果表明嵌入的连续有符号距离函数 (SDF) 表示有意义的形状。此外,这些表示捕获了相似的、定义明确的模式。

3D Generative Modeling with DeepSDF

结论

在本教程中,我们将学习深度SDF的三维生成模型。深度SDF在表示和执行任务方面优于基线,同时使用的内存比以前的模型少。他们指出,虽然 SDF 图像的前向建模非常高效,但由于需要优化潜在向量,图像处理需要更多时间。他们旨在通过用高斯-牛顿等更有效的方法替换 Adam 来提高性能。另一方面,深度SDF现在假设模型处于规范位置。因此,需要进一步优化才能在实际应用中完成。