GaussianImage: 1000 FPS Image Representation and Compression by 2D Gaussian Splatting¶
会议: ECCV 2024
arXiv: 2403.08551
代码: https://github.com/Xinjie-Q/GaussianImage
领域: 3D视觉
关键词: 2D Gaussian Splatting, 图像表示, 图像压缩, 向量量化, 快速渲染
一句话总结¶
提出GaussianImage,首次将2D Gaussian Splatting用于图像表示与压缩,通过紧凑的8参数2D高斯和累积求和光栅化算法,实现了2000 FPS的解码速度,同时与INR方法在表示质量和压缩性能上持平。
研究背景与动机¶
领域现状: 隐式神经表示(INR)在图像表示和压缩方面取得了很大成功,能以紧凑网络实现高质量图像重建。但存在两大类方法各有局限:MLP-based INR(SIREN, WIRE)训练慢、渲染慢;Feature grid-based INR(I-NGP, NeuRBF)加速了训练推理但需大量GPU显存。
现有痛点: INR方法在低端设备上部署困难——要么显存需求大(feature grid方法需1500-2900 MiB),要么渲染速度慢(WIRE仅11 FPS)。这严重限制了神经图像编解码器的实际应用。
核心矛盾: 高质量图像表示需要大量参数/计算,但实际部署要求低显存、快速解码——如何用显式表示打破INR的隐式瓶颈?
本文目标: 开发一种训练高效、显存友好、解码超快的图像表示和压缩技术。
切入角度: 3D Gaussian Splatting在3D场景重建中已展示了显式表示+并行光栅化带来的速度优势。能否将其适配到2D图像表示任务?直接适配面临三大挑战:3D高斯参数过多(59个/点)、α-blending需要深度排序(2D图像无深度)、提前截断导致高斯利用不足。
核心 idea: 用仅8个参数的2D高斯替代59参数的3D高斯,用无序的累积求和替代需排序的α-blending,实现超快图像表示。
方法详解¶
整体框架¶
GaussianImage包含两个阶段: 1. 图像表示: 用一组2D高斯点拟合图像,每个高斯仅8个参数(位置2 + 协方差3 + 加权颜色3) 2. 图像压缩: 对拟合好的高斯属性分别进行量化感知微调+编码,可选bits-back coding进一步降低码率
关键设计¶
-
紧凑的2D高斯表示: 每个2D高斯由位置\(\boldsymbol{\mu} \in \mathbb{R}^2\)、协方差矩阵\(\boldsymbol{\Sigma} \in \mathbb{R}^{2 \times 2}\)、颜色\(\boldsymbol{c} \in \mathbb{R}^3\)和不透明度\(o \in \mathbb{R}\)组成。协方差矩阵通过Cholesky分解保证正定性:
\(\boldsymbol{\Sigma} = \boldsymbol{L}\boldsymbol{L}^T\)
用Cholesky向量\(\boldsymbol{l} = \{l_1, l_2, l_3\}\)表示下三角元素,基础2D高斯共9参数——相比3D高斯的59参数压缩了\(6.5\times\)。
也可用旋转+缩放分解:\(\boldsymbol{\Sigma} = (\boldsymbol{RS})(\boldsymbol{RS})^T\),其中\(\theta\)为旋转角,\(s_1, s_2\)为缩放因子,同样3个参数。
-
累积求和光栅化: 3D GS的α-blending需要按深度排序高斯并计算累积透明度\(T_n\),这对于无深度信息的2D图像不适用。本文提出直接加权求和:
\(\boldsymbol{C}_i = \sum_{n \in \mathcal{N}} \boldsymbol{c}_n \cdot o_n \cdot \exp(-\sigma_n), \quad \sigma_n = \frac{1}{2}\boldsymbol{d}_n^T \boldsymbol{\Sigma}^{-1} \boldsymbol{d}_n\)
进一步将颜色\(\boldsymbol{c}_n\)和不透明度\(o_n\)合并为加权颜色系数\(\boldsymbol{c}_n' \in \mathbb{R}^3\)(不再限制在\([0,1]\)范围):
$\boldsymbol{C}_i = \sum_{n \in \mathcal{N}} \boldsymbol{c}_n' \cdot \exp(-\sigma_n)$
最终2D高斯仅需8个参数(位置2 + 协方差3 + 加权颜色3),压缩比达\(7.375\times\)。
三大优势:(a) 对高斯顺序不敏感,无需排序;(b) 跳过累积透明度\(T_n\)的顺序计算,加速训练和推理;(c) 所有覆盖该像素的高斯都参与渲染,充分利用信息。
-
图像压缩流水线: 对不同属性采用不同量化策略:
- 位置参数: 16-bit float精度(对量化敏感)
- 协方差参数: \(b\)-bit(默认6-bit)非对称量化,学习缩放因子\(\gamma_i\)和偏移\(\beta_i\):
\(\hat{l}_i^n = \lfloor \text{clamp}(\frac{l_i^n - \beta_i}{\gamma_i}, 0, 2^b - 1) \rceil\)
- 加权颜色系数: 残差向量量化(RVQ),级联\(M=2\)阶段、码本大小\(B=8\):
\(\hat{\boldsymbol{c}}_n^{\prime m} = \sum_{k=1}^{m} \mathcal{C}^k[i^k]\)
- 可选Partial Bits-back Coding: 利用高斯点集合的置换不变性,先用普通熵编码编码前\(K\)个高斯作为初始比特,剩余\(N-K\)个高斯用bits-back coding编码,可节省\(\log(N-K)! - \log(N-K)\)比特。
损失函数 / 训练策略¶
- 图像表示: L2 loss优化高斯参数,Adan优化器,初始学习率\(1 \times 10^{-3}\),每20000步减半,共50000步
- 图像压缩: \(\mathcal{L} = \mathcal{L}_{rec} + \lambda \mathcal{L}_c\),其中\(\mathcal{L}_c\)为RVQ码本的commitment loss
- 无需3D GS中的自适应密度控制(2D图像空间无空白区域)
- 码本用K-means初始化(5次迭代),训练中用指数移动平均更新
- 基于gsplat库实现,自定义CUDA kernel
实验关键数据¶
主实验——图像表示(Kodak数据集)¶
| 方法 | PSNR↑ | MS-SSIM↑ | 训练时间(s)↓ | FPS↑ | 显存(MiB)↓ | 参数量(K)↓ |
|---|---|---|---|---|---|---|
| WIRE | 41.47 | 0.9939 | 14338 | 11 | 2619 | 137 |
| SIREN | 40.83 | 0.9960 | 6582 | 29 | 1809 | 273 |
| I-NGP | 43.88 | 0.9976 | 491 | 1297 | 1525 | 300 |
| NeuRBF | 43.78 | 0.9964 | 992 | 663 | 2091 | 337 |
| 3D GS | 43.69 | 0.9991 | 340 | 859 | 557 | 3540 |
| Ours | 44.08 | 0.9985 | 107 | 2092 | 419 | 560 |
关键数据:训练速度比I-NGP快\(4.6\times\),渲染速度\(2092\) FPS(WIRE的\(188\times\)),显存仅\(419\) MiB(最低)。
图像压缩——计算复杂度对比(DIV2K)¶
| 方法 | 低bpp PSNR↑ | 编码FPS | 解码FPS↑ |
|---|---|---|---|
| JPEG | 25.29 | 609 | 615 |
| JPEG2000 | 27.28 | 3.5 | 4.3 |
| Ballé17 | 27.72 | 21 | 19 |
| Ballé18 | 28.75 | 17 | 16 |
| COIN | 25.80 | 5.3e-4 | 166 |
| Ours | 25.66 | 4.1e-3 | 1971 |
解码速度比COIN快\(12\times\),比JPEG快\(3\times\),达到约2000 FPS。
消融实验¶
| 配置 | PSNR↑ | 训练时间(s)↓ | FPS↑ | 参数(K)↓ | 说明 |
|---|---|---|---|---|---|
| 3D GS (L1+SSIM) | 37.75 | 285 | 1067 | 1770 | 基线 |
| 3D GS (L2) | 37.41 | 198 | 1190 | 1770 | 换L2加速 |
| 2D GS(无AR、无M) | 37.89 | 105 | 2340 | 270 | 2D高斯+α-blending |
| +累积求和(AR) | 38.69 | 99 | 2555 | 270 | +0.8dB! |
| +合并颜色和不透明度(M) | 38.57 | 91 | 2565 | 240 | 参数减10% |
量化策略消融(BD指标,锚定为最终方案)¶
| 变体 | BD-PSNR(dB) | BD-rate(%) |
|---|---|---|
| 最终方案(锚定) | 0 | 0 |
| 无\(\mathcal{L}_c\) + RVQ + 6bit | -3.145 | +333% |
| 无\(\mathcal{L}_c\) + 无RVQ + 6bit | -0.159 | +7.02% |
| 无\(\mathcal{L}_c\) + 无RVQ + 8bit | -0.195 | +11.69% |
关键发现¶
- 累积求和替代α-blending贡献了最大的性能提升(+0.8 dB PSNR),同时还加速了训练和推理
- 2D高斯比3D高斯的参数量减少\(6.5\times\)(270K vs 1770K),但表示质量更好
- L2 loss最适合本方法(优于L1、SSIM及组合),这与3D GS中L1+SSIM最优不同
- RVQ对颜色属性的压缩至关重要——不同高斯的颜色向量存在相似性,适合码本编码
- Cholesky分解和旋转+缩放分解表示能力等价,但压缩鲁棒性不同(默认用Cholesky)
亮点与洞察¶
- 从3D到2D的优雅适配: 不是简单固定相机参数,而是从根本上重新设计了高斯表示(2D化、参数合并)和光栅化算法(累积求和),每一步都有明确的动机
- 置换不变性的巧妙利用: 累积求和对高斯顺序不敏感→可用bits-back coding利用\(N!\)种等价排列来节省码率,这是α-blending方案无法做到的
- 性能-效率的帕累托最优: 在表示质量(44.08 dB)、训练速度(107s)、渲染速度(2092 FPS)、显存(419 MiB)四个维度同时达到最优或次优
- 丢弃自适应密度控制的洞察: 2D图像空间无空白区域,3D GS中的split/clone策略是不必要的
局限与展望¶
- 压缩性能在高码率区间弱于VAE-based方法(Ballé17/18),因缺少自回归上下文模型
- Bits-back coding虽然理论性能好但处理延迟高,与"超快编解码"的目标矛盾
- 当前每张图像独立拟合高斯,无法利用图像间的冗余(如视频中的时间冗余)
- 随图像分辨率增大,所需高斯点数量增加,扩展性有待验证
- 可探索自适应高斯数量(根据图像复杂度动态调整)
相关工作与启发¶
- 3D Gaussian Splatting的成功证明了显式表示+可微光栅化的强大能力,本文将这一范式首次引入2D图像领域
- 与INR方法形成互补:INR用连续隐式函数,GaussianImage用离散显式高斯——后者更适合高速解码场景
- RVQ在音频编码(SoundStream)中已被广泛使用,本文证明其同样适用于2D高斯颜色属性的压缩
- 未来可与自回归熵模型结合提升压缩性能,或扩展到视频表示
评分¶
- 新颖性: ⭐⭐⭐⭐⭐ 首创2D Gaussian Splatting图像表示范式,累积求和和参数合并设计精巧
- 实验充分度: ⭐⭐⭐⭐ Kodak和DIV2K两个标准数据集,完整的表示/压缩对比,详细消融
- 写作质量: ⭐⭐⭐⭐ 动机清晰,技术细节完整,从3D GS到2D的适配过程逻辑通顺
- 价值: ⭐⭐⭐⭐⭐ 2000 FPS解码速度开创了神经图像编解码器的新milestone,实用价值极高