我们提出卷积块注意模块(CBAM),一个简单而有效的前馈卷积神经网络的注意模块。给定一个中间特征图,我们的模块沿着两个独立的维度(通道和空间)依次推断注意力图,然后将注意力图乘以输入特征图,以进行自适应特征细化。因为CBAM是一个轻量级的通用模块,它可以无缝集成到任何CNN架构中,开销可以忽略不计,并且可以与基本CNN一起进行端到端训练。我们通过在ImageNet-1K、MS COCO检测和VOC 2007检测数据集上的大量实验来验证我们的CBAM。我们的实验表明,各种模型在分类和检测性能上的改进是一致的,证明了CBAM的广泛适用性。代码和模型将公开提供。
卷积神经网络(CNNs)基于其丰富的表示能力,极大地提高了视觉任务的性能[1–3]。为了提高神经网络的性能,最近的研究主要研究了网络的三个重要因素:深度、宽度和基数。
从LeNet架构[4]到残差型网络[5–8],到目前为止,网络已经变得更加丰富。VGGNet[9]表明,堆叠具有相同形状的块会产生相当好的结果。本着同样的精神,ResNet[5]将残差块的相同拓扑结构与跳过连接进行堆叠,以构建一个极其深入的体系结构。GoogleNet[10]表明,宽度是提高模型性能的另一个重要因素。Zagoruyko和Komodakis [6]建议基于ResNet架构增加网络宽度。他们已经表明,在CI-FAR基准上,宽度增加的28层ResNet可以优于具有1001层的极深ResNet。Xception[11]和ResNeXt[7]提出了增加网络基数的方法。他们根据经验表明,基数不仅节省了参数的总数,而且导致了比其他两个因素(深度和宽度)更强的表示能力。
除了这些因素,我们还研究了建筑设计的另一个方面,注意力。注意的重要性在以前的文献中已经被广泛研究过[12–17]。注意力不仅能告诉我们应该关注哪里,还能提高兴趣的表达。我们的目标是通过使用注意机制来增加表征能力:关注重要的特征,抑制不必要的特征。本文提出了一种新的网络模块,称为“卷积块注意模块”。由于卷积运算通过将跨通道和空间信息混合在一起来提取信息特征,所以我们采用我们的模块来强调沿着通道和空间轴这两个主要维度的有意义的特征。为了实现这一点,我们依次应用通道和空间注意模块(如图1所示),以便每个分支可以分别学习在通道和空间轴上要注意的“什么”和“哪里”。因此,我们的模块通过学习强调或抑制哪些信息,有效地帮助信息在网络中流动。
在ImageNet-1K数据集上,我们通过插入我们的小模块,从各种基线网络中获得准确性的提高,揭示了CBAM的功效。我们使用梯度计算机辅助制造[18]可视化训练模型,并观察到改进的网络比其基线网络更适合聚焦目标对象。考虑到这一点,我们推测性能提升来自于对无关杂波的准确关注和降噪。最后,我们在微软COCO和VOC2007数据集上验证了目标检测的性能改进,展示了CBAM的广泛适用性。因为我们已经小心地将我们的模块设计得很轻,所以在大多数情况下,参数和计算的开销可以忽略不计。
主要贡献
1.我们提出了一个简单而有效的注意模块(CBAM),它可以广泛应用于提高CNNs的表征能力。
2.我们通过广泛的消融研究来验证我们的注意模块的有效性。
3.通过插入我们的轻型模块,我们验证了各种网络的性能在多个基准(ImageNet-1K、MS COCO和VOC2007)上有很大提高。
网络工程。“网络工程”一直是最重要的视觉研究之一,因为设计良好的网络可以确保在各种应用中显著的性能提升。自从大规模CNN的成功实施以来,已经提出了广泛的体系结构[19]。一种直观简单的扩展方式是增加神经网络的深度[9]。Szegedy等人[10]介绍了一个使用多分支架构的深度初始网络,其中每个分支都是精心定制的。由于梯度传播的困难,深度的简单增加达到饱和,而ResNet [5]提出了一种简单的身份跳过连接来缓解深度网络的优化问题。基于ResNet架构,开发了各种模型,如WideResNet[6]、Inception-ResNet [8]和ResNeXt [7]。WideResNet [6]提出了一种具有大量卷积滤波器和减小深度的残差网络。PyramidNet [20]是WideResNet的严格推广,其中网络的宽度逐渐增加。ResNeXt [7]建议使用分组卷积,并表明增加基数会导致更好的分类精度。最近,黄等人[21]提出了一种新体系结构DenseNet。它迭代地将输入特征和输出特征连接起来,使得每个卷积块能够接收来自所有先前块的原始信息。虽然大多数最近的网络工程方法主要针对三个因素深度[19,9,10,5],宽度[10,22,6,8]和基数[7,11],但我们关注的是另一个方面:“注意力”,人类视觉系统的一个奇怪方面。
注意机制。众所周知,注意力在人类感知中起着重要作用[23–25]。人类视觉系统的一个重要特性是,人们不会试图同时处理整个场景。相反,为了更好地捕捉视觉结构,人类利用一系列局部瞥见并选择性地聚焦于显著部分[26]。
最近,已经有一些尝试[27,28]将注意力处理结合起来,以提高CNNs在大规模分类任务中的性能。王等[27]提出了残差注意网络,它使用了一个编解码方式的注意模块。通过细化特征图,网络不仅表现良好,而且对噪声输入也很鲁棒。我们没有直接计算3d注意力图,而是将学习通道注意力和空间注意力的过程分别分解。3D特征图的单独注意力生成过程具有非常少的计算和参数头,因此可以用作预先存在的基本CNN架构的即插即用模块。
与我们的工作更加接近,Hu等人[28]引入了一个紧凑的模块来开发通道间的关系。在他们的压缩和激发模块中,他们使用全局平均集合特征来计算信道上的注意力。然而,为了推断出良好的通道注意力,我们表明这些都是次优特征,我们建议使用最大汇集特征。它们还会忽略空间注意力,而空间注意力在决定注意力的“位置”方面起着重要作用,如[29]所示。在我们的CBAM中,我们基于一种有效的架构同时利用了空间注意力和通道注意力,并通过经验验证了利用两者都优于只使用通道注意力作为[28]。此外,我们的经验表明,我们的模块是有效的检测任务(MS-COCO和VOC)。特别是,我们仅仅通过将我们的模块放在VOC2007测试集中现有的一次性检测器[30]的顶部,就实现了最先进的性能。
输入中间特征图 F ∈ R C × H × W F∈R^{C×H×W} F∈RC×H×W,CBAM依次推导出一维通道注意力图 M c ∈ R C × 1 × 1 M_c∈R^{C×1×1} Mc∈RC×1×1和二维空间注意力图 M s ∈ R 1 × H × W M_s∈R^{1×H×W} Ms∈R1×H×W,如图1所示,整体的注意过程可总结为:
在⊗表示逐元素乘法。在乘法过程中,注意值被相应地播放(复制):通道注意值被沿空间维度播放,反之亦然。 F ′ ′ F'' F′′是最终的精炼输出。图2描述了每个注意图的计算过程。下面介绍每个注意模块的细节。
图1:CBAM概述。该模块有两个顺序子模块:通道和空间。在深度网络的每个卷积块上,通过CBAM模块自适应地细化中间特征图。
通道注意模块。我们利用特征的通道间关系生成通道注意图。由于特征图的每个通道被认为是[31]特征检测器,通道注意力集中在给定输入图像的“什么”是有意义的。为了有效地计算通道注意力,我们压缩了输入特征图的空间维数。对于空间信息的聚合,一般采用平均池化。Zhou et al.[32]建议使用它来有效地学习目标对象的程度,Hu et al.[28]在他们的注意模块中使用它来计算空间统计。除了之前的研究,我们认为,最大汇集汇集了另一个关于独特物体特征的重要线索,从而推断出更精细的注意力渠道。因此,我们同时使用了平均池化和最大池化特征。我们通过经验证实,利用这两种特性可以大大提高网络的表示能力,而不是单独使用它们(见第4.1节),这表明了我们设计选择的有效性。我们将在下面详细描述操作。
图2:各注意子模块示意图。作为说明,通道子模块利用共享网络的最大池化输出和平均池化输出;空间子模块利用类似的两个输出,沿着通道轴汇集并将它们转发到卷积层。
首先使用平均池化和最大池化操作聚合特征图的空间信息,生成两个不同的空间上下文描述符: F a v g c 和 F m a x c F^c_{avg}和F^c_{max} Favgc和Fmaxc,分别表示平均池化特征和最大池化特征。然后,两个描述符被转发到共享网络,以产生我们的通道注意力图 M c ∈ R C × 1 × 1 M_c∈R^{C×1×1} Mc∈RC×1×1。共享网络由一个隐含层的多层感知器(MLP)组成。为减少参数开销,将隐藏激活大小设为 R C / r × 1 × 1 R^{C/r×1×1} RC/r×1×1,其中r为约简率。将共享网络应用到每个描述符后,我们使用按元素进行求和的方法合并输出的特征向量。简而言之,通道注意计算为:
式中,σ得上是sigmoid函数, W 0 ∈ R C / r × C W_0∈R^{C/r×C} W0∈RC/r×C, W_1∈R^{C×C/r}。请注意,MLP权重 W 0 W_0 W0和 W 1 W_1 W1对于两个输入都是共享的,ReLU激活函数后面跟着 W 1 W_1 W1。
空间注意模块。利用特征间的空间关系生成空间注意图。与通道注意不同,空间注意的重点是“哪里”是一个信息的部分,这是通道关注的补充。为了计算空间注意力,我们首先在通道轴上应用平均池化和最大池化操作,并将它们连接起来生成一个有效的特征描述符。沿着通道轴应用池化操作可以有效地突出显示信息区域[33]。在连接的特征描述符上,我们应用卷积层生成空间注意图 M s ( F ) ∈ R H × W M_s(F)∈R^{H×W} Ms(F)∈RH×W编码在哪里强调或抑制。我们将在下面详细描述操作。
我们通过两种pooling操作聚合一个feature map的通道信息,生成两个2D map: F a v g s ∈ R 1 × H × W F^s_{ avg}∈R^{1×H×W} Favgs∈R1×H×W和 F m a x s ∈ R 1 × H × W F^s_{max}∈R^{1×H×W} Fmaxs∈R1×H×W。每个都表示通道中平均池化的特征和最大池化特征。然后通过标准的卷积层将它们连接和卷积,生成我们的2D空间注意力图。简而言之,空间注意的计算方法为:
式中,σ算得为sigmoid函数,算得为 f 7 × 7 f^{7×7} f7×7滤波器尺寸为7×7的卷积运算。
注意模块的安排。给定一个输入图像,两个注意模块,通道和空间,计算互补注意,分别关注“什么”和“在哪里”。考虑到这一点,两个模块可以以并行或顺序的方式放置。我们发现顺序排列比并行排列的结果更好。对于序列过程的排列,实验结果表明通道一阶比空间一阶略好。我们将在第4.1节讨论网络工程的实验结果。
我们在标准基准上评估CBAM: ImageNet-1K用于图像分类;MS COCO和VOC 2007用于对象检测。为了更好地进行apple-to-apple之间的比较,我们在PyTorch框架[35]中复制了所有评估过的网络[5 - 7,34,28],并在整个实验中报告了我们的复制结果。
为了彻底评估我们最终模块的有效性,我们首先进行广泛的消融实验。然后,我们验证了CBAM优于所有没有花哨功能的基线,展示了CBAM在不同架构和不同任务中的一般适用性。人们可以将CBAM无缝集成到任何CNN架构中,并联合训练组合的CBAM增强网络。图3示出了作为例子的在ResNet [5]中与ResBlock集成的CBAM的图。
在这一小节中,我们从经验上展示了我们设计选择的有效性。对于本消融研究,我们使用ImageNet-1K数据集,并采用ResNet-50 [5]作为基础架构。ImageNet-1K分类数据集[1]由120万幅用于训练的图像和50,000幅用于1,000个对象类验证的图像组成。我们采用与[5,36]相同的数据增强方案进行训练,并在测试时应用大小为224×224的单作物评估。学习率从0.1开始,每30个epochs下降一次。我们为90个epoch训练网络。在[5,36,37]之后,我们报告验证集的分类错误。
我们的模块设计过程分为三个部分。我们首先寻找计算通道注意的有效方法,然后是空间注意。最后,我们考虑如何结合通道和空间注意模块。我们在下面解释每个实验的细节。
通道注意。我们通过实验验证了使用平均池化和最大池化特征能够实现更好的注意力推断。我们比较了通道注意度的三个变量:平均池、最大池和两个池的联合使用。请注意,平均池化的通道注意模块与SE[28]模块相同。此外,当使用两个池化时,我们使用共享的MLP进行注意力推断以保存参数,因为两个聚集的通道特征位于相同的语义嵌入空间中。在这个实验中,我们只使用通道注意模块,我们将缩减率固定为16。
各种池化方法的实验结果如表1所示。我们观察到,最大池化特征与平均池化特征一样有意义,与基线相比,准确性有所提高。然而,在SE [28]的工作中,他们只利用了平均池化特征,忽略了最大池化特征的重要性。我们认为编码最显著部分程度的最大池化特征可以补偿编码全局统计量的平均池化特征。因此,我们建议同时使用这两个特征,并对这些特征应用共享网络。然后,共享网络的输出通过按元素进行求和进行合并。我们的经验表明,我们的通道注意方法是一个有效的方法,以推动性能进一步远离SE[28]没有额外的可学习参数。作为一个简短的结论,在接下来的实验中,我们在我们的通道注意力模块中使用了平均和最大混合特征,减少比为16。
表1:不同通道注意方式的比较。我们观察到,使用我们提出的方法优于最近提出的挤压和激励方法[28]。
表2:不同空间注意方法的比较。使用建议的通道池(即沿通道轴的平均和最大池化)以及内核大小为7进行以下卷积运算效果最佳。
表3:通道注意与空间注意相结合的方法。同时使用两种注意力是至关重要的,而最佳组合策略(即顺序、渠道优先)进一步提高了准确性。
空间的注意。在给定信道特征细化的情况下,探索了一种计算空间注意的有效方法。设计理念与通道注意分支对称。为了生成一个二维空间注意力图,我们首先计算一个二维描述符,该描述符编码所有空间位置上每个像素的通道信息。然后我们对二维描述符应用一个卷积层,得到原始的注意图。最后的注意力图用s型函数归一化。
我们比较了生成2D描述符的两种方法:使用通道轴上的平均和最大池化的通道池化和标准的1×1卷积,将通道维数减少为1。此外,我们研究了以下卷积层中内核大小的影响:内核大小为3和7。在实验中,我们将空间注意模块放置在之前设计的通道注意模块之后,因为最终的目的是将两个模块一起使用。
实验结果见表2。我们可以观察到,通道池化产生了更好的准确性,表明显式建模的池化导致更好的注意力推断,而不是可学习的加权通道池(实现为1×1卷积)。在对不同卷积核大小的比较中,我们发现采用更大的核大小在两种情况下都能产生更好的精度。这意味着需要一个开阔的视野(即大的感受野)来决定重要的空间区域。考虑到这一点,我们采用通道池化方法和核大小较大的卷积层来计算空间注意力。在一个简短的结论中,我们使用了通道轴上卷积核大小为7的平均和最大池化特征作为我们的空间注意模块。
注意和空间注意的安排。在本实验中,我们比较了三种不同的通道和空间注意子模块的排列方式:顺序通道-空间、顺序空间-通道,以及两种注意子模块的平行使用。由于每个模块的功能不同,其顺序可能会影响整体性能。例如,从空间的角度来看,通道注意力是全局应用的,而空间注意力是局部工作的。此外,我们很自然地会认为,我们可以结合两种注意力输出来构建一个3D注意力图。在这种情况下,两个注意模块可以并行应用,然后将两个注意模块的输出相加,用s型函数进行归一化。
表3总结了不同注意安排方法的实验结果。从结果中,我们可以发现,按顺序生成一个注意力图比并行生成一个更好的注意力图。此外,通道一阶的性能略优于空间一阶。请注意,所有的安排方法都优于单独使用通道注意力,这表明利用两个注意力是至关重要的,而最佳的安排策略进一步推动性能。
最后一个模块的设计。在整个消融研究中,我们设计了通道注意模块,空间注意模块,以及两个模块的排列。最后的模块如图1和图2所示:通道注意模块和空间注意模块都选择了平均和最大池化;在空间注意模块中,我们采用核大小为7的卷积;我们按顺序排列通道和空间子模块。(也就是我们最后的模块。ResNet50 + CBAM)的top-1 error为22.66%,远低于SE[28](即。如表4所示。
我们进行ImageNet-1K分类实验来严格评估我们的模块。我们遵循4.1节中规定的相同协议,在ResNet[5]、WideResNet[6]、ResNext[7]等多种网络架构中评估我们的模块。
表4:ImageNet-1K分类结果。报告了单作物验证错误。
表4总结了实验结果。使用CBAM的网络性能明显优于所有基线,说明CBAM在大规模数据集中可以很好地推广到各种模型上。此外,采用CBAM的模型提高了最强大的方法之一——SE[28]的准确性,SE[28]是ILSVRC 2017分类任务的获胜方法。这表明我们提出的方法是强大的,显示了新的pooling方法的有效性,它能生成更丰富的描述子和空间注意,有效地补充了通道注意。
图4是ImageNet-1K训练时各网络的误差曲线。我们可以清楚地看到,我们的方法在两个误差图中显示了最低的训练和验证误差。这表明,与SE[28]相比,CBAM在提高基线模型泛化能力方面有更大的能力。
我们还发现,CBAM的总体开销在参数和计算方面都非常小。这促使我们将我们提出的模块CBAM应用到轻量级网络,MobileNet[34]。表5总结了我们基于MobileNet架构进行的实验结果。我们将CBAM分为两种模式,基本模式和容量减少模式。调整宽度倍增器(轮廓)为0.7)。
我们观察到类似的现象,如表4所示。CBAM不仅极大地提高了基线的精度,而且很好地改善了SE[28]的性能。这显示了CBAM对于低端设备上的应用程序的巨大潜力。
图4:ImageNet-1K训练时的误差曲线。以彩色观看效果最佳。
表5:使用轻量级网络MobileNet[34]对ImageNet-1K进行分类的结果。报告了单作物验证错误。
对于定性分析,我们使用来自ImageNet验证集的图像将Grad-CAM[18]应用于不同的网络。Grad-CAM是一种最近提出的可视化方法,它使用梯度来计算卷积层中空间位置的重要性。通过对某一特定班级的梯度计算,可以清楚地显示出参与区域。通过观察网络认为对预测类很重要的区域,我们试图看看这个网络是如何充分利用特征的。我们将CBAM集成网络(ResNet50 + CBAM)与基线(ResNet50)和SE集成网络(ResNet50 + SE)的可视化结果进行比较。图5显示了可视化结果。目标类的softmax分数也显示在图中。
在图5中,我们可以清楚地看到CBAMintegrated network的梯度凸轮遮罩比其他方法更好的覆盖目标区域。也就是说,cbamm集成的网络能够很好地学习利用目标目标区域中的信息并从中聚合特征。注意,目标类的分数也会相应增加。从观察结果来看,我们推测CBAM的特征细化过程最终会引导网络很好地利用给定的特征。
图5级凸轮[18]可视化结果。我们将cbamm集成网络(ResNet50 + CBAM)与基线(ResNet50)和SE集成网络(ResNet50 + SE)的可视化结果进行比较。最后计算卷积输出的梯度凸轮可视化。ground-truth标签显示在每个输入图像的顶部,P表示每个网络对于ground-truth类的softmax得分。
表6:MS COCO验证集上的目标检测映射(%)。我们采用更快的R-CNN[41]检测框架,并将我们的模块应用于基础网络。CBAM促进mAP@(。两种基准网络的比率都为0.9。
表7:VOC 2007测试集的对象检测图(%)。我们采用楼梯网[30]检测框架,检测器采用SE和CBAM。CBAM通过可以忽略的附加参数很好地改进了所有的强基线。
我们在Microsoft COCO dataset[3]上进行对象检测。这个数据集包含80k个训练图像(“2014 train”)和40k个验证图像(“2014 val”)。用于评估的是不同IoU阈值从0.5到0.95的平均值图。根据[38,39],我们使用所有的训练图像和一个验证图像子集来训练我们的模型,拿出5000个示例进行验证。我们的训练代码基于[40],我们对网络进行了490K的迭代训练,以快速验证性能。我们采用Faster-RCNN[41]作为检测方法,ImageNet预训练的ResNet50和ResNet101[5]作为基线网络。这里,我们感兴趣的是通过将CBAM插入基线网络来提高性能。由于我们在所有模型中使用了相同的检测方法,因此所获得的收益只能归因于模块CBAM所赋予的增强的表示能力。如表6所示,我们观察到与基线相比有显著的改进,证明了CBAM在其他识别任务上的泛化性能。
我们进一步在PASCAL VOC 2007测试集上进行了实验。在本次实验中,我们将CBAM应用于检测器,而之前的实验(表6)将我们的模块应用于基础网络。我们采用的是楼梯网[30]框架,它是基于SSD[39]的最强大的多尺度方法之一。在实验中,我们在PyTorch平台上复制SSD和StairNet,以准确估计CBAM的性能改进,并实现了77.8%和78.9%的地图@。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对于低端设备是一种有趣的方法。
我们提出了卷积瓶颈注意模块(CBAM),一种改进CNN网络表示能力的新方法。我们将基于注意力的特征细化应用于通道和空间两个不同的模块,在保持较小的开销的情况下实现了可观的性能提升。对于通道注意力,我们建议使用最大池化特征和平均池化特征,从而产生比SE[28]更好的注意力。利用空间注意力进一步推动表演。我们的最后一个模块(CBAM)学习什么和在哪里有效地强调或抑制和细化中间特性。为了验证其有效性,我们使用各种先进的模型进行了广泛的实验,证实了CBAM在三个不同的基准数据集(ImageNet-1K、MS COCO和VOC 2007)上的性能优于所有基线。此外,我们可以看到模块如何准确地推断给定的输入图像。有趣的是,我们观察到我们的模块引导网络正确地聚焦于目标对象。我们希望CBAM成为各种网络架构的重要组成部分。