3D 机器学习课程文档

它是什么?

Hugging Face's logo
加入 Hugging Face 社区

并获取增强的文档体验

开始

它是什么?

Gaussian Splatting 是一种可微渲染技术

可微渲染

简单来说

  • “可微”可以被认为是表示“AI 兼容”的一种更高级的说法
  • 渲染意味着获取数据并在屏幕上绘制它

渲染已经非常普遍了。它通常以三角形渲染的形式出现,其中 3D 数据被转换为 2D 像素数据并在屏幕上绘制。这就是网格通常被渲染的方式。

Mesh

然而,三角形渲染与 AI 的兼容性不是很好。这是因为它包含诸如以下的离散决策:

  • 这个像素是否在三角形内?

神经网络不喜欢离散决策。它们希望一切都是模糊且连续的 - 或者换句话说,可微的

Gaussian Splatting

Gaussian Splatting 是一种可微渲染技术。但它实际上是如何工作的呢?

Splats 由数百万个点组成,每个点由四个参数组成

  • 位置:它在哪里 (XYZ)
  • 协方差:它的拉伸程度 (3x3 矩阵)
  • 颜色:它是什么颜色 (RGB)
  • Alpha:它的透明度 (α)

然后,为了渲染一个 splat,这些点被投影到 2D。然后,对于每个像素,贡献每个点的贡献。或者,用伪代码表示

splat2d = splat.project_and_sort()
for point in splat2d:
    for pixel in image:
        pixel += compute_contribution(point, pixel)

一个点的贡献随着它离像素越远而减小。点也需要排序,因为它们是按由后到前的顺序混合的。

理论上,每个点都对每个像素做出贡献,这非常低效。但是,这没关系,因为它是可微的

在实践中,这通过基于瓦片的渲染方法进行优化,如原始论文中详细描述的那样。

推理

如果你不训练模型,那么它是否可微并不重要。你可以像在 gsplat.js 这样的开源 Web 查看器中一样,将每个点视为一个实例化的四边形。

可以在这里看到实际效果。

训练

原始论文使用 运动结构重建初始化点,这是一种用于 3D 重建的传统算法。

Structure from Motion

然后使用基于瓦片的方法渲染这些点,并通过将渲染后的图像与真实值进行比较来计算损失。应用梯度下降来调整点参数(位置、协方差、颜色、alpha)。

Trained

原始论文还使用自动密集化和剪枝来根据需要自动添加和删除点。更多细节可以在这里找到。

Final

生成式 3D

原始方法适用于从照片中学习单个场景。然而,可微渲染的概念可以推广到更复杂的模型,如神经网络。

生成式 3D 模型(如 LGM)就是这种情况,我们将在下一节中使用它来构建我们自己的生成式 3D 演示。

< > 在 GitHub 上更新