简介

CBAM是ECCV2018年的文章,提出一个新的结构。SENet在特征图的通道上进行attention生成,然后与原来的特征图相乘,这种attention方法只关注了通道层面上哪些层会具有更强的反馈能力,但是在空间维度上并不能体现出attention思想。由于卷积运算通过混合跨信道和空间信息来提取信息特征,我们采用模块来强调这两个维度上有意义的特征:通道和空间。为了实现这一点,我们依次应用通道和空间注意模块,这样每个分支就可以分别在通道和空间上学习‘’what‘’和‘’where‘’需要注意。因此,我们的模块通过学习哪些信息需要强调和抑制,有效地帮助网络中的信息流。CBAM将attention同时运用在channel和spatial两个维度上。性能的提高来自于准确的注意和无关杂波的降噪。
CBAM可以嵌入目前大部分的主流网络中,在不显著增加计算量和参数量的前提下能提升网络模型的特征提取能力。
本文的贡献主要有以下三点:
(1)提出了高效的attention模块-CBAM,该模块能够嵌入到目前的主流CNN网络结构中。
(2)通过额外的消融实验证明CBAM中attention的有效性。
(3)在ImageNet-1K等数据集上证明了CBAM的性能提升。

网络结构

基于传统VGG结构的CBAM模块,需要在每个卷积层后面加该模块。
CBAM论文记录
基于shortcut结构的CBAM模块,例如ResNet,该模块在每个ResNet的block后面加该模块。
CBAM论文记录
F为输入特征图时,本文提出的CBAM主要对其进行以下两个运算:
CBAM论文记录
等号右边的操作符表示的是element-wise的点乘。Mc表示在通道维度上做attention提取的操作,Ms表示在空间上做attention提取操作。下图分别展示了Channel Attention Module和Spatial Attention Module的处理过程。
Channel attention module
CBAM论文记录
首先将特征图在spatial维度上进行压缩,得到一个一维矢量后再进行操作。与SENet不同的是,对输入特征图进行spatial维度压缩时,作者不单单考虑了average pooling,额外引入了max pooling作为补充,通过两个pooling函数以后总共可以得到两个一维矢量。然后分别经过MLP,将MLP输出的特征进行基于element-wise的加和操作,再经过sigmoid**操作,生成最终的channel attention feature。将该channel attention feature map和输入特征图做element-wise乘法操作,生成Spatial attention模块需要的输入特征。
global average pooling对特征图中上的每一个像素点都有反馈,而global max pooling在进行梯度反向传播计算只有特征图中响应最大的地方有梯度反馈,能作为GAP的一个补充。
做法如下,F表示输入特征图,Favg和Fmax分别表示经过global average pooling和global max pooling计算后的特征。W0和W1代表是多层感知机制模型中的两层参数,r表示减少率,Wo和W1之间的特征需要使用ReLU作为**函数去处理。在这部分的计算可以用如下公式表示:
CBAM论文记录
Spatial attention module
CBAM论文记录

这部分是不同于SENet的重要贡献,除了在通道上生成attention模型,作者表示在spatial层面上也需要网络明白特征图中哪些部分应该有更高的响应。首先使用average pooling和max pooling对输入特征图进行压缩操作,只不过这里的压缩变成了通道层面上的压缩,对输入特征分别在通道维度上做mean和max操作。最后得到两个二维的feature,将其按通道维度拼接在一起得到应该通道数为2的特征图,之后使用一个包含单个卷积核的隐藏层对其进行卷积操作,要保证最后得到的特征在spatial维度上与输入的特征图一致。降维为1个channel,再经过sigmoid生成spatial attention feature,最后将该feature和该模块的输入feature做乘法,得到最终生成的特征。7 * 7表示卷积核的大小。后面实验证明7 * 7卷积核比3 * 3卷积核的效果更好。
CBAM论文记录

实验

Channel attention
主要是以ResNet-50作为baseline,同时对比SE,可以发现,attention方法提升网络的表征能力,在其中使用AvgPool作为spatial压缩方法对比MaxPool体现出了更好的优越性,当将两者结合在一起以后网络的表征能力更强。
CBAM论文记录
Spatial attention
这部分讨论在channel attention的基础上讨论了spatial attention的内部组成对全局的影响,实验结果如下。K表示了最后用于得到特征图的卷积层中卷积核的大小,倒数四行中括号的第一个操作,分别表示作者使用avg&max或者1 * 1的卷积层去将输入特征图进行通道上的压缩。最终,使用了7 * 7的卷积核和avg&max的通道压缩方式可以得到最好的分类结果,表示了更大的卷积核在深层上能够组合更加全局的特征,采用较大的核大小可以产生更好的精度,这意味着需要一个广阔的感受野来决定空间上的主要区域。
CBAM论文记录
Arrangement of the channel and spatial attention
关于channel attention module和spatial attention module的组合顺序,论文做了实验,考虑了三种情况:channel-first,spatial-first,和两者并行的方式,可以看出channel-first能够取得最好的结果。
CBAM论文记录

优秀博客链接:https://blog.csdn.net/u013738531/article/details/82731257
https://blog.csdn.net/qq_14845119/article/details/81393127
代码:https://github.com/luuuyi/CBAM.PyTorch/blob/master/model/resnet_cbam.py

相关文章: