3D Gaussian Splatting for Real-Time Radiance Field Rendering
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
关键设计:
-
各向异性三维高斯作为场景基元。高斯定义为 \(G(x)=e^{-\frac{1}{2}(x-\mu)^{T}\Sigma^{-1}(x-\mu)}\)。直接优化协方差矩阵 \(\Sigma\) 会因梯度更新破坏其半正定性而失效,因此把它分解为一个缩放矩阵 \(S\) 和旋转矩阵 \(R\):\(\Sigma = R S S^{T} R^{T}\),分别用一个三维缩放向量和一个单位四元数存储、独立优化。各向异性让少量大高斯就能压缩表达大片平滑区域,细结构也能紧凑刻画。
-
投影与成像模型。渲染时把三维高斯投影到二维:相机坐标下协方差为 \(\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)表达视角相关外观。
-
自适应密度控制。优化中欠重建(缺几何)与过重建(大高斯糊住细节)区域都表现为较大的视空间位置梯度;对梯度超过阈值 \(\tau_{\text{pos}}=0.0002\) 的高斯做致密化:小高斯「克隆」一份并沿梯度方向平移以填补空缺,大高斯「分裂」为两个并把尺度除以经验因子 \(\phi=1.6\)。同时周期性剔除近乎透明(\(\alpha\) 小于阈值)的高斯,并定期把不透明度重置压低以控制总量。
-
快速可微的分块光栅化器。受 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/时序高斯)、大规模场景(分层表示)、反射外观(延迟着色)等大量后续工作,也推动了对显存/存储压缩的研究。值得追问的方向包括:如何在保持实时的同时逼近网格级的表面精度与可编辑性、如何把这种表示与传统图形管线(阴影、光照、物理)更自然地融合,以及在稀疏视角/少样本条件下的鲁棒重建。