今天要介绍的MobileAI2021的图像超分竞赛的最佳方案,无论是PSNR指标还是推理速度均显著优于其他方案,推理速度达到了手机端实时(<40ms@1080P)。
标题&作者团队
尽管基于深度学习的图像超分取得前所未有的进展,但实际应用要求i越来越高的性能、效率,尤其是移动端推理效率。智能手机的升级迭代、5G的盛行,用户能感知到的图像/视频分辨率越来越高,从早期的480过度到720p,再到1080p,再到最近的1k、4k。高分辨率需要更高的计算量,占用更多的RAM,这就导致了端侧设备的部署问题。
本文旨在设计一种8-bit量化版高效网络并将其部署到移动端,整个设计过程如下:
我们所设计的模型能以2dB指标优于8-bit量化版FSRCNN,同时满足实际速度需求。
接下来,我们从节点延迟测试开始,然后引出本文方案背后的思考,最后构建所提ABPN。
由于我们的目标在于构建一种实时量化模型用于真实场景(比如实时视频超分)。我们需要做的第一件事就是构建可移植算子集并统计每个算子的耗时。
上述算子可以分为四大类:张量操作、卷积算子、激活算子、resize,见上表。从上表可以得出四个发现:
正如前一节所讨论的,能用的算子非常有限。为得到一个好的解决方案,我们深入分析了架构设计与INT8量化之间的相关性。
据我们所知,其难度主要在于I2I(Image-to-Image, I2I)映射的高 动态范围,最直接的想法是生成低标准差权值与激活。有两种方式可以达成该目的:
图像空间的残差学习在早期的工作(如VDSR, DRRN)中有得到应用,而特征空间的残差学习则更多在近期的SOTA方案(如SRGAN、IDN、IMDN)中得到应用并取得了稍优的性能。然而,我们认为:ISRL更适合于INT8量化。
从前面Table1中可以看到:图像空间插值存在不可接受的推理耗时,甚至仅仅一次resize都无法满足实时需求。为解决该问题,我们提出了ABRL(Anchor-Based Residual Learning):它直接在LR空间复制每个像素9次为HR空间的每个像素生成锚点。受益于PixelShuffle层,所提ABRL可以通过一个concat+一个元素加操作实现。
上图给出了四种类型残差学习的区别所在,从推理耗时角度来看:
所提ABRL有这样两个优点:
上图给出了本文所提架构示意图,它包含四个主要模块:
深层特征提取:该过程采用多个Conv-ReLU组合构成,描述如下:
为充分利用并行推理,我们设置Conv-ReLu的数量为5以匹配上分支的开销,这意味着当Conv-ReLU数量小于5时推理速度不变。最后,我们采用一个卷积将前述特征变换到HR图像空间:
然后再采用本文所提ABRL得到超分特征:
在损失函数方面,我们采用了简单的L1损失,定义如下:
在训练方面,图像块尺寸64*64为,batch=16,优化器为Adam,初始学习率0.001,每200epoch减半,合计训练1000epoch。训练数据为DIV2K,在RGB空间评估性能。
QAT是一种流程的提升模型性能的量化技术且无额外推理耗时。我们设置初始学习率为0.0001,每50epoch减半,合计训练200epoch。QAT可以进一步提升0.06的B性能,此时INT8模型仅比FP32性能低0.07dB。
上表对比了残差学习的性能、耗时。从中可以看到:
我们在Snapdragon 820的手机平台上,采用AIBenchmark软件测试了所提方案的CPU、GPU以及NNAPI耗时,结果见下表。
本文起初用于参加MAI2021图像超分竞赛,结果见下表。注:首次的提交的模型在模型尾部没有添加Clip操作,导致量化性能非常差(小于20dB);在竞赛结束后才解决了该问题并提交了校正后模型。受益于素体ABRL,所提方案取得了最佳PSNR指标,同时具有更快的推理速度。