Accelerating Image Super-Resolution Networks with Pixel-Level Classification¶
会议: ECCV 2024
arXiv: 2407.21448
代码: https://github.com/3587jjh/PCSR (有)
领域: 图像恢复 / 超分辨率 / 高效推理
关键词: 超分辨率加速, 像素级分类, 自适应计算分配, LIIF上采样, 大图超分
一句话总结¶
提出PCSR——首个像素级计算资源分配的超分方法,用轻量MLP分类器逐像素判断恢复难度并分配到不同容量的上采样器,在PSNR几乎不掉的情况下将FLOPs压低至原始模型的18%~57%,大幅优于现有patch级方法ClassSR和ARM。
背景与动机¶
随着2K~8K大分辨率图像需求激增,超分辨率模型需要处理越来越大的图像。实际中大图无法一次性处理,通常切成重叠patch逐个超分再拼合。ClassSR和ARM等方法发现不同patch恢复难度不同,对简单patch用小模型、难patch用大模型,从而节省计算量。但patch级分配有两个根本缺陷:(1) 即使一个patch中绝大部分像素都很简单(平坦区域),只要有少量高频细节,整个patch就必须用大模型,造成浪费;反之如果整体判为简单patch,高频像素就恢复得差。(2) patch越大越可能包含难易混合的像素,效率越低——但大patch又能减少重叠冗余、利用更多上下文信息,形成矛盾。
核心问题¶
如何将超分辨率的自适应计算分配粒度从patch级细化到像素级,让每个像素都能被分配到恰当容量的上采样器,从而在更细粒度上消除冗余计算?
方法详解¶
整体框架¶
PCSR模型由三部分组成:骨干网络(Backbone) + 像素级分类器(Classifier) + M个不同容量的像素级上采样器(Upsamplers)。完整流程为:(1) 骨干网络处理LR输入生成LR特征图;(2) 轻量MLP分类器对HR空间中每个query像素预测属于各上采样器的概率;(3) 每个像素被分配到对应的上采样器以预测RGB值;(4) 汇聚所有像素的RGB值得到最终SR输出。骨干网络可以是任意现有SR网络(如FSRCNN/CARN/SRResNet),PCSR是一个即插即用的加速框架。
关键设计¶
-
像素级MLP分类器:基于LIIF范式,对每个HR像素坐标,从LR特征图中提取最近邻特征并拼接相对坐标偏移量,输入轻量MLP输出M维分类概率。分类器的计算开销极小,但能精确区分平坦区域和高频细节区域。分类器的输入特别采用了HR图和双线性上采样LR图的差值作为目标,以突出高频特征,帮助分类器更聚焦于恢复难度的判断。
-
多容量LIIF上采样器:采用LIIF(Local Implicit Image Function)作为上采样器,天然支持像素级处理。设置M个不同隐藏层大小的MLP上采样器,从重型(U₀)到轻型(U_{M-1}),容量依次递减。实验中M=2已经足够有效——一个重型上采样器处理困难像素(纹理/边缘),一个轻型上采样器处理简单像素(平坦区域)。使用LIIF还带来额外好处:单一模型即可支持多尺度甚至任意尺度超分,无需为每个scale factor分别训练。
-
推理时可调的计算-性能权衡:引入超参数k来控制分配倾向。分配公式为 argmax_j p_{i,j} / [cost(U_j)]^k,其中cost是各上采样器FLOPs的softmax归一化值。k越小越多像素用重型上采样器(高质量),k越大越多像素用轻型上采样器(省计算)。用户无需重新训练即可自由调节效率-质量平衡。
-
自适应决策(ADM):除了手动调k,还提供基于K-means聚类的自动分配方案。对整张图的像素难度值(重型上采样器的概率之和)做K-means聚类为M个组,按聚类中心大小排序后分配到从重到轻的上采样器。聚类只需2~7次迭代即收敛,几乎零额外开销。
-
像素级优化(Pixel-wise Refinement):由于相邻像素可能被分到不同上采样器,拼合处会出现artifacts。解决方案简单有效:如果某个轻型上采样器的像素周围有重型上采样器的像素邻居,就用周围所有邻居(含自身)的RGB均值替换该像素。不需要额外的前向传播,计算开销可忽略不计。
损失函数 / 训练策略¶
- 两阶段训练:先用重建损失训练{Backbone, U₀}(最重上采样器),保证性能上界;然后冻结已训练模块,依次添加并训练轻型上采样器和分类器
- 重建损失 L_recon:预测值与(GT - 双线性上采样)的L1距离,强调高频残差
- 均衡损失 L_avg:鼓励各类别分配到大致相同数量的像素,防止分类器退化为把所有像素都扔给一个分支
- 初始阶段训练2000K迭代,后续每阶段500K迭代,Adam优化器 + cosine退火
实验关键数据¶
与patch级方法对比(×4 SR)¶
| 模型 | 参数量 | Test2K (dB/GFLOPs) | Test4K (dB/GFLOPs) | Test8K (dB/GFLOPs) |
|---|---|---|---|---|
| FSRCNN | 25K | 25.69 / 45.3 (100%) | 26.99 / 185.3 (100%) | 32.82 / 1067.8 (100%) |
| FSRCNN-ClassSR | 113K | 25.61 / 38.4 (85%) | 26.91 / 146.4 (79%) | 32.73 / 709.2 (66%) |
| FSRCNN-ARM | 25K | 25.61 / 35.6 (79%) | 26.91 / 152.9 (83%) | 32.73 / 746.7 (70%) |
| FSRCNN-PCSR | 25K | 25.61 / 8.5 (19%) | 26.91 / 32.6 (18%) | 32.73 / 196.6 (18%) |
| SRResNet | 1.5M | 26.24 / 502.9 (100%) | 27.71 / 2056.2 (100%) | 33.55 / 11850.7 (100%) |
| SRResNet-ClassSR | 3.1M | 26.20 / 446.7 (89%) | 27.66 / 1686.2 (82%) | 33.50 / 7996.0 (67%) |
| SRResNet-ARM | 1.5M | 26.20 / 429.1 (85%) | 27.66 / 1742.2 (85%) | 33.50 / 7865.3 (66%) |
| SRResNet-PCSR | 1.1M | 26.20 / 245.6 (49%) | 27.66 / 981.0 (48%) | 33.52 / 5093.7 (43%) |
与per-image方法MGA对比¶
| 模型 | Test2K (dB/GFLOPs) | Test4K (dB/GFLOPs) |
|---|---|---|
| FSRCNN-MGA (43K) | 25.66 / 29.2 (64%) | 26.94 / 101.7 (55%) |
| FSRCNN-PCSR (25K) | 25.66 / 12.8 (28%) | 26.94 / 37.8 (20%) |
| SRResNet-MGA (2.0M) | 26.20 / 249.2 (50%) | 27.66 / 871.9 (42%) |
| SRResNet-PCSR (0.9M) | 26.20 / 191.0 (38%) | 27.66 / 755.3 (37%) |
运行时间对比(CARN backbone, ×4)¶
| 方法 | Test2K | Test4K | Test8K |
|---|---|---|---|
| ClassSR | 1994ms | 4595ms | 19072ms |
| ARM | 518ms | 1069ms | 4608ms |
| PCSR | 45ms | 62ms | 203ms |
消融实验要点¶
- Patch size影响:ClassSR随patch增大效率下降(32→256: 68%→77% FLOPs),PCSR反而更优(62%→55% FLOPs),因为大patch内简单像素比例更高
- 类别数M:M=2和M=3效率差异不大(57% vs 56%),但M=2参数更少更简洁,故选M=2
- Pixel-wise Refinement:即使所有轻型像素都做替换(#h=0),PSNR也仅降0.027dB;设#h=1能有效消除artifacts且对PSNR几乎无影响
- LIIF vs PixelShuffle上采样器:LIIF不保证比原始模型更高的PSNR上界,选择LIIF纯粹是为了支持像素级处理和任意尺度SR
亮点¶
- 粒度突破:从patch级到pixel级的计算分配是一个自然但非平凡的推进,像素级分类能精准区分同一patch内"纹理边缘的难像素"和"平坦区域的易像素"
- 惊人的效率提升:FSRCNN-PCSR在Test8K上只用18% FLOPs,运行时间对比更是碾压(PCSR 203ms vs ClassSR 19072ms),差了近100倍
- 即插即用 + 推理时可调:适配任意现有SR backbone,推理时通过k值自由调节质量-效率平衡,无需重训练
- LIIF的巧妙复用:将隐式图像函数框架从任意尺度SR扩展为计算分配的载体,一石二鸟地获得了多尺度SR能力
- 极简Refinement:仅用邻域均值替换就能消除artifacts,不需要额外网络推理
局限性 / 可改进方向¶
- 骨干网络是FLOPs下界:分类器基于骨干特征工作,即使全部像素都分给最轻上采样器,骨干的计算量也无法省去。对于大面积平坦图像这部分计算仍是浪费
- 作者提出的改进方向:让分类器在骨干的早期层工作,或对极简单像素直接用查找表做双线性插值,绕过神经网络
- LIIF上采样器的性能上限:在大模型(如SRResNet)上LIIF不一定比原始PixelShuffle上采样器强,说明像素级MLP上采样器的表达能力有天花板
- 未探索生成式SR:仅验证了PSNR导向的方法,未与GAN-based/Diffusion-based SR结合
- 分类器精度与overhead的权衡:当前分类器极轻量可能在复杂纹理场景下分类不够准确
与相关工作的对比¶
- vs ClassSR (CVPR 2021):ClassSR用独立子网络处理不同难度patch,导致参数量翻倍(FSRCNN: 25K→113K),且patch级分配粒度太粗。PCSR在像素级分配,参数量甚至更少,效率提升比ClassSR大3~4倍
- vs ARM (ECCV 2022):ARM通过参数共享的子网解决了ClassSR的参数膨胀问题,但仍是patch级方法,受限于patch内难易混合的问题。PCSR用LIIF上采样器天然支持像素级处理,效率进一步提升约2倍
- vs MGA (ECCV 2022):MGA是per-image方法,先全局粗修复再局部精修复,涉及mask预测和两轮前向传播。PCSR架构更简洁,只需一轮前向,FLOPs更低且参数更少
启发与关联¶
- 自适应计算分配的通用性:像素级难度分类+多路径推理的思路可以推广到其他dense prediction任务(去噪、增强、分割),特别是处理大分辨率输入时
- 与模型压缩方向的交叉:PCSR本质是一种推理时的"动态计算分配"策略,可以和量化、剪枝等静态压缩技术正交组合,参考 decoder-free量化蒸馏idea
- 超分+生成模型:作者在limitation中提到了将PCSR应用到生成式SR模型的可能性,这与 VLM引导的图像恢复 方向有潜在交叉
评分¶
- 新颖性: ⭐⭐⭐⭐ 从patch到pixel级分配是自然而清晰的推进,不算革命性但很实用
- 实验充分度: ⭐⭐⭐⭐⭐ 多backbone(3种) × 多数据集(4+3) × 多消融(patch size/M/refinement/LIIF),非常扎实
- 写作质量: ⭐⭐⭐⭐ 动机表述清晰,方法描述完整,图表质量高
- 价值: ⭐⭐⭐⭐ 对大图SR场景有很强实用价值,FLOPs和运行时间的改善都很显著