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

这是我看的第一篇注意力机制相关的论文,在这里分享一些自己的理解,不足之处还请在评论区指出。

在没有接触过注意力机制的相关文献前,我认为注意力机制的原理可能会很复杂。其实注意力机制的原理并不复杂,它就是采用一种可以学习的方式来对特征映射重新赋予权重,权重高的特征映射就是注意力机制关注的注意点。

《CBAM: Convolutional Block Attention Module》这是一篇2018年ECCV上的文献。

 

【论文笔记】CBAM: Convolutional Block Attention Module_第1张图片

原文链接:https://arxiv.org/pdf/1807.06521.pdf

源代码:https://github.com/shanglianlm0525/CvPytorch

源代码:https://github.com/shanglianlm0525/PyTorch-Networks

这篇文章的主要贡献有三个方面:

1. 提出来一个简单而有效的注意力机制(CBAM),可广泛应用于提高CNN的表达能力。

2. 通过大量的消融实验来验证注意力机制(CBAM)的有效性。

3. 通过插入轻量级模块,验证了各种网络的性能在多个目标检测数据集上得到了极大的提高。

【论文笔记】CBAM: Convolutional Block Attention Module_第2张图片

这篇文章中提出的CBMA模块如图所示,这个注意力模块可以分为2部分,分别是通道注意力机制空间注意力机制

为了更直观的了解网络的原理,可以通过这样一个例子来帮助理解。
对于以下结构,比如输入的特征维度为1*3*10*10(各维度代表BCHW,其中,B代表批次数、C代表通道数、H代表高度、W代表宽度)。经过通道注意力机制之后,得到的权重维度为1*3*1*1;经过空间注意力机制之后,得到的权重维度为1*1*10*10。

下面来介绍一下通道注意力机制和空间注意力机制的工作原理。

【论文笔记】CBAM: Convolutional Block Attention Module_第3张图片

通道注意力机制,这是通道注意力机制的示意图。在这一部分,首先对骨干网络提取的特征映射F,采用全局平均池化层Global_AvgPool和全局最大池化层Global_MaxPool对其在空间维度上进行降维(这里可以结合上面的例子去理解),从而得到两种不同的空间背景特征

然后通过共享MLP层分别对两种特征进行计算得到通道注意力映射

其中 为Hard Sigmoid激活函数。通道注意力机制的最后通过使用sigmoid来缩放到[0,1]之间。

【论文笔记】CBAM: Convolutional Block Attention Module_第4张图片

空间注意力机制,这是空间注意力机制的示意图。在这一部分,首先对骨干网络提取的特征映射F,采用全局平均池化层Global_AvgPool和全局最大池化层Global_MaxPool对其在通道维度上进行降维(这里可以结合上面的例子去理解),从而得到两种不同的通道特征

然后采用通道合并层Concatenation将两种特征进行合并得到合并特征

最后通过7*7的卷积计算得到空间注意力映射(使用7*7的卷积核是作者经过多次试验后选择的效果最好的卷积核大小)。

空间注意力机制的最后通过使用sigmoid来缩放到[0,1]之间。

原理部分就介绍到这里了,文章中剩下的部分是一些消融实验,来验证模块中各个部分如此设计的必要性,后续有时间会再进行补充。

你可能感兴趣的:(神经网络,注意力机制)