attention

CBAM: Convolutional Block Attention Module

Abstract

我们提出了卷积块注意模块(CBAM),一个简单而有效的用于前馈卷积神经网络的注意力模块。给定中间特征图,我们的模块依次推导出沿通道和空间两个独立维度的注意力map,然后将注意力map乘到输入特征图上进行自适应特征细化。因为CBAM是一个轻量级的通用模块,它可以无缝地集成到任何CNN架构中,开销可以忽略不计,并且可以与基础CNN一起进行端到端训练。我们通过在ImageNet-1K、MS COCO检测和VOC 2007检测数据集的广泛实验来验证我们的CBAM。实验表明,不同模型在分类和检测性能上都有了一致的改进,证明了CBAM的广泛适用性。代码和模型将公开。

1 Introduction

卷积神经网络(Convolutional neural networks, CNNs)凭借其丰富的表征能力,极大地推动了视觉任务的执行[1-3]。为了提高CNNs的性能,最近的研究主要研究了网络的三个重要因素:深度(depth)、宽度(width)和基数(cardinality, 就是一个block里面,branches或者paths的个数,比如Residual block中,有主干分支和一个恒等分支,因此其cardinality=2)。

从LeNet架构[4]到residual-style样式的网络[5-8],到目前为止,网络已经因为丰富的表征而变得更加深。VGGNet[9]显示,堆叠相同形状的块可以得到良好的结果。遵循同样的精神,ResNet[5]将残差块的相同拓扑与skip connection一起堆叠,以构建一个非常深的体系结构。GoogLeNet[10]表明,宽度是提高模型性能的另一个重要因素。Zagoruyko和Komodakis[6]提出增加基于ResNet架构的网络宽度。他们已经表明,在CIFAR基准上,一个28层的ResNet增加宽度可以胜过一个非常深的1001层的ResNet。提出了Xception[11]和ResNeXt[7]来增加网络的基数。它们的经验表明,基数不仅保存了参数的总数,而且比其他两个因素(深度和宽度)具有更强的表示能力。

除了这些因素,我们还研究了建筑设计的一个不同方面——attention。注意力的意义在之前的文献中已经被广泛研究[12-17]。注意力不仅告诉我们应该关注哪里,还能提高感兴趣区域的表示能力。我们的目标是通过使用注意力机制来增加表现能力:关注重要的特征,抑制不必要的特征。在本文中,我们提出了一个新的网络模块,名为“Convolutional Block Attention Module”。由于卷积操作通过混合跨通道和空间信息来提取信息特征,我们采用我们的模块来强调两个主要维度——通道轴和空间轴上的有意义的特征。为了实现这一点,我们依次应用通道和空间注意力模块(如图1所示),以便每个分支可以分别在通道和空间轴上学习“what”和“where”。因此,我们的模块通过学习强调或抑制哪些信息,有效地帮助信息在网络中流动。

在ImageNet-1K数据集中,通过插入我们的小模块,我们从各种基线网络获得了准确性的提高,显示了CBAM的有效性。我们使用grado-CAM[18]可视化训练过的模型,并观察到CBAM-enhanced网络比它们的基线网络更能聚焦于目标对象。考虑到这一点,我们推测性能的提高来自精准的attention和对无关杂波噪音的衰减。最后,我们在MS COCO和VOC 2007数据集上验证了目标检测性能的提高,证明了CBAM的广泛适用性。由于我们精心设计了轻量级模块,所以在大多数情况下参数和计算的开销可以忽略不计。

Contribution.  我们的主要贡献有三方面:

1. 我们提出了一种简单而有效的注意力模块(CBAM),可广泛应用于增强CNN的表示能力。

2. 我们通过广泛的消融研究验证了注意力模块的有效性。

3.我们验证了在多个基准测试(ImageNet-1K, MS COCO,和VOC 2007)上,通过插入我们的轻量级模块,各种网络的性能都得到了极大改善。

2 Related work

Network engineering.  “网络工程”已经成为最重要的视觉研究之一,因为设计良好的网络保证了在各种应用中显著的性能改善。自大规模CNN[19]的成功实现以来,已经提出了广泛的架构。一种直观而简单的扩展方法是增加神经网络[9]的深度。Szegedy等人[10]引入了一个使用多分支架构的深Inception网络,其中每个分支都是精心定制的。当梯度传播的困难导致单纯的深度增加达到饱和时,ResNet[5]提出了一种简单的identity skip connection 来缓解深度网络的优化问题。基于ResNet架构,开发了WideResNet[6]、Inception-ResNet[8]、ResNeXt[7]等多种模型。WideResNet[6]提出了一种带有大量卷积滤波器且深度降低的残差网络。PyramidNet[20]是对WideResNet的严格推广,其中网络的宽度逐渐增加。ResNeXt[7]建议使用分组(grouped)卷积,并表明增加基数可以提高分类精度。最近,Huang等人[21]提出了一种新的架构——DenseNet。它迭代地将输入特征与输出特征连接起来,使每个卷积块都能从之前的所有块接收到原始信息。虽然最近大多数网络工程方法主要针对三个因素:深度[19,9,10,5],宽度[10,22,6,8]和基数[7,11],但我们关注的是另一个方面,“注意力”,其是人类视觉系统的一个有趣的方面。

Attention mechanism.  众所周知,注意力在人类感知中起着重要的作用[23-25]。人类视觉系统的一个重要特性是,人们不会试图一次处理整个场景。相反,人类利用一系列的局部glimpses,选择性地关注突出部分,以便更好地捕捉视觉结构[26]。

最近,有几次尝试[27,28]将注意力处理纳入到大规模分类任务中,以提高CNN网络的性能。Wang等人[27]提出了Residual Attention Network,该网络使用了一种encoder-decoder风格的注意力模块。通过改进feature map,该网络不仅表现良好,而且对噪声输入具有较强的鲁棒性。我们将学习通道注意力和空间注意力的过程分别分解,而不是直接计算三维注意力map。3D feature map的单独注意力生成过程具有更少的计算和参数开销,因此可以作为已存在的基础CNN架构的即插即用模块。

与我们的工作更加接近,Hu等人[28]引入了一个紧凑的模块来开发通道间的关系。在他们的Squeeze-and-Excitation模块中,他们使用全局池化特征来计算信道上的注意力。然而,为了推断出良好的通道注意力,我们表明这些都是次优特征,我们建议使用最大池化特征。它们还会忽略空间注意力,而空间注意力在决定注意力的“位置”方面起着重要作用,如[29]所示。在我们的CBAM中,我们基于一种有效的架构同时利用了空间注意力和通道注意力,并通过经验验证了利用两者都优于只使用[28]通道注意力。此外,我们的经验表明,在检测任务(MS-COCO和VOC)中,我们的模块是有效的。特别是,我们仅仅通过将我们的模块放在VOC2007测试集中现有的one-shot检测器[30]的顶部,就实现了最先进的性能。

3 Convolutional Block Attention Module

以中间特征图F∈RC * H * W为输入,CBAM依次推导出一维通道注意图Mc∈RC * 1 * 1,二维空间注意图Ms∈R1 * H * W,如图1所示。整体的注意过程可以总结为:

 

其中⊗表示element-wise乘法。在乘法过程中,注意力值被相应地广播(复制):通道注意力值被沿空间维度广播,反之亦然。F''是最终的refined输出。图2描述了每个注意力map的计算过程。下面介绍每个注意力模块的细节。

Channel attention module.  我们利用特征的通道间关系生成通道注意力map。由于特征图的每个通道被认为是[31]特征检测器,对于给定输入图像,通道注意力集中在的“what”是有意义的。为了有效地计算通道注意力,我们压缩了输入特征图的空间维数。对于空间信息的聚合,一般采用平均池化法。Zhou et al.[32]建议使用它来有效地学习目标对象的程度,Hu et al.[28]在他们的注意力模块中使用它来计算空间统计。除了之前的研究,我们认为,最大池化汇集了另一个关于独特物体特征的重要线索,从而推断出更精细的注意力通道。因此,我们同时使用了平均池化和最大池化特征。我们通过经验证实,同时利用这两种特性可以大大提高网络的表示能力,而不是单独使用它们(见第4.1节),这表明了我们设计选择的有效性。我们将在下面详细描述操作。

我们首先使用平均池化和最大池化操作聚合特征图的空间信息,生成两个不同的空间上下文描述符: FcavgFcmax,分别表示平均池化特征和最大池化特征。然后,两个描述符被传播到共享网络,以产生我们的通道注意力map Mc∈RC×1×1。共享网络由一个隐含层的多层感知器(MLP)组成。为减少参数开销,将隐藏激活大小设为RC/r×1×1,其中r为缩减率。将共享网络应用到每个描述符后,我们使用按元素进行求和的方法合并输出的特征向量。简而言之,通道注意力计算为: 

其中,σ是sigmoid函数,W0∈RC/r×C, W1∈RC×C/r。请注意,MLP权重W0W1对于两个输入都是共享的,ReLU激活函数后面跟着W0

Spatial attention module.  利用特征内的空间关系生成空间注意力map。与通道注意力不同,空间注意力的重点是“where”,其是一个信息的部分,这是通道注意力的补充。为了计算空间注意力,我们首先在通道轴上应用平均池化和最大池化操作,并将它们连接起来生成一个有效的特征描述符。沿着通道轴应用池化操作可以有效地突出显示信息区域[33]。在连接的特征描述符上,我们应用卷积层来生成空间注意图Ms(F)∈RH×W,它编码在哪里强调或抑制。我们将在下面详细描述操作。

我们通过两种pooling操作聚合一个feature map的通道信息,生成两个2D map: Fsavg∈R1 x H x W, Fsmax∈R1 x H x W。每个都表示通道中平均池化的特征和最大池化的特征。然后将他们串联,并通过标准的卷积层进行卷积,生成我们的2D空间注意力map。简而言之,空间注意力的计算方法为:

其中,σ为sigmoid函数,f7×7表示滤波器尺寸为7×7的卷积运算。 

Arrangement of attention modules. 给定一个输入图像,两个通道和空间注意力模块,计算互补的注意力,分别关注“what”和“where”。考虑到这一点,两个模块可以以并行或顺序的方式放置。我们发现顺序排列比并行排列的结果更好。对于顺序排列的安排,实验结果表明先通道比先空间的效果略好。我们将在第4.1节讨论网络工程的实验结果。

4 Experiments

我们在标准基准上评估CBAM: ImageNet-1K用于图像分类;MS COCO和VOC 2007用于对象检测。为了更好地进行apple-to-apple的比较,我们在PyTorch框架[35]中复制了所有评估过的网络[5 - 7,34,28],并在整个实验中报告了我们的复制结果。

为了彻底评估我们最后一个模块的效果,我们首先进行了广泛的消融实验。然后,我们验证了CBAM在没有花哨功能的情况下优于基线,证明了CBAM在不同架构和不同任务中的普遍适用性。人们可以将CBAM无缝地集成到任何CNN架构中,并共同训练组合的CBAM-enhanced网络。图3展示了在ResNet[5]中与ResBlock集成的CBAM的图例。

4.1 Ablation studies

在本节中,我们以经验证明我们的设计选择的有效性。在本次消融研究中,我们使用ImageNet-1K数据集,采用ResNet-50[5]作为基础架构。ImageNet-1K分类数据集[1]由120万张用于训练的图像和50,000张用于验证的图像组成,其中包含1,000个对象类。我们采用与[5,36]相同的数据增强方案进行训练,在测试时采用single-crop评价,图像大小为224×224。学习速率从0.1开始,每30个epoch下降一次。训练 90个 epochs。遵循[5,36,37],我们报告了验证集上的分类错误。

我们的模块设计过程分为三个部分。首先寻找计算通道注意力的有效方法,然后是计算空间注意力。最后,我们考虑了如何结合通道注意力模块和空间注意力模块。我们在下面解释每个实验的细节。

Channel attention.  我们通过实验验证了同时使用平均池化和最大池化特征能够更好地进行注意力推断。我们比较了3种不同的通道注意力:平均池化,最大池化,以及两个池化的联合使用。注意,带有平均池化的通道注意力模块与SE[28]模块相同。此外,在使用这两个池化时,我们使用一个共享的MLP进行注意力推断来保存参数,因为这两个聚合的通道特征都位于同一语义嵌入空间。在本实验中,我们只使用通道注意力模块,并将缩减比定为16。

各种池化方法的实验结果如表1所示。比较了从基线提高的准确性,我们观察到最大池化的特征和平均池化的特征一样有意义。然而,在SE[28]的工作中,他们只利用了平均池化的特性,而忽略了最大池化特性的重要性。我们认为编码最显著部分程度的最大池化特征可以补偿编码全局统计量的平均池化特征。因此,我们建议同时使用这两个特性,并对这些特性应用共享网络。然后,共享网络的输出通过按元素进行求和进行合并。我们的经验表明,我们的通道注意力方法是一个有效的方法,以推动性能进一步远离SE[28],而不需要额外的可学习参数。作为一个简短的结论,在接下来的实验中,我们在我们的通道注意力模块中使用了平均和最大池化特征,缩减比为16。

Spatial attention.  在给定通道细化特征的情况下,探索了一种计算空间注意力的有效方法。设计理念与通道注意力分支对称。为了生成一个二维空间注意力map,我们首先计算一个二维描述符,该描述符编码所有空间位置上每个像素的通道信息。然后我们对二维描述符应用一个卷积层,得到原始的注意力map。最后的注意力map用sigmoid函数归一化。

我们比较了生成2D描述符的两种方法:使用通道轴上的平均和最大池化的通道池化和标准的1×1卷积,将通道维数减少为1。此外,我们研究了以下卷积层中内核大小的影响:内核大小为3和7。在实验中,我们将空间注意力模块放置在之前设计的通道注意力模块之后,因为最终的目的是将两个模块一起使用。

实验结果见表2。我们可以观察到,通道池化产生了更好的准确性,表明显式modeled池化能导致比可学习的加权通道池化(实现为1×1卷积) 更好的注意力推断。在对不同卷积核大小的比较中,我们发现采用更大的核大小在两种情况下都能产生更好的精度。这意味着需要一个开阔的视野(即大的感受野)来决定重要的空间区域。考虑到这一点,我们采用通道池化方法和核大小较大的卷积层来计算空间注意力。在一个简短的结论中,我们使用了通道轴上卷积核大小为7的平均和最大池化特征作为我们的空间注意力模块。

Arrangement of the channel and spatial attention.  在本实验中,我们比较了三种不同的通道和空间注意子模块的排列方式:通道-空间的顺序、空间-通道的顺序,以及两种注意力子模块的并行使用。由于每个模块的功能不同,其顺序可能会影响整体性能。例如,从空间的角度来看,通道注意力是全局应用的,而空间注意力是局部工作的。此外,我们很自然地会认为,我们可以结合两种注意力输出来构建一个3D注意力map。在这种情况下,两个注意模块可以并行应用,然后将两个注意模块的输出相加,用sigmoid函数进行归一化。

表3总结了不同注意力安排方法的实验结果。从结果中,我们可以发现,按顺序生成的注意力map比并行生成的注意力map更好。此外,先通道的性能略优于先空间。请注意,所有的安排方法都优于单独使用通道注意力,这表明利用两个注意力是至关重要的,而最佳的安排策略将进一步推动性能。

Final module design.  在整个消融研究中,我们设计了通道注意力模块,空间注意力模块,以及两个模块的排列。最后的模块如图1和图2所示:通道注意力模块和空间注意力模块都选择了平均和最大池化;在空间注意力模块中,我们采用核大小为7的卷积;我们按顺序排列通道和空间子模块。我们最后的模块(即ResNet50 + CBAM)的top-1 error为22.66%,远低于SE[28](即。如表4所示。

  

4.2 Image Classification on ImageNet-1K

我们进行ImageNet-1K分类实验来严格评估我们的模块。我们遵循4.1节中规定的相同协议,在ResNet[5]、WideResNet[6]、ResNext[7]等多种网络架构中评估我们的模块。

表4总结了实验结果。使用CBAM的网络性能明显优于所有基线,说明CBAM在大规模数据集中可以很好地推广到各种模型上。此外,采用CBAM的模型提高了最强大的方法之一——SE[28]的准确性,SE[28]是ILSVRC 2017分类任务的获胜方法。这表明我们提出的方法是强大的,显示了新的pooling方法的有效性,它能生成更丰富的描述子和空间注意,有效地补充了通道注意。

图4是ImageNet-1K训练时各网络的误差曲线。我们可以清楚地看到,我们的方法在两个误差图中显示了最低的训练和验证误差。这表明,与SE[28]相比,CBAM在提高基线模型泛化能力方面有更大的能力。

我们还发现,CBAM的总体开销在参数和计算方面都非常小。这促使我们将我们提出的模块CBAM应用到轻量级网络,MobileNet[34]。表5总结了我们基于MobileNet架构进行的实验结果。我们将CBAM分为两种模式,基本模式和容量减少模式(即调整宽度multiplier(α)为0.7)。我们观察到类似的现象,如表4所示。CBAM不仅极大地提高了基线的精度,而且很好地改善了SE[28]的性能。这显示了CBAM对于低端设备上的应用程序的巨大潜力。

  

4.3 Network Visualization with Grad-CAM [18]

对于定性分析,我们使用来自ImageNet验证集的图像将grado-CAM[18]应用于不同的网络。grad-CAM是一种最近提出的可视化方法,它使用梯度来计算卷积层中空间位置的重要性。通过对某一特定类的梯度计算,grado-CAM结果可以清楚地显示出参与区域。通过观察网络认为对预测类很重要的区域,我们试图看看这个网络是如何充分利用特征的。我们将CBAM-integrated网络(ResNet50 + CBAM)与基线(ResNet50)和SE-integrated网络(ResNet50 + SE)的可视化结果进行比较。图5显示了可视化结果。目标类的softmax分数也显示在图中。

在图5中,我们可以清楚地看到CBAM-integrated网络的CBAM-integrated masks比其他方法更好的覆盖目标区域。也就是说,CBAM-integrated网络能够很好地学习利用目标对象区域中的信息并从中聚合特征。注意,目标类的分数也会相应增加。从观察结果来看,我们推测CBAM的特征细化过程最终会引导网络很好地利用给定的特征。

4.4 MS COCO Object Detection

我们在Microsoft COCO dataset[3]上进行对象检测。这个数据集包含80k个训练图像(“2014 train”)和40k个验证图像(“2014 val”)。用于评估从0.5到0.95的不同IoU阈值的平均mAP。根据[38,39],我们使用所有的训练图像和一个验证图像子集来训练我们的模型,拿出5000个示例进行验证。我们的训练代码基于[40],我们对网络进行了490K的迭代训练,以快速验证性能。我们采用Faster-RCNN[41]作为检测方法,ImageNet预训练的ResNet50和ResNet101[5]作为基线网络。这里,我们对通过将CBAM插入基线网络来提高性能感兴趣。由于我们在所有模型中使用了相同的检测方法,因此所获得的收益只能归因于模块CBAM所赋予的增强的表示能力。如表6所示,我们观察到与基线相比有显著的改进,证明了CBAM在其他识别任务上的泛化性能。

4.5 VOC 2007 Object Detection

我们进一步在PASCAL VOC 2007测试集上进行了实验。在本次实验中,我们将CBAM应用于检测器,而之前的实验(表6)将我们的模块应用于基础网络。我们采用的是StairNet[30]框架,它是基于SSD[39]的最强大的multi-scale方法之一。在实验中,我们在PyTorch平台上复制SSD和StairNet,以准确估计CBAM的性能改进,并实现了77.8%和78.9%的mAP@.5,分别高于原论文报道的原始精度。然后我们将SE[28]和CBAM放在每个分类器的前面,在预测前对由上采样的全局特征和相应的局部特征组成的最终特征进行精炼,使模型只自适应地选择有意义的特征。我们将所有模型训练在VOC 2007 trainval和VOC 2012 trainval的并集(“07+12”)上,并在VOC 2007测试集上进行评估,训练epoch的总次数为250。我们使用了0.0005的权重衰减和0.9的momentum。在所有的实验中,为了简单起见,输入图像的大小都被固定在300。

实验结果如表7所示。我们可以清楚地看到,CBAM提高了两个主干网络的所有强基线的准确性。注意,CBAM的精度改进带来了一个可以忽略的参数开销,这表明增强不是由于简单的容量增加,而是由于我们有效地改进了特性。此外,使用轻量级主干网[34]的结果再次表明,CBAM对于低端设备是一种有趣的方法。

  

5 Conclusion

我们提出了卷积bottleneck注意力模块(CBAM),一种改进CNN网络表示能力的新方法。我们将基于注意力的特征细化应用于通道和空间两个不同的模块,在保持较小的开销的情况下实现了可观的性能提升。对于通道注意力,我们建议使用最大池化特征和平均池化特征,从而产生比SE[28]更好的注意力。利用空间注意力进一步推动性能。我们的最后一个模块(CBAM)学习what和where去有效地强调或抑制,且用于细化中间特性。为了验证其有效性,我们使用各种先进的模型进行了广泛的实验,证实了CBAM在三个不同的基准数据集(ImageNet-1K、MS COCO和VOC 2007)上的性能优于所有基线。此外,对于给定输入图像,我们可视化模块如何准确地推断。有趣的是,我们观察到我们的模块引导网络正确地聚焦于目标对象。我们希望CBAM成为各种网络架构的重要组成部分。

原文地址:https://www.cnblogs.com/wanghui-garcia/p/14001476.html