CBAM(Convolutional Block Attention Module)

目录

总体介绍

CBAM(Convolutional Block Attention Module )模块

CAM(Channel attention module)

SAM(Spatial attention module)

CBAM的使用

消融实验

总结


        前面介绍了CVPR2017发表的关于通道注意力机制SENET:地址和CVPR2016发表的关于空间注意力机制STN:地址,有兴趣的同学可以去看看。今天介绍的是CVPR2018发表的混合域的注意力机制CBAM。CBAM将通道域和空间域同时融合到网络模型中,还是放上原文连接:CBAM

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

        卷积神经网络(CNNs)基于其丰富的特征表示能力显著提高了视觉任务。为了提高网络的性能,现在的研究主要关注网络的三个重要维度:深度、宽度和基数(参数量)。

总体介绍

        到目前为止,从LeNet到RestNet式的网络,网络变得更加深入,具有丰富的表征表达。VGGNet表明,堆叠相同形状的块体可以得到较好的结果。遵循同样的精神,ResNet堆栈相同的残差块跳跃连接,以构建一个更的网络结构。GoogLeNet表明,宽度是提高模型性能的另一个重要因素。Zagoruyko和Komodakis提出了基于ResNet架构增加网络宽度的方案。他们已经证明,在CIFAR基准上,增加宽度的28层ResNet可以比具有1001层的极深ResNet表现更好。Xception和ResNeXt是用来增加网络基数的。他们的实验结果表明,基数不仅节省了参数的总数,而且比其他两个因素(深度和宽度)产生更强的表达能力。除了网络的深度、宽度和基数外,本文讨论的注意力机制也是对网络模型性能提升的重要手段。注意力机制不仅告诉我们Feature Map要关注什么,也提高了特征感兴趣特征的表现。目标是通过注意机制来增加重要的特征,抑制不必要的特征。本文提出了一种新的网络模块,即“卷积块注意机制模块”。为此,本文依次应用通道注意力模块和空间注意力模块(如下图),使每个分支分别知道在特征的通道和空间上要关注哪里。因此,该模块通过学习加强或抑制相关的特征信息,有效地帮助信息在网络传递。

        该模块有通道和空间两个顺序子模块。在深度网络的每个卷积块上,通过模块(CBAM)自适应地细化中间特征图。

CBAM(Convolutional Block Attention Module )模块

        CBAM总体流程就是下面这俩式子:

        假设输入Feature Map:F\epsilon \left \{ \mathbb{R}^{C\times H\times W} \right \}M_{c}\epsilon \left \{ \mathbb{R}^{C\times 1\times 1} \right \}是通道注意力模块(Channel attention module)输出的通道权重数据为1×1×C,F^{^{'}}是通道注意力输出,M_{s}\epsilon \left \{ \mathbb{R}^{1\times H\times W} \right \}是空间注意力(Spatial attention module)的权重数据为2×H×W,将通道注意力输出结果F^{^{'}}与空间注意力权重×之后得到CBAM输出结果F^{''}

CAM(Channel attention module)

        利用特征间的通道关系生成通道注意图。每一个特征图都被认为是功能检测器,通道注意力集中在“什么”是有意义的输入图像。为了有效地计算通道注意力,CAM模块与SENET一样压缩了输入特征图的空间维度。对于空间信息的聚集,目前普遍采用全局平均池化。CAM除了前面的工作之外,认为最大池收集了另一个关于独特对象特性的重要线索,从而推断出更精细的通道关注。因此,我们CAM模块同时使用平均池和最大池特性。通过经验证实,利用这两种特性大大提高了网络的表达能力,而不是单独使用它们(论文后面实验给出了结论),这表明了CAM模块的设计更有效。我们将在下面描述详细的操作,下图是CAM的模块结构图:

        CAM利用了全局最大池化和平均池化的输出与共享模块MLP实现了通道注意力机制。CAM首先使用平均池化和最大池化操作聚合特征映射的空间信息,生成两个不同的空间上下文描述符:F_{avg}^{c}F_{max}^{c},分别表示平均池化特征和最大池化特征。然后,这两个描述符被转发到一个共享网络,以产生我们的通道注意地图M_{c}\epsilon \left \{ \mathbb{R}^{C\times 1\times 1} \right \},该共享网络由多层感知器(MLP)组成,其中有一个隐含层。其实共享网络与SENET设计是一样的,仅仅是多了GMP(Gloab Max Pooling)提取特征描述符。同样,为了减少参数开销,将隐藏激活大小设置为\mathbb{R}^{C/r\times 1\times 1},其中r是通道控制率。在共享网络应用于每个描述符之后,我们使用元素求和来合并输出特征向量,下面是CAM的计算公式:

        与SENET一样的操作,仅仅事多了一个利用GMP操作,这里就不多解释了,这个解释可以参考我之前的SENET:地址。如果还有同学不太了解的话,可以在文章下面评论区进行提问。

SAM(Spatial attention module

        SAM将CAM的通道注意力与输入的Feature Map进行元素相乘之后,得到了SAM的输入的Feature Map,SAM同样利用GAP和GMP操作,将通道特征汇聚,保留了最大池化和平均池化后的2个空间特征矩阵,如下图所示:

        SAM利用特征间内部的空间关系生成空间注意力特征图。空间注意力与通道注意力不同,空间注意力关注的是一个Feature Map内部的信息是哪一种信息,与通道注意力相辅相成。为了计算空间注意力,首先沿着通道方向应用MAP和GAP操作,并将它们连接起来以生成一个有效的特征描述符。我们使用两个channel = c的池化操作聚合feature map的通道信息,生成两个2D 的特征图: F_{avg}^{c}\epsilon \left \{ 1\times H\times W \right \}F_{max}^{c}\epsilon \left \{ 1\times H\times W \right \}。每个特征图都聚合了通道信息,表示跨通道的平均池特性和最大池特性。然后用一个标准的卷积层将它们连接和卷积生成这个2D空间注意力的Map。下面是计算流程的示意公式:

         在GAP和GMP操作之后,利用7×7的卷积核进行卷积获得到一个空间注意力的矩阵图,再使用sigmoid激活函数获得空间注意力的权重矩阵,也就是空间注意力图M_{s}(F)。最后再将输入的带有通道注意力机制的Feature Map与输出M_{s}(F)进行元素相乘获得到CBAM的输出结果。

CBAM的使用

        给定一个输入图像有两个注意力模块:通道注意力和空间注意力。计算互补关注,聚焦分别是“什么”和“在哪里”。考虑到这一点,两个模块可以以并行或顺序的方式放置。但是实验发现顺序排列比平行排列得到更好的结果。对于顺序过程的排列,实验结果表明,通道优先顺序略好于空间优先顺序,那么CBAM的使用如下图所示:

         这个图显示了CBAM模块集成到ResBlock中的确切位置。网络对每个块的卷积输出进行CBAM之后在进行下一个卷积块的操作。

消融实验

         

        通过表格可以看到ResNet50通过加入CBAM模块之后,参数量并没有提高很多,而且Top one和Top five的错误率都有所降低。

        在多个框架网络也通过对比未添加注意力机制网络、添加SE模块网络和添加SBAM的对比,发现添加CBAM之后网络效果均有提升。

        最后,论文利用Grad-CAM还对CBAM进行了可视化:

总结

         最后,对本文做一下总结吧。论文提出了卷积注意力模块(CBAM),这是一种提高CNN网络表示能力的新方法。将基于注意力的特征细化应用于通道和空间两个独特的模块,在保持开销较小的同时实现了相当大的性能改进。对于信道注意力,CBAM在使用平均池特性的同时使用最大池特性,从而产生比SENET更好的通道注意力效果。同时利用空间注意力进一步推动网络性能,可以用过训练,网络知道在哪里强调或抑制什么。为了验证CBAM的有效性,论文使用各种现有的网络模型进行了大量的消融实验,并证实CBAM在ImageNet-1K、MS COCO和VOC 2007三个不同基准数据集上的性能优于所有标准网络性能。此外,论文还实现可视化模块,准确地推断给定的输入图像的高关注点,观察到CBAM引导网络正确地聚集目标对象。

       以上就是对CBAM的详细解释,有哪不明确的地方欢迎大家可以评论区留言,觉得不错的同学可以给个一键三联^_^。下一篇总结一下Coordinate Attention

 

  • 12
    点赞
  • 81
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: CBAM是卷积块注意力模块的缩写,是一种用于交替堆叠到深度卷积神经网络(CNNs)中的模块。它包含两个子模块:通道注意力模块和空间注意力模块。通道注意力模块用来对每个通道进行加权,确定哪些通道最重要。空间注意力模块在每个通道中对所有空间位置进行加权,可以捕捉不同位置的重要性,从而更好地定位物体。 CBAM的优点在于,它能够提高CNNs的性能,减少了过度拟合的情况。CBAM结构的输入任意大小、任意通道数、任意深度,因此可以适用于各种计算机视觉任务,包括图像分类,物体检测和语义分割等。 总之,CBAM是一种具有高灵活性和高性能的卷积块注意力模块,能够极大地增强CNNs的表达能力,提高计算机视觉任务的准确性。 ### 回答2: CBAMConvolutional Block Attention Module),是一种用于图像分类的Attention模块,它主要是用于增强卷积神经网络(CNN)的特征表达能力,使得CNN能够更好地区分不同种类的图像。 CBAM结构由两部分组成,分别是CBAM-Channel和CBAM-Spatial。在CBAM-Channel中,它通过引入注意力机制,对每个通道的特征进行加权求和,并且使用全局平均池化操作,计算其重要性参数,进而对特征进行修正,从而提升模型的表达能力。CBAM-Spatial则通过空间注意力机制对图像中的区域进行注意力分配权重,进一步优化模型的性能。 CBAM在图像分类方面的性能表现非常卓越。实验证明,在对比原始ResNet和ResNeXt网络,以及加入CBAM的ResNet和ResNext网络进行图像分类时,加入CBAM的ResNet和ResNeXt网络具有更强的表达能力和更高的分类准确性,同时,它在训练过程中的收敛速度也有所提升。 总的来说,CBAM是一种非常有效的图像分类模块,利用注意力机制对CNN的特征进行增强,为图像分类任务提供了更好的性能表现。随着人工智能的迅速发展,CBAM在图像识别、物体检测等领域将具有广阔的应用前景。 ### 回答3: CBAM是卷积块注意力模块的缩写,它是一种用于图像分类和目标检测的神经网络模型。CBAM模块通过将通道和空间注意力机制组合在一起,从而有效地提高了模型的性能。 CBAM模块分为两个部分:通道注意力机制和空间注意力机制。通道注意力机制是针对图像特征中的通道信息进行关注,它可以基于每个通道的特征图来计算权重,然后对于每个通道进行信息的调整和加权。这样,在网络中的每个层次上都能更好地利用有用的通道信息,减少无用信息对网络性能的影响。 空间注意力机制是针对图像特征中的空间信息进行关注。它能够自适应地计算每个像素点的权重,然后对于每个像素点进行信息的调整和加权。这样,网络中的每个空间位置都能更好地利用有用的空间信息,提高目标检测和分类的准确率。 通过组合这两种注意力机制,CBAM模块能够区分有用和无用的特征,从而在图像分类和目标检测任务中取得更好的性能。CBAM模块通常被用在深度卷积神经网络中,例如ResNet以及MobileNet等,以提高整个网络中的特征提取能力和分类性能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值