3D 机器学习课程文档
它是什么?
并获取增强的文档体验
开始
它是什么?
Gaussian Splatting 是一种可微渲染技术。
可微渲染
简单来说
- “可微”可以被认为是表示“AI 兼容”的一种更高级的说法
- 渲染意味着获取数据并在屏幕上绘制它
渲染已经非常普遍了。它通常以三角形渲染的形式出现,其中 3D 数据被转换为 2D 像素数据并在屏幕上绘制。这就是网格通常被渲染的方式。
然而,三角形渲染与 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 重建的传统算法。
然后使用基于瓦片的方法渲染这些点,并通过将渲染后的图像与真实值进行比较来计算损失。应用梯度下降来调整点参数(位置、协方差、颜色、alpha)。
原始论文还使用自动密集化和剪枝来根据需要自动添加和删除点。更多细节可以在这里找到。
生成式 3D
原始方法适用于从照片中学习单个场景。然而,可微渲染的概念可以推广到更复杂的模型,如神经网络。
生成式 3D 模型(如 LGM)就是这种情况,我们将在下一节中使用它来构建我们自己的生成式 3D 演示。
< > 在 GitHub 上更新