ClassSR: A General Framework to Accelerate Super-Resolution Networks by Data Characteristic
TL;DR
核心加速方案是:不同的图像区域进行恢复的难度不同,可以用不同capacity的网络结构来处理。提出一种新的pipeline,ClassSR,即先将图像划分为不同大小的sub images,再根据restoration的难度做分类,再做SR。

Method
- 作者首先进行了一组观察,问了获取32X32 LR图像的统计特性,先将sub image 过一个网络(MSRResNet), 再根据各自的PSNR值做一个排序。如图所示,分为三档难度,simple, medium, hard。 使用3种的网络来处理不同种类的sub-images, 3种网络的区别主要在于first / last conv layer的通道数量不一致。分别为16, 36 , 56.

- Class Module 通过low-level feature来分辨sub image 是否容易恢复。结构上 5 conv + 1 avg pooling + 1 fc
- SR-Module: 包含多个独立的分支,它的结构可以是任何想被加速的对象。本文为了简化,仅用通道数量来表达网络的复杂程度。

- Classification Method: 在训练阶段,input sub image会经过所有的SR分支,从而保证Class Module 能够接受从不同SR分支返回到提督。最终生成的结果如下:

- Loss:Class loss, 不同难度分类之间的置信度。Average Loss 是为了避免网络总是选择最复杂的branch,这样 Class Module 就会失效。


- 训练总共分为三个阶段:pretrain SR-Module; Fix SR训练分类分支。 最后同时finetune两个部分。
Experiment

- 图像越大,加速比越大。到8K时加速比接近50%
Ablation Study
- 如果没有Class Loss,则难以收敛。原因是会随机选择三个分支中的一个,导致训练不稳定。

- Average Loss 的引入可以带来Flops的下降,能够在两者之间做好权衡。

- 采用减少channel数量来减少flops,不减少middle层数量的原因是,这部分计算量占比很小
- 在NR上不太省算力,原因是没有足够多的simple sub images
