论文阅读——ResNeSt: Split-Attention Networks

  • 2020 年 11 月 30 日
  • AI

一、摘要

  尽管图像分类任务持续取得进步,诸如物体检测和语义分割等下游应用在选择骨干网络时仍然大量采用resnet及其变体,因为resnet简单且模块化的结构。本文提出了一个模块化的分离-注意力模块(split-attention block),实现在网络中对特征图跨组(feature groups)使用注意力机制。通过以resnet风格对split-attention block进行堆叠,我们得到一个新的resnet变体,称为ResNeSt。该网络可以直接在下游应用中即插即用,且不引入额外的计算成本。

  ResNeSt的性能超过了其他所有计算量接近的网络。以分离任务为例,该网络在224×224的crop size下可达到81.13的top-1准确率,比当前最好的resnet变体提升了1%。Backbone的提升进一步提升了检测和分割等下游任务等指标:仅仅把backbone从ResNet-50替换为ResNeSt-50,就可以将Faster RCNN的在MS-COCO数据集上的指标从39.3%提升到42.3%,将DeeplabV3在ADE20K数据集上的mIoU从42.1%提升到45.1%。

二、介绍

2.1 为什么提出?

答:分类是计算机视觉研究领域的基础任务。表达能力更优秀的backbone可以提升检测、分割等多种下游任务的性能。不过这些任务在使用backbone时存在以下问题:

  1. 尽管NAS显著提升了图像分类的准确率,但是NAS-derived model往往并没有针对训练效率或者通用/消费级处理硬件(CPU或GPU)的内存使用率上面进行优化。这使得NAS在其他应用上的使用收到限制,尤其是分割等密集预测的任务
  2. 多数下游应用目前仍在使用resnet或其变体作为backbone。不过resnet是为分类任务设计的,其他任务使用时可能存在sub-optimal的情况:
    • 有限的感受野尺寸
    • lack of cross-channel interaction,未利用上跨通道的信息融合(需要进一步理解)
    • 因此不同的视觉任务往往需要对resnet backbone做针对性的network surgery

因此,能否提出一个backbone,让其可以学习到丰富的特征表达进而同时可用于各种下游任务?作者认为这个backbone实现的关键在于利用好cross-channel information(相比现有resnet变体以及group/depth-wise based model)


NIN [40] first uses a global average pooling layer to replace the heavy fully connected layers, and adopts 1×1 convolutional layers to learn non-linear combination of the featuremap channels, which is the first kind of featuremap attention mechanism.


三、方法

Key Idea:

  • 将SE-Net和SK-Net中用到的对特征使用跨通道attention的方式进一步扩展到对特征图跨group计算attention,并使用普通CNN操作进行模块化,提出一个新的split-attention block。

    split-attention
  • 将split-attention block以resnet的方式进行堆叠,得到ResNeSt。该网络可以直接替换检测、分割等任务的backbone并显著提升指标。

Other Idea

  • Auto-Augment is a strategy that augments the training data with transformed images, where the transformations are learned adaptively.

  • 本文使用了很多LiMu论文中的分类网络训练技巧:

    • 针对dense prediction任务,在resnet transition block中可以用k=3的average pooling代替strided conv,实现降采样
    • ResNet-D的技巧:替换7×7卷积为3×3;shortcut stride=2时在1×1 conv前加avg pool避免信息丢失
    • Label Smoothing、MixUp、DropBlock等

四、评价

  1. 本文属于将Attention机制用在CNN上的又一大尝试,在SENet和SKNet基础上将attention进一步推广到group(cardinality)维度。
  2. 本文进一步证明了李沐论文中bag of tricks的有效性。其中一些技巧非常值得借鉴学习
  3. Cardinality这个术语就是出自本文,后面一些涉及attention的论文将其定义为“一个卷积层实现的transform个数”,计算上面等同于group数