在过去几年里,计算机图形学领域一直为神经辐射场 (NeRFs) 所着迷。这些方法提出了一种突破性的方式来捕捉和探索3D场景——仅需几张照片,就能从任意新视角生成惊人逼真的图像。

这些成果令人叹为观止,但代价是巨大的计算成本: 训练一个高质量的NeRF可能耗时数天,而渲染一张高分辨率图像也可能需要数秒,实时探索根本无法实现。

这带来了一个令人沮丧的取舍:

  • 慢但高质量: 如 Mip-NeRF360 能生成极致的细节,但训练需数十小时,渲染速度也极其缓慢。
  • 快但质量较低: 如 Instant-NGPPlenoxels 将训练时间削减到几分钟,但常常牺牲精细细节和视觉保真度。

对于虚拟现实、游戏或电影级可视化等真正沉浸式体验,我们亟需同时具备顶尖质量实时帧率


迎来了2023年的一项突破: 用于实时辐射场渲染的3D高斯溅射技术
该方法不仅是微小改进,而是一次巨大飞跃,它实现了照片级真实感的渲染,训练仅需数分钟,且——最令人惊叹的是——可在实时下渲染高分辨率视图。

不同新视角合成方法的比较,展示了3D高斯溅射技术同时实现了高质量和实时帧率。

图1: 作者的方法实现实时渲染 (高达135 fps) ,质量与 Mip-NeRF360 (0.071 fps) 相当或更优,且训练时间仅为其一小部分 (51分钟 vs 48小时) 。

本文将深入解析3D高斯溅射技术的工作机制——探讨其三大核心支柱:

  1. 一种基于各向异性3D高斯函数的新颖场景表示。
  2. 可同时构建并精化场景的自适应优化策略
  3. 一个为GPU高度优化的极速可微光栅化器

背景: 通往实时辐射场之路

在深入高斯溅射技术本身之前,我们先看看促使其诞生的技术背景。

NeRF时代: 美丽的代价

传统 NeRF 将场景表示为一个连续函数——通常是MLP (多层感知机) ,输入为3D位置和观察方向,输出为颜色和密度。渲染过程需要体积射线步进: 从每个像素射出一条射线,对网络进行数百次查询以累积颜色与不透明度。

核心的体积渲染方程为:

\[ C = \sum_{i=1}^{N} T_i \big(1 - \exp(-\sigma_i \delta_i)\big) \mathbf{c}_i \]

\[ \text{with} \quad T_i = \exp\left(-\sum_{j=1}^{i-1} \sigma_j \delta_j\right) \]

这一过程可生成优美连续的图像,但计算开销巨大,实时交互渲染几乎不可行。

追求速度: 网格与哈希结构

PlenoxelsInstant-NGP 等新系统将特征存储在结构化数据 (体素网格、哈希网格) 中,从而减少对大型神经网络的依赖,大幅降低训练与渲染时间。然而它们依然依赖射线步进,并且质量有时受制于固定分辨率的网格。

基于点的替代方案

借鉴早期计算机图形学思想,基于点的渲染使用离散点 (或“溅射点”) 投影到图像平面并进行混合。点的混合公式与体积渲染惊人相似:

\[ C = \sum_{i \in \mathcal{N}} c_i \alpha_i \prod_{j=1}^{i-1} (1 - \alpha_j) \]

每个点具有颜色 \(c_i\) 和不透明度 \(\alpha_i\),前方的点会遮挡后方的点。两种公式的相似性是关键: 意味着我们可以用可高效渲染的离散图元替代连续神经场。


3D高斯溅射方法: 三大核心创新

3D高斯溅射流程的高层概览,从SfM点到最终渲染图像。

图2: 流程概览: 由稀疏的运动恢复结构 (SfM) 点开始,构建优化后的3D高斯集合,并通过自定义光栅化器实时渲染。

1. 表示方法: 灵活的3D高斯函数

该方法不依赖体素或神经网格,而是将场景建模为3D高斯函数集合——世界空间中的椭球形“模糊斑点”。每个高斯包括:

  • 位置 (\(\mu\)): 其在3D空间的中心。
  • 协方差 (\(\Sigma\)): 形状与方向,可实现各向异性——拉伸、压缩或旋转以贴合表面与细节。
  • 不透明度 (\(\alpha\)): 用于混合。
  • 颜色 (球谐系数) : 使用球谐函数编码与视角相关的外观。

其形状定义为:

\[ G(x) = e^{-\frac12 x^T \Sigma^{-1} x} \]

直接优化 \(\Sigma\) 可能导致无效矩阵。为解决此问题,作者存储:

  • 缩放向量 \(s\)
  • 旋转四元数 \(q\)

并将其转换为有效协方差矩阵:

\[ \Sigma = R S S^T R^T \]

该方案自然支持各向异性,能实现紧凑且精确的场景表示。

一个可视化图例,展示了各向异性3D高斯函数如何通过拉伸和对齐来紧凑地表示复杂几何体。

图3: 缩小优化后的高斯可揭示其拉长的形状。它们与真实表面对齐,提供紧凑且高保真的表示。


2. 优化: 自适应密度控制

训练从稀疏SfM点开始,早期模型过于粗糙。自适应密度控制会依据视图空间位置梯度策略性地新增或移除高斯。

两种关键操作:

  1. 克隆 (欠重建) : 缺失细节时,克隆较小的高斯并轻微移动以填补空白。
  2. 分裂 (过重建) : 较大的高斯覆盖了过多细致几何时,将其拆分成两个较小的高斯。

一个示意图,展示了两种致密化策略: 克隆小的高斯函数和分裂大的高斯函数。

图4: 克隆增加欠重建区域覆盖,分裂增加过重建区域细节。

剪枝会移除不透明度低于阈值的高斯。克隆、分裂与剔除在混合损失函数的指导下循环进行,确保表示高效演化:

\[ \mathcal{L} = (1 - \lambda)\mathcal{L}_1 + \lambda \mathcal{L}_{\text{D-SSIM}} \quad \text{with} \quad \lambda = 0.2 \]

3. 渲染器: 快速的基于图块的可微光栅化器

高斯溅射将缓慢的射线步进替换为GPU友好的光栅化器:

  1. 投影: 3D高斯在相机视图中投影为2D溅射点。
  2. 分块: 将图像平面划分为小图块 (如16×16像素) 。
  3. 排序: 每个高斯实例 (按图块) 分配深度+图块键,通过一次全局GPU基数排序实现前到后的顺序。
  4. 前向 (光栅化) : 每个图块并行遍历高斯列表,像素完全不透明时停止计算。
  5. 反向 (梯度) : 不存储每像素全部贡献溅射点,而是按排序列表自后向前遍历,从最终累积不透明度重建所需中间值。

该设计对每像素溅射点贡献数量无上限,对于深度复杂场景尤为重要。


实验与结果

定量性能

一张表格,比较了几种方法在多个数据集上的定量指标 (SSIM、PSNR、LPIPS、训练时间、FPS) 。

表1: 3D高斯溅射技术实现了与 Mip-NeRF360 相当或更优的质量,训练约40分钟,渲染速度超过130 FPS。

亮点:

  • Ours-30K 模型质量可达或超越 Mip-NeRF360,训练速度约快 70×,渲染速度快 2000×
  • *Ours-7K *(训练约7分钟) 质量与 Instant-NGP 相当,延长训练可进一步提升。

定性对比

一系列并排图像,比较了地面真值、3D高斯溅射及其他方法的效果。

图5: 在未见视图上,高斯溅射常比 Mip-NeRF360 呈现更锐利细节且伪影更少。


训练进展

一个视觉对比图,展示了从7K到30K训练迭代的质量提升。

图6: 部分场景在7K迭代时已达高质量,额外训练可优化背景细节并减少伪影。


原理分析: 消融研究洞见

各向异性的价值
一个对比图,显示了各向异性高斯函数比各向同性 (球形) 高斯函数产生的结果质量高得多。

图10: 各向异性高斯函数更好地贴合表面,以更少的点捕获精细细节。


无限梯度的优势
一个视觉对比图,显示了当限制接收梯度的溅射点数量时,质量会显著下降。

图9: 将每像素梯度限制为10个溅射点 (左) 会产生伪影;完整方法 (右) 可避免此问题。


致密化的平衡
一项消融研究,显示了“克隆”和“分裂”致密化策略的重要性。

图8: 移除克隆或分裂步骤会降低重建质量,凸显自适应控制的关键性。


局限性

如同其他辐射场方法,高斯溅射在捕捉不充分的区域仍可能表现欠佳。

一个对比图,展示了Mip-NeRF360和3D高斯溅射技术在观测不佳区域的失败案例。

图11: 在稀疏覆盖区域,Mip-NeRF360 会出现漂浮物;高斯溅射可能产生粗糙斑块状的溅射点。

尽管内存占用已远低于早期点渲染方法,但仍多于紧凑型NeRF变体。在本原型中,大型场景可能需要超过20GB GPU显存——未来优化有望减少此需求。


结论: 范式转移

3D高斯溅射技术实现了实时顶尖质量的辐射场渲染——这一成就曾被认为在没有连续神经场时无法实现。

通过融合:

  • 显式各向异性图元,兼具灵活性与紧凑性
  • 自适应优化,动态精化场景
  • GPU架构下的高度并行光栅化

……它同时实现了前所未有的速度与画质。

这一方法连接了经典图形学 (光栅化、溅射)现代神经场景表示,为VR、AR、游戏及电影制作等交互式应用开辟了新的可能。

它为神经渲染中长期存在的速度与质量权衡提供了有力解答——并或许为下一代实时照片级真实感图形绘制了蓝图。