3D Gaussian Splatting的全面理解
1.概述
高斯展开是一种表示 3D 场景和渲染新视图的方法,在“用于实时辐射场渲染的 3D 高斯展开”¹ 中介绍。它可以被认为是类似 NeRF² 的模型的替代品,就像过去的 NeRF 一样,高斯飞溅导致了许多新的研究工作,他们选择将其用作各种用例的 3D 世界的底层表示。那么它有什么特别之处,为什么它比 NeRF 更好呢?或者,甚至是这样吗?让我们来了解一下!
2.TL;博士
首先,这项工作的主要成名之处在于从标题中可以理解的高渲染速度。这是由于下面将介绍的表示本身,以及使用自定义 CUDA 内核的渲染算法的定制实现。
图 1:在渲染速度 (fps)、训练时间 (min) 和视觉质量(峰值信噪比,越高越好)方面先前的高质量表示和高斯展开(标记为“Ours”)的并排比较 [来源:取自 [1]]
此外,高斯展开根本不涉及任何神经网络。甚至没有一个小的 MLP,没有什么“神经”的,一个场景本质上只是空间中的一组点。这本身就已经是一个吸引注意力的人。看到这种方法在我们痴迷于 AI 的世界中越来越受欢迎,研究公司追逐由越来越多的数十亿个参数组成的模型,这令人耳目一新。它的想法源于“表面泼溅”³ (2001),因此它树立了一个很酷的例子,即经典的计算机视觉方法仍然可以激发相关的解决方案。其简单而明确的表示使高斯飞溅特别易于解释,这是在某些应用中选择它而不是 NeRF 的一个很好的理由。
表示 3D 世界
如前所述,在高斯展开中,一个 3D 世界由一组 3D 点表示,实际上是数百万个 3D 点,大约为 0.5-500 万个。每个点都是一个 3D 高斯分布,具有自己独特的参数,这些参数是针对每个场景拟合的,因此该场景的渲染与已知的数据集图像非常匹配。稍后将讨论优化和渲染过程,因此让我们暂时关注必要的参数。
图 2:高斯中心(均值)[来源:取自动态 3D 高斯⁴]
每个 3D Gaussian 参数化为:
- 均值 μ 可解释为位置 x、y、z;
- 协方差 Σ;
- Opacity σ(α) 中,应用 sigmoid 函数将参数映射到 [0, 1] 区间;
- 颜色参数,可以是 (R, G, B) 的 3 个值,也可以是球谐 (SH) 系数。
这里有两组参数需要进一步讨论,一个协方差矩阵和 SH。有一个单独的部分专门介绍后者。至于协方差,它被设计为各向异性,即非各向同性。实际上,这意味着 3D 点可以是沿空间中任何方向旋转和拉伸的椭球体。它可能需要 9 个参数,但是,它们不能直接优化,因为协方差矩阵只有在正半定矩阵时才具有物理意义。使用梯度下降进行优化使得很难直接对矩阵施加此类约束,这就是为什么它被分解如下:
这种因式分解称为协方差矩阵的特征分解,可以理解为椭球体的配置,其中:
- S 是一个对角线缩放矩阵,具有 3 个缩放参数;
- R 是一个 3x3 旋转矩阵,用 4 个四元数解析表示。
使用高斯分布的美妙之处在于每个点的双重影响。一方面,根据其协方差,每个点实际上表示空间中接近其平均值的有限区域。另一方面,它在理论上具有无限范围,这意味着每个高斯分布都在整个 3D 空间上定义,并且可以针对任何点进行评估。这很棒,因为在优化过程中,它允许梯度从长距离流动。