跳转至

Pixel-GS: Density Control with Pixel-aware Gradient for 3D Gaussian Splatting

会议: ECCV 2024
arXiv: 2403.15530
代码: https://github.com/zhengzhang01/Pixel-GS
领域: 3D视觉
关键词: 3D高斯溅射, 密度控制, 像素感知梯度, 新视角合成, 点云生长

一句话总结

Pixel-GS通过在3DGS的点云生长判定条件中引入像素覆盖数量作为梯度加权因子,解决了大高斯体在初始点云稀疏区域无法有效分裂的问题,同时通过距离感知的梯度缩放抑制相机附近浮点伪影的产生。

研究背景与动机

领域现状:3D Gaussian Splatting(3DGS)凭借出色的渲染质量和实时渲染速度,成为了新视角合成领域的重要方法。3DGS使用一组3D高斯基元表示场景,通过可微的splatting管线渲染图像,并在训练过程中根据梯度大小自适应地对点云进行分裂(split)和克隆(clone)来提高重建精度。

现有痛点:3DGS的点云自适应密度控制机制存在一个关键缺陷——它仅考虑每个高斯体在所有可观测视图上的平均梯度幅值来决定是否分裂/克隆。这导致了两个问题:(1) 对于一个覆盖面积很大的高斯体,如果它在很多视图中可见但在大部分视图中只覆盖边界区域(像素数少),这些边界视图贡献的小梯度会在平均时稀释掉中心视图的大梯度,导致该高斯体的平均梯度低于阈值而无法被分裂。(2) 初始SfM点云在纹理均匀或遮挡区域本身就稀疏,上述机制使得这些区域的大高斯体更难被分裂,造成模糊和针状伪影。

核心矛盾:3DGS的梯度累积方案对所有可见视图等权重平均,但不同视图对同一个高斯体的观测贡献差异很大——在中心区域覆盖多个像素的视图应该有更高的权重。

本文目标 (1) 如何让大高斯体更容易被分裂以填充初始点云稀疏的区域?(2) 如何同时避免在相机附近产生不必要的浮点伪影?

切入角度:作者从像素的角度重新思考梯度累积:一个高斯体在某个视图中覆盖的像素数量反映了该视图对这个高斯体的"观测重要性",像素数越多意味着该视图更能评估这个高斯体的重建质量,其梯度应获得更高权重。

核心 idea:用像素覆盖数量加权不同视图的梯度贡献,让大高斯体更易被分裂,解决初始化不足区域的模糊问题。

方法详解

整体框架

Pixel-GS建立在标准3DGS框架之上,核心修改在于点云密度控制中的梯度累积方案。场景仍表示为一组3D高斯基元,每个基元有位置 \(\mu\)、协方差 \(\Sigma\)、不透明度 \(\sigma\) 和球谐系数 \(sh\),通过可微splatting渲染。关键区别在于如何从多视图渲染的梯度中决定哪些高斯体需要分裂或克隆。

关键设计

  1. 像素感知梯度加权(Pixel-Aware Gradient Weighting):

    • 功能:改进3DGS的点云生长判定条件,使大高斯体更容易被分裂
    • 核心思路:在原始3DGS中,每个高斯体的梯度累积为所有可见视图的简单平均 \(\bar{g} = \frac{1}{N}\sum_{i=1}^{N} g_i\)。Pixel-GS将其改为像素数量加权平均 \(\bar{g} = \frac{\sum_{i=1}^{N} p_i \cdot g_i}{\sum_{i=1}^{N} p_i}\),其中 \(p_i\) 是第 \(i\) 个视图中该高斯体覆盖的像素数量,\(g_i\) 是该视图的NDC坐标梯度。当一个大高斯体在少数视图中覆盖大面积时,这些视图的梯度将获得远高于边界视图的权重
    • 设计动机:一个高斯体在某视图中覆盖100个像素和覆盖1个像素对重建的贡献截然不同。原始等权平均让大量边界视图的零梯度淹没了重要视图的信号,像素加权自然地反映了各视图的观测重要性
  2. 距离感知梯度缩放(Distance-Aware Gradient Scaling):

    • 功能:抑制相机附近浮点伪影(floaters)的产生
    • 核心思路:根据高斯体到相机的距离对梯度场进行缩放。距离相机近的高斯体的梯度被缩小,距离远的保持不变。这样靠近相机的高斯体更难满足分裂条件,避免在近处产生不必要的浮点
    • 设计动机:在实际场景中,靠近相机的区域容易产生小的浮点高斯体。这些浮点在训练视图的渲染中可能影响不大,但在新视角下会产生明显伪影。距离缩放相当于对近距离区域施加更保守的密度增长策略
  3. 与原始3DGS密度控制的无缝集成:

    • 功能:保持3DGS原有的分裂/克隆/剪枝机制不变
    • 核心思路:Pixel-GS仅修改了梯度累积的加权方式,分裂/克隆的决策阈值、执行方式以及周期性剪枝机制完全保留。生长条件仍为加权平均梯度超过预设阈值
    • 设计动机:极简修改保证了方法的通用性和实现简洁性,不引入额外的超参数或训练开销

损失函数 / 训练策略

训练策略与标准3DGS完全一致,使用L1重建损失和D-SSIM损失的加权组合。密度控制在前15000迭代中每100迭代执行一次。唯一的修改在于梯度累积的计算方式。方法的实现只需在3DGS的cuda kernel中增加几行代码来追踪每个高斯体在每个视图中的像素覆盖数。

实验关键数据

主实验

Mip-NeRF 360数据集上的新视角合成结果:

方法 PSNR↑ SSIM↑ LPIPS↓ 训练时间
3DGS 27.21 0.815 0.214 ~30min
Mip-Splatting 27.79 0.827 0.203 ~35min
Pixel-GS 28.05 0.831 0.197 ~32min

Tanks & Temples数据集上的结果:

方法 PSNR↑ SSIM↑ LPIPS↓
3DGS 23.14 0.841 0.183
Pixel-GS 23.98 0.856 0.168

消融实验

配置 PSNR↑ SSIM↑ 说明
3DGS基线 27.21 0.815 原始梯度平均
+像素加权 27.85 0.828 改用像素数量加权梯度
+距离缩放 28.05 0.831 增加floater抑制
丢弃50%初始点 26.12 0.793 3DGS质量大幅下降
Pixel-GS(50%点) 27.35 0.820 依然保持较高质量

关键发现

  • 像素加权梯度累积是核心贡献,单独就带来0.6+ dB的PSNR提升
  • 距离缩放策略提供额外的0.2 dB提升且有效消除近距离浮点
  • 在初始点云严重不足(丢弃50%-99%)时,Pixel-GS的优势更加明显——说明方法在补充密度方面确实有效
  • 不增加额外训练时间——像素计数在splatting过程中可零成本获取
  • 最终点云数量与3DGS相近,不会导致高斯体爆炸

亮点与洞察

  • 一个简单但被忽视的观察:不同视图对同一高斯体的像素覆盖差异可达100倍以上,简单平均显然不合理
  • 极小的修改量:核心代码修改仅几行,却带来一致的性能提升——这正是好论文的特征
  • 对初始点不足场景特别有效:这恰好是3DGS在实际应用中面临的主要挑战

局限与展望

  • 仍依赖SfM提供初始点云,完全无初始化时无法工作
  • 像素加权可能在极端情况下过度促进某些方向的分裂
  • 未探讨与其他3DGS改进方法(如Mini-Splatting的密度限制策略)的组合效果
  • 可以进一步研究更精细的权重设计,如考虑高斯体在每个像素上的alpha值

相关工作与启发

  • 3DGS:基础方法,使用简单均值梯度累积
  • Mip-Splatting:处理多尺度问题的3DGS改进
  • SuGaR/2DGS:关注表面提取的3DGS变体
  • 启发:回到基础方法的细节中寻找改进点,往往比添加复杂模块更有效

评分

  • 新颖性: ⭐⭐⭐ 像素加权的想法直觉且合理,但创新度有限
  • 实验充分度: ⭐⭐⭐⭐ 主实验+初始点丢弃实验充分验证了动机
  • 写作质量: ⭐⭐⭐⭐ 问题分析清晰,方法描述简洁
  • 价值: ⭐⭐⭐⭐ 简洁有效的改进,对3DGS社区实用价值高