最近找了十几篇神经网络注意力机制的论文大概读了一下。这篇博客记录一下其中一篇,这篇论文大概只看了摘要,方法。在ADCM论文中我们提到它的设计参考了BAM来的,因而找了这篇论文。它主要利用channel和spatial来结合组成一种bottleneck attention module(BAM)的模块,这个模块可以直接插入到神经网络中。主要还是通道注意力与空间注意力结合的方法,当然它并没有ADCM中的dropout这个过程。

Channel attention branch

通道注意力分支,找出哪个通道特征是最有效的,只从特征来看。分为三部分,第一部分就是全局平均池化,它会将每一个通道特征都变成一个值,这个值代表该通道的总体特征。第二部分就是MLP,找出通道之间的关系,并且得出通道之间的权重。第三部分就是归一化层,将输入进行统一来看。整体的过程可以用如下的公式来表示:

\[ M_c(F) = BN(MLP(AvgPool(\textbf{F}))) \]

 

EMA 注意力机制 ema注意力机制论文_卷积

 

 

 

Spatial attention branch

空间注意力分支,强调或者suppress不同空间位置,可以找出哪些空间位置是有效的。总共分为四部分,第一部分就是使用1X1卷积来缩减通道,缩减系数是r,经过这一层,通道数为C/r,第二部分就是俩层空洞卷积,为了得到上下文信息,这里需要更大的感受野,使用了俩层空洞卷积,第三部分又是一层1X1的卷积,将通道变为1。最终就是归一化层。整体的过程可以用如下公式来表示:

\[ M_s(F) = BN(f_3^{1X1}(f_2^{3X3}(f_1^{3X3}(f_0^{1X1}(\textbf(F)))))) \]

EMA 注意力机制 ema注意力机制论文_EMA 注意力机制_02

 

 

Combine two attention branches

合并注意力分支,主要将$M_c(F)$和$M_s(F)$合并,在合并之前,将$M_c(F)$和$M_s(F)$统一维度为C个通道,长宽为H、W,然后将对应元素相加,之后使用sigmoid函数变成0到1范围内的值

EMA 注意力机制 ema注意力机制论文_归一化_03

 

 

 

对于整个模块来说,它有俩大优势,第一有效的得到全局上下文信息,CNN堆积许多卷积层和池化层来获取上下文信息,虽然有效,但是增加了时间和空间复杂度,第二忽略了底层特征,而BAM可以放在模块的开始,那么底层特征也能得到上下文信息。整个模块的放置如下图所示

EMA 注意力机制 ema注意力机制论文_卷积_04