软各向异性图:用于可微图像表示 Soft Anisotropic Diagrams for Differentiable Image Representation
软各向异性 Apollonius 划分+top-K 传播,4-19× 加速图像压缩
前置知识
Apollonius 图(加权和 Voronoi 图)
经典 Voronoi 按最近欧氏距离划分;Apollonius 在距离上减一个'影响半径' r_i,即 d_i(x) = ||x - p_i|| - r_i。r_i 大可'抢走'远处像素,比 Laguerre 距离更易解释 reach/hardness。SAD 拓展到各向异性并加温度软化。
SAD 的 'Diagram' 即 Apollonius 划分,'soft' 指 softmax 把它从硬最近邻变可微;不懂 Apollonius 就读不懂评分函数的几何含义。
各向异性 SPD 度量与 det(G)=1 约束
用 SPD 矩阵 G_i 定义局部范数。SAD 用单位方向 u_i 与对数缩放 a_i 构造 G_i = e^{a_i} u_i u_i^T + e^{-a_i} v_i v_i^T,强制 det(G_i)=1,使矩阵只改长宽比不增面积。
让软单元沿图像边缘拉长,用更少站点描述方向性结构;det=1 约束让'占用面积'与'形状'解耦,避免学习时两者同时漂移。
温度控制 softmax(partition of unity)
对每个候选站点算 logit ℓ_i(x) = -τ_i d_{mix}(x, i),权重 w_i(x) ∝ exp(ℓ_i(x)),颜色 c(x) = Σ_i w_i(x) c_i。τ_i 越大分区越接近硬 Voronoi,越小越平滑。SAD 让每站点有自己可学习的 τ_i。
这是 SAD 把'硬 Voronoi(不可微)'变成'可微划分'的关键技巧,也是和 Image-GS(固定高斯核叠加、无显式温度通道)的本质区别。
Jump Flooding Algorithm (JFA) 与 top-K 传播
JFA 是 GPU 上算最近邻图的经典算法:每像素持一个候选 seed,先以大步长 B/2 在 4/8 邻域传播,逐步缩到 1 像素,O(P log B) 完成。SAD 推广到 top-K:每像素维护 8 个候选 ID,每步用'前一时步 + 4 邻域 + 小规模全局探测'刷新。
这让 SAD 每像素计算量恒为 O(P·K),与站点总数 N 解耦——是 SAD 比 Image-GS 快的根本原因(后者 O(P·G) 且 G 随重叠度变)。
2D Gaussian Splatting (Image-GS) 与 kernel overlap
Image-GS 用 2D 高斯核(位置、协方差、颜色)在每像素叠加 c(x) = Σ_i α_i N(x; μ_i, Σ_i) c_i。每像素要遍历所有覆盖核(平均 G 个),反向时全局原子累加梯度,竞争严重。Sharp 边界靠密集堆叠小核,硬过渡和核形状耦合在协方差上。
SAD 的对比 baseline 即 Image-GS。理解它'kernel overlap + 强 atomic contention'痛点,才能体会 SAD 设计'显式 soft partition + threadgroup hash 累积'的针对性。
研究动机
现有的可微图像表示方法在'快'和'好'之间存在严重 trade-off。隐式神经表示(Instant-NGP、SIREN)虽然支持快速随机访问,但缺乏显式空间所有权,参数化隐式,编辑、删剪、局部预算控制都不直观;Image-GS 这类 2D 高斯泼溅虽然重建质量较好,但每个像素要遍历所有覆盖的核(平均重叠数 $G$ 与设置强相关),反向时全局原子操作竞争严重。论文报告 Image-GS 训练 24 张 Kodak 需 28 秒,Instant-NGP 仅 8.2 秒但 PSNR 只有 37.72 dB(远低于 SAD 的 46.00 dB)。此外,这两类方法对'硬过渡'的建模都隐式:Image-GS 的 sharpness 绑死在协方差上,SIREN 则用全局频率编码,遇到不连续点会出现 Gibbs ringing(图 14 中 step 函数拟合 SIREN 只有 43.1 dB,Gaussian 仅 47.3 dB)。在大规模数据集编码、视频表示、消费级设备上的通用压缩等场景下,per-instance 编码成本动辄数十秒是真正的瓶颈。
本文的目标是提出一种 GPU 友好、显式空间所有权、固定每像素计算量的图像表示方法 SAD,使得在匹配 BPP(bits-per-pixel)下 PSNR/SSIM/LPIPS 全面超过 Image-GS 和 Instant-NGP;具体可量化目标包括:(1) Kodak 24 张、$N=50000$ 站点(约 16 BPP)下 2.2 秒内达到 46.00 dB PSNR(vs Image-GS 28 秒 / 36.90 dB);(2) 端到端训练速度比 Image-GS 提升 4-19×;(3) 像素级 MSE 损失下 sharp 内容对齐边界,无需 prescribed discontinuity curves 或 mesh 预处理。
与已有工作不同的是,作者抓住了'kernel overlap 本身是负担而非资产'这一被忽视的点。主流高斯泼溅把'多个核共同解释一个像素'当作表达力来源,但这同时带来 per-pixel 不可预测的核重叠数 $G$、难以删除单一站点、原子竞争等问题。SAD 反其道而行:把图像重新解读为'2D 平面上的软各向异性 Apollonius 划分',每个像素只显式属于 $K=8$ 个'主人',所有权、温度、reach 全部解耦;用 JFA-style top-K 传播把每像素成本降到与 $N$ 无关的 $O(PK)$;用 det=1 各向异性 + 加性半径让 cell 可沿边缘拉长而不增面积。配合手写 GPU 计算着色器、threadgroup hash 梯度累积、removal-delta 剪枝信号,整套设计把'快'和'好'同时向前推。
核心方法
SAD 把图像表示为一组 $N$ 个'自适应各向异性站点',每像素从其 top-8 邻居里做 softmax 混合。直观上,可以把图像平面想象成散布着一群有方向的彩色椭圆:每个椭圆有位置 $p_i$、颜色 $c_i$、半径 $r_i$、长宽比 $a_i$、方向 $u_i$,以及一个'硬度旋钮' $\tau_i$ 控制边界锐利度。渲染时每像素只看离它最近的 8 个椭圆,按距离评分做加权混合。技术路线分五步:(1) 初始化 128k 站点(梯度加权采样);(2) 渲染:按 $\ell_i(x) = -\tau_i d_{mix}(x,i)$ 算 logit,softmax 混合颜色;(3) 训练:纯 MSE 损失,Adam,4000 步;(4) 预算自适应:按'误差/质量$^{\alpha}$'拆分高误差站点,按'removal-delta'剪除低贡献站点;(5) 候选更新:JFA warm-start + 单趟局部刷新维持 top-K 列表。所有 kernel 手写 Metal/CUDA/WGSL,训练过程无 host roundtrip。
SAD 最重要的设计是把'kernel overlap'彻底换成'温度控制的 soft partition of unity'。这与 Image-GS 的根本区别:(1) Image-GS 用固定形状 2D 高斯核叠加,sharpness 隐式绑在协方差上,sharp 边界靠多核密度堆出来,无法删除或重组单一站点;SAD 用显式加权和 Voronoi(Apollonius)评分 + per-site 温度 $\tau_i$,每个像素显式属于 8 个'主人',边界由各自 $\tau_i$ 决定,可独立调节。(2) Image-GS 每像素要扫所有覆盖核($O(P \cdot G)$,$G$ 随设置变),反向时全局原子竞争严重;SAD 用 JFA-style top-K 传播维持 8 邻居列表,每像素成本恒为 $O(P \cdot K)$。(3) Image-GS 用全协方差 $\Sigma$ 控形状;SAD 强制 $\det(G)=1$ 把'reach'($r_i$)和'shape'($a_i, u_i$)解耦,cell 沿边缘拉长不会扩大占用面积。第二个关键创新是 removal-delta 剪枝信号:$\Delta L(x) = \|\hat{c}' - I(x)\|^2 - \|\hat{c} - I(x)\|^2$ 在 closed form 下由 $\hat{c}, I(x), c_k, w_k$ 直接计算——比传统 opacity-based 剪枝更精确。
方法步骤详情
完整方法分 7 步,全部在 GPU 上完成且无 host 介入。(1) **站点表示**:每站点 $i$ 存位置 $p_i$、颜色 $c_i$、加性半径 $r_i$、单位方向 $u_i$(每步归一化)、对数缩放 $a_i \in [-2, 2]$(决定 $G_i$ 长宽比 $\exp(a_i)$,det=1)、对数温度 $\log\tau_i \in [2, 20]$。(2) **初始化**:按 $P_{init}(x) = (1-\lambda_{init})\|\nabla I(x)\|_2/\sum\|\nabla I(x')\|_2 + \lambda_{init}/(H\cdot W)$ 采样 128k 站点,颜色取自目标图像。(3) **渲染**:先算 $d_{mix}(x,i) = s\|x-p_i\|_{G_i} - s r_i$($s=1/\max(H,W)$),再算 logit $\ell_i(x) = -\tau_i d_{mix}(x,i)$,在 top-8 上做 softmax 混合颜色。(4) **Top-K 传播**:JFA warm-up 以 $s_t = \max(1, B/2^{\min(t, \log_2 B - 1) + 1})$ 步长在 4 邻域传播;正式训练用 $\tilde{C}_t(x) = C_{t-1}(x) \cup P_t(x) \cup G_t(x)$ 刷新 top-8。(5) **预算控制**:每 20 步按 $s_i = E_i / \max(m_i, 10^{-8})^{0.7}$ 拆分 top-percentile 站点;每 40 步用 removal-delta 累加器剪除 bottom-percentile。(6) **梯度累积**:hand-derive 反向 kernel;用 16×16 tile threadgroup hash table(256 slots,8 probe 上限)做局部累积。(7) **训练**:纯像素 MSE 损失,Adam 优化,4000 步,Metal/CUDA/WGSL 手写。
技术新颖性
技术新颖性四层。(1) **表示层**:首次把'软各向异性加权和 Voronoi(Apollonius)划分'用于图像压缩,并显式引入 per-site 可学习温度 $\tau_i$。相比 power/Laguerre 距离,Apollonius 距离在 $r_i$ 上更几何可解释;温度把'硬最近邻'松弛为'可微划分'。(2) **算法层**:把 JFA 从最近邻图推广到 top-K 维护,配合 temporal reuse + spatial propagation + stochastic injection,实现每像素常数成本。这是 SAD 4-19× 加速 Image-GS 的核心来源——后者受限于 overlap 数 $G$ 和原子竞争。(3) **几何层**:强制 $\det(G)=1$ 把 cell 面积和长宽比解耦;加性半径 $r_i$ 与硬度 $\tau_i$ 完全独立,cell 沿边缘拉长而 reach 不变。Table 10 消融中各向异性贡献最大单步增益(+4.27 dB)。(4) **系统工程层**:removal-delta 剪枝、tile hash 梯度累积、packed 16-byte 站点格式、跨 Metal/CUDA/WGSL 三后端共享数学与布局,使整套管线 GPU-resident、零 CPU 介入训练。
实验结果
SAD 在匹配 BPP 下全面领先 Image-GS 和 Instant-NGP。(1) **Fig 1 旗舰**:2.0 BPP 下 SAD 5.3 秒 30.97 dB;Image-GS 48.42 秒 26.63 dB;Instant-NGP 12.19 秒 23.26 dB。误差图显示 SAD 在 sharp 边缘上误差显著更低。(2) **Table 4 Kodak**(24 张 $N=50000$ ≈16 BPP):SAD 46.00 dB / 0.9871 SSIM / 0.0032 LPIPS,2.2 秒编码;Image-GS 36.90 dB(28 秒)、Instant-NGP 37.72 dB(8.2 秒)、Fast 2DGS 43.13 dB(10 秒)。(3) **Table 3 Image-GS benchmark**(45 张 0.5 BPP):SAD 37.86 dB vs Image-GS 34.57 dB(+3.29 dB)。(4) **Table 5 DIV2K**:SAD 0.5/2.0 BPP 30.00/34.73 dB,Image-GS 28.48/32.15 dB(+1.52/+2.58 dB)。(5) **Table 6 CLIC**:SAD 31.82/36.13 dB,Image-GS 30.65/34.15 dB(+1.17/+1.98 dB)。(6) **Fig 8 训练速度**:2048² 下 SAD 3.6 ms/epoch,Image-GS 14.7 ms,Instant-NGP 12.1 ms;端到端 5-19× 优于 Image-GS。(7) **Fig 9 收敛**:2000 步达 4000 步峰值的 99%。(8) **Table 8-9 渲染**:缓存 top-K 时 0.015-0.132 ms/次。(9) **Table 10 消融**:固定 logτ=7.5 28.20 dB → +τ 30.50 dB → +半径 31.76 dB → +各向异性 34.77 dB → 全模型 35.35 dB(+7.15 dB)。(10) **应用**:1D step 拟合 SAD 57.2 dB vs Gaussian 47.3 dB / SIREN 43.1 dB;Poisson 求解 1000-2000 步 MSE < 10⁻⁶。
查看结构化数据
| 任务 | 指标 | 本文 | 基线 | 提升 |
|---|---|---|---|---|
| Kodak 图像压缩 (N=50k, ~16 BPP) | PSNR / SSIM / LPIPS / Time | 46.00 dB / 0.9871 / 0.0032 / 2.2s | Image-GS 36.90 dB / 0.9521 / 0.0272 / 28s | +9.10 dB, 12.7× faster |
| Image-GS benchmark @ 0.5 BPP | PSNR / SSIM / LPIPS | 37.86 dB / 0.9422 / 0.0458 | Image-GS 34.57 dB / 0.9307 / 0.0769 | +3.29 dB PSNR |
| Image-GS benchmark @ 0.2 BPP | PSNR / SSIM / LPIPS | 33.87 dB / 0.8983 / 0.0914 | Image-GS 31.32 dB / 0.8923 / 0.1309 | +2.55 dB PSNR |
| DIV2K @ 2.0 BPP | PSNR / SSIM / LPIPS | 34.73 dB / 0.9115 / 0.0844 | Image-GS 32.15 dB / 0.8820 / 0.1480 | +2.58 dB PSNR |
| DIV2K @ 0.5 BPP | PSNR / SSIM / LPIPS | 30.00 dB / 0.7982 / 0.1995 | Image-GS 28.48 dB / 0.7914 / 0.2515 | +1.52 dB PSNR |
| CLIC @ 2.0 BPP | PSNR / SSIM / LPIPS | 36.13 dB / 0.9112 / 0.0884 | Image-GS 34.15 dB / 0.8907 / 0.1449 | +1.98 dB PSNR |
| CLIC @ 0.5 BPP | PSNR / SSIM / LPIPS | 31.82 dB / 0.8176 / 0.1870 | Image-GS 30.65 dB / 0.8223 / 0.2280 | +1.17 dB PSNR |
| 训练速度 (2048², 1.0 BPP) | Time per epoch | 3.6 ms | Image-GS 14.7 ms / Instant-NGP 12.1 ms | 4.08× / 3.36× faster |
| Kodak 对比 Fast 2DGS | PSNR / Time | 46.00 dB / 2.2s | Fast 2DGS 43.13 dB / 10s | +2.87 dB, 4.5× faster |
| 1D step 信号拟合 (256 params) | PSNR | 57.2 dB | Gaussian 47.3 dB / SIREN 43.1 dB | +9.9 / +14.1 dB |
| 参数消融: +各向异性 | PSNR | +4.27 dB (30.50→34.77) | 仅自适应温度 | 最大单步增益 |
局限与改进
作者坦承四点局限加上可观察两点。(1) **候选列表维护成本**:站点大幅移动或激进 densify/prune 后,temporal reuse 的 top-K 可能失准;需 12-16 次 JFA 传播恢复(Table 7 中 131k 站点 8 pass 仅 0.06 匹配率)。(2) **最快渲染的代价**:top-K 缓存失效时多次 propagation + JFA seed 可能成端到端瓶颈;Table 9 显示 2048² 下 16 pass 更新需 16.0 ms,是单次渲染(0.13 ms)的 122×。(3) **极细随机纹理**:高度不规则自然图像微观结构(草、毛发、噪点)仍需较大站点预算避免颗粒感。(4) **边界对齐是优化结果而非硬保证**:薄结构、低对比度边缘上仍可能退化(论文明确's emergent optimization outcome')。(5) **BPP 是参数空间度量**:每站点 128 bit packed 存储无熵编码,与 JPEG2000 / WebP 不在同一比较层面。(6) **GPU 性能对硬件敏感**:tile hash 大小、max probe 数、grad-quant scale 等固定常量,跨设备最优配置可能不同。
独立分析的弱点
基于结果独立分析 7 个弱点及改进方向。(1) **缺乏熵编码,BPP 高估实际码率**:Table 4 中 16 BPP 对应每站点 16 byte packed 存储无熵编码。**改进**:利用 SAD 显式站点 + 诱导邻接图做'neighbor-conditioned differential coding',用相邻站点 $G_i$ 做线性预测器编码 $G_{i+1}$ 残差。(2) **Top-K 列表恢复机制薄弱**:Table 7 显示 131k 站点 8 pass 匹配率仅 0.06。**改进**:多分辨率 JFA 缓存——保存低分辨率 candidate 列表加速 warm-up。(3) **K=8 固定对极端复杂纹理可能不够**:毛发/草丛等需更大 $K$。**改进**:adaptive K per pixel——边缘 K=16、平滑 K=4。(4) **温度学习易陷入局部最优**:Fig 12 显示固定 logτ=10 仅 23.96 dB 崩塌。**改进**:温度正则化(对 $\log\tau$ 加 L1 偏向 7-10)或 curriculum。(5) **removal-delta 在长尾分布下可能误剪**:少数高权重站点覆盖大部分像素,站点间依赖未建模。**改进**:加 second-order delta。(6) **各向异性 per-site 而非 globally consistent**:长直边多站点协同时相邻 $u_i$ 可能不连续。**改进**:anisotropic smoothness 正则或 segment-level 各向异性场。(7) **超参较多且耦合**:对新手不友好。**改进**:hyperparameter sensitivity 表或自动调度器。
未来方向
作者明确提出:分层 / 自适应候选维护(多分辨率缓存、流式刷新)、per-site 富表示(per-site 局部 MLP / material cue)、更复杂各向异性 metric 或学得的距离函数、更智能初始化(预训练 prior 给初始站点布局)、3D 扩展(体积 / 表面表示)、2D/3D 逆问题集成。 基于成果可延伸:(1) **视频/时序表示**:拓展到 (X, Y, T) 3D 体数据,每站点加 'temporal radius' 让 cell 沿时间拉长,同时获显式 ownership 和时序平滑。(2) **图像 tokenization 替代 ViT patch embedding**:用 SAD 站点做 image tokenizer,下游 transformer 接收 site coordinates + features,variable resolution 无成本切换。(3) **diffusion model decoder**:替换 diffusion 里 U-Net decoder,用 SAD 站点 + 小 MLP 直接从 latent 渲任意分辨率图像。(4) **大规模数据集预训练**:用 SAD 4-19× 速度优势在 ImageNet 等大规模数据上预训 'image-to-sites' 网络,得到 SOTA 通用图像 codec。
复现评估
复现资源相当完整。(1) **代码**:作者主页 https://luckyiyi.github.io/SAD 公开代码;三后端 Metal / CUDA / WebGPU 共享同一份数学与内存布局。(2) **数据集**:标准公开集 Kodak(24 张 768×512)、DIV2K(100 张)、CLIC(41 张)、Image-GS benchmark(45 张),加 5 张 2k DIY 图,无专有数据。(3) **算力**:单卡 NVIDIA RTX 5090 即可重现全部主结果;端到端训练 2-12 秒,最便宜 0.6 秒(Kodak 4.0 BPP)。(4) **超参**:默认 4000 次迭代、$K=8$、初始化 128k 站点、densify 每 20 步(0.01 percentile)、prune 每 40 步(0.033 percentile)、$\alpha=0.7$、$\log\tau \in [2,20]$、$r \in [1,512]$、$a \in [-2,2]$、$J=4$ injected site IDs、grad-quant scale $10^6$、tile hash 256 slots、max probes 8(全部列在 Appendix B Table B11-B12)。(5) **难度**:中等偏高——核心挑战在 GPU-resident 管线 + threadgroup hash reduction 实现,需重写 compute shader(MSL/CUDA C++/WGSL);但所有 kernel 公式、内存布局、dispatch 大小(Table B13)公开,复现者 1-2 周实现工作量。
论文图表
主对比图,在 2.0 BPP 下展示 SAD / Image-GS / Instant-NGP 的重建结果、误差图和训练时间。SAD 5.3s 达到 30.97 dB,Image-GS 48.42s 26.63 dB,Instant-NGP 12.19s 23.26 dB。误差图(2× 缩放)显示 SAD 在 sharp 边缘和结构边界上的误差显著更低,zoom insets 展示软 Apollonius 划分对细节的精确重建。
全 paper 一图概览,定量展示 SAD 在'快+好'两个维度同时压过 baseline 的核心卖点;不引用此图读者无法直观感受 SAD 的优势。
smiley 域 512×512 上 $\nabla^2 u = -4$ 边界 $u=0$ 的求解:ground truth + 高度场 + 二值 mask(上),SAD 重建 + 着色输出 + learned site ID map(下)。Site ID map 显示站点自适应集中在边界和高曲率区域。
展示 SAD 作为可微空间表示的 PDE 求解能力,呼应 contribution 中'显式站点便于硬约束执行'的声明。
256 参数预算下 SAD(64 sites × 4 params)vs Gaussian splatting(64 splats × 4 params)vs SIREN([1,16,16,1], ω0=15, 321 params)在 smooth sine、step-plus-sine、multi-frequency periodic 三个目标上的对比。SAD 在 step 任务上 57.2 dB,远超 Gaussian 47.3 dB / SIREN 43.1 dB。
最直观展示'SAD 的 per-site 温度可精确锐化边界'的实验,也是 conclusion 中'温度控制 ownership 而非站点预算/维度'声明的支撑。