Introduction to 3D Gaussian Splatting

3D 高斯溅射是一种光栅化技术,允许从少量图像样本中推导出的场景进行实时光栅化渲染,实现逼真的场景。它代表了从传统基于三角形的光栅化向基于高斯的方法的转变,使得 3D 环境的高保真视觉重建成为可能。

3D 高斯溅射的核心机制

3D 高斯溅射作为一种光栅化技术,意味着它获取描述场景的数据并将其绘制到屏幕上。与依赖三角形光栅化的传统计算机图形学不同,此方法使用高斯来表示场景。

每个独立的高斯由四个主要参数定义:

  • Position:高斯的 XYZ 坐标。
  • Covariance:一个 3x3 矩阵,定义高斯如何被拉伸或缩放。
  • Color:高斯的 RGB 值。
  • Alpha:高斯的透明度级别(\u03b1)。

通过对数百万个这样的高斯进行光栅化——有时单个场景多达 700 万——系统可以创建一个密集的、逼真的 3D 对象或环境表示。

技术流程

创建 3D 高斯溅射场景的过程包括四个不同的阶段:

1. 结构从运动 (SfM)

流程从结构从运动开始,以估计一组 2D 图像的 3D 点云。这通常通过使用 COLMAP 库来实现。

2. 转换为高斯

估计点云中的每个点被转换为一个高斯。虽然这允许立即光栅化,但初始转换仅提供位置和颜色数据。为了获得高质量结果,表示必须经历一个训练过程。

3. 通过随机梯度下降进行训练

训练通过随机梯度下降 (SGD) 进行,以优化高斯参数。过程遵循以下步骤:

  1. 光栅化:高斯使用可微光栅器渲染成图像。
  2. 损失计算:计算光栅化图像与地面真实图像之间的差异。
  3. 参数调整:根据损失调整高斯参数。
  4. 密集化和修剪:系统自动管理高斯的数量。如果梯度较大,则克隆小高斯并分裂大高斯。相反,如果高斯的 alpha 值变得过低,则将其移除(修剪)。

4. 可微高斯光栅化

为了通过 SGD 进行训练,光栅器必须是可微的。渲染过程涉及将每个高斯从相机的视角投影到 2D,按深度排序,并对每个像素进行前后混合。

性能权衡和局限性

虽然 3D 高斯溅射提供高质量、实时性能,但它引入了特定的技术约束:

优点

  • 高质量、逼真的场景重建。
  • 快速的实时光栅化速度。
  • 相对快速的训练时间。

缺点

  • 高 VRAM 使用:查看时需要 4GB VRAM,训练时需要 12GB。
  • 大存储需求:单个场景在磁盘上可能超过 1GB。
  • 管道不兼容:原始 CUDA 实现与现有的生产渲染管道(如 Vulkan、DirectX 或 WebGPU)不原生兼容。
  • 静态特性:原始方法专为静态场景设计。

行业影响和未来展望

3D 高斯溅射提供了 3D 空间的密集表示,这可能对具身 AI 研究产生重大影响,其中准确表示 3D 空间是主要挑战。此外,对动态 3D 高斯的研究表明,该技术最终可能支持动画。

关于生产集成,主要瓶颈是高效排序数百万个高斯。原始实现使用 CUB 设备基数排序,这是一种 CUDA 特定的优化。然而,已经出现了几种适配,包括 WebGPU、WebGL 和 Unity 的查看器。虽然其中一些使用基于四边形的光栅化——这可能会降低质量或性能——但优化技巧已经表明,在 CUDA 环境之外也能实现高质量结果。

Sources