前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >AIM2020 Efficient Super Resolution: Methods and Results

AIM2020 Efficient Super Resolution: Methods and Results

作者头像
AIWalker
发布2020-09-22 10:52:22
1.5K0
发布2020-09-22 10:52:22
举报
文章被收录于专栏:AIWalker

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);
  • 输入为
256\times256

时的FLOPs为166.3G;

  • 输入为
256\times256

时的Activations为292.55M;

  • 输入
256\times 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模块,同时采用
1\times1

卷积进行特征蒸馏,并将通道数由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,后接
1\times1

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

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

卷积替换

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

256\times 256

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

5\times 10^{-4}

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

1\times 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图像块大小为
    256\times 256

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

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

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

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

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

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

卷积

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

,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阶段(

t\ge 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(
C\times1\times1

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

1\times H\times W

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

C\times H \times W

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

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

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

3\times3

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

X_1

变换到

Y_1

;下分支仅仅包含一个

3\times3

卷积用于生成

Y_2

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

Y_1, Y_2

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

Y_3

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

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

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

256\times256

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

Haiyun

image-20200916175259565

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

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-09-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 AIWalker 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 背景说明
    • 数据集
      • MSRResNet
        • 竞赛参与说明
        • 竞赛结果
          • Architecture and main ideas
            • Fairness
              • Conclusion
              • Methods
                • NJU_MCG
                  • Airia_CG
                    • UESTC-MediaLab
                      • Xpixel
                        • Haiyun
                        相关产品与服务
                        GPU 云服务器
                        GPU 云服务器(Cloud GPU Service,GPU)是提供 GPU 算力的弹性计算服务,具有超强的并行计算能力,作为 IaaS 层的尖兵利器,服务于生成式AI,自动驾驶,深度学习训练、科学计算、图形图像处理、视频编解码等场景。腾讯云随时提供触手可得的算力,有效缓解您的计算压力,提升业务效率与竞争力。
                        领券
                        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档