ResNeSt: Split-Attention Networks

代码地址:
提供PyTorch和MXNet双版本:https://github.com/zhanghang1989/ResNeSt

动机:
1.由于ResNet模型最初是为图像分类而设计的,它们可能不适合各种下游应用,因为接收场大小有限且缺乏跨通道交互。这意味着提高特定计算机视觉任务的性能需要网络手术来修改ResNet,使其对特定任务更有效。
2.最近的工作通过大规模神经档案结构搜索(NAS)显著提高了图像分类的准确性。尽管这些模型拥有最先进的性能,但它们通常并没有针对一般/商用处理硬件(CPU/GPU)上的训练效率或内存使用进行优化。由于过度的内存消耗,这些模型的一些较大版本甚至不能在GPU上使用适当的每个设备批量大小为2的进行训练。这限制了在其他应用程序中采用nas派生的模型,特别是涉及到密集预测(如分割)的任务。

贡献:
1.我们探索了ResNet 的简单体系结构修改,将功能图拆分注意力纳入各个网络模块中。 更具体地说,我们的每个块都将特征图分为几组(沿通道维数)和更细粒度的子组或分割,其中,每个组的特征表示是通过其分割表示的加权组合确定的( 根据全局上下文信息选择权重)。 我们将结果单元称为Split-Attention块,它保持简单且模块化。 通过堆叠几个Split-Attention块,我们创建了一个类似ResNet的网络,称为ResNeSt(S代表“ split”)。 我们的架构只需要比现有ResNet变体更多的计算,并且很容易被用作其他视觉任务的基础。
2.使用ResNeSt主干的模型能够在多个任务上实现最优性能,即:图像分类、对象检测、实例分割和语义分割。所提出的ResNeSt比所有现有的ResNet变种性能更好,计算效率相同,甚至比通过神经结构搜索生成的最先进的CNN模型取得更好的速度精度权衡。

数据证明:
1.ResNeSt-50 在 ImageNet 上实现了81.13% top-1 准确率。
2.简单地用ResNeSt-50替换ResNet-50,可以将MS-COCO上的Faster R-CNN的mAP从39.25%提高到42.33%。
3.简单地用ResNeSt-50替换ResNet-50,可以将ADE20K上的DeeplabV3的mIoU从42.1%提高到45.1%。

结构:
ResNeSt: Split-Attention Networks
上图是三个网络的对比,最右侧是提出的ResNeSt,一共是分K个Cardinal Groups,之后每个Cardinal Group又分为r个Split来做Split-Attention, 所以一共相当于是G=K*r个组。

ResNeSt: Split-Attention Networks
上图是Split-Attention模块,每一个输入就是一个Split,而且Split-Attention都是在一个Cardinal Group中的所有split中进行,过程同SKNet过程一样,只不过在这里是由2个分支变成了radix个分支。其实现的时候主要使用组卷积来实现这样的结构。

作者在文中给出了训练策略,具体分为以下几步:
Large Mini-batch Distributed Training;Label Smoothing;Auto Augmentation;Mixup Training;Large Crop Size;Regularization

结果:
下表展示了几种网络的对比
ResNeSt: Split-Attention Networks
在ImageNet 上进行了图像分类,轻松超越SKNet、SENet、ResNetXt和ResNet,具体性能如下表所示。
ResNeSt: Split-Attention Networks
ResNeSt 和其他SoTA的CNN模型进行性能比较(特别是NAS阵营)
ResNeSt: Split-Attention Networks

在MS-COCO 目标检测和实例分割任务上的表现性能如下
ResNeSt: Split-Attention Networks
ResNeSt: Split-Attention Networks
在ADE20K 语义分割任务上的表现性能如下:
ResNeSt: Split-Attention Networks
在扩展资料中的实验:
ResNeSt: Split-Attention Networks