AIM2020-ESR竞赛旨在设计一种这样的网络:在具有PSNR指标与MSRResNet相当的水平的同时,从推理耗时、参数量、FLOPs、Activations以及内存占用等方面进行至少一个维度的降低。其任务以4倍超分为基准,训练集、验证集以及测试集均为DIV2K,由于该任务的目的不在于刷新PSNR指标,故在训练阶段可以采用额外的训练数据,比如Flickr2K、OST等数据集。
在竞赛持续期间共有150名注册参与人员,25个队伍提交了结果,其中五个队伍因其模型PSNR弱于MSRResNet而未进行排名。我们先来看一下AIM2020-ESR的最终排名吧,见下图。
image-20200916155112362
ESR竞赛是 AIM2020竞赛的其中一个组成部分,该竞赛有这样几个目的:
沿着已有的NTIRE2017竞赛,该竞赛仍然采用DIV2K数据。DIV2K包含1000整2K分辨率的RGB图像,其中800用于训练,100用于验证,100用于测试(无GT)。在该竞赛中LR通过bicubic方式进行4x下采样得到。
注:由于该竞赛目标不在于提升模型的PSNR指标,故而在训练阶段可以采用额外的数据集,Flickr2K、OST等数据均可。
该基准模型是ESRGAN一文在SRGAN的基础上设计的一种超分网络,它将用于该竞赛baseline。MSRResNet包含16个残差模块,一个全局跳过连接,每个残差模块由两个3x3卷积+ReLU激活构成,而全局跳过连接分支由双线性插值得到。
MSRResNet是经过DIV2K、Flickr2K、OST等数据训练所得,其相关指标统计如下:
时的FLOPs为166.3G;
时的Activations为292.55M;
时的最大GPU内存占用为610M;
对于MSRResNet感兴趣的同学可以去如下两个链接查看相关代码:
在竞赛持续期间,主要有两个阶段:
关于竞赛的评价工具与度量指标,该竞赛需要统计的指标包含:PSNR、推理耗时、参数量、FLOPs、Activations、最大GPU内存占用等。相关评价统计工具可以参考如下链接:
https://github.com/cszn/KAIR/blob/master/main_challenge_sr.py
image-20200916155112362
上面给出了该竞赛的最终排名,注PSNR指标低于MSRResNet的方案将不参与排名;此外,lyl,LMSR,CET-CVLab以及wozhu等团队因缺失实验验证也未参与排名。上表中同时提供了AIM2019Constrained SR竞赛的冠军方案(IMDN)。
从上表可以得出如下几点:
image-20200916162240093
为分析上述指标间的差异性,作者统计了参数量、FLOPs、Activations、最大GPU内存占用与推理耗时之间SROCC(Spearman rank-order correlation coefficient)关系。结果剪商标。从表中结果可以看到:Activations与推理耗时之间的相干性更强。事实上在恺明大神的一文中也有类似结论。但同时需要注意:参数量、FLOPs仍然是评价模型高效性的非常重要的参考指标。
参赛人员提出了不同的技术用于提升MSRResNet与IMDN的有效性,这些技术大体上可以归结为以下几方面:
卷积进行特征蒸馏,并将通道数由64降低到50;AiriA_CG采用ACBlock(Asymmetric Convolution)改进IMDN中的卷积;受启发于IdelBlock,ZJUESR2020提出了多尺度IdleBlock;
PixelShuffle(X2)->Conv->LeakyReLU->
上采样方式,Xpixel提出采用最近邻插值替换PixelShuffle
;NJU_MCG、Airia_CG、HaiYun、IPCV-IITM则直接采用PixelShuffle进行4x上采样。卷积进行特征降维,最后采用Conv3x3->PixelShuffle
输出HR图像。
卷积替换
卷积;SAMSUNG_TOR_AIC提出采用改进MobileNetV3模块替换残差模块。
在该竞赛的验证与测试阶段存在一些“公平”与“不公平”的tricks:
一方面,采用额外的训练数据是一种“公平”的trick,这是由于MSRResNet采用DIV2K、Flickr2K、OST等数据训练得到(大多参赛队伍均采用所提供的DIV2K与额外的Flickr2K进行训练)。除了额外数据外,训练阶段的数据增广策略也是一种“公平”的trick;
另一方面,采用验证集的LR/HR以及测试的LR进行训练是一种“不公平”的trick。首先,验证集参与训练会提升验证PSNR指标;其次,有助于产生PSNR增益;最后,PSNR可以通过知识蒸馏方式在验证集与测试集上得到提升。
从前述分析,我们可以得出以下几个结论:
NJU_MCG提出了一种残差特征蒸馏网络用于高效图像超分,RFDN受启发于IMDN与RFANet。下图给出了所提RFDN与IMDB之间的关联性。
image-20200916165631014
IMDB是IMDN的关键组成部分,见上图a,它是一种渐进式特征蒸馏模式。尽管IMDN可以取得显著提升,但不够高效同时会因channel splitting
引入某些不灵活的操作;同时采用3x3卷积蒸馏特征会产生过多的冗余参数;采用channel splitting
会导致难以利用恒等连接。
上图b采用连个并行的conv3x3卷积解决了上述问题,相比原始IMDB,这一改进版更为灵活;RFDB则采用三个1x1卷积进行特征蒸馏,采用采用SRB(shallow residual block)替换conv3x3,以更有效的利用残差学习策略。对于SRB而言,采用空间注意力机制比通道注意力机制更佳,故RFDN采用RFANet中的ESA模块。所提RFDN包含4个RFDB模块,RFDN的整体网络结构与IMDN相似,但RFDN的特征通道数由64改成了50。
在训练阶段,HR图像块的大小为
,BatchSize=64,损失函数为L1,优化器为Adam,初始学习率为
,每200epoch学习折半,训练1000epoch后改为L2损失进行微调,同时学习率设置为
,训练数据为DIV2K与Flickr2K。
image-20200916171316144
该团队提出了一种FIMDN(Faster Information Multi-Distillatio Network via Asymmetric Convolution),见上图,它是在IMDN的基础上改进而来,且仅对IMDB进行了微调改进。不同于IMDN,FIMDN近几年采用了6个CACB构成FIMDB模块加速网络。(从笔者角度来看,FIMDN的网络架构与EDSR的相似性更多一些)
image-20200916171353499
上图给出了FIMDN的结构示意图,它采用ACNet中的非对称卷积组替换IMDB中的Conv3x3,在最后的融合阶段采用1x1卷积进行特征融合。该网络的训练包含两个阶段四个步骤:
,Batch=64,损失函数为L1,优化器为Adam,初始学习率为2e-4
,每3600epoch折半,合计训练18000epoch;
,BatchSize=24,损失函数为L2,初始学习率为1e-5
,每720epoch折半,合计训练600epoch;
,BatchSize=4,损失函数为L2,初始学习率为1e-6
,每400epoch折半,合计训练2000eoch;
卷积
,BatchSize=24,损失函数为L2,初始学习率为1e-6
,每200epoch折半,合计训练1000epoch。
该团队提出了一种新颖的训练策略,它有助于在不增加额外参数的前提下提升模型性能。传统的卷积可以描述为
。该团队将卷积核分解为N个核基
。所提训练策略包含多个阶段,
在第一个阶段(表示为0-th),模型从头开始训练,核基数
,所有卷积核参数通过Xaiver-Uniform进行初始化,并通过
合并权值;
在第t阶段(
),第
个核基随机初始化,合并权值时加权系数为
;
在完成模型训练后,仅仅合并后的权值k与偏差b得以保留,而核基与合并参数无需保留。下图给出了所提训练方案与模型指标提升示意图。可以看到:模型的性能随着核基的数量增多而逐渐增加。
image-20200916172405524
在网络结构方面,该团队在IMDN的基础上进行了如下改进:
Conv3x3->LeakrReLU
替换为GConv3x3->PReLU->Conv1x1
,注:组卷积会将通道数倍增;该团队提出了一种简单而有效的像素注意力网络(Pixel Attention Network, PAN),它以仅仅272149参数量取得了与MSRResNet相当的性能。该方法的主要贡献在于像素注意力机制,下图给出了所提凸显赶超分网络结构图。
image-20200916173524257
从上图可以看到:所提网络架构包含三个阶段:特征提取、非线性映射以及重建模块。像素注意力机制在非线性映射与重建模块中进行了应用。
)注意力特征;而空间注意力机制则在于得到一个2D(
)注意力特征。不同于上述两种注意力机制,该方法提出了一种像素注意力机制,它将生成3D(
)注意力特征,见上图,可以看到:它仅仅采用1x1卷积+sigmoid得到3D注意力特征。
卷积用于特征降维,上分支同时还包含两个
卷积,一个用于PA模块,该分支用于将特征
变换到
;下分支仅仅包含一个
卷积用于生成
(因为原始信息需要进行保留)。最后
通过Concat+卷积方式融合得到
,为加速训练,SC-PA还引入了残差连接。各位同学有没有觉得这个其实跟ScConv的思想差不多呢?
在训练阶段,训练集为DF2K,HR图像块大小为
,BatchSize=32,损失函数为L1,优化器为Adam;在验证阶段,所提方法取得了29.00dB@DIV2K-val,推理耗时为0.0758s@Ti1080。
image-20200916175259565
上图给出了HaiYun团队所提出的网络架构示意图,受启发于LatticeNet,该方法设置了一种Lattice Block, LB
,它包含两个蝶式结构用于组合两个残差模块。下图给出了LatticeNet一文的LB结构示意图,对该方法感兴趣的同学建议去看一下LatticeNet一文。这里就不再过多介绍了。