Wander's Whisper

--'Just do something,give destiny a reason to stir.'

Gaussian splatting

Wander's avatar

Part I: 3D Gaussian Splatting

Gaussian Splatting 是什么?

Gaussian Splatting(高斯泼溅)是一种用于新视角合成(Novel View Synthesis)和三维重建的全新技术。与 NeRF 不同,它不使用大型的神经网络(MLP)来隐式地表示场景,而是采用数百万个三维高斯分布(3D Gaussians)作为“颜料”,显式地、直接地描绘三维世界。

其最突出的特点是实现了高质量的实时渲染(通常 >100 FPS)和极快的训练速度,颠覆了 NeRF 漫长的训练和渲染周期。

  • 核心目标: 实时、高质量的新视角合成。

  • 输入: 与 NeRF 类似,即从不同角度拍摄的同一个场景的多张二维图片,以及对应的相机位姿。

  • 输出: 一个由数百万个三维高斯分布构成的、可被高速渲染的显式三维场景。

Gaussian Splatting 的核心原理

将场景表示为“高斯云”

NeRF 的核心是用一个连续的函数(MLP)表示场景,而 Gaussian Splatting 的核心是用一组离散的、可优化的“粒子”——三维高斯分布——来表示场景。

每个高斯分布都具有以下属性,共同定义了它在空间中的形态和外观:

位置 (Position): x\mathbf{x},即高斯分布的中心点坐标 (x,y,z)(x, y, z)

协方差 (Covariance): Σ\mathbf{Σ},一个 3x3 矩阵,定义了高斯分布的形状和朝向。可以想象成一个椭球体,它可以被拉伸、旋转,从而精确地模拟各种表面细节。为了优化方便,通常会分解为缩放(Scale)和旋转(Rotation,用四元数表示)。

颜色 (Color): c\mathbf{c},为了表达视角相关(view-dependent)的光泽、反射等效果,颜色通常使用球谐函数 (Spherical Harmonics, SH) 来表示。

不透明度 (Opacity): α\alpha,一个标量,决定了这个高斯“粒子”的透明程度。

渲染:从“体渲染”到“泼溅” (Splatting)

NeRF 沿着每条光线采样上百个点,并查询 MLP,计算成本极高。Gaussian Splatting 巧妙地利用了现代 GPU 的光栅化硬件,发明了一种可微分的“泼溅”渲染管线。

投影 (Projection): 对于给定的新视角,将场景中所有的三维高斯分布(椭球)投影到二维图像平面上,形成一系列二维“泼溅”(Splats)。

排序 (Sorting): 为了正确处理遮挡关系,所有二维“泼溅”根据它们的深度进行快速排序。

混合 (Blending): 从后往前,将排序后的二维“泼溅”逐个“画”在屏幕的像素网格上。每个“泼溅”的颜色和不透明度会累积在它覆盖的像素上,最终混合出每个像素的最终颜色。

整个过程完全可微,这意味着我们可以计算出渲染图像与真实图像的差异,并将梯度反向传播,用于优化每个高斯分布的属性。

  1. 训练:自适应的密度控制 训练的目标是调整所有高斯分布的属性(位置、形状、颜色、不透明度),使渲染结果与训练图像尽可能一致。

Gaussian Splatting 最具创新性的部分是它的自适应密度控制 (Adaptive Density Control) 机制。在训练过程中,系统会周期性地:

致密化 (Densify): 在模型欠重构的区域(例如,一个大的高斯覆盖了复杂的细节),系统会自动分裂或复制高斯,用更多、更小的高斯来捕捉细节。

剪枝 (Prune): 在模型过重构的区域,或对于那些几乎完全透明(α\alpha 极低)、对最终图像没有贡献的高斯,系统会将其移除,以保持模型的紧凑和高效。

这个“生长”与“修剪”的动态过程,使得模型能够从一个稀疏的点云开始,自动地、高效地构建出覆盖整个场景的高质量表示。

优缺点对比 NeRF 优点 极快的渲染速度: 真正实现了实时渲染,为 VR/AR 和交互式应用打开了大门。

极快的训练速度: 训练一个场景通常只需要几十分钟,而 NeRF 需要数小时甚至数天。

高质量: 渲染质量达到甚至超越了当前顶级的 NeRF 方法。

缺点 存储开销大: 显式表示需要存储数百万个高斯分布的全部属性,导致模型文件体积(通常几百 MB)远大于 NeRF 的 MLP 权重(几 MB)。

伪影问题: 在某些情况下,可能会因“泼溅”的离散特性而产生一些视觉伪影。

Part II: Dynamic 3D Gaussians 既然静态场景被完美攻克,我们自然会问:如何扩展到 4D 动态场景?直接为每一帧训练一组高斯分布会造成巨大的存储浪费,并且无法保证时间上的一致性(闪烁)。

Dynamic 3D Gaussians 等工作借鉴了 D-NeRF 的思路,为 Gaussian Splatting 引入了时间维度。

核心思想:学习高斯的运动轨迹 该方法不是为每个时间点创建一套全新的高斯,而是认为场景由一组标准高斯 (Canonical Gaussians) 构成,这些高斯会随着时间发生移动和形变。

高斯形变场 (Gaussian Deformation Field): 模型学习一个连续的时间函数。对于任意一个标准高斯,输入一个时间戳 tt,这个函数就能预测出该高斯在 tt 时刻的位置、旋转、缩放等属性。

时间一致性: 通过学习连续的运动轨迹,模型不仅能保证物体在运动过程中的外观一致性,还能渲染出任意中间时刻的图像(慢动作、插帧),甚至预测未来的运动。

这种方法巧妙地将动态场景分解为“物体本身的样子”(标准空间)和“物体如何运动”(形变场),实现了对动态场景高效、高质量的 4D 建模。

Comments 从 NeRF 到 Gaussian Splatting 的演进,给我最大的启发是三维重建领域从隐式表示向显式表示的回归与超越。

NeRF 开启了用神经网络作为“通用函数拟合器”来隐式表达三维世界的时代。它非常强大,但其“黑盒”特性和对光线步进的依赖,使其成为一个性能瓶颈。

像 Instant-NGP 这样的工作,通过引入显式的结构(哈希网格)来辅助 MLP,可以看作是隐式与显式结合的混合方法,极大地提升了速度。

Gaussian Splatting 则更加彻底,它完全抛弃了 MLP 作为场景表示的核心,回归到更直接、更“野蛮”的显式表达(点云/粒子),但通过可微分渲染和自适应优化,将这种经典思想提升到了新的高度。它巧妙地将问题转化为了一个更适合现代 GPU 架构的光栅化问题,而不是计算密集型的光线追踪问题,从而实现了质的飞跃。

这种从“连续”到“离散”,从“隐式”到“显式”的转变,展现了科研领域在解决问题时思路的迭代与演进,非常值得学习。