CBAM:
本文提出卷积块注意模块(CBAM)——前馈卷积神经网络的一种简单而有效的注意模块。给定一个中间 feature map,CBAM模块沿着通道和空间两个维度依次推导 attention map,然后将 attention map 乘以 输入feature map进行自适应的特征细化。
CBAM特点:
CBAM是一个轻量级的通用模块,它可以无缝地集成到任何CNN架构中,而开销可以忽略不计,并且可以与基本的CNN一起进行端到端的训练。
实验:
在ImageNet-1K、MS COCO检测和VOC 2007检测数据集上进行大量实验来验证CBAM。实验结果显示了不同模型在分类和检测性能方面的一致改进,表明CBAM的广泛适用性。
CNN架构设计的三个因素(宽度,深度,基数):
卷积神经网络(Convolutional neural networks, CNNs)基于丰富的表征能力,显著地推动了视觉任务的性能。为了提高CNN的性能,近年来的研究主要集中在三个重要的网络因素:深度、宽度和基数。从LeNet体系结构到到目前为止的残差式网络,网络已经变得更加深入。
(1)VGGNet:表明采用相同形状的块叠加得到的结果是公平的。
(2)ResNet:遵循同样 的理念,堆叠相同的residual blocks拓扑结构和skip连接,构建一个非常深的架构。
(3)GoogLeNet:显示宽度是提高模型性能的另一个重要因素。
(4)Zagoruyko和Komodakis :建议在ResNet架构的基础上增加网络的宽度,并且已经证明了28层的ResNet 增加宽度在CIFAR基准上可以超过一个非常深的ResNet 1001。
(5)Xception 和ResNeXt :提出增加网络的基数,并通过经验表明基数不仅节省了参数的总数,而且比其他两个因素(深度和宽度)具有更强的表示能力。
CNN架构设计的另一因素(attention注意):
除了上述因素(宽度,深度,基数),本文研究了架构设计的一个不同方面——attention注意。 attention的意义在以往的文献中得到了广泛的研究,不仅告诉我们应该关注哪里,还能改善感兴趣(区域)的表征。本文目标是利用注意机制来增加表征能力:关注重要特征,抑制不必要特征。
卷积块注意模块(CBAM):
本文提出一个新的网络模块,——卷积块注意模块。由于卷积操作通过混合跨通道信息和空间信息来提取信息特征,我们采用我们的模块来强调沿这两个主要维度的有意义的特征:通道轴和空间轴。为了实现这一点,依次应用通道和空间注意模块(如图1所示),这样每个分支就可以分别在通道轴和空间轴上了解关注“什么”和“哪里”。因此本文模块通过学习哪些信息应该强调或抑制,有效地帮助信息在网络中流动。
实验结果:
在ImageNet-1K数据集中,通过在各种基线网络中插入本文模块获得了精度的提高,表明了CBAM的有效性。
使用grad-CAM可视化训练模型, 观察到与基线网络相比,CBAM使得网络更正确地关注目标对象。我们推测性能的提高来自于精确注意和对不相关杂波的降噪。
最后在MS COCO和VOC 2007数据集上验证了目标检测性能的提高,证明了CBAM具有广泛适用性。
CBAM模块为轻量级,所以在大多数情况下参数和计算的开销可以忽略不计。
本文贡献:
1.我们提出了一种简单而有效的注意模块(CBAM),可广泛应用于提高CNN的表征能力。
2. 通过广泛的消融研究来验证本文注意模块的有效性。
3.通过插入本文轻量级模块,验证了各种网络的性能在多个基准测试(ImageNet-1K、MS COCO和VOC 2007)上得到了极大的提高。
Network engineering:
已成为最重要的视觉研究之一,精心设计的网络可以确保在各种应用中显著的提高性能。自大规模CNN成功实现以来,人们提出了广泛的架构:
(1)Inception网络:Szegedy等人引入一个使用多分支架构的深度Inception网络,其中每个分支都是精心定制的。
(2)ResNet:单纯的增加深度会导致梯度传播困难,因此ResNet 提出了一种简单的identity skip-connection来缓解深度网络的优化问题。
(3)WideResNet:提出了一个带有大量卷积滤波器和降低深度的残差网络。
(4)PyramidNet:是对网络宽度是逐渐增大的WideResNet的严格泛化。
(5)ResNeXt:建议使用分组卷积,并表明增加基数可以获得更好的分类精度。
(6)DenseNet:迭代地连接输入特征和输出特征,使每个卷积块能够从之前的所有块接收原始信息。
总结: 目前大多数Network engineering方法主要针对深度 ,宽度 ]和cardinality 三个因素,本文关注的是另一个因素——“注意力”。
注意力机制:
众所周知,注意力在人类知觉中起着重要作用,人类视觉系统的一个重要特性是,人们不会试图一次处理整个场景。相反为了更好地捕捉视觉结构,人类会利用一系列局部瞥见,有选择地聚焦于突出部分。最近有几项尝试利用注意处理,提升大规模分类任务中的性能。
(1)Residual Attention Network:残差注意网络,使用了一种编码 - 解码器风格的注意模块,通过细化特征映射,该网络不仅表现良好,而且对输入噪声具有鲁棒性。
(2)本文CBAM:与直接计算3D attention map不同,本文将通道注意力和空间注意力的学习过程分解开来,3D特征图的独立注意生成过程计算量、参数开销小,因此可以作为已存在的基本CNN架构的即插即用模块。
(3)Squeeze-and-excitation networks:引入了一个紧凑的模块来利用通道间的关系,与本文工作接近:1)在他们的“Squeeze-and-Excitation”模块中,使用全局平均池特征来计算逐通道注意力,然而这些是次优特征。为推断良好的通道注意,本文建议使用最大池化特征。2)没有使用空间注意力,空间注意力在决定关注的“位置”上扮演着重要角色。
总结:
CBAM:基于一种有效的架构,同时利用空间和通道注意,并通过经验验证了两者的利用优于仅使用通道注意。经验表明,本文模块在检测任务(MS-COCO和VOC)上是有效的,特别是只要将我们的模块放在VOC2007测试集中现有的单阶段检测器 上, 就可以实现最先进的性能。
输入为中间特征图F∈RC×H×W,CBAM依次推导出1D通道注意力映射(channel attention map)Mc∈RC×1×1和2D空间注意力映射(spatial attention
map)Ms∈R1×H×W,如图1。整个注意过程可以概括为:
其中⊗表示逐元素相乘,在乘法过程中,注意力值(attention values )被相应地传播(复制):通道注意值沿着空间维度传播。f’'是最终的细化输出。图2描述每个注意力图(attention map)的计算过程。
利用特征间的通道关系来生成通道注意力图(channel attention map)。feature map的每个通道都被认为是一个特征检测器,通道注意力关注给定输入图像中“什么”是有意义的。
为有效计算通道注意力,压缩输入特征图的空间维数(空间信息聚合):
1)平均池化( average-pooling)是目前普遍采用的方法,
2)最大池化(max-pooling)我们认为它收集了关于目标特征另一个重要线索,以推断更精细的通道注意的。
我们同时使用平均池化和最大池化来池化特征。经验证实利用这两个特征比单独使用每一个特征能极大地提高网络的表征能力
详细操作:
(1)首先通过使用平均池化(average-pooling)和最大池化(max-pooling)操作聚合特征图的空间信息,生成两个不同的空间上下文描述符,分别表示平均池化特征和最大池化特征。
(2)然后这两个空间描述符被转发到一个共享网络,来产生通道注意力映射(channel attention map)Mc∈RC×1×1。共享网络由包含一个隐藏层的多层感知器(MLP)组成,为了减少参数开销,隐藏的激活大小设置为RC/r×1×1,其中r是缩减率。
(3)共享网络应用于每个描述符后,使用逐元素求和来合并输出特征向量。
通道注意力计算方式:
其中σ为sigmoid函数,W0∈RC/r×C, W1∈RC×C/r。注意MLP权重W0和W1对于两个输入都是共享的,ReLU激活函数后面跟着W0。
利用特征间的空间关系生成空间注意力图(spatial attention map)。与通道注意力不同的是,空间注意力关注输入图像中“哪里”是信息部分,是对通道注意力的补充。
为了计算空间注意力:
1)首先沿着通道轴应用平均池化和最大池化操作,并将它们连接起来生成一个有效的特征描述符。(沿着通道轴应用池化操作在突出显示信息区域方面被证明是有效的);
2)然后在连接的特征描述符上,应用卷积层生成空间注意力图Ms(F)∈RH×W,编码在何处进行强调或抑制。
详细操作:
(1)通过两个池化操作聚合一个特征图的通道信息,生成两个2D映射:,分别表示跨通道的平均池化特征和最大池化特征。
(2)然后将这些信息连接起来并通过一个标准的卷积层进行卷积,产生2D空间注意力图。
(3)最后通过sigmoid函数进行标准化得到最终注意力图。
空间注意力计算如下:
其中σ为sigmoid函数,f7×7为7×7的卷积运算
给定一个输入图像,两个注意力模块——通道注意力模块和空间注意力模块),计算互补注意力,分别关注“什么”和“哪里”。
两个模块可以以并行或顺序的方式放置,但顺序排列比平行排列得到更好的结果。实验结果表明在顺序排列方式上,通道注意力优先的排列比空间注意力优先的排列略好。
在标准基准上评估CBAM:ImageNet-1K用于图像分类、MS COCO和VOC 2007用于目标检测。
为了彻底评估CBAM模块的有效性,进行了大量的烧蚀实验,实验验证了CBAM优于所有的基线,CBAM在不同体系结构和不同任务中具有一般适用性,可以在任何CNN架构中无缝地集成CBAM,并共同训练联合CBAM的增强网络。 图3以ResNet为例的CBAM与ResBlock集成示意图。
实验设置:
(1)使用ImageNet-1K数据集,ImageNet-1K分类数据集由120万张用于训练的图像和50000张用于验证的图像组成,包含1000个类。
(2)采用ResNet-50作为基础架构。
(3)采用数据增强方案进行训练,并在测试时应用大小为224×224的 single-crop评价。
(4)学习速率从0.1开始,每30个epoch下降一次,网络训练90个epoch,并报告了在验证集的分类错误。
模块设计过程分为三个部分:
(1)首先寻找计算通道注意的有效方法;
(2)然后是探索计算空间注意的有效方法;
(3)最后考虑如何结合通道和空间注意模块。
通过实验验证同时使用平均池化和最大池化的特征能够更好地进行注意力推断。
(1)实验设置:
比较3种不同的通道注意力:
1)平均池化(average pooling):具有平均池化注意的通道注意模块与SE模块相同;
2)最大池化( max pooling);
3)两种池化的联合使用:当使用两个池化时,使用共享的MLP进行注意推断以节省参数,因为这两个聚合通道特征都处于同一个语义嵌入空间。
(2)实验结果:(表1)
1)最大池化的特征和平均池化的特征一样有意义,比基线提高了准确性。在SE的工作中,只利用了平均池化的特征而忽略了最大池化特征的重要性。
2)本文认为最大池化特征编码最显著部分的程度,可以补偿编码全局统计的平均池化特征。本文建议同时使用这两个特性,并对这些特性应用共享网络,然后共享网络的输出按逐元素求和的方式进行合并。
(3)实验表明:
本文通道注意方法是一种有效的方法,性能远超SE,并且没有额外的可学习参数。
(4)结论:
本文通道注意模块中同时使用了平均池化和最大池化特征。
已经给出了基于通道的精细特征,我们探索一种计算空间注意力的有效方法,设计理念与通道注意分支对称。
(1)生成2D空间注意力图:
1)首先计算一个2D描述符,在所有空间位置的每个像素上编码通道信息;
2)然后对2D描述符应用一个卷积层,得到原始注意力图;
3)最后通过sigmoid函数进行标准化得到最终注意力图。
(2)两种生成2D描述符的方法:
1)通道池化:在通道轴上使用平均池化和最大池化;
2)标准的1×1卷积:将通道维数减小为1。
(3)研究卷积核大小在卷积层的影响:
卷积核大小为3和7。
(4)实验设置:
实验中将空间注意模块放置在前面设计的通道注意模块之后,最终的目标是将两个模块一起使用。
(5)实验结果:(表2)
1)通道池化生成2D描述符的方法产生了更好的准确性,这表明明确建模的池化产生了更好的注意力推理,相比于可学习的权重通道池化(既标准1 × 1卷积)。
2)在对不同卷积核大小的比较中,我们发现采用较大的卷积核能产生更好的精度,这意味着需要一个广阔的视野(即大的接受野)来决定重要的空间区域。
(6)结论:
使用横跨通道轴的平均池化和最大池化的特征(采用通道池化的方法),加上卷积核大小为7的卷积层(大卷积核尺寸),作为我们的空间注意模块,计算空间注意力。
(1)实验设置:
比较了三种不同的通道注意和空间注意模块的排列方式:
1)顺序通道-空间注意
2)顺序空间-通道注意
3)两个注意模块的并行使用。
(1)实验设计理念:
1)由于每个模块的功能不同,模块的顺序可能会影响整体性能,如从空间的角度来看,通道注意是全局的,而空间注意则是局部的。
2)此外我们很自然地认为可以结合两种注意力输出来构建一个3D注意力图,在这种情况下可以将两个注意模块并行应用,然后将两个注意模块的输出相加,用sigmoid函数进行归一化。
实验结果(表3):
1)顺序生成注意力图比并行生成注意图更精细。
2)通道优先的排列方式比空间优先的排列方式的性能稍好。
3)所有的安排方法都比单独使用通道注意力的效果好,这表明利用这两种注意力是至关重要的,而最佳安排策略将进一步推动性能。
在消融研究中,设计了通道注意模块、空间注意模块以及两个模块的排列。
最终的模块:在通道和空间注意模块上都选择了average- and max-pooling;在空间注意模块中使用卷积核大小为7的卷积层;将通道子模块和空间子模块按顺序排列,如图1,2。 .
最后的模块ResNet50 + CBAM的top-1 error值为22.66%,远低于ResNet50 + SE的top-1 error值,见表4。
在ImageNet-1K分类实验中评估本文的模块在各种网络架构:ResNet , WideResNe,ResNext的表现。
实验结果(表4):
1)使用CBAM的网络明显优于所有的基线,表明CBAM可以在大规模数据集的各种模型上很好地泛化;
2)使用CBAM的模型比最强的方法之一SE(ILSVRC 2017分类任务的获胜方法)提高了准确性,意味着本文提出的方法是强大的,显示了新的池化方法的有效性,产生更丰富的描述符和空间注意,有效补充通道注意。
各网络在ImageNet-1K训练过程中的误差曲线(图4):
本文方法在两个错误图中显示出最低的训练和验证错误。表明与SE相比CBAM具有更强的提高基线模型泛化能力的能力。
CBAM在参数和计算方面的总体开销都相当小:
CBAM在参数和计算方面的总体开销都相当小,促使我们将CBAM模块应用于轻量级网络,MobileNet。
表5总结了基于MobileNet架构的实验结果,将CBAM分为两种模式,基本模块和减少容量模块(即调整宽度乘数(α)到0.7)。CBAM不仅显著提高了基线的准确性,而且很好地提高了性能。显示了CBAM在低端设备上应用的巨大潜力。
Grad-CAM:
为了定性分析,使用ImageNet验证集的图像在不同的网络上应用Grad-CAM。Grad-CAM是最近提出的一种可视化方法,它利用梯度来计算卷积层中空间位置的重要性。 由于梯度是根据一个唯一的类计算的,Grad-CAM结果清楚地显示了参加的区域,通过观察网络认为对预测类很重要的区域,试图看这个网络是如何很好地利用特征。
可视化对比:
比较CBAM集成网络(ResNet50 + CBAM)与基线网络(ResNet50)和SE集成网络(ResNet50 + SE)的可视化结果。图5为可视化结果,目标类的softmax分数也显示在图中。
在图5中可以清楚地看到,CBAM集成网络的Grad-CAM masks比其他方法更能覆盖目标对象区域,也就是说CBAM集成的网络能够很好地学习利用目标区域的信息并从中聚合特征,目标类分数也相应提高。通过观察,我们推测CBAM的特征细化过程最终导致网络很好地利用给定的特征。
实验设置:
1)数据集:Microsoft COCO数据集包括80k训练图像(“2014训练”)和40k验证图像(“2014 val”)。
2)评价指标:从0.5到0.95不同IoU阈值上的mAP用于评价。
3)训练集及验证集:使用所有的训练图像以及验证图像的子集来训练模型,5000个图像进行验证。
4)迭代步数:训练迭代490K。
5)基线网络:采用Faster-RCNN目标检测方法,ImageNet预训练的ResNet50和ResNet101作为基线网络。
将CBAM插入基线网络(目标检测主干网络)提高性能,由于在所有模型中使用相同的检测方法,增益只能归因于CBAM模块增强表征能力。
实验结果:(表6)
CBAM在其他识别任务上的泛化性能较基线显著提高。
将CBAM模块应用于检测器,之前的实验(表6)将CBAM模块应用于基础网络。
实验设置:
1)采用基于SSD的最强多尺度方法之一 StairNet。
2)将SE和CBAM放在每个分类器的前面,在预测前细化由上采样的全局特征和相应的局部特征组成的最终特征,强制模型自适应地选择有意义的特征。
3)数据集:在VOC 2007 trainval和VOC 2012 trainval(“07+12”)的联合集上对所有模型进行训练,在VOC 2007测试集上进行评估。
4)训练epoch为250,使用权重衰减为0.0005,动量为0.9,输入图像的大小都固定为300。
实验结果:(表7)
CBAM提高了两个骨干网基线的准确性 ,并且CBAM的精度提高伴随着可以忽略的参数开销,这表明增强不是由于单纯的容量增量,而是由于有效的特性细化。
此外使用轻型骨干网的结果再次表明,CBAM可以是一个有趣的低端设备的方法。
本文:
提出卷积瓶颈注意模块(CBAM)——一种提高CNN网络表征能力的新方法。
采用基于注意力的特征精细化方法,分别采用通道和空间两个不同的模块,在保持开销较小的同时,获得了相当大的性能提升。
通道注意力模块使用最大池化特征和平均池化的特征,产生比SE更好的注意力;通过利用空间注意力模块来进一步推动性能。
最终模块(CBAM)学习到了应该强调或抑制‘’什么‘’和‘’哪里‘’,精细化中间特征。
实验结果:
为验证其有效性,使用各种先进模型进行大量实验,并证实CBAM在三个不同的基准数据集上优于所有基线:ImageNet-1K、MS COCO和VOC 2007。
可视化结果:
可视化模块如何准确地推断给定的输入图像,观察到CBAM模块诱导网络正确地聚焦目标对象。
我们希望CBAM成为各种网络架构的重要组成部分。