这篇文章提出了一种名为卷积块注意力模块(CBAM)的新型注意力机制,旨在增强卷积神经网络(CNN)的表示能力。CBAM通过两个独立的子模块——通道注意力模块和空间注意力模块,依次推断出通道和空间维度上的注意力图,并将其与输入特征图相乘,从而实现自适应特征细化。其主要内容和贡献如下:
-
模块设计:
-
通道注意力模块:通过同时使用平均池化和最大池化特征来生成通道注意力图,强调“什么”是重要的。
-
空间注意力模块:通过沿通道轴进行池化操作并应用卷积层生成空间注意力图,强调“哪里”是重要的。
-
两个模块按顺序排列,通道优先的顺序效果略优于空间优先。
-
-
实验验证:
-
在ImageNet-1K、MS COCO和VOC 2007等基准数据集上进行了广泛的实验,验证了CBAM的有效性。
-
CBAM显著提升了多种基线网络(如ResNet、WideResNet、ResNeXt等)的分类和检测性能。
-
通过Grad-CAM可视化,展示了CBAM增强的网络能够更准确地聚焦于目标对象。
-
-
轻量级设计:
-
CBAM是一个轻量级模块,参数和计算开销小,能够无缝集成到现有的CNN架构中,且易于端到端训练。
-
-
主要贡献:
-
提出了一种简单而有效的注意力模块,能够广泛应用于提升CNN的表示能力。
-
通过实验验证了模块的有效性,并在多个基准数据集上实现了性能提升。
-
展示了CBAM在低端设备上的应用潜力。
-
CBAM通过结合通道和空间注意力机制,显著提升了CNN在图像分类和目标检测任务中的性能,且具有广泛的应用前景。这里是自己的论文阅读记录,感兴趣的话可以参考一下,如果需要阅读原文的话可以看这里,如下所示:
摘要
我们提出了卷积块注意力模块(CBAM),这是一种简单而有效的前馈卷积神经网络注意力模块。给定一个中间特征图,我们的模块沿着两个独立的维度(通道和空间)依次推断注意力图,然后将注意力图与输入特征图相乘以进行自适应特征细化。由于CBAM是一个轻量级且通用的模块,它可以无缝集成到任何CNN架构中,且开销可以忽略不计,并且可以与基础CNN一起进行端到端训练。我们通过在ImageNet-1K、MS COCO检测和VOC 2007检测数据集上的广泛实验验证了CBAM的有效性。我们的实验表明,CBAM在各种模型中的分类和检测性能均有提升,展示了CBAM的广泛适用性。代码和模型将公开提供。
关键词:目标识别,注意力机制,门控卷积
1 引言
卷积神经网络(CNN)基于其丰富的表示能力,显著推动了视觉任务的性能[1, 2, 3]。为了增强CNN的性能,最近的研究主要探讨了网络的三个重要因素:深度、宽度和基数。
从LeNet架构[4]到残差网络[5, 6, 7, 8],网络变得越来越深,以实现丰富的表示。VGGNet[9]表明,堆叠相同形状的块可以取得不错的结果。遵循同样的思路,ResNet[5]通过堆叠相同拓扑结构的残差块并结合跳跃连接,构建了极深的架构。GoogLeNet[10]表明,宽度是提高模型性能的另一个重要因素。Zagoruyko和Komodakis[6]提出基于ResNet架构增加网络的宽度。他们表明,在CIFAR基准测试中,宽度增加的28层ResNet可以胜过1001层的极深ResNet。Xception[11]和ResNeXt[7]则提出增加网络的基数。他们通过实验表明,基数不仅节省了参数总数,而且比深度和宽度这两个因素具有更强的表示能力。
除了这些因素外,我们研究了架构设计的另一个不同方面——注意力。注意力的重要性在之前的文献中得到了广泛研究[12, 13, 14, 15, 16, 17]。注意力不仅告诉我们应该关注哪里,还提高了感兴趣区域的表示能力。我们的目标是通过使用注意力机制来增强表示能力:关注重要特征并抑制不必要的特征。在本文中,我们提出了一种新的网络模块,称为“卷积块注意力模块”。由于卷积操作通过融合跨通道和空间信息来提取信息特征,我们采用该模块来强调这两个主要维度上的有意义特征:通道和空间轴。为此,我们依次应用通道和空间注意力模块(如图1所示),以便每个分支可以分别学习在通道和空间轴上“关注什么”和“关注哪里”。因此,我们的模块通过学习强调或抑制哪些信息,有效地帮助网络中的信息流动。
在ImageNet-1K数据集中,我们通过插入我们的小模块,从各种基线网络中获得了准确率的提升,揭示了CBAM的有效性。我们使用grad-CAM[18]对训练好的模型进行可视化,并观察到CBAM增强的网络比基线网络更准确地聚焦于目标对象。考虑到这一点,我们推测性能提升来自于准确的注意力机制和对无关杂波的噪声抑制。最后,我们在MS COCO和VOC 2007数据集上验证了目标检测的性能提升,展示了CBAM的广泛适用性。由于我们精心设计了轻量级模块,因此在大多数情况下,参数和计算的开销可以忽略不计。
贡献。我们的主要贡献有三点:
-
我们提出了一种简单而有效的注意力模块(CBAM),可以广泛应用于提升CNN的表示能力。
图1:CBAM的概述。该模块有两个顺序的子模块:通道和空间。中间特征图通过我们的模块(CBAM)在每个卷积块中进行自适应细化。
-
我们通过广泛的消融研究验证了注意力模块的有效性。
-
我们验证了通过插入我们的轻量级模块,各种网络在多个基准测试(ImageNet-1K、MS COCO和VOC 2007)上的性能得到了显著提升。
2 相关工作
网络工程。“网络工程”一直是视觉研究中最重要的课题之一,因为设计良好的网络可以确保在各种应用中的显著性能提升。自从大规模CNN的成功实现以来[19],已经提出了广泛的架构。一种直观且简单的扩展方式是增加神经网络的深度[9]。Szegedy等人[10]引入了一种深度Inception网络,使用多分支架构,每个分支都经过精心定制。虽然简单地增加深度会由于梯度传播的困难而趋于饱和,但ResNet[5]提出了一种简单的恒等跳跃连接,以缓解深度网络的优化问题。基于ResNet架构,开发了各种模型,如WideResNet[6]、Inception-ResNet[8]和ResNeXt[7]。WideResNet[6]提出了一种具有更多卷积滤波器和减少深度的残差网络。PyramidNet[20]是WideResNet的严格泛化,其中网络的宽度逐渐增加。ResNeXt[7]建议使用分组卷积,并表明增加基数可以提高分类准确率。最近,Huang等人[21]提出了一种新的架构DenseNet。它迭代地将输入特征与输出特征连接起来,使每个卷积块都能接收来自所有先前块的原始信息。虽然大多数最近的网络工程方法主要针对三个因素深度[19, 9, 10, 5]、宽度[10, 22, 6, 8]和基数[7, 11],但我们关注另一个方面,即注意力,这是人类视觉系统的一个有趣方面。
注意力机制。众所周知,注意力在人类感知中起着重要作用[23, 24, 25]。人类视觉系统的一个重要特性是,它不会一次性处理整个场景。相反,人类利用一系列部分瞥见,并选择性地聚焦于显著部分,以更好地捕捉视觉结构[26]。
最近,有几项尝试[27, 28]将注意力处理引入CNN,以提高大规模分类任务的性能。Wang等人[27]提出了残差注意力网络,该网络使用编码器-解码器风格的注意力模块。通过细化特征图,该网络不仅表现良好,而且对噪声输入具有鲁棒性。与直接计算3D注意力图不同,我们将学习通道注意力和空间注意力的过程分开。对于3D特征图的单独注意力生成过程具有更少的计算和参数开销,因此可以作为即插即用的模块用于现有的基础CNN架构。
与我们的工作更接近的是,Hu等人[28]引入了一个紧凑模块来利用通道间的关系。在他们的压缩和激励模块中,他们使用全局平均池化特征来计算通道注意力。然而,我们表明这些特征在推断精细通道注意力时是次优的,我们建议同时使用最大池化特征。他们还忽略了空间注意力,这在决定“关注哪里”方面起着重要作用,如[29]所示。在我们的CBAM中,我们基于高效的架构利用了空间和通道注意力,并通过实验验证了同时利用两者优于仅使用通道注意力[28]。此外,我们通过实验表明,我们的模块在检测任务(MS-COCO和VOC)中是有效的。特别是,我们通过在现有的一阶段检测器[30]上放置我们的模块,在VOC2007测试集上实现了最先进的性能。
3 卷积块注意力模块
通道注意力模块。
我们通过利用特征的通道间关系来生成通道注意力图。由于特征图的每个通道都被视为一个特征检测器[31],通道注意力关注的是给定输入图像中“什么是重要的”。为了高效计算通道注意力,我们压缩了输入特征图的空间维度。为了聚合空间信息,平均池化已被广泛采用。Zhou等人[32]建议使用它来有效学习目标对象的范围,Hu等人[28]在他们的注意力模块中采用它来计算空间统计量。除了之前的工作,我们认为最大池化收集了关于显著对象特征的另一个重要线索,以推断更精细的通道注意力。因此,我们同时使用平均池化和最大池化特征。我们通过实验证实,同时利用这两个特征比单独使用每个特征更能提高网络的表示能力(见第4.1节),展示了我们设计选择的有效性。我们详细描述如下操作。
空间注意力模块。
我们通过利用特征的空间间关系生成空间注意力图。与通道注意力不同,空间注意力关注的是“哪里是信息丰富的部分”,这与通道注意力互补。为了计算空间注意力,我们首先沿通道轴应用平均池化和最大池化操作,并将它们连接起来以生成一个有效的特征描述符。沿通道轴应用池化操作已被证明在突出信息区域方面
注意力模块的排列。
给定输入图像,两个注意力模块(通道和空间)计算互补的注意力,分别关注“什么”和“哪里”。考虑到这一点,两个模块可以以并行或顺序的方式排列。我们发现顺序排列比并行排列效果更好。对于顺序过程的排列,我们的实验结果表明,通道优先的顺序略优于空间优先的顺序。我们将在第4.1节中讨论网络工程的实验结果。
4 实验
我们在标准基准上评估CBAM:ImageNet-1K用于图像分类;MS COCO和VOC 2007用于目标检测。为了更好地进行苹果对苹果的比较,我们在PyTorch框架[35]中重现了所有评估的网络[5-7, 34, 28],并在整个实验中报告了我们重现的结果。
为了彻底评估我们最终模块的有效性,我们首先进行了广泛的消融实验。然后,我们验证了CBAM在所有基线上的表现优于其他方法,展示了CBAM在不同架构和任务中的广泛适用性。可以无缝地将CBAM集成到任何CNN架构中,并联合训练结合CBAM增强的网络。图3展示了CBAM与ResNet[5]中的ResBlock集成的示意图。
消融研究
在本小节中,我们通过实验展示了我们设计选择的有效性。为了进行这项消融研究,我们使用ImageNet-1K数据集,并采用ResNet-50[5]作为基础架构。ImageNet-1K分类数据集[1]包含120万张训练图像和5万张验证图像,共有1000个对象类别。我们采用与[5, 36]相同的数据增强方案进行训练,并在测试时应用大小为224×224的单裁剪评估。学习率从0.1开始,每30个epoch下降一次。我们训练网络90个epoch。根据[5, 36, 37],我们报告验证集上的分类错误率。
我们的模块设计过程分为三个部分。我们首先寻找计算通道注意力的有效方法,然后是空间注意力。最后,我们考虑如何将通道和空间注意力模块结合起来。我们详细解释每个实验。
4.1.1 通道注意力。
我们通过实验验证了同时使用平均池化和最大池化特征可以实现更精细的注意力推断。我们比较了三种通道注意力的变体:平均池化、最大池化以及同时使用两种池化。请注意,使用平均池化的通道注意力模块与SE[28]模块相同。此外,当同时使用两种池化时,我们使用共享的MLP进行注意力推断以节省参数,因为两种聚合的通道特征位于相同的语义嵌入空间中。在本实验中,我们仅使用通道注意力模块,并将缩减比率固定为16。
表1显示了使用不同池化方法的实验结果。我们观察到,最大池化特征与平均池化特征一样有意义,比较了从基线开始的准确率提升。然而,在SE[28]的工作中,他们仅利用了平均池化特征,忽略了最大池化特征的重要性。我们认为,最大池化特征编码了最显著部分的程度,可以补充平均池化特征编码的全局统计量。因此,我们建议同时使用这两种特征,并对这些特征应用共享网络。共享网络的输出然后通过逐元素求和合并。我们通过实验表明,我们的通道注意力方法是一种有效的方式,可以在不增加可学习参数的情况下进一步提升SE[28]的性能。简而言之,我们在后续实验中使用平均池化和最大池化特征,并将缩减比率设置为16。
4.1.2 空间注意力。
在通道注意力模块的基础上,我们探索了一种计算空间注意力的有效方法。设计理念与通道注意力分支对称。为了生成2D空间注意力图,我们首先计算一个2D描述符,该描述符在每个像素上编码所有空间位置的通道信息。然后,我们对该2D描述符应用一个卷积层,得到原始注意力图。最终注意力图通过sigmoid函数进行归一化。
我们比较了两种生成2D描述符的方法:通道池化(沿通道轴进行平均池化和最大池化)和标准1×1卷积(将通道维度减少到1)。此外,我们还研究了后续卷积层的卷积核大小的影响:卷积核大小为3和7。在实验中,我们将空间注意力模块放置在先前设计的通道注意力模块之后,因为最终目标是同时使用这两个模块。
表2显示了实验结果。我们可以观察到,通道池化产生了更好的准确率,表明显式建模的池化比可学习的加权通道池化(通过1×1卷积实现)能够推断出更精细的注意力。在不同卷积核大小的比较中,我们发现采用更大的卷积核大小在两种情况下都能生成更好的准确率。这表明,决定空间重要区域需要更广阔的视野(即大的感受野)。考虑到这一点,我们采用通道池化方法和具有大卷积核大小的卷积层来计算空间注意力。简而言之,我们使用沿通道轴的平均池化和最大池化特征,卷积核大小为7,作为我们的空间注意力模块。
4.1.3 通道和空间注意力的排列。
在本实验中,我们比较了三种不同的通道和空间注意力子模块排列方式:顺序通道-空间、顺序空间-通道以及并行使用两个注意力模块。由于每个模块具有不同的功能,排列顺序可能会影响整体性能。例如,从空间角度来看,通道注意力是全局应用的,而空间注意力是局部工作的。此外,自然地,我们可以将两个注意力输出结合起来构建一个3D注意力图。在这种情况下,两个注意力可以并行应用,然后将两个注意力模块的输出相加并通过sigmoid函数进行归一化。
表3总结了不同注意力排列方法的实验结果。从结果中可以看出,顺序生成注意力图比并行生成更精细。此外,通道优先的顺序略优于空间优先的顺序。请注意,所有排列方法都优于仅使用通道注意力,表明同时利用两个注意力是至关重要的,而最佳排列策略进一步提升了性能。
4.1.4 最终模块设计。
通过消融研究,我们设计了通道注意力模块、空间注意力模块以及两个模块的排列方式。我们的最终模块如图1和图2所示:我们选择平均池化和最大池化用于通道和空间注意力模块;我们在空间注意力模块中使用卷积核大小为7的卷积层;我们将通道和空间子模块按顺序排列。我们的最终模块(即ResNet50 + CBAM)实现了22.66%的top-1错误率,远低于SE[28](即ResNet50 + SE),如表4所示。
ImageNet-1K图像分类
我们进行了ImageNet-1K分类实验,以严格评估我们的模块。我们遵循第4.1节中指定的相同协议,并在包括ResNet[5]、WideResNet[6]和ResNeXt[7]在内的各种网络架构中评估我们的模块。
表4总结了实验结果。带有CBAM的网络显著优于所有基线,表明CBAM可以在大规模数据集上的各种模型中很好地泛化。此外,带有CBAM的模型在ILSVRC 2017分类任务中表现最强的SE[28]方法的基础上进一步提高了准确率。这表明我们提出的方法是强大的,展示了生成更丰富描述符的新池化方法和有效补充通道注意力的空间注意力的有效性。
图4描绘了各种网络在ImageNet-1K训练期间的错误曲线。我们可以清楚地看到,我们的方法在训练和验证错误曲线中表现出最低的错误率。这表明,与SE[28]相比,CBAM具有更强的能力来提升基线模型的泛化能力。
我们还发现,CBAM的整体开销在参数和计算方面都非常小。这促使我们将我们提出的CBAM模块应用于轻量级网络MobileNet[34]。表5总结了基于MobileNet架构的实验结果。我们将CBAM放置在两个模型中:基础模型和容量减少的模型(即将宽度乘数α调整为0.7)。我们观察到了与表4中相似的现象。CBAM不仅显著提升了基线的准确率,还进一步提升了SE[28]的性能。这表明CBAM在低端设备上具有巨大的应用潜力。
使用Grad-CAM进行网络可视化[18]
为了进行定性分析,我们使用ImageNet验证集中的图像对不同网络应用Grad-CAM[18]。Grad-CAM是一种最近提出的可视化方法,它使用梯度来计算卷积层中空间位置的重要性。由于梯度是针对特定类别计算的,Grad-CAM结果清晰地显示了网络关注的区域。通过观察网络认为对预测类别重要的区域,我们试图了解网络如何有效地利用特征。我们比较了CBAM集成网络(ResNet50 + CBAM)与基线(ResNet50)和SE集成网络(ResNet50 + SE)的可视化结果。图5展示了可视化结果。图中还显示了目标类别的softmax分数。
在图5中,我们可以清楚地看到,CBAM集成网络的Grad-CAM掩码比其他方法更好地覆盖了目标对象区域。也就是说,CBAM集成网络学会了如何有效地利用目标对象区域中的信息并从中聚合特征。请注意,目标类别的分数也相应增加。从这些观察中,我们推测CBAM的特征细化过程最终使网络能够充分利用给定的特征。
MS COCO目标检测
我们在Microsoft COCO数据集[3]上进行了目标检测实验。该数据集包含80k训练图像(“2014 train”)和40k验证图像(“2014 val”)。评估使用不同IoU阈值(从0.5到0.95)的平均mAP。根据[38, 39],我们使用所有训练图像以及部分验证图像训练我们的模型,保留5000个样本用于验证。我们的训练代码基于[40],我们训练网络490K次以进行快速性能验证。我们采用Faster-RCNN[41]作为我们的检测方法,并使用ImageNet预训练的ResNet50和ResNet101[5]作为我们的基线网络。我们感兴趣的是通过将CBAM插入基线网络来提升性能。由于我们在所有模型中使用相同的检测方法,性能提升只能归因于我们模块CBAM增强的表示能力。如表6所示,我们观察到基线的显著提升,展示了CBAM在其他识别任务中的泛化性能。
VOC 2007目标检测
我们进一步在PASCAL VOC 2007测试集上进行了实验。在本实验中,我们将CBAM应用于检测器,而之前的实验(表6)将我们的模块应用于基础网络。我们采用了StairNet[30]框架,这是基于SSD[39]的最强多尺度方法之一。为了进行实验,我们在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的动量。在所有实验中,输入图像的大小固定为300以简化操作。
实验结果总结在表7中。我们可以清楚地看到,CBAM在两个骨干网络的所有强基线上都提高了准确率。请注意,CBAM的准确率提升伴随着可忽略的参数开销,表明这种提升不是由于简单的容量增加,而是因为我们有效的特征细化。此外,使用轻量级骨干网络[34]的结果再次表明,CBAM可以成为低端设备的一个有趣方法。
5 结论
我们提出了卷积瓶颈注意力模块(CBAM),这是一种提高CNN网络表示能力的新方法。我们通过两个独特的模块(通道和空间)应用基于注意力的特征细化,并在保持开销较小的同时实现了显著的性能提升。对于通道注意力,我们建议同时使用最大池化特征和平均池化特征,从而产生比SE[28]更精细的注意力。我们通过利用空间注意力进一步提升了性能。我们的最终模块(CBAM)学习了强调或抑制什么和哪里,并有效地细化了中间特征。为了验证其有效性,我们使用各种最先进的模型进行了广泛的实验,并确认CBAM在三个不同的基准数据集(ImageNet-1K、MS COCO和VOC 2007)上优于所有基线。此外,我们可视化了模块在给定输入图像时的推断过程。有趣的是,我们观察到我们的模块引导网络正确地聚焦于目标对象。我们希望CBAM成为各种网络架构的重要组成部分。