引言:从 NeRF 到实时点云渲染的范式转移
神经辐射场(NeRF)在高质量新视角合成领域取得了突破性进展,但其基于 MLP 的连续表示需要昂贵的随机采样光线行进,导致训练和渲染速度受限。3D Gaussian Splatting(3D-GS)通过将场景表示为可微分的 3D 高斯点云,结合 tile-based 光栅化,在 1080p 分辨率下实现了 ≥30 FPS 的实时渲染,同时保持与 Mip-NeRF360 相当的视觉质量。
与传统点云渲染不同,3D-GS 的核心创新在于显式的高斯原语与高效的 tile-based 光栅化管线的协同设计。每个 3D 高斯由位置 μ、各向异性协方差 Σ、不透明度 α 和球谐系数(SH)定义,通过投影到 2D 后进行 α-blending 渲染。这种方法避免了 NeRF 的体积光线行进开销,同时利用 GPU 的并行计算能力实现实时性能。
Tile-Based 光栅化的核心机制
分块策略与预排序
3D-GS 将屏幕划分为 16×16 像素的 tiles,这是权衡并行度与内存局部性的关键参数。渲染流程遵循以下步骤:
- 视锥剔除:仅保留 99% 置信区间与视锥相交的高斯,使用 guard band 剔除极端位置的高斯以避免投影协方差计算的不稳定性
- Tile 分配:计算每个高斯重叠的 tile 数量,为每个实例分配一个 64-bit key(低 32 位编码投影深度,高 32 位编码 tile ID)
- 全局排序:使用 GPU Radix sort 对高斯进行单次全局排序,避免逐像素排序的开销
- 范围标识:通过比较相邻元素的 tile ID,并行生成每个 tile 的高斯列表起止索引
这种设计的关键洞察是:预排序的近似深度顺序足以满足 α-blending 的可见性需求,当 splat 接近像素大小时,近似误差变得可忽略。
各向异性 Splatting 与可微分渲染
3D 高斯通过投影变换到 2D 图像平面。给定视图变换 W 和投影变换的雅可比矩阵 J,相机坐标系中的协方差矩阵 Σ′ 计算为:
Σ′ = J · W · Σ · W^T · J^T
为避免直接优化协方差矩阵导致非正定问题,3D-GS 将 Σ 分解为旋转矩阵 R(用四元数表示)和缩放矩阵 S:
Σ = R · S · S^T · R^T
这种参数化允许通过梯度下降独立优化旋转和缩放,实现各向异性高斯对复杂几何的紧凑表示。
渲染器采用前向 - 后向遍历策略:前向遍历时按深度顺序累积颜色和 α 值,当 α 达到饱和(接近 1)时提前终止;后向遍历时复用排序结果,从最后一个贡献像素的高斯开始反向遍历,通过存储的累积 α 值恢复中间透明度,计算各参数的梯度。
优化策略:精确局部化与剪枝
SnugBox 与 AccuTile:精确的 Tile 分配
原始 3D-GS 使用最大特征值 λ_max 估计高斯的 tile 范围,这种保守估计会导致大量冗余计算。Speedy-Splat 提出的 SnugBox 和 AccuTile 算法通过精确计算高斯与 tile 的交集显著提升性能:
SnugBox 算法计算高斯椭圆的四极值点(一阶导数为零处),构建紧密的轴对齐包围盒,将 tile 范围计算复杂度从 O (n) 降至 O (1)。
AccuTile 进一步扩展,沿包围盒的短边遍历,在每行 / 列中计算椭圆与边界的精确交点。核心洞察是:每行 / 列只需计算两个交点即可确定完整的 tile 范围。这种精确局部化可将渲染速度提升 6.71×,同时减少 10.6× 的原语数量。
自适应密度控制与剪枝
3D-GS 在训练过程中通过自适应密度控制优化高斯分布:
- 克隆(Clone):对于视图空间位置梯度超过阈值 τ_pos(默认 0.0002)的小高斯,创建副本并沿梯度方向移动,用于填充欠重建区域
- 分裂(Split):对于覆盖大范围的高斯,按因子 ϕ=1.6 分割为两个新高斯,用于处理过度重建
软剪枝(Soft Pruning) 在 densification 阶段集成敏感度评分,识别对重建误差影响最小的高斯;硬剪枝(Hard Pruning) 在 densification 后执行,可移除约 90% 的高斯而不显著降低视觉质量。剪枝评分基于投影高斯值 g_i 的梯度平方和,相比原始方法内存效率提升 36×。
可落地的工程参数清单
基于上述分析,以下是部署 3D Gaussian Splatting 实时渲染的关键参数配置:
| 参数类别 | 参数名 | 推荐值 | 说明 |
|---|---|---|---|
| Tile 配置 | Tile 大小 | 16×16 | 权衡并行度与内存局部性 |
| 剔除策略 | 置信区间阈值 | 99% | 视锥剔除的保守度 |
| 密度控制 | 位置梯度阈值 τ_pos | 0.0002 | 触发克隆 / 分裂的敏感度 |
| 密度控制 | 分裂因子 ϕ | 1.6 | 控制高斯分裂后的尺寸 |
| 透明度 | 剔除阈值 ϵ_α | 1/255 | 移除几乎透明的高斯 |
| 数值稳定 | α 上限 | 0.99 | 防止数值溢出 |
| 数值稳定 | 累积 α 上限 | 0.9999 | 提前终止阈值 |
| 优化 | 学习率衰减 | 指数衰减 | 位置参数使用类似 Plenoxels 的调度 |
| SH 训练 | 渐进式激活 | 每 1000 迭代 | 从零阶开始逐步激活高阶 SH |
局限性与风险
尽管 tile-based 光栅化实现了实时性能,仍需注意以下工程风险:
- 深度排序近似:全局排序的近似深度顺序在特定视角可能产生可见性伪影,表现为突然的深度切换或闪烁
- 内存开销:大型场景训练时峰值 GPU 内存可达 20GB 以上,主要来自高斯参数的存储和排序缓冲区
- 未观察区域:在训练视角覆盖不足的区域,高斯可能退化为细长的各向异性形状,产生低质量重建
- guard band 剔除:简单的边界剔除可能导致大高斯在特定视角突然消失,需要更 principled 的剔除策略
结论
3D Gaussian Splatting 的 tile-based 光栅化管线通过预排序的全局深度管理、各向异性 splatting 和自适应密度控制,在保持 NeRF 级别视觉质量的同时实现了实时渲染。Speedy-Splat 的 SnugBox/AccuTile 算法进一步证明了精确局部化的价值 —— 通过减少冗余计算而非牺牲质量来提升性能。
对于工程部署,建议采用渐进式优化策略:先使用标准 3D-GS 实现基线质量,再集成 SnugBox 进行 tile 分配优化,最后在训练后期引入剪枝策略压缩模型。这种分阶段方法可在保持视觉保真度的同时,将渲染速度提升 6-7 倍,模型大小压缩 10 倍以上。
参考来源
- Kerbl et al., "3D Gaussian Splatting for Real-Time Radiance Field Rendering," arXiv:2308.04079, 2023
- Hanson et al., "Speedy-Splat: Fast 3D Gaussian Splatting with Sparse Pixels and Sparse Primitives," CVPR 2025
内容声明:本文无广告投放、无付费植入。
如有事实性问题,欢迎发送勘误至 i@hotdrydog.com。