详解3DGS
4 可微分的3D高斯 splatting
核心目标与表示选择
我们的目标是从无法线的稀疏SfM点出发,优化出一种能够实现高质量新视角合成的场景表示。为此,我们选择3D高斯作为基本图元,它兼具可微分的体表示特性和非结构化的显式表示优势,既能支持优化过程,又能实现快速渲染。
高斯参数与投影模型
- 3D高斯定义
高斯由世界空间中的均值(位置) μ \mu μ和协方差矩阵 ∑ \sum ∑定义,其概率密度函数为:
G ( x ) = e − 1 2 ( x − μ ) T ∑ − 1 ( x − μ ) G(x) = e^{-\frac{1}{2}(x-\mu)^T \sum^{-1}(x-\mu)} G(x)=e−21(x−μ)T∑−1(x−μ)
其中,协方差矩阵 ∑ \sum ∑描述了高斯的形状和方向,通过缩放矩阵 S S S和旋转矩阵 R R R分解为:
∑ = R S S T R T \sum = R S S^T R^T ∑=RSSTRT
这种分解方式将协方差的优化转化为对缩放向量 s s s(3个自由度)和旋转四元数 q q q(4个自由度,归一化后3个自由度)的优化,避免了直接优化协方差矩阵时的正半定性约束问题。
- 投影到2D图像空间
通过相机变换 V V V和投影雅可比矩阵 J J J,将3D高斯投影为图像空间中的2D椭圆。投影后的协方差矩阵 ∑ ′ \sum' ∑′为:
∑ ′ = J V ∑ V T J T \sum' = J V \sum V^T J^T ∑′=JV∑VTJT
取其左上角2x2子矩阵,即可得到与传统基于点的方法(如使用法线的平面点)等价的2D方差矩阵,用于渲染时的 α \alpha α混合。
优化与梯度计算
- 参数优化
优化参数包括高斯的位置、缩放、旋转、不透明度 α \alpha α和球面调和函数(SH)系数(用于表示颜色的视图相关性)。通过随机梯度下降(SGD)最小化 L 1 L_1 L1损失和D-SSIM损失的加权和:
L = ( 1 − λ ) L L 1 + λ L D - S S I M ( λ = 0.2 ) \mathcal{L} = (1-\lambda)\mathcal{L}_{L1} + \lambda\mathcal{L}_{D\text{-}SSIM} \quad (\lambda=0.2) L=(1−λ)LL1+λLD-SSIM(λ=0.2)
采用指数衰减学习率调度,并通过 sigmoid 和指数激活函数约束参数范围。
- 显式梯度推导
为避免自动微分的开销,手动推导了缩放 s s s和旋转 q q q的梯度。通过链式法则,将协方差矩阵的梯度分解为对旋转矩阵和缩放矩阵的导数,利用四元数与旋转矩阵的转换关系,推导出各参数的梯度表达式。
优势与应用
- 灵活性与紧凑性:3D高斯的各向异性特性使其能自适应复杂几何结构(如薄结构、曲面),通过优化协方差矩阵,仅需1-5百万个高斯即可精确表示场景,远少于传统点云方法。
- 可微分渲染:投影和渲染过程完全可微分,支持端到端优化,结合后续的自适应密度控制和快速光栅化,实现了高质量、实时的新视角合成。
与其他方法的对比
相较于基于神经网络的NeRF方法(如Mip-NeRF360),3D高斯 splatting无需密集采样和体积渲染,通过显式几何表示和GPU加速的光栅化,显著提升了训练和渲染速度;相较于传统点云方法,其可微分特性和各向异性建模能力显著提高了重建质量。
5 3D高斯的自适应密度控制优化
一、核心目标与优化框架
目标:通过优化3D高斯的参数(位置、协方差、不透明度、颜色)和动态调整高斯密度,生成精确的场景表示,实现高质量新视角合成。
输入:SfM(结构从运动)生成的稀疏点云、多视图图像。
框架:
- 初始化:从SfM点云创建初始3D高斯集合,每个高斯由位置、各向同性协方差、初始不透明度和颜色(球面调和函数系数)定义。
- 迭代优化:通过可微分渲染将高斯投影为图像,与真实图像对比计算损失(L1 + D-SSIM),使用随机梯度下降(SGD)更新参数。
- 自适应密度控制:在优化过程中动态添加或删除高斯,平衡模型复杂度与重建精度。
二、优化参数与损失函数
- 优化参数:
- 几何参数:3D位置 (\mathbf{p})、各向异性协方差(缩放 (\mathbf{s})、旋转 (\mathbf{q}))、不透明度 (\alpha),
- 外观参数:球面调和函数(SH)系数,用于表示视角相关的颜色(如漫反射、高光)。
- 损失函数:
[
\mathcal{L} = (1-\lambda)\mathcal{L}{\text{L1}} + \lambda\mathcal{L}{\text{D-SSIM}} \quad (\lambda=0.2)
]- (\mathcal{L}_{\text{L1}}) 衡量渲染图像与真实图像的像素级差异,
- (\mathcal{L}_{\text{D-SSIM}}) 衡量结构相似性,提升感知质量。
- 激活函数与约束:
- 用 sigmoid 约束 (\alpha \in [0, 1)),
- 用 指数函数 约束协方差缩放因子为正,
- 四元数 (\mathbf{q}) 归一化为单位四元数,确保旋转矩阵有效。
三、自适应密度控制:克隆与分裂策略
为解决场景中欠重建(几何缺失)和过重建(几何冗余)问题,通过梯度分析动态调整高斯密度:
- 欠重建区域(小高斯,高梯度):
- 检测:若高斯在视图空间的位置梯度均值超过阈值 (\tau_{\text{pos}}=0.0002),且协方差规模较小(低于阈值 (\tau_S)),视为欠重建。
- 操作:克隆高斯,复制当前高斯并沿梯度方向移动,填补几何缺口(图4上排)。
- 过重建区域(大高斯,高方差):
- 检测:若高斯协方差规模较大(高于 (\tau_S)),且覆盖区域细节复杂,视为过重建。
- 操作:分裂高斯,将一个大高斯拆分为两个小高斯,缩放因子除以 (\phi=1.6),并在原高斯的概率密度函数(PDF)上采样初始化新位置(图4下排)。
- 剪枝操作:
- 删除不透明度 (\alpha < \epsilon_{\alpha})(如 (\epsilon_{\alpha}=1e-4))的透明高斯,
- 删除世界空间中尺寸过大或视图空间中投影面积过大的高斯,避免“飞点”和冗余计算。
四、优化流程与关键技术
- 分辨率热身(Warm-up):
从低分辨率(原图1/4)开始优化,每250-500次迭代逐步提升至全分辨率,避免高分辨率下的优化震荡。 - 球面调和函数分步优化:
初始仅优化SH零阶系数(漫反射颜色),每1000次迭代添加高一阶系数,避免因视角覆盖不足导致的颜色失真。 - 快速可微分渲染:
- 基于瓦片(Tile-based)的光栅化器,将屏幕划分为16×16像素块,对每个瓦片内的高斯按深度排序,
- 支持各向异性高斯的 (\alpha) 混合,通过Radix排序和共享内存加速,确保优化阶段的渲染速度(135 FPS,文档表1)。
五、效果与优势
- 紧凑表示:通过自适应密度控制,仅需1-5百万个高斯即可精确表示复杂场景,远少于传统点云方法(如Point-NeRF需数千万点)。
- 几何适应性:各向异性高斯可拟合薄结构(如叶片)、曲面和远距离细节,如图3所示,优化后的高斯通过协方差调整呈现椭球形状,贴合真实几何。
- 训练效率:在Mip-NeRF360数据集上,30K次迭代仅需约51分钟,远快于Mip-NeRF360的48小时,且PSNR达25.2,超越InstantNGP和Plenoxels(文档图1、表1)。
六、局限性与改进方向
- 当前局限:
- 极端视角或低重叠区域可能产生“飞高斯”或模糊(图12),
- 大规模场景(如城市)需调整位置学习率,避免优化发散。
- 未来优化:
- 引入正则化约束高斯形状,减少“斑点状” artifacts,
- 结合压缩技术(如点云编码)降低内存消耗,
- 支持动态场景的在线优化。
总结
自适应密度控制优化是3D高斯 splatting 的核心创新之一,通过“优化-密度控制-渲染”的闭环,实现了几何细节的自适应建模与计算资源的高效分配。该方法在保持高重建质量的同时,将训练时间和渲染延迟压缩至实时水平,为大规模场景的实时神经渲染提供了新范式(文档结论部分)。
6 高斯的快速可微分光栅化器
一、核心目标与设计原则
目标:实现3D高斯的实时渲染和可微分优化,支持高分辨率(如1080p)下的高质量新视角合成。
设计原则:
- 利用GPU并行计算:通过瓦片划分(Tile-based)和快速排序,充分利用GPU的并行处理能力,
- 精确性与效率平衡:在保证渲染质量的前提下,避免传统体积渲染的高采样成本,
- 全流程可微分:确保投影、排序、混合过程的梯度可反向传播,支持端到端优化。
二、关键技术组件
1. 瓦片划分与视锥体剔除
- 屏幕划分:将图像分为16×16像素的瓦片(Tile),每个瓦片独立处理,减少内存访问冲突,
- 视锥体剔除:对每个高斯进行视锥体检测,仅保留与视图 frustum 相交(99%置信区间)的高斯,剔除远距离或视角外的无效图元,
- 保护带(Guard Band):拒绝近平面附近且严重偏离视图 frustum 的高斯,避免投影时的数值不稳定。
2. 基于深度的快速排序
- 键值生成:为每个高斯生成排序键,包含视图空间深度和瓦片ID,其中深度值用于确定前后顺序,瓦片ID用于分组,
- 基数排序(Radix Sort):利用GPU的并行基数排序算法,对所有高斯进行全局排序,确保同瓦片内的高斯按深度有序(近→远),
- 瓦片范围标识:排序后,为每个瓦片标记高斯列表的起始和结束索引,便于后续分块渲染(如图6中的算法2)。
3. 各向异性高斯渲染与α混合
- 投影到2D椭圆:根据3D协方差矩阵,将高斯投影为2D图像空间中的各向异性椭圆,椭圆的形状由协方差矩阵的特征值和特征向量决定,
- α混合公式:按深度顺序对椭圆进行从前到后(front-to-back)的混合,累积颜色和不透明度:
[
C = \sum_i T_i \alpha_i c_i, \quad T_i = \prod_{j=1}^{i-1} (1 - \alpha_j)
]
其中,(\alpha_i) 为当前高斯的不透明度,(T_i) 为累积透明度,确保远高斯被近高斯遮挡, - 提前终止:当像素的累积不透明度 (T_i < 1 - \epsilon)(如 (\epsilon=1e-4))时,停止混合,加速渲染。
4. 可微分反向传播
- 前向记录:在正向渲染过程中,记录每个像素的累积不透明度和混合顺序,
- 反向遍历:反向传播时,从后到前(back-to-front)遍历高斯,利用前向记录的累积值计算梯度,
- 无限制梯度传播:支持任意数量高斯的梯度计算,无需限制每个像素的最大混合次数(如Pulsar的N=10限制),避免因截断导致的优化不稳定(文档图9)。
三、性能优化细节
1. 共享内存与数据重用
- 瓦片级数据加载:每个线程块处理一个瓦片,协作将高斯数据加载到共享内存,减少全局内存访问次数,
- 向量化操作:利用CUDA的向量化指令(如warp-level操作),并行处理同一瓦片内的多个像素,提升计算效率。
2. 数值稳定性保障
- 不透明度钳制:将 (\alpha) 限制在 ([0, 0.9999]) 范围内,避免除以零或数值溢出,
- 梯度修正:在反向传播中,通过累积不透明度的除法操作((T_i / \alpha_i))恢复中间透明度,确保梯度计算的稳定性。
3. 与优化阶段的协同
- 训练时的高效反馈:光栅化器的快速渲染能力(如135 FPS)使优化迭代周期缩短,结合自适应密度控制,实现51分钟内达到SOTA质量(文档图1),
- 多分辨率支持:在低分辨率下热身训练,逐步提升至全分辨率,避免高分辨率下的过拟合和计算过载。
四、与其他方法的对比
特性 | 本文光栅化器 | 传统体积渲染(如NeRF) | 点云光栅化(如Pulsar) |
---|---|---|---|
渲染速度 | 实时(≥30 FPS,1080p) | 慢(0.07 FPS,Mip-NeRF360) | 较快(~10 FPS) |
几何表示 | 3D各向异性高斯 | 隐式密度场 | 2D点+法线 |
可微分性 | 全流程可微分,支持任意深度 | 可微分,但依赖随机采样 | 部分可微分,需限制混合次数 |
内存消耗 | 数百MB(高斯参数) | 低(神经网络权重) | 取决于点云数量(通常更高) |
** artifacts** | 少(深度排序+α混合) | 噪声(需大量采样) | 孔洞或闪烁(点分布不均) |
五、局限性与未来方向
- 当前局限:
- 深度排序为近似排序(基于瓦片而非像素级),可能导致极个别像素的遮挡顺序错误,
- 复杂场景中高斯数量过大时(如>500万),排序和存储开销增加。
- 改进方向:
- 引入硬件加速的光线追踪,提升复杂遮挡场景的准确性,
- 开发高斯压缩算法(如聚类或稀疏表示),降低内存占用,
- 支持动态分辨率调整,适应实时交互中的性能需求变化。
总结
快速可微分光栅化器是3D高斯 splatting 实现“实时渲染”的核心引擎,通过瓦片划分-排序-混合的流水线设计,结合GPU并行计算和可微分技术,在保证高渲染质量的同时,将训练和推理速度提升至传统NeRF方法的数十倍。该技术不仅为实时神经渲染提供了新工具,也为显式几何表示与可微分渲染的结合开辟了新路径(文档结论部分)。