Paper Reading / Radiance Fields / SIGGRAPH 2023

3D Gaussian
Splatting.

把连续辐射场的可优化性,装进显式点基元与 GPU 光栅化管线。

这篇论文的突破不是“把点画大一点”。它把各向异性 3D Gaussian、可增删的密度控制和一次按 tile 排序的可微光栅器组成同一个训练系统,使 1080p 新视角合成第一次同时接近顶级 NeRF 画质与真正的实时帧率。

14 页正文与附录完整阅读主结果与完整消融重建2023 原始代码快照审计MathJax 3 离线内嵌

Bernhard Kerbl* · Georgios Kopanas* · Thomas Leimkühler · George Drettakis (* 共同第一作者)
ACM Transactions on Graphics 42(4), Article 139 · SIGGRAPH 2023 · DOI 10.1145/3592433 · arXiv:2308.04079v1

01 / Identity & evidence

先固定论文身份与证据边界

30K

标准完整训练

真实场景通常训练 30,000 iteration;论文另报 7K 快速版本,用来展示约 5–10 分钟即可达到竞争质量。

134–154 FPS

真实数据集均值

1080p 级原生分辨率下,30K 模型在三组真实场景分别为 134、154、137 FPS;速度不是低分辨率演示。

1–5M

训练后的 Gaussian

真实场景常见规模。显式表示换来高速,也造成数百 MB 模型与较高训练显存。

一手材料:本页逐页读取官方 14 页 PDF(含 Appendix A–D),交叉核对官方项目页、arXiv v1 与作者公开代码在 2023-08-03 的提交 ba43a8c。结果数字以论文表格为准;论文没有写出的默认学习率等单独标注为“参考实现”。

02 / Research motivation

真正的 gap:画质、训练时间、显示速度不能三者兼得

高画质 NeRF

Mip-NeRF360 对无界真实场景很强,但论文对照需等效约 48 GPU-hours,渲染约 10 秒一帧。

快速辐射场

InstantNGP、Plenoxels 将连续场存进 hash/voxel 结构,训练快,却仍需沿射线查询很多 sample,且画质受结构化网格限制。

已有点渲染

显式点适合 GPU,但固定点大小会孔洞与 aliasing;神经点渲染多依赖 MVS、CNN 或近似可见性,完整场景质量仍不足。

核心假设:辐射场真正需要的是可微的体积合成与方向外观,并不必然需要连续 MLP。若每个显式基元本身是平滑、可投影、可优化的 3D Gaussian,就能保留体积表示的梯度性质,同时跳过空空间采样,用光栅化直接处理“确实存在的基元”。

03 / Problem formulation

输入是照片与相机,输出是一组可直接渲染的椭球

多视图 RGB
静态场景
→
COLMAP / SfM
相机 + 稀疏点
→
优化 3D Gaussians
→
任意新相机
实时 RGB

对第 \(i\) 个 Gaussian,模型保存中心 \(\mathbf{\mu}_i\in\mathbb{R}^3\)、尺度 \(\mathbf{s}_i\in\mathbb{R}^3\)、旋转四元数 \(\mathbf{q}_i\in\mathbb{R}^4\)、不透明度 \(\alpha_i\),以及最高 3 阶 spherical harmonics(4 个 band、每颜色 16 个系数)。颜色随观察方向变化,而位置、形状与 opacity 是场景坐标中的显式参数。

\[ \mathcal{G}_i(\mathbf{x})=\exp\!\left[-\frac{1}{2}(\mathbf{x}-\mathbf{\mu}_i)^{\mathsf T}\mathbf{\Sigma}_i^{-1}(\mathbf{x}-\mathbf{\mu}_i)\right] \]3D Gaussian 给出空间点相对中心的椭球权重;渲染时再乘 learned opacity。论文式 (4) 的 PDF 公式排版应按中心化形式理解。

优化目标:随机抽一张训练相机,将当前 Gaussians 投影、合成图像 \(I\),与真实图 \(\widehat I\) 计算重建损失并反传。没有 dataset-level 预训练网络;每个场景单独优化一套参数。

04 / Mathematical representation

为什么是各向异性 3D Gaussian?

稀疏 SfM 点没有可靠法线。用带法线的 surfel 会把极噪的几何先验带进优化;直接优化 \(3\times3\) covariance 又可能失去 positive semi-definite 性质。作者改为尺度与旋转的可微参数化:

\[ \mathbf{\Sigma}=\mathbf{R}\mathbf{S}\mathbf{S}^{\mathsf T}\mathbf{R}^{\mathsf T},\qquad \mathbf{S}=\operatorname{diag}(\exp(\mathbf{r})) \]这里 \(\mathbf r\) 是实现中真正优化的 raw log-scale,物理尺度为 \(\mathbf s=\exp(\mathbf r)\);指数激活保证尺度为正。四元数归一化后构造 \(\mathbf R\),因此每一步梯度更新都对应一个合法 covariance。

它可以沿表面切向拉长、沿法向压扁:大而平滑的面由少量大椭球覆盖,细线与边缘由小椭球表达。各向同性球只有一个半径,在固定点数下难以贴合细长结构。

\[ \mathbf{\Sigma}^{\prime}=\mathbf{J}\mathbf{W}\mathbf{\Sigma}\mathbf{W}^{\mathsf T}\mathbf{J}^{\mathsf T} \]\(\mathbf W\) 是 world-to-camera 变换,\(\mathbf J\) 是透视投影在均值处的一阶 Jacobian;取 \(\mathbf{\Sigma}^{\prime}\) 左上 \(2\times2\) 块得到屏幕空间椭圆。
原论文 Figure 2:从 SfM 点到 3D Gaussian、密度控制和可微 tile 光栅化
Figure 2 · 原论文 黑线是前向操作,蓝线是从图像损失回传到投影与 Gaussian 参数的梯度。密度控制不是独立后处理,而是穿插在优化中。
05 / Adaptive density control

梯度既用来移动点,也告诉系统在哪里增加表示容量

初始 covariance 是各向同性,轴长来自最近三个 SfM 点距离的均值。500 次 warm-up 后,每 100 iteration 累积每个 Gaussian 的屏幕空间位置梯度;平均范数高于 \(\tau_{\mathrm{pos}}=0.0002\) 就进入 densification。

Clone:欠重建

若 Gaussian 较小(参考实现判据:最大尺度不超过场景尺度的 1%),复制它。论文直觉是副本沿位置梯度继续移动,扩大总覆盖体积,补齐尚未表达的小结构。

Split:过重建

若 Gaussian 太大,将原基元替换成两个较小基元;新中心从原 Gaussian 分布采样,尺度除以 \(1.6\)。总覆盖近似保留,但局部自由度增加。

原论文 Figure 4:clone 与 split 密度控制
Figure 4 · 原论文 同一个“大屏幕位置梯度”信号,通过基元尺度分流为 clone 或 split。图示是二维直觉,真正操作发生在 3D 参数上。

Prune:低 opacity Gaussian 被删;3000 iteration 将 opacity 上限重置到 0.01,使无用基元有机会被淘汰。参考实现还在 3000 次后删除屏幕半径大于 20 px 或世界尺度过大的点,densification 在 15K iteration 停止。

06 / Differentiable rasterizer

一次排序服务整张图,而不是每个像素各排一次

对于一个像素,按深度从前到后排列的 splats 使用与 NeRF 相同的 alpha compositing:

\[ \mathbf{C}=\sum_{i=1}^{N}\mathbf{c}_i\alpha_i\prod_{j=1}^{i-1}(1-\alpha_j), \qquad \alpha_i=o_i\,\mathcal{G}^{2D}_i(\mathbf{p}) \]\(\mathbf c_i\) 是由观察方向查询 SH 得到的颜色,\(o_i\) 是 learned opacity,二维 Gaussian 给出当前像素的覆盖权重。前方点通过 transmittance 乘积遮挡后方点。
  1. 将屏幕切成 \(16\times16\) tile;frustum culling 只保留 99% confidence interval 与视锥相交的 Gaussian。
  2. 每个 Gaussian 对覆盖的每个 tile 生成一个实例;64-bit key 的高位编码 tile ID,低 32 位编码 view-space depth。
  3. 用一次 GPU radix sort 对所有实例排序,再找出每个 tile 的连续区间。论文明确没有 per-pixel 再排序,因此某些重叠配置的 alpha 顺序只是近似。
  4. 每个 tile 启动一个 thread block;共享内存批量加载 Gaussian,各 pixel thread 前向合成,累计 opacity 超过 0.9999 时提前停止。
  5. 反向从后往前重走同一 tile 列表,只保存前向总 opacity 与每像素最后贡献点;由除法恢复中间 transmittance,避免存可变长 per-pixel list。

为数值稳定,reference rasterizer 忽略 \(\alpha\lt 1/255\) 的更新,并把单项 alpha clamp 到 0.99。论文的关键质量选择是不限制可接收梯度的前景 splat 数;饱和才停止,而不是固定 top-\(N\)。

07 / Training & reproducibility

训练不是模型预训练,而是逐场景参数拟合

\[ \mathcal L=(1-\lambda)\mathcal L_1+\lambda\mathcal L_{\mathrm{D\text{-}SSIM}},\qquad \lambda=0.2 \]每轮随机取一张训练相机,渲染整图后比较。论文没有额外深度、normal、稀疏几何或正则项。
论文与 2023-08-03 参考实现可复现配置。带“实现”的项并非论文正文逐项报告。
项目配置证据与作用
输入 / splitCOLMAP 相机与 sparse points;每第 8 张图作 test沿 Mip-NeRF360 协议;其余为训练视图
图像 warm-up先以 1/4 分辨率;250、500 iteration 各上采样一次论文 §7.1;降低早期不稳定
优化器Adam,30K iteration;\(\epsilon=10^{-15}\)(实现)多参数组,同一图像损失
位置 LR\(1.6\times10^{-4}\rightarrow1.6\times10^{-6}\),delay multiplier 0.01(实现)仅位置使用 exponential schedule;再乘场景尺度
其他 LRDC feature .0025;其余 SH .000125;opacity .05;scale .005;rotation .001(实现)对应显式属性参数组
SHdegree 0 起步;每 1000 iteration 加一阶,最高 degree 34 band;缓解角度覆盖不足时 base color 被错误补偿
Densify500–15K,每 100 次;grad threshold .0002(实现与论文一致)clone / split / prune 交替发生
Opacity初始 0.1(实现);每 3000 次 reset 到不高于 .01;prune threshold .005(实现)控制 floater 与点数膨胀
硬件NVIDIA A6000;Mip-NeRF360 对照为 4×A100 训练 12h,折算 48 GPU-hours训练时间并非全在同一硬件;作者指出 A100 更快
软件Python/PyTorch + custom CUDA/CUB + SIBR viewer原始环境 Python 3.7.13、PyTorch 1.12.1、CUDA 11.6
08 / Main results

30K 版本赢在“质量与速度同时成立”,7K 版本赢在快速收敛

Table 1 · 三组真实数据集平均结果。SSIM / PSNR 越高越好,LPIPS 越低越好。粗体为每组最优;Mip-NeRF360 在其自有数据集的数值直接抄自原论文。
方法Mip-NeRF360Tanks & TemplesDeep Blending
SSIMPSNRLPIPS训练FPSMemSSIMPSNRLPIPS训练FPSMemSSIMPSNRLPIPS训练FPSMem
Plenoxels.62623.08.46325m49s6.792.1GB.71921.08.37925m5s13.02.3GB.79523.06.51027m49s11.22.7GB
INGP-Base.67125.30.3715m37s11.713MB.72321.72.3305m26s17.113MB.79723.62.4236m31s3.2613MB
INGP-Big.69925.59.3317m30s9.4348MB.74521.92.3056m59s14.448MB.81724.96.3908m2.7948MB
Mip-NeRF360.79227.69.23748h.068.6MB.75922.22.25748h.148.6MB.90129.40.24548h.098.6MB
Ours-7K.77025.60.2796m25s160523MB.76721.20.2806m55s197270MB.87527.78.3174m35s172386MB
Ours-30K.81527.21.21441m33s134734MB.84123.14.18326m54s154411MB.90329.41.24336m2s137676MB

量化解读:Ours-30K 相比 Mip-NeRF360,在 Mip-NeRF360 数据集 SSIM +0.023、LPIPS 改善 0.023,但 PSNR 低 0.48 dB;Tanks & Temples 三项都更好;Deep Blending 几乎持平(SSIM +0.002、PSNR +0.01、LPIPS 改善 0.002)。因此“全面超过”不准确,更严谨的说法是综合质量持平或略优,并把渲染速度提高约三数量级。

原论文 Figure 5:3DGS、Mip-NeRF360、InstantNGP、Plenoxels 与真值比较
Figure 5 · 原论文 八个真实场景的 held-out view。作者标注了植被、细结构、墙面与反射附近差异;定性图支持细节保持,但每种方法的显示色调与失败类型仍需结合指标阅读。
Table 2 · Synthetic NeRF PSNR,100K 随机 Gaussian 初始化;竞争方法数字来自各自论文。
方法MicChairShipMaterialsLegoDrumsFicusHotdog平均
Plenoxels33.2633.9829.6229.1434.1025.3531.8336.8131.76
INGP-Base36.2235.0031.1029.7836.3926.0233.5137.4033.18
Mip-NeRF36.5135.1430.4130.7135.7025.4833.2937.4833.09
Point-NeRF35.9535.4030.9729.6135.0426.0636.1337.3033.30
Ours-30K35.3635.8330.8030.0035.7826.1534.8737.7233.32

合成数据先把 100K 随机点 prune 到约 6–10K,再长到 200–500K;最终平均只比 Point-NeRF 高 0.02 dB,属于数值持平。其意义更在于说明 SfM 初始化不是算法必需条件,但真实无界背景中随机初始化明显更差。

09 / Ablation

最强证据来自完整梯度带宽;其余模块存在场景依赖

Table 3 · PSNR 消融。原论文按单元格着色;这里保留全部数字。
配置Truck-5KGarden-5KBicycle-5KTruck-30KGarden-30KBicycle-30K平均-5K平均-30K
Limited-BW14.6622.0720.7713.8422.8820.8719.1619.19
Random Init16.7520.9019.8618.0222.1921.0519.1720.42
No-Split18.3123.9822.2120.5926.1125.0221.5023.90
No-SH22.3625.2222.8824.3926.5925.0823.4825.35
No-Clone22.2925.6122.1524.8227.4725.4623.3525.91
Isotropic22.4025.4922.8123.8927.0024.8123.5625.23
Full22.7125.8223.1824.8127.7025.6523.9026.05

Table 3 的 Average 列按原论文原样保留。由表内已显示的数值复算,与报告均值有末位差异:例如 Limited-BW 5K 的 \((14.66+22.07+20.77)/3=19.166\ldots\),原表写 19.16;其余平均已逐行复算核对;差异可能来自未展示的内部精度或截断,原文未说明,不能确定作者采用何种舍入规则。

原论文 Figure 10:各向异性和各向同性 Gaussian 比较
Figure 10 · 原论文 Full 与 Isotropic 在相同 Gaussian 上限下比较。定性结果很好地解释了为什么 covariance 的方向自由度能提高参数效率。
10 / Paper vs. implementation

公开实现补齐超参数,也暴露了论文叙述的简化

核查项论文说法2023 参考实现与影响
Clone 是否主动移动复制后沿位置梯度方向移动densify_and_clone 创建同位置副本;下一轮由梯度把两个参数分开。概念方向一致,但不是 densify 操作当场位移。
Split 缩放两个新点,scale 除以 \(\phi=1.6\)代码为 scale / (0.8*N),默认 \(N=2\),正好也是 1.6;中心按旋转后的原尺度 Gaussian 采样。
Prune threshold删除 \(\alpha\lt\epsilon_{\alpha}\),未在正文给数值调用时为 .005;3K 后还删屏幕半径 >20 与世界尺度 >0.1×extent 的点。
初始 opacity未给数值0.1,经 inverse sigmoid 存 raw parameter。每 3K reset 为不高于 .01。
Optimizer“SGD techniques”与位置 exponential schedule实际是 Adam 多参数组;这里 SGD 是随机梯度优化的泛称,不是 torch.optim.SGD。
SH 与特征维度4 bands,逐 1000 iteration 开启sh_degree=3,共 16 basis / color;DC LR .0025,其余系数 LR 为其 1/20。
复现资源源代码和数据可用代码、viewer、预训练模型与评测图公开;许可证限研究/评估,并非宽松商用许可。24GB VRAM 是 README 对论文质量训练的硬件建议。
后续仓库不适用主分支后来加入抗锯齿、depth、exposure、Sparse Adam 等功能;不能反向归因给 2023 原论文。
11 / Reviewer commentary

这篇论文改变了默认表示,但没有解决辐射场的所有病

Strengths

  • 表示、优化与 renderer 协同设计,性能收益可由消融定位。
  • 显式基元兼顾连续梯度与 GPU 友好访问,设计直觉清晰。
  • 三套真实 benchmark、合成数据、速度、内存、训练时间与定性结果同时报告。
  • 公开 CUDA 实现、viewer、模型与评测图,工程影响巨大。

Weaknesses

  • 需要已标定多视图和高质量 SfM;动态、曝光变化与少视图不在问题定义内。
  • 模型常为数百 MB,训练峰值可超过 20GB;论文的“compact”只相对点方法成立。
  • 近似深度排序与简单 guard-band culling 会 popping;无 anti-aliasing 与显式 regularization。
  • 欠观察区会 coarse/splotchy/elongated,Gaussians 不等于可靠 surface。
  • 仅 3 场景消融且无统计误差,公平性受不同硬件与复制数字影响。

作者明确承认的限制

训练视图覆盖不足时出现伪影;大而各向异性的 Gaussian 可能突然切换顺序;超大场景可能需降低位置学习率;已训练模型与 rasterizer 都吃显存;约 80% 训练时间仍在 Python 逻辑。作者建议更合理 culling、anti-aliasing、regularization、压缩与全 CUDA 优化。

12 / Research extensions

从这套设计还能推出什么?

Learned density controller

用误差、可见次数、尺度、梯度历史与多视图一致性学习 clone/split/prune,替代固定阈值;目标可同时惩罚点数、显存与闪烁。

Renderer-aware ordering

对深度相近或相交 ellipsoid 做局部排序修正、stochastic order averaging 或可微 order uncertainty,专门降低 popping。

Surface-aware Gaussian

加入 normal、depth 或 multi-view geometry regularization,让小特征仍享受 anisotropy,同时约束最小轴贴合表面。

Compression as training

量化 SH/scale/rotation,学习码本并在训练期加入 bitrate penalty,让“可实时渲染”和“可分发”成为同一个目标。

Test-time repair

检测 novel trajectory 上的高不确定区域,回到最有信息量的训练视图局部 densify / prune,而不是整场景重训。

Material & inverse graphics

把 SH 颜色替换为可 relight 的 BRDF/材质参数,再用光照显式建模;否则当前 view-dependent color 会把反射、曝光与几何误差混在一起。

为什么单看 PSNR 不够?

拖动三项,观察一个示意性的研究评分。它不是论文 metric,只用来展示后续工作会遇到的多目标 trade-off。

综合研究效用:—

示意权重:画质 40%、速度 30%、几何 30%。论文强证据主要覆盖前两项。

13 / Sources

来源与核查快照

  1. Kerbl et al., official full paper PDF,14 页,含 Appendix A–D。
  2. 官方项目页:论文、视频、数据、预训练模型与 viewer。
  3. arXiv:2308.04079v1:提交历史、作者与 TOG journal reference。
  4. ACM DOI 10.1145/3592433:正式出版标识。
  5. 官方参考实现,提交 ba43a8c(2023-08-03):学习率、densification 窗口、opacity 与 optimizer 默认值。

核查日期:2026-09-26。页面未独立训练模型或重跑 benchmark;所有实验数值来自论文,代码结论来自固定历史提交的静态核查。Figure 2、4、5、10 为官方 PDF 原图裁切,未改变内容。