NTIRE2022各大竞赛结果已定,您上榜了吗?
今天介绍一篇NTIRE2022 Efficient Super Resolution竞赛方案,该方案取得了最低内存占用、第二快的推理速度。推理耗时与内存占用是EISR(Efficient Image Super Resolution)的两个重要考量因素。在该方向上比较知名的方案当属IMDN与RFDN,两者均采用split与concat对蒸馏与聚合的策略进行了探索。相反,序贯式(Sequential)结构避免了频繁的访问前置状态与额外节点,对降低内存占用与推理耗时更有益。
延续该设计理念,本文设计了一种轻量型方案FMEN,它主要由高度优化的卷积与激活层堆叠而成,尽可能降低的特征融合模块的使用。本文提出了一种新颖的序贯式注意力分支,每个pixel根据局部与全局上下文被赋予不同的重要性因子以增强高频细节学习能力。此外,作者在EISR常用的残差模块基础上提出了ERB(Enhanced Residual Block)以加速模型推理速度。
组合上述设计理念记得到了本文所提FMEN与FMEN-S。相比AIM2020-EISR冠军方案E-RFDN,所提FMEN-S推理速度快33%,内存占用降低74%(可参考下图);在NTIRE2022-EISR竞赛中,FMEN-S取得了内存占用最低、推理速度第二的成绩。
内存占用是EISR方案部署时非常重要的因素之一。对一个节点而言,其内存占用M包含四部分:输入特征M_{input} 、输出特征M_{output} 、kept特征M_{kept} (之前节点计算并在未来节点使用的特征)以及网络参数M_{net} (相对而言,该部分可忽略)。总体的内存占用可以表示如下:
本文以上述两种典型结构为参考进行内存分析(假设输入所占内存为1x):
(N表示参与特征融合的特征数量,上图中N=3).
也就是说,相比Plain结构,Fusion结构会占用更高的峰值内存。
直接将序贯式结构用于EISR并不是那么容易的:相比先进的Fusion结构,无论是直接式方案还是重参数机制辅助方案均存在性能下降问题。除了内存占用外,推理耗时是EISR方案的另一个重要因素。
为解决上述问题,基于序贯式结构,本文提出ERB与HFAB分别用于深层特征学习与特征增强,不仅可降低内存占用,同时可加速推理效率。本文最终所得结构FMEN见上图,FMEN的峰值内存占用位于HFAN内部:包含全局残差特征、输入特征、注意力以及输出特征,约4 \times C \times H \times W
自EDSR之外,ResBlock(见下图a)成为SISR中最常用模块。然而,ResBlock中的跳过连接会引入额外的内存占用并降低推理速度(实验表明:移除EDSR中的跳过连接,推理耗时将减少10%)。
为继承残差学习的优点且避免上述问题,作者设计了一种ERB模块(见上图b):它由两个RRRB与一个LReLU构成。RRRB受RepVGG与RCAN而来,在推理时可以折叠一个单个卷积。
注意力机制已在SR领域得到广泛研究,可划分为Channel Attention、Spatial Attention、Pixel Attention以及Layer Attention。考虑到额外的内存占用与推理速度问题,我们设计了上图所示的HFAB:首先采用3\times 3 卷积进行降维,然后采用ERB捕获局部县惯性,其次采用3\times 3 卷积进行升维,最后sigmoid激活并与输入相乘。
注:在attention分支,作者引入了BN层。尽管已有研究(如EDSR)表明:BN会导致伪影问题。自此之后,BN不适用于SR已成为了常识。BN真的不能用于SISR吗?年前曾有一篇paper对此进行了思考,可参考:AdaDM: 让超分网络不仅可以用BN,性能还可以更优。
回归正题,卷积的感受野比较有限,而在attention分支引入BN不仅有益于注入全局交互信息,同时有益于sigmoid的非饱和区域。在推理阶段,BN可以与后接或前接卷积合并。因此,在推理阶段,HFAB仅包含四个高度优化的算子:3\times 3 卷积、LReLU、Sigmoid以及点乘。
上图对比了基于ResBlock、PlainBlock以及ERB的EDSR与FMEN性能,可以看到:相比ResBlock,ERB具有与其相当的性能,而PlainBloc则出现了严重性能下降。而在推理阶段,ERB可以折叠而PlainBlock形式并享受其高推理效率特征。
上表对比了ResBlock与ERB在不同超分模型的推理效率对比,可以看到:相比ResBlock,ERB模块的推理效率平均快10%左右。
上图从频域角度对HFAB进行了分析,可以看到:
上表对IMDN的CCA、RFDN的ESA以及本文的Attention进行了对比,可以看到:
上表&图给出了不同方案的性能与效果对比,可以看到:FMEN取得了与LatticeNet相当的性能,同时具有更快推理速度(46ms vs 68ms)、更低内存占用(68M vs 225M)。
上表给出了NTIRE2022EISR竞赛中不同方案的性能对比,可以看到:
看完paper与code后,有这么几点反思分享给大家: