AIM2020 Efficient Super Resolution: Methods and Results

时间:2022-07-25
本文章向大家介绍AIM2020 Efficient Super Resolution: Methods and Results,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

AIM2020-ESR竞赛旨在设计一种这样的网络:在具有PSNR指标与MSRResNet相当的水平的同时,从推理耗时、参数量、FLOPs、Activations以及内存占用等方面进行至少一个维度的降低。其任务以4倍超分为基准,训练集、验证集以及测试集均为DIV2K,由于该任务的目的不在于刷新PSNR指标,故在训练阶段可以采用额外的训练数据,比如Flickr2K、OST等数据集。

在竞赛持续期间共有150名注册参与人员,25个队伍提交了结果,其中五个队伍因其模型PSNR弱于MSRResNet而未进行排名。我们先来看一下AIM2020-ESR的最终排名吧,见下图。

image-20200916155112362

背景说明

ESR竞赛是 AIM2020竞赛的其中一个组成部分,该竞赛有这样几个目的:

  • adavance research on efficient SR
  • compare the efficiency of different method
  • offer an opportunity for academic and industrial attendees to interact and explore collaborations.

数据集

沿着已有的NTIRE2017竞赛,该竞赛仍然采用DIV2K数据。DIV2K包含1000整2K分辨率的RGB图像,其中800用于训练,100用于验证,100用于测试(无GT)。在该竞赛中LR通过bicubic方式进行4x下采样得到。

注:由于该竞赛目标不在于提升模型的PSNR指标,故而在训练阶段可以采用额外的数据集,Flickr2K、OST等数据均可。

MSRResNet

该基准模型是ESRGAN一文在SRGAN的基础上设计的一种超分网络,它将用于该竞赛baseline。MSRResNet包含16个残差模块,一个全局跳过连接,每个残差模块由两个3x3卷积+ReLU激活构成,而全局跳过连接分支由双线性插值得到。

MSRResNet是经过DIV2K、Flickr2K、OST等数据训练所得,其相关指标统计如下:

  • 参数量为1517571(1.5M)
  • DIV2K验证集与测试集的PSNR指标分别为29.00dB与28.70dB;
  • 在DIV2K验证集上的平均推理耗时为0.110s(PyTorch1.5.1, CUDA Tookkit10.2, CuDNN7.6.2, Titan XP GPU);
  • 输入为
256times256

时的FLOPs为166.3G;

  • 输入为
256times256

时的Activations为292.55M;

  • 输入
256times 256

时的最大GPU内存占用为610M;

  • 卷积层的数量为37.

对于MSRResNet感兴趣的同学可以去如下两个链接查看相关代码:

  1. https://github.com/znsc/MSRResNet
  2. https://github.com/xinntao/BasicSR

竞赛参与说明

在竞赛持续期间,主要有两个阶段:

  • Development and Validation:在这一阶段,参赛人员可以拿到800LR/HR训练数据对于100LR验证数据;如果需要,参赛人员同样可以采用MSRResNet作为baseline在自己的系统上测试耗时、显存、FLOPs等指标以进行更好的对标。参赛人员可以提交验证集的HR结果已度量其模型的PSNR指标并得到反馈,但模型的参数量、推理耗时则需要参赛人员自己统计。
  • Testing:在最终的测试阶段,参赛人员可以拿到100LR测试图像,参赛人员需要提交其超分结果到Codalab评估服务器并将相应代码与说明书email给竞赛组织人员,方便组织人员统计最终的结果。最终组织人员会将最后的排名反馈给参赛人员。

关于竞赛的评价工具与度量指标,该竞赛需要统计的指标包含: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)。

从上表可以得出如下几点:

  • NJU_MCG团队取得冠军,AiriA_CG与UESTC_MediaLab分别获得亚军与季军;
  • NJU_MCG与AiriA_CG具有最快的推理耗时;XPixel具有最少的参数量;在FLOPs方面,SC-CVLab,NJU_MCG以及MLVC排名前三且具有相近的FLOPs;NJU_MCG、AiriA_CG具有最少的Activations;MLVC具有最少的内存占用。
  • MLVC与SC-CVLAB与参数量与FLOPs方面占优,但推理耗时并不匹配;404NotFound与MLVC具有比IMDN更少的参数朗,但推理速度反而更慢。

image-20200916162240093

为分析上述指标间的差异性,作者统计了参数量、FLOPs、Activations、最大GPU内存占用与推理耗时之间SROCC(Spearman rank-order correlation coefficient)关系。结果剪商标。从表中结果可以看到:Activations与推理耗时之间的相干性更强。事实上在恺明大神的一文中也有类似结论。但同时需要注意:参数量、FLOPs仍然是评价模型高效性的非常重要的参考指标。

Architecture and main ideas

参赛人员提出了不同的技术用于提升MSRResNet与IMDN的有效性,这些技术大体上可以归结为以下几方面:

  • 改进IMDN:冠军方案NJU_MCG提出了一种高效RFDB(Residual Feature Distillation Block, RFDB),它集成了浅层残差连接与ESA模块,同时采用
1times1

卷积进行特征蒸馏,并将通道数由64降低到50;AiriA_CG采用ACBlock(Asymmetric Convolution)改进IMDN中的卷积;受启发于IdelBlock,ZJUESR2020提出了多尺度IdleBlock;

  • 改变上采样模块:不同MSRResNet中的两次PixelShuffle(X2)->Conv->LeakyReLU->上采样方式,Xpixel提出采用最近邻插值替换PixelShuffle;NJU_MCG、Airia_CG、HaiYun、IPCV-IITM则直接采用PixelShuffle进行4x上采样。
  • 全局特征集成:不同于IMDN中的局部特征集成策略,以下几个团队(NJU_MCG, HaiYun, IPCV_IITM, 404NotFound)采用类似RDN的全局特征集成策略;NJU_MCV提出将4个RFDN的结果进行Concat,后接
1times1

卷积进行特征降维,最后采用Conv3x3->PixelShuffle输出HR图像。

  • 集成注意力模块:NJU_MCG提出在RFDN模块中插入空间注意力模块ESA;Xpixel提出像素注意力生成3D注意力图;MLVC提出多注意力模块(ESA+CEA)。
  • 递归降低参数量:Zhang9678提出采用LSTM降低参数量,InnoPeak_SR提出了递归残差模块;
  • 网络剪枝:SC_CVLAB提出了一种细粒度畅通剪枝策略从过参数模型中得到轻量型模型;
  • 替换MSRResNet中的残差模块:Xpixel提出采用自矫正卷积与像素注意力机制替换残差模块;404NotFound提出采用Ghost卷积与
1times3

卷积替换

3times 3

卷积;SAMSUNG_TOR_AIC提出采用改进MobileNetV3模块替换残差模块。

Fairness

在该竞赛的验证与测试阶段存在一些“公平”与“不公平”的tricks:

一方面,采用额外的训练数据是一种“公平”的trick,这是由于MSRResNet采用DIV2K、Flickr2K、OST等数据训练得到(大多参赛队伍均采用所提供的DIV2K与额外的Flickr2K进行训练)。除了额外数据外,训练阶段的数据增广策略也是一种“公平”的trick;

另一方面,采用验证集的LR/HR以及测试的LR进行训练是一种“不公平”的trick。首先,验证集参与训练会提升验证PSNR指标;其次,有助于产生PSNR增益;最后,PSNR可以通过知识蒸馏方式在验证集与测试集上得到提升。

Conclusion

从前述分析,我们可以得出以下几个结论:

  • 所提方法刷新的ESR的SOTA指标:相比IMDN,NJU_MCG方案具有明显的提升;
  • FLOPs与参数量与模型的高效性相干性较弱,而Activation是一种更合理的度量指标;
  • top6的方案均采用手动设计网络架构;剪枝、蒸馏、量化以及NAS在ESR方面的应用需要更进一步的研究;
  • 未来更高效的超分网络需要将推理耗时、参数量、FLOPs以及Activation纳入考入范围。

Methods

NJU_MCG

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图像块的大小为

256times 256

,BatchSize=64,损失函数为L1,优化器为Adam,初始学习率为

5times 10^{-4}

,每200epoch学习折半,训练1000epoch后改为L2损失进行微调,同时学习率设置为

1times 10^{-4}

,训练数据为DIV2K与Flickr2K。

Airia_CG

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卷积进行特征融合。该网络的训练包含两个阶段四个步骤:

  • Stage1:采用原始AC模块(三个并行非对称卷积)配置FIMDN。
    • 在DIV2K+Flickr2K(DF2K)数据集上对FIMDN进行训练,HR图像块大小为
    256times 256

    ,Batch=64,损失函数为L1,优化器为Adam,初始学习率为2e-4,每3600epoch折半,合计训练18000epoch;

    • 在DF2K数据集上微调,HR图像块大小为
    640times640

    ,BatchSize=24,损失函数为L2,初始学习率为1e-5,每720epoch折半,合计训练600epoch;

    • 在DF2K数据集上微调,HR图像块大小为
    640times640

    ,BatchSize=4,损失函数为L2,初始学习率为1e-6,每400epoch折半,合计训练2000eoch;

  • Stage2:将AC模块转换成单个
3times3

卷积

  • 在DIV2K数据集上进行微调,HR图像块大小为
640times640

,BatchSize=24,损失函数为L2,初始学习率为1e-6,每200epoch折半,合计训练1000epoch。

UESTC-MediaLab

该团队提出了一种新颖的训练策略,它有助于在不增加额外参数的前提下提升模型性能。传统的卷积可以描述为

F_{output} = F_{input} * k + b

。该团队将卷积核分解为N个核基

k = sum pi_i times k_i

。所提训练策略包含多个阶段,

在第一个阶段(表示为0-th),模型从头开始训练,核基数

N_0=3

,所有卷积核参数通过Xaiver-Uniform进行初始化,并通过

frac{1}{N_0}

合并权值;

在第t阶段(

tge 1

),第

delta_t

个核基随机初始化,合并权值时加权系数为

frac{1}{N_t}, N_t=N_{t-1}+delta_t

;

在完成模型训练后,仅仅合并后的权值k与偏差b得以保留,而核基与合并参数无需保留。下图给出了所提训练方案与模型指标提升示意图。可以看到:模型的性能随着核基的数量增多而逐渐增加。

image-20200916172405524

在网络结构方面,该团队在IMDN的基础上进行了如下改进:

  • Conv3x3->LeakrReLU替换为GConv3x3->PReLU->Conv1x1,注:组卷积会将通道数倍增;
  • 采用了自适应跳过连接;
  • 网络的深度与宽度进行了调整以更好的均衡模型效率和性能。

Xpixel

该团队提出了一种简单而有效的像素注意力网络(Pixel Attention Network, PAN),它以仅仅272149参数量取得了与MSRResNet相当的性能。该方法的主要贡献在于像素注意力机制,下图给出了所提凸显赶超分网络结构图。

image-20200916173524257

从上图可以看到:所提网络架构包含三个阶段:特征提取、非线性映射以及重建模块。像素注意力机制在非线性映射与重建模块中进行了应用。

  • PixelAttention。通道注意力机制目标在于得到一个1D(
Ctimes1times1

)注意力特征;而空间注意力机制则在于得到一个2D(

1times Htimes W

)注意力特征。不同于上述两种注意力机制,该方法提出了一种像素注意力机制,它将生成3D(

Ctimes H times W

)注意力特征,见上图,可以看到:它仅仅采用1x1卷积+sigmoid得到3D注意力特征。

  • SC-PA Block。所提方法的主要模块为SC-PA(Self-Calibrated Convolution with Pixel Attention),它是在ScConv的基础上引入了PA注意力机制。SC-PA包含两个分支,每个分支在起始阶段你包含一个
1times1

卷积用于特征降维,上分支同时还包含两个

3times3

卷积,一个用于PA模块,该分支用于将特征

X_1

变换到

Y_1

;下分支仅仅包含一个

3times3

卷积用于生成

Y_2

(因为原始信息需要进行保留)。最后

Y_1, Y_2

通过Concat+卷积方式融合得到

Y_3

,为加速训练,SC-PA还引入了残差连接。各位同学有没有觉得这个其实跟ScConv的思想差不多呢?

  • U-PA Bloc。除了SC-PA模块外,PA还被集成进了重建模块。重建模块还是比较简单的,这里就不过多赘述了,唯一需要注意的就是这里采用最近邻插值(主要目的可能就是降低计算量和参数量吧),而非PixelShuffle或者转置卷积。

在训练阶段,训练集为DF2K,HR图像块大小为

256times256

,BatchSize=32,损失函数为L1,优化器为Adam;在验证阶段,所提方法取得了29.00dB@DIV2K-val,推理耗时为0.0758s@Ti1080。

Haiyun

image-20200916175259565

上图给出了HaiYun团队所提出的网络架构示意图,受启发于LatticeNet,该方法设置了一种Lattice Block, LB,它包含两个蝶式结构用于组合两个残差模块。下图给出了LatticeNet一文的LB结构示意图,对该方法感兴趣的同学建议去看一下LatticeNet一文。这里就不再过多介绍了。