MEGS2: Memory-Efficient Gaussian Splatting via Spherical Gaussians and Unified Pruning¶
会议: ICLR 2026
arXiv: 2509.07021
代码: 待发布
领域: 3D视觉/渲染压缩
关键词: 3D Gaussian Splatting, 内存压缩, 球谐函数替代, Spherical Gaussians, 统一剪枝
一句话总结¶
提出MEGS2——从渲染VRAM角度出发压缩3DGS:用可裁剪的任意方向球面高斯(SG)完全替代球谐函数(SH)降低每个primitive的参数量 + 统一软剪枝框架将primitive数量和lobe数量的裁剪建模为单一内存约束优化问题 -> 实现8x静态VRAM压缩和6x渲染VRAM压缩,同时保持渲染质量,首次让3DGS在移动端实时运行。
研究背景与动机¶
领域现状:3DGS已成为主流新视角合成技术,但高内存消耗严重限制了其在边缘设备上的部署。大量压缩方法被提出,但绝大多数只关注存储压缩(文件大小)而忽视了渲染内存压缩(VRAM)。
现有痛点:(1) 基于神经压缩/VQ/hash grid的方法(CompactGaussian/EAGLES/HAC++)虽然存储压缩率高,但渲染前必须解压全部参数,VRAM甚至超过原始3DGS;(2) primitive剪枝方法(GaussianSpa/Mini-Splatting)能减少VRAM但压缩率有限——过度剪枝会严重损害质量;(3) 球谐函数(SH)作为颜色表示参数效率低,高阶系数多但利用率差。
核心矛盾:渲染VRAM = primitive数量 x 每个primitive的参数量。现有方法只优化其中一个因素。需要同时减少两个因素才能突破VRAM瓶颈。
切入角度:SH是全局基函数,需要大量高阶系数才能表示局部高频细节(锐利高光)。球面高斯(SG)是局部基函数,用少量lobe就能高效建模视角依赖效果,且lobe数量可灵活调整——天然适合剪枝。
核心 idea:用可剪枝的SG替代SH降低每个primitive的参数成本,再通过统一约束优化同时裁剪primitive数量和lobe数量,实现VRAM最优分配。
方法详解¶
整体框架¶
MEGS2要解决的是3DGS的渲染VRAM瓶颈,而渲染VRAM约等于"primitive数量 × 每个primitive的参数量",所以必须同时压两个因子。它的做法是先把昂贵的球谐函数(SH)换成参数更省、且lobe数量可裁的球面高斯(SG)来表示视角依赖颜色,从而压低单个primitive的参数成本;再用一个统一的软剪枝框架,在同一个内存预算约束下同时决定"删哪些primitive"和"每个primitive留几个lobe";最后做一轮后处理——移除冗余primitive和lobe、对被删lobe做颜色补偿、再短暂微调把质量找回来。整条链路输入一个普通3DGS场景,输出静态VRAM和渲染VRAM都大幅降低的紧凑表示。
%%{init: {'flowchart': {'rankSpacing': 24, 'nodeSpacing': 28, 'padding': 6, 'wrappingWidth': 400}}}%%
flowchart TD
A["输入:普通 3DGS 场景"] --> B["SG 替代 SH<br/>任意方向可剪枝球面高斯<br/>表示视角依赖颜色"]
B --> C["统一软剪枝<br/>单一内存约束下联合<br/>裁 primitive 数与 lobe 数"]
C -->|"梯度步 → 近端投影 → 对偶更新<br/>交替迭代"| C
C --> D["后处理颜色补偿<br/>删低锐度 lobe 并解析<br/>补回平均颜色"]
D --> E["微调恢复质量"]
E --> F["输出:低静态 / 渲染 VRAM<br/>紧凑表示"]
关键设计¶
1. 任意方向可剪枝球面高斯(SG)替代SH:把全局基函数换成参数更省、可逐lobe裁剪的局部基函数
SH的问题是它是全局基函数,要表示锐利高光这类局部高频信号就得堆很多高阶系数,参数效率低。MEGS2改用SG来表示每个primitive的视角依赖颜色:\(c(\mathbf{v}) = c_0 + \sum_{i=1}^n G(\mathbf{v}; \mu_i, s_i, a_i)\),其中 \(c_0\) 是漫反射分量,每个SG lobe由方向轴 \(\mu_i\)、锐度 \(s_i\)、RGB幅度 \(a_i\) 三组参数定义。关键在于lobe方向不被约束为正交——任意方向带来更高的拟合自由度。这样做的收益是双重的:参数量上,3阶SH要48个参数(16系数×3通道),而3-lobe SG只需约一半,还能更好地捕捉局部高频;表达力上,固定正交轴的SG变体(SG-Splatting)会掉约0.6dB PSNR,任意方向SG避开了这个损失。更重要的是,SG的lobe数量是可变的,天然适合后面的剪枝。
2. 统一软剪枝框架(ADMM-inspired):在单一内存约束下同时裁primitive数量和lobe数量
如果先把primitive剪到位、再去剪lobe,会陷入次优,因为这两种裁剪的最优分配是耦合的——同样的内存预算,多留primitive还是多留lobe,要一起权衡。MEGS2把它建成一个统一的约束优化:\(\min \mathcal{L}(\mathbf{o}, \mathbf{s}, \Theta)\),约束为 \(\rho_o \|\mathbf{o}\|_0 + \rho_s \|\mathbf{s}\|_0 \leq \kappa\),其中 \(\rho_o=11\) 是每个primitive的基础参数量、\(\rho_s=7\) 是每个SG lobe的参数量、\(\kappa\) 是总参数预算。由于L0范数不可微,框架借鉴ADMM引入代理变量,把这个难题拆成几个可解的子问题交替迭代:梯度步、近端投影步、对偶更新。这样总预算约束下primitive数量和lobe数量的最优权衡是被自动找到的,而非人为分两步指定,实验也证明统一优于顺序裁剪。
3. 后处理颜色补偿:删低锐度lobe时把它对平均颜色的贡献解析地补回来
剪枝阶段会移除锐度很低的lobe,但这些lobe虽然不贡献高频细节,仍对primitive的平均颜色有贡献,直接删掉会造成整体色偏。MEGS2对此给出一个解析补偿:移除lobe \(i\) 后,计算补偿项 \(\Delta c_0 = a_i \cdot \frac{1 - e^{-2s_i}}{2s_i}\),并更新漫反射颜色 \(c_0' = c_0 + \Delta c_0\)。这个表达式是通过最小化球面上颜色差异的积分推导出的闭式解,所以几乎不增加额外计算,就能把被删lobe的能量补回漫反射项,避免色偏。
损失函数 / 训练策略¶
- 基于3DGS标准训练流程(Kerbl et al., 2023)。
- ADMM优化交替执行三步:梯度步(更新渲染loss) → 近端投影步(强制稀疏) → 对偶变量更新。
- 后处理流程:移除near-zero opacity的primitive和near-zero sharpness的lobe → 对被删lobe做颜色补偿 → 少量微调恢复质量。
实验关键数据¶
主实验 (Mip-NeRF360)¶
| 方法 | PSNR | SSIM | LPIPS | 静态VRAM(MB) | 渲染VRAM(MB) |
|---|---|---|---|---|---|
| 3DGS | 27.48 | 0.813 | 0.217 | 648 | 1717 |
| GaussianSpa | 27.56 | 0.824 | 0.215 | 115 | 448 |
| MEGS2 (HQ) | 27.54 | 0.824 | 0.209 | 55 | 265 |
| MEGS2 (LM) | 27.21 | 0.814 | 0.227 | 40 | 224 |
消融实验 (Mip-NeRF360)¶
| 配置 | PSNR | LPIPS | VRAM(MB) | 说明 |
|---|---|---|---|---|
| GaussianSpa + Reduced3DGS | 26.05 | 0.280 | 402 | naive组合严重掉质量 |
| GaussianSpa(SH->SG) | 27.01 | 0.230 | 339 | 简单替换不够 |
| soft->hard pruning | 27.23 | 0.228 | 288 | 硬剪枝不如软剪枝 |
| unified->sequential | 27.33 | 0.222 | 328 | 顺序不如统一 |
| w/o color comp. | 27.46 | 0.213 | 265 | 颜色补偿有帮助 |
| Full model | 27.54 | 0.209 | 265 | 所有组件协同最优 |
关键发现¶
- VRAM压缩: 相比3DGS 8x静态VRAM压缩(648->55MB)和6x渲染VRAM(1717->265MB)。相比SOTA的GaussianSpa还有2x静态和40%渲染VRAM降低
- 质量保持: PSNR几乎无损(27.54 vs 27.56),LPIPS甚至更好(0.209 vs 0.215)
- SG优于SH: SG能更好拟合局部高频信号(锐利反射/高光),在Bicycle/Truck场景的镜面反射上明显优于SH
- Lobe分布: 多数primitive只需0-1个lobe(强漫反射),少数需2-3个(镜面高光),平均1.3-1.7个lobe/primitive
亮点与洞察¶
- 问题定义的精准性:区分存储压缩和内存压缩是关键洞察。现有work大量关注前者但忽视后者,而后者才是边缘部署的真正瓶颈
- SG替代SH的合理性:场景中绝大多数表面是漫反射的(不需要lobe),只有少量镜面/高光需要lobe -> SG的可变lobe数量完美匹配这个长尾分布
- 统一剪枝的ADMM求解:把两个离散优化统一为一个连续优化通过ADMM分解,优雅且有理论支撑。这个框架可泛化到任何需要同时优化"实体数量"和"每实体复杂度"的场景
- 颜色补偿的解析解:通过球面积分推导出closed-form解,无额外计算开销,简单有效
局限与展望¶
- 聚焦于静态VRAM压缩,动态VRAM(渲染器实现相关)的优化留给未来
- 在高度复杂的高光场景(如全镜面物体)上性能有待进一步验证
- 可以与神经压缩方法(如HAC++)组合,同时优化存储和VRAM
- SG lobe的最优初始化策略值得探索
相关工作与启发¶
- vs GaussianSpa: 只做primitive剪枝,每个primitive仍用全SH -> VRAM下限较高。MEGS2通过额外压缩每个primitive的参数突破了这个瓶颈
- vs Reduced3DGS: 也尝试剪SH系数,但SH的全局性使其不适合稀疏裁剪(去掉高阶会全局损失细节)。SG的局部性使lobe剪枝更安全
- vs CompactGaussian/EAGLES: 存储压缩率高但VRAM反而可能增加(需解压)。根本不解决渲染内存问题
评分¶
- 新颖性: ⭐⭐⭐⭐ SG完全替代SH + 统一剪枝框架,概念清晰创新
- 实验充分度: ⭐⭐⭐⭐⭐ 三个数据集完整对比,消融详尽,WebGL实机验证
- 写作质量: ⭐⭐⭐⭐ VRAM分析清晰,问题分解明确
- 价值: ⭐⭐⭐⭐⭐ 首次系统解决3DGS的渲染内存瓶颈,直接推动边缘端部署