代码:https://github.com/zhanghang1989/ResNeSt
论文:https://hangzhang.org/files/resnest.pdf
尽管图像分类模型最近不断发展,但是由于其简单而模块化的结构,大多数下游应用程序(例如目标检测和语义分割)仍将ResNet变体用作backbone。ResNeSt展示了一个简单的模块:Split-Attention,该块可实现跨特征图的注意力。通过以ResNet样式堆叠这些Split-Attention块,作者获得了一个称为ResNeSt的新ResNet变体。ResNeSt保留了完整的ResNet结构,可直接用于下游任务,而不会引起额外的计算成本。
给出ResNeSt战绩如下:
- ResNeSt-50在ImageNet上实现了
81.13%
的top-1。 - 简单地用ResNeSt-50替换ResNet-50,可以将MS-COCO上的FasterRCNN的mAP从
39.25%
提高到42.33%
! - 简单地用ResNeSt-50替换ResNet-50,可以将ADE20K上的DeeplabV3的mIoU从
42.1%
提高到45.1%
。
性能得到了显著的提升,但是参数量并没有增加,与ResNeXt、SEnet等前辈们的pk结果如下:
论文贡献
- 探索了ResNet的结构修改,提出Split-Attention,将特征图的注意力分散到各个网络模块中。
更具体地说,我们的每个块都将特征图分为几组(沿通道维数)和细粒度的子组或分割,其中每组的特征表示是通过其分割表示的加权组合来确定的( 根据全局上下文信息选择权重)。作者将结果单元称为Split-Attention
块,它保持简单且模块化。通过堆叠几个Split-Attention
块创建了一个类似ResNet
的网络,称为ResNeSt
(S代表‘split’
)
- 在图像分类和迁移学习应用的大规模基准测试。
作者发现,利用ResNeSt
主干的模型能够在几个任务上达到最先进的性能,即:图像分类,对象检测,实例分割和语义分割。本文所提出的ResNeSt
优于所有现有的ResNet
变体,并且具有相同的计算效率,甚至比通过神经架构搜索生成的最新的CNN模型[55]达到了更好的速度精度权衡,如表1所示。
ResNeSt
Relate work
- GoogleNet - 采用Multi-path机制,其中每个网络块均由不同的卷积kernel组成
- ResNeXt - 在Resnet bottle中采用组卷积,multi-path结构转换为统一操作。
- SE-Net - 通过自适应地重新校准通道响应来引入通道注意力(channel-attention)机制
- SK-Net - 通过两个网络分别引入特征图注意力(feature-map)
受先前方法的启发,ResNetSt是上述思想的集大成者,ResNeSt将 channel-wise attention
概括为特征图组表示,这样就可以使用统一的CNN运算符对其进行模块化和加速。
ResNeSt和SE-Net、SK-Net的对应图示如下:
(翻译)图2中显示了Split-Attention单元的详细视图。为简单起见,我们在基数主要视图中显示ResNeSt块(具有相同基数组索引的特征图组彼此相邻)。我们在实际实现中使用了基数优先级,可以通过组卷积和标准CNN层对其进行模块化和加速。
Split-Attention Networks
Split Attention结构如下图所示:
从Fig 1和Fig 2可以看到,都有split的影子,比如Fig 1中的K(k)
和Fig 2 中的R(r)
都是超参数,一共有G = K * R
组。
-
- Feature-map Group
与ResNeXt块中一样,输入特征图可以沿通道维度分为几组,特征图组的数量由基数超参数K给出。作者将结果特征图组称为基数组。引入了一个新的基数超参数R,该基数指示了基数组中的拆分数。那么输入X会沿着通道尺寸被拆分成G = K * R
组。
-
- Split Attention in Cardinal Groups
与[30,38]一样,可以通过跨多个拆分的元素加和来获得每个基数组的组合表示。第k个基数组表示为:
具有嵌入的通道统计信息的全局上下文信息可以通过跨空间维度的s ** k 全局平均池来收集
s ** k由如下计算得到:
V ** k 基数组表示的加权融合可以使用通道方式的软注意力进行聚合,其中每个特征图通道均使用加权拆分组合生成。第c个通道计算如下:
其中,
-
- ResNeSt Block
将基数组表示形式沿通道维度连接起来:
与标准残差块一样,我们的Split-Attention块的最终输出Y是使用快捷连接生成的:Y = V +X,如果输入输出的feature map尺寸一样。对于具有跨步的块,将适当的变换T应用于残差连接以对齐输出形状:
T可以是跨步卷积或带池组合卷积。
网络和训练
平均下采样
当迁移学习的下游应用是密集的预测任务(例如检测或分段)时,保留空间信息就变得至关重要。卷积层需要使用零填充策略来处理特征图边界,这在转移到其他密集的预测任务时通常不是最佳的。 而不是在过渡块(对空间分辨率进行下采样)上使用分步卷积,我们使用内核大小为3 * 3的平均池化层。
来自Resnet-D的调整
我们还采用了两个简单但有效的ResNet修改,这些修改由:
(1)将第一个7 * 7卷积层替换为三个连续的3* 3卷积层,它们具有相同的感受野大小,并且计算成本与原始设计相似。
(2)对于步长为2的过渡块,在1 * 1卷积层之前,将2 * 2平均池化层添加到快捷连接。
此外,论文还提供了很多训练tricks,如下:
- Large Mini-batch Distributed Training.
- Label Smoothing
- Auto Augmentation.
- Mixup Training
- Large Crop Size
- Regularization