3D 机器学习课程文档

什么是它?

Hugging Face's logo
加入 Hugging Face 社区

并获得增强文档体验的访问权限

开始使用

什么是它?

高斯散射是一种 **可微分光栅化技术**。

可微分光栅化

简单来说

  • 可微分可以看作是“AI 兼容”的一种花哨的说法
  • 光栅化是指获取数据并在屏幕上绘制它

光栅化已经非常普遍。它通常采用 **三角形光栅化** 的形式,其中 3D 数据转换为 2D 像素数据并在屏幕上绘制。这就是通常渲染网格的方式。

Mesh

然而,三角形光栅化并不太适合 AI。这是因为它包括诸如以下的离散决策:

  • 该像素是否在三角形内?

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

高斯散射

高斯散射是一种可微分光栅化技术。但它究竟是如何工作的呢?

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

  • **位置**:它位于何处(XYZ)
  • **协方差**:它如何拉伸(3x3 矩阵)
  • **颜色**:它的颜色是什么(RGB)
  • **alpha**:它有多透明(α)

然后,要光栅化散射,这些点会被投影到 2D 空间中。然后,对于每个像素,都会计算每个点的贡献。或者,用伪代码表示:

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

点的贡献随着它离像素越远而减小。还需要对点进行排序,因为它们是从后向前混合的。

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

实际上,这是通过基于平铺的光栅化方法进行优化的,如 原始论文 中所述。

推断

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

你可以在 此处 查看实际效果。

训练

原始论文 使用 运动恢复结构(一种传统的 3D 重建算法)初始化点。

Structure from Motion

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

Trained

原始论文还使用自动密集化和修剪,根据需要自动添加和删除点。更多详情请见 此处

Final

生成式 3D

原始方法适用于从照片学习单个场景。但是,可微分光栅化的概念可以推广到更复杂的模型,例如神经网络。

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

< > 更新 在 GitHub 上