卷积块注意模块
摘要我们提出了一种简单而有效的前馈卷积神经网络注意模块(Convolutional Block Attention Module, CBAM)。给定一个中间特征映射,我们的模块沿着通道和空间两个独立维度依次推导注意映射,然后将注意映射与输入特征映射相乘,进行自适应特征细化。因为CBAM是一个轻量级的通用模块,它可以无缝地集成到任何CNN体系结构中,开销可以忽略不计,并且可以与基本CNN一起进行端到端训练。我们通过在ImageNet-1K、MS COCO检测和VOC 2007检测数据集上的大量实验验证了我们的cam。
我们的实验表明,不同模型的分类和检测性能都有一致的提高,证明了CBAM的广泛适用性。代码和模型将向公众开放
1 Introduction
卷积神经网络(Convolutional neural networks, CNNs)凭借其丰富的表示能力,显著地推动了视觉任务的性能[1,2,3]。为了提高网络的性能,近年来的研究主要研究了网络的三个重要因素:深度、宽度和基数
到目前为止,从LeNet架构[4]到残差式网络[5,6,7,8],网络已经变得更加深入,具有丰富的表示。VGGNet[9]表明,将相同形状的块堆叠可以得到合理的结果。遵循同样的精神,ResNet[5]将残留块的相同拓扑结构与跳跃式连接一起堆叠,构建了一个极为深入的体系结构。GoogLeNet[10]表明宽度是提高模型性能的另一个重要因素。Zagoruyko和Komodakis[6]提出基于ResNet架构增加网络的宽度。
他们已经表明,一个28层ResNet与增加宽度可以超过具有1001层的极深ResNet。Xception [11]和ResNeXt[7]提出增加网络的基数。他们的经验表明,基数不仅节省了参数的总数,而且比其他两个因素:深度和宽度更强的表示能力
除了这些因素,我们还研究了建筑设计的另一个方面——注意。注意的意义在以往的文献中已经得到了广泛的研究[12,13,14,15,16,17]。注意力不仅能告诉你该关注什么,还能改善利益的表达。我们的目标是通过使用注意机制:关注重要的特征,抑制不必要的特征,来增加表现能力。本文提出了一种新的网络模块,命名为“卷积块注意模块”。由于卷积运算通过混合跨信道和空间信息来提取信息特征,我们采用我们的模块来强调这两个主要维度上的有意义的特征:信道和空间轴。为了实现这一目标,我们依次应用通道和空间注意模块(如图1所示),这样每个分支都可以分别了解在通道和空间轴上要参加“什么”和“到哪里”。因此,我们的模块通过学习强调或抑制哪些信息,有效地帮助信息在网络中流动
在ImageNet-1K数据集中,通过插入我们的小模块,我们从各种基线网络中获得了精度的提高,揭示了CBAM的有效性。
我们使用grad-CAM[18]可视化训练过的模型,并观察到CBAMenhanced网络比它们的基线网络更正确地关注目标对象。然后我们进行用户研究,定量评估模型可解释性的改进。我们证明,使用CBAM可以同时获得更好的性能和更好的可解释性。考虑到这一点,我们推测性能的提高来自于对无关杂波的准确注意和降噪。最后,我们在MS COCO和VOC 2007数据集上验证了目标检测性能的提高,证明了CBAM的广泛适用性。因为我们已经仔细地设计了我们的模块是轻量级的,在大多数情况下,参数和计算的开销是可以忽略不计的。
贡献: 我们的主要贡献有三方面。
1. 我们提出了一种简单而有效的注意模块(CBAM),可以广泛应用于提高cnn的表示能力。
2. 我们通过广泛的消融研究验证了我们的注意模块的有效性。
3.通过插入我们的轻量级模块,我们验证了在多个基准(ImageNet-1K、MS COCO和VOC 2007)上,各种网络的性能都得到了极大的提高
2 Related Work
......
Attention mechanism:
众所周知,注意力在人类感知中扮演着重要的角色[23,24,25]。人类视觉系统的一个重要特性是,人们不会试图一次处理整个场景。相反,为了更好地捕捉视觉结构,人类利用一系列局部的一瞥,有选择地聚焦在突出的部分。最近,有一些尝试[27,28]将注意力处理结合起来,以提高cnn在大规模分类任务中的性能。
Wang等人[27]提出了使用编码器解码器风格的注意模块的剩余注意网络。通过改进特征映射,该网络不仅性能良好,而且对噪声输入具有较强的鲁棒性。我们没有直接计算三维注意图,而是将通道注意和空间注意的学习过程分别分解。3D特征图的独立注意生成过程具有更少的计算和参数开销,因此可以作为已存在的基本CNN体系结构的即插即用模块使用。
更接近我们的工作,Hu等人[28]引入了一个紧凑的模块来开发通道之间的关系。在他们的挤压-激励模块中,他们使用全局平均池特征来计算通道方面的注意力。然而,我们表明,为了推断精细通道注意力,这些是次优特征,我们建议使用最大池特征。他们还会错过空间注意力,而空间注意力在决定“集中在哪里”方面起着重要作用,如[29]所示。在我们的cam中,我们基于一个高效的体系结构开发了空间型和通道型注意,并通过经验验证了开发这两种注意都优于仅使用通道型注意[28]。此外,我们的经验表明,我们的模块是有效的检测任务(MS-COCO和VOC)。特别是,我们只需将我们的模块放在VOC2007测试集中现有的一次性探测器[30]之上,就可以实现最先进的性能。
同时,BAM[31]采用了类似的方法,将3D注意地图推理分解为通道和空间。他们在网络的每个瓶颈处放置BAM模块,而我们在每个卷积块处插入
3 Convolutional Block Attention Module
Channel attention module:
利用特征的通道间关系,生成通道注意图。由于特征图的每个通道被认为是一个特征检测器[32],通道注意力集中在给定输入图像的“什么”是有意义的。为了有效地计算通道注意力,我们对输入特征图的空间维数进行挤压。对于空间信息的聚集,目前普遍采用的是平均池法。周等人[33]建议使用它来有效地学习目标对象的范围,Hu等[28]在他们的注意力模块中使用它来计算空间统计。在之前的工作之外,我们认为最大池化收集了关于不同对象特征的另一个重要线索,从而推断出更精细的通道注意。因此,我们同时使用了平均池和最大池特性。我们通过经验证实,利用这两个特性大大提高了网络的表示能力,而不是单独使用每一个(见第4.1节),显示了我们设计选择的有效性。我们将在下面描述详细的操作。
Spatial attention module:
我们利用特征的空间间关系生成空间注意图。与通道注意不同的是,空间注意关注“在哪里”是信息性的部分,与通道注意互为补充。为了计算空间注意力,我们首先沿通道轴应用平均池化和最大池化操作,并将它们连接起来,以生成一个有效的特征描述符。沿着通道轴应用池操作可以有效地突出显示信息区域[34]。在连接的特征描述符上,我们应用卷积层生成空间注意映射,它编码了强调和抑制的位置。我们将在下面描述详细的操作。
Arrangement of attention modules:
给定一个输入图像,两个注意力模块,通道和空间,计算互补的注意力,分别关注“什么”和“哪里”。考虑到这一点,两个模块可以以并行或顺序的方式放置。我们发现顺序排列比平行排列的结果更好。对于序列过程的排列,我们的实验结果表明信道优先顺序略优于空间优先顺序。我们将在第4.1节讨论网络工程的实验结果。