Journal

3D Gaussian Splatting for Real-Time Radiance Field Rendering

Bernhard Kerbl, Georgios Kopanas, Thomas Leimkühler, George Drettakis

Inria; Max Planck Institute for Informatics

一句话总结

用一组各向异性的三维高斯基元显式表示场景,配合一个可微、按屏幕分块(tile)的排序光栅化器,在保持与最佳质量方法(Mip-NeRF360)相当的画质同时,实现了 1080p 分辨率下 ≥30fps 的实时新视角合成,且训练时间只与最快的方法相当。

研究背景

  • 领域现状:NeRF 系方法用连续体表示(MLP + 体渲染沿光线积分)革新了新视角合成。为加速,后续工作把(神经)特征存进体素网格、哈希表等空间数据结构里插值,代表是 InstantNGP(哈希网格)和 Plenoxels(稀疏体素、无网络)。
  • 核心痛点:连续表示天然依赖沿光线的随机采样,采样点多、成本高且带噪声;结构化网格既限制画质上限,也拖慢渲染。质量最好的 Mip-NeRF360 训练要约 48 小时,而快速方法只能达到 10–15fps 的交互级帧率,在完整无界场景 + 1080p 下没有方法能做到实时。
  • 本文 idea:跳出连续体表示,回到显式、GPU 友好的点/基元路线,但用「三维高斯」这种可微的体基元,既保留体渲染的优化友好性(\(\alpha\)-blending 的成像模型与 NeRF 等价),又避免在空白空间做无谓计算,从而同时拿到高画质、快训练和实时渲染。

方法

整体框架:从 SfM 标定相机时顺带得到的稀疏点云出发,把每个点初始化成一个三维高斯(位置、协方差、不透明度、球谐颜色);随后交替进行「参数优化」与「自适应密度控制」(增删/分裂高斯),并用一个快速可微的分块光栅化器渲染出图与训练视图比对,反向传播梯度。

flowchart LR
  A["SfM 稀疏点云"] --> B["初始化 3D 高斯"]
  B --> C["投影到 2D + 分块光栅化"]
  C --> D["渲染图像"]
  D --> E["与训练视图比对 L1 + D-SSIM"]
  E -->|梯度回传| B
  E --> F["自适应密度控制: 克隆/分裂/剔除"]
  F --> B

关键设计:

  1. 各向异性三维高斯作为场景基元。高斯定义为 \(G(x)=e^{-\frac{1}{2}(x-\mu)^{T}\Sigma^{-1}(x-\mu)}\)。直接优化协方差矩阵 \(\Sigma\) 会因梯度更新破坏其半正定性而失效,因此把它分解为一个缩放矩阵 \(S\) 和旋转矩阵 \(R\):\(\Sigma = R S S^{T} R^{T}\),分别用一个三维缩放向量和一个单位四元数存储、独立优化。各向异性让少量大高斯就能压缩表达大片平滑区域,细结构也能紧凑刻画。

  2. 投影与成像模型。渲染时把三维高斯投影到二维:相机坐标下协方差为 \(\Sigma' = J W \Sigma W^{T} J^{T}\),其中 \(W\) 是视变换、\(J\) 是投影仿射近似的雅可比。像素颜色用排序后前 \(N\) 个 splat 做 \(\alpha\)-blending:\(C=\sum_{i \in N} c_i \alpha_i \prod_{j=1}^{i-1}(1-\alpha_j)\),与 NeRF 的体渲染公式在形式上一致。颜色用球谐(SH)表达视角相关外观。

  3. 自适应密度控制。优化中欠重建(缺几何)与过重建(大高斯糊住细节)区域都表现为较大的视空间位置梯度;对梯度超过阈值 \(\tau_{\text{pos}}=0.0002\) 的高斯做致密化:小高斯「克隆」一份并沿梯度方向平移以填补空缺,大高斯「分裂」为两个并把尺度除以经验因子 \(\phi=1.6\)。同时周期性剔除近乎透明(\(\alpha\) 小于阈值)的高斯,并定期把不透明度重置压低以控制总量。

  4. 快速可微的分块光栅化器。受 Pulsar 的球体光栅化启发,把屏幕分成 16×16 的 tile,对每个 tile 内的高斯用 GPU Radix 排序按深度排一次序,再顺序做 \(\alpha\)-blending;关键是它尊重可见性顺序,且反向传播时通过跟踪累积的 \(\alpha\) 值,能对一个像素里任意多个 splat 回传梯度,没有数量上限。这一光栅化器是训练与渲染共同的效率核心。

实验结果

在质量标杆数据集 Mip-NeRF360 上与快速方法及 SOTA 质量方法的对比(方法 × 指标,A6000 GPU):

方法 SSIM↑ PSNR↑ LPIPS↓ 训练时间 FPS 显存
Plenoxels 0.626 23.08 0.463 25m49s 6.79 2.1GB
INGP-Base 0.671 25.30 0.371 5m37s 11.7 13MB
INGP-Big 0.699 25.59 0.331 7m30s 9.43 48MB
Mip-NeRF360 0.792 27.69 0.237 48h 0.06 8.6MB
本文 (30K) 0.815 27.21 0.214 41m33s 134 734MB

本文 30K 配置在 SSIM/LPIPS 上超过训练需 48 小时的 Mip-NeRF360,PSNR 接近,而渲染帧率高出三个数量级、训练缩短到约 41 分钟;7K 迭代(约 5–8 分钟)就已能得到相当不错的质量。代价是显存占用明显更高(几百 MB 到 GB 级)。在 Tanks&Temples、Deep Blending 上结论一致;合成 Blender 数据集上即便随机初始化也能达到高质量。消融实验表明各向异性协方差、分裂/克隆密度控制、SH 与充足梯度带宽都是画质的重要贡献项。

亮点与局限

  • 亮点:
    • 首次在完整无界真实场景 + 1080p 下实现兼具 SOTA 画质的实时新视角合成,且训练时间与最快方法相当。
    • 显式、无神经网络的高斯表示天然规避空白空间采样,可微光栅化器同时加速训练与渲染。
    • 仅需 SfM 稀疏点即可初始化,不依赖 MVS 稠密几何,避免了点云方法常见的过/欠重建伪影。
  • 局限:
    • 显存与存储开销大(单场景数百 MB 至 GB 级、百万量级高斯),远高于紧凑的隐式方法。
    • 在观测角度缺失或输入稀疏的区域会出现伪影;SH 零阶分量在角度信息不足时易被优化坏(需分阶段引入 SH 缓解)。
    • 仅针对静态场景,未处理动态、反走样与外观编辑等问题。

延伸思考

3DGS 把「显式基元 + 可微光栅化」重新推回辐射场舞台,此后迅速衍生出面向几何精度(2D 高斯泼溅)、动态场景(4D/时序高斯)、大规模场景(分层表示)、反射外观(延迟着色)等大量后续工作,也推动了对显存/存储压缩的研究。值得追问的方向包括:如何在保持实时的同时逼近网格级的表面精度与可编辑性、如何把这种表示与传统图形管线(阴影、光照、物理)更自然地融合,以及在稀疏视角/少样本条件下的鲁棒重建。