天天看点

CBAM: Convolutional Block Attention Module论文笔记

论文链接:CBAM: Convolutional Block Attention Module

摘要:

提出了卷积注意模块(CBAM),这是一种简单有效的卷积神经网络注意模块。在给定一个中间特征图的情况下,该模块对特征图通道和空间两个维度分别计算注意力,然后将注意图乘到输入的特征图中。因为CBAM是一个轻量级的通用模块,它可以无缝地集成到任何CNN架构中,开销可以忽略不计,并且可以与基本CNNs一起端到端培训。通过对ImageNet-1K、MS COCO检测和VOC 2007检测数据集的大量实验验证了CBAM的有效性。实验结果表明,不同的模型在分类和性能上都有较大的提高,说明了CBAM具有广泛的可移植性。

思路:

这篇论文是主要就是将通道注意力机制和空间注意力机制结合起来,通道间注意力机制负责告诉网络哪个通道是重要的,空间注意力机制告诉网络哪个区域是重要的。通过这样方式,就能在网络训练的过程中增强重要的通道和区域,抑制不重要的通道和区域,从而提高性能。

网络结构:

卷积注意模块(CBAM):

CBAM: Convolutional Block Attention Module论文笔记

 这个就是网络提出的卷积注意力模块,对于输入的特征图

CBAM: Convolutional Block Attention Module论文笔记

,先用其求出通道间注意力,得出一个通道间注意力向量,向量长度为

CBAM: Convolutional Block Attention Module论文笔记

,用这C个值分别乘以输入特征图的C个通道,这样,重要的通道对应的那个值就比较大,意味着权重比较大。然后用经过通道增强的特征图沿着通道的维度计算空间注意力,得到一个

CBAM: Convolutional Block Attention Module论文笔记

的注意力矩阵,用这个矩阵去乘以经过通道增强的特征图(将这个特征图复制C遍(Python中叫做广播),得到一个

CBAM: Convolutional Block Attention Module论文笔记

的特征图,和经过通道增强的特征图逐元素相乘即可),输出最终的结果。计算公式如下:

CBAM: Convolutional Block Attention Module论文笔记
CBAM: Convolutional Block Attention Module论文笔记

分别代表全局最大池化和全局平均池化,

CBAM: Convolutional Block Attention Module论文笔记

分别代表输入特征图,经过通道优化的特征图和经过通道,空间优化的特征图。 

CBAM: Convolutional Block Attention Module论文笔记

表示逐像素相乘。

通道间注意力模块:

CBAM: Convolutional Block Attention Module论文笔记

如图,这是通道间注意力机制的具体操作,主要是全局池化操作,作者说SeNet仅仅采用全局平均池化得到的性能是次有的,所以呀作者采用了全局最大池化和全局平均池化的结合。这两个池化的输出都是一个C维向量。然后将这个两个向量分别输入同一个多层感知机 (其实就是全连接层,这里只有一个隐藏层),将输出来的结果进行逐元素相加,得到一个C维向量,就是最终的通道间注意力向量,然后用这个向量和特征图逐通道相乘即可。作者强调了,这个感知机是被这两个池化结果共享的,也就是说,实际执行时,是顺序执行,先对全局最大池化计算,然后再对全局平均池化计算。计算公式如下:

CBAM: Convolutional Block Attention Module论文笔记
CBAM: Convolutional Block Attention Module论文笔记

表示sigmoid激活函数,

CBAM: Convolutional Block Attention Module论文笔记

分别表示全局平均池化和全局最大池化操作,

CBAM: Convolutional Block Attention Module论文笔记

是全连接层的权重,并且使用Relu激活函数对

CBAM: Convolutional Block Attention Module论文笔记

进行处理,

CBAM: Convolutional Block Attention Module论文笔记

是压缩率,和SeNet中的一样,压缩率越大,全连接层可学习参数越多,越难优化,同时参数越多,也说明模型的学习能力越强,根据自己的需求选取即可。

空间注意力模块:

CBAM: Convolutional Block Attention Module论文笔记

上图是空间注意力机制具体操作,也算是采用两个池化操作,最大池化和平均池化,要注意的是,这里是沿着通道这个维度来执行这两个池化操作的,最大池化就是选取所有特征图上同一个位置最大的值,作为该位置的最大池化结果,最大平均池化就是选取所有特征图上同一个位置上所有值的平均值作为该位置的平均池化结果,每个特征图总共有

CBAM: Convolutional Block Attention Module论文笔记

个值,也就有

CBAM: Convolutional Block Attention Module论文笔记

个位置,得到的结果是两个

CBAM: Convolutional Block Attention Module论文笔记

的空间注意力矩阵,分别由最大池化和平均池化生成。然后将这两个注意力矩阵拼接起来,如图中连在一起的蓝色和褐色特征图,讲拼接后的特征图经过一个

CBAM: Convolutional Block Attention Module论文笔记

卷积操作,输出一个

CBAM: Convolutional Block Attention Module论文笔记

矩阵作为最终的空间注意力矩阵,沿通道方向广播后,与特征图逐元素相乘即可,公式如下:

CBAM: Convolutional Block Attention Module论文笔记
CBAM: Convolutional Block Attention Module论文笔记

表示卷积操作时,卷积核大小为7。

两个注意力模块的管理:

作者说两个模块可以顺序结合,也可以并列结合,但是顺序结合效果会好一些,并且是先通道注意力模块后空间注意力模块。

实验结果:

单独验证这两个注意力模块的性能:

CBAM: Convolutional Block Attention Module论文笔记

 比较不同空间注意力模块的性能:

CBAM: Convolutional Block Attention Module论文笔记

两个注意力模块的结合方式对模型性能的影响: 

CBAM: Convolutional Block Attention Module论文笔记

继续阅读