ResNeSt 论文阅读笔记
论文:《ResNeSt: Split-Attention Networks》
论文链接:https://hangzhang.org/files/resnest.pdf
代码链接:https://github.com/zhanghang1989/ResNeSt
摘要
尽管图像分类模型最近一直在继续发展,但是由于其简单且模块化的结构,大多数下游应用(例如目标检测和语义分段)仍将ResNet变体用作backbone。 我们提出了一个模块化的Split-Attention block,该block可实现跨feature map groups的attention。 通过以ResNet样式堆叠这些Split-Attention块,我们获得了一个称为ResNeSt的新ResNet变体。 我们的网络保留了完整的ResNet结构,可直接用于下游任务,而不会引起额外的计算成本。
ResNeSt模型的模型复杂度优于其他网络。 例如,ResNeSt-50使用224×224的单个crop-size在ImageNet上实现了81.13%的top-1 accuracy,比以前的最佳ResNet变种高出1%以上。 此改进还有助于下游任务,包括目标检测,实例分割和语义分割。 例如,通过简单地用ResNeSt-50替换ResNet-50backbone,我们将MS-COCO上的Faster RCNN的mAP从39.3%提高到42.3%,并将ADE20K上的DeeplabV3的mIoU从42.1%提高到45.1%。
1 引言
图像分类是计算机视觉研究的基本任务。 经过图像分类训练的网络通常充当为其他应用设计的神经网络的backbone,例如目标检测[22,46],语义分割[6、43、73]和姿态估计[14、58]。 最近的工作通过大规模的神经体系结构搜索(NAS)显着提高了图像分类的准确性[45,55]。 尽管具有最先进的性能,但这些基于NAS的模型通常并未针对通用/商业处理硬件(CPU / GPU)上的训练效率或内存使用情况进行优化[36]。 由于过多的内存消耗,这些模型的某些较大版本甚至无法在每台设备batch-size合适的GPU上进行训练2 [55]。 这限制了将NAS派生的模型用于其他应用,尤其是涉及密集预测(例如分割)的任务。(NAS的局限性)
关于下游应用的最新工作仍然使用ResNet [23]或其变体之一作为backbone CNN。其简单的模块化设计可轻松适应各种任务。但是,由于ResNet模型最初是为图像分类而设计的,由于感受野大小有限且缺乏跨通道交互,它们可能不适合各种下游应用。这意味着要提高给定计算机视觉任务的性能,需要进行“网络手术”来修改ResNet,以使其对特定任务更加有效。例如,某些方法添加了金字塔模块[8,69]或引入了long-range连接[ [56]或使用跨channel特征图attention[15,65]。虽然这些方法确实提高了某些任务的学习学习性能,但它们提出了一个问题:我们是否可以创建具有通用改进特征表示的通用backbone,从而提高性能跨通道信息同时显示在下游应用中是成功的[56、64、65],而最近的图像分类网络则更侧重于分组或深度卷积[27、28、54、60]。尽管它们在分类任务中具有出色的计算能力和准确性,但这些模型无法很好地转移到其他任务,因为它们的孤立表示无法捕获跨channel关系[27,2 8]。因此,具有跨通道表示的网络是理想的。
作为本文的第一个贡献,我们探索了ResNet [23]的简单体系结构修改,将feature map 拆分attention纳入各个网络模块中。 更具体地说,我们的每个block都将特征图分为几组(沿通道维数)和更细粒度的子组或splits,其中,每个组的特征表示是通过其分割表示的加权组合确定的( 根据全局上下文信息选择权重)。 我们将结果单元称为Split-Attention block,它保持简单且模块化。 通过堆叠几个Split-Attention block,我们创建了一个类似ResNet的网络,称为ResNeSt(代表“ split”)。我们的体系结构不需要比现有ResNet变量更多的计算,并且很容易被用作其他视觉任务的backbone 。
本文的第二个贡献是图像分类和迁移学习应用的大规模基准测试。 我们发现,利用ResNeSt backbone的模型能够在几个任务上达到最先进的性能,即:图像分类,目标检测,实例分割和语义分割。 提出的ResNeSt优于所有现有的ResNet变体,并且具有相同的计算效率,甚至比通过神经结构搜索(NAS)生成的最新的CNN模型[55]更好地实现了speed-accuracy的折衷,如表1所示。 在MS-COCO实例分割中,使用ResNeSt-101backbone的Cascade RCNN [3]模型实现了48.3%的boxes mAP和41.56%的mask mAP。 我们的单个DeepLabV3 [7]模型再次使用ResNeSt-101backbone,在ADE20K场景解析验证集上的mIoU达到46.9%,比以前的最佳结果高出1%以上。 其他结果可以在第5节和第6节中找到。
2 相关工作
现代CNN结构。自从AlexNet [34]以来,深度卷积神经网络[35]主导了图像分类。随着这种趋势,研究已经从工程手工特征转移到工程网络体系结构。 NIN [40]首先使用全局平均池化层来代替沉重的全连接层,并采用1×1卷积层来学习特征图通道的非线性组合,这是第一类特征图注意机制。 VGG-Net [47]提出了一种模块化的网络设计策略,将相同类型的网络blocks重复堆叠,从而简化了网络设计的工作流程,并为下游应用提供了迁移学习的机会。Highway network[50]引入了公路连接,使信息跨几层流动而不会衰减,并有助于网络收敛。 ResNet [23]建立在开拓性工作成功的基础上,引入了identity skip connecting,减轻了深度神经网络中消失梯度的难度,并允许网络学习更深层的特征表示。 ResNet已成为最成功的CNN架构之一,已被各种计算机视觉应用采用。
Multi-path 和 特征图 Attention。多路径表示已在GoogleNet [52]中取得成功,其中每个网络块均由不同的卷积内核组成。 ResNeXt [61]在ResNet bottle block中采用组卷积[34],将多路径结构转换为统一操作。 SE-Net [29]通过自适应地重新校准通道特征响应来引入通道注意机制。 SK-Net [38]引起了两个网络分支对特征图的关注。 受先前方法的启发,我们的网络将channel-wise的注意力概括为特征图组表示,可以使用统一的CNN运算符对其进行模块化和加速。
神经结构搜索。随着计算能力的提高,人们的兴趣已经开始从手动设计的体系结构转移到系统搜索的体系结构,这些体系结构可以适应特定任务。 最近的神经体系结构搜索算法已经自适应地产生了CNN体系结构,这些体系结构实现了最新的分类性能,例如:AmoebaNet [45],MNASNet [54]和EfficientNet [55]。 尽管元网络结构在图像分类方面取得了巨大成功,但它们彼此之间却截然不同,这使得下游模型难以建立。 相反,我们的模型保留了ResNet元结构,可以将其直接应用于许多现有的下游模型[22、41、46、69]。 我们的方法还可以扩大神经体系结构搜索的搜索空间,并有可能提高整体性能,这可以在以后的工作中进行研究。
3 Split-Attention Networks
现在,我们引入Split-Attention blocks,该blocks启用了跨不同featuremap组的feature map attention。 稍后,我们将描述我们的网络实例化以及如何通过标准CNN操作加速此体系结构。
3.1 Split-Attention Block
我们的Split-Attention blocks是一个计算单元,由特征图组和Split Attention操作组成。 图1(右)描绘了Split-Attention模块的概述。
图1:将我们的ResNeSt block与SE-Net [30]和SK-Net [38]进行比较。 图2中显示了Split-Attention单元的详细视图。为简单起见,我们在cardinality-major视图中显示ResNeSt block(具有相同ardinal group index的feature map组彼此相邻)。 我们在实际实现中使用radix-major,可以通过组卷积和标准CNN层对其进行模块化和加速(请参阅补充材料)。
图2:cardinal group内的Split-Attention。 为了简化图中的可视化,我们在该图中使用。
特征图组。如在ResNeXt块[61]中一样,特征可以分为几组,特征图组的数量由基数(cardinality)超参数K给出。我们将所得的特征图组称为基数组(cardinal groups)。 我们引入了一个新的基数(radix)超参数R,该基数指示cardinal group内的split 数目,因此特征组的总数为G = KR。 我们可以应用一系列变换到每个单独的组,则对于每个组的中间表示为
。
Cardinal Groups中的Split Attention。继[30,38]之后,每个cardinal的组合表示可以通过跨多个splits的逐元素求和来融合而获得。 第 k 个cardinal group的表示为,其中
,并且H,W和C 是block输出特征图的大小。 可以使用跨空间维度
的全局平均池来收集embedded channel-wise统计信息的全局上下文信息[29,38]。 在这里,第 c 个分量的计算公式为:
cardinal group组表示V k 2 RH×W×C = K的加权融合是使用channel-wise的soft attention聚合的,其中,每个特征图通道均使用加权splits组合产生。 第c个通道的计算公式为:
其中通过(soft)分配权重表示:
并且映射根据全局上下文表示
确定第 c 个channel的每个split的权重。
ResNeSt Block。然后,将cardinal group表示形式沿通道维度连接起来:。与标准残差块一样,如果输入和输出特征图共享相同的形状,则使用shortcut connection:
生成我们的Split-Attention blocks的最终输出 Y。 对于具有跨步的blocks,将适当的变换 T 应用于shortcut connection以对齐输出形状:
。 例如, T可以是跨步卷积(stride convolution)或卷积-池化组合。
Instantiation, Acceleration, and Computational Costs。图1(右)显示了我们的Split-Attention块的实例,其中组变换是一个1×1卷积,然后是3×3卷积,并且注意权重函数
使用带有ReLU**的两个全连接层进行参数化。 我们以cardinality-major的视图(具有相同cardinality index的feature map组彼此相邻)绘制此图,以方便地描述总体逻辑。 通过将布局切换到radix-major视图,可以使用标准CNN层(例如组卷积,组全连接的层和softmax操作)轻松加速这个block,我们将在补充材料中对其进行详细描述。 Split-Attention块的参数数量和FLOPS与具有相同cardinality和通道数量的残差块[23,60]大致相同。
和现有Attention方法的关系。在SE-Net[29]中首次引入的“squeeze-and-attention”(在原文中称为“excitation”)概念是利用一个全局上下文来预测信道上的注意因素。当radix=1时,我们的Split-Attention block对每个cardinal group应用一个sequeeze-and-attention操作,而SE-Net在整个block的顶部操作,而不管多个groups。之前的SK-Net[38]模型引入了两个网络分支之间的特征注意,但是其操作并没有在训练效率和向大型神经网络扩展方面进行优化。我们的方法概括了之前在cardinal group设置[60]中关于特征图注意力的工作[29,38],并且它的实现保持计算效率。图1显示了与SE-Net和SK-Net块的总体比较。