BAM (Arxiv, 2018)

BAM: Bottleneck Attention Module

摘要

在这项工作中,作者把重心放在了Attention对于一般深度神经网络的影响上,作者提出了一个简单但是有效的Attention 模型—BAM,它可以结合到任何前向传播卷积神经网络中,作者的模型通过两个分离的路径 channel和spatial, 得到一个Attention Map,实验验证了作者算法的有效性。

整体的结构图如图1所示

BAM%2Ffig1.jpg

具体细节

对于原始的特征图谱, 通过两个不同分支应用 attention 机制. 具体的实现如下图2所示.

BAM%2Ffig2.jpg

BAM 的使用方法是: 对于给定的 feature map $F\in R^{C\times H\times W}$, BAM可以得到一个 3D 的 Attention map $M(F)\in R^{C\times H\times W}$, 那么, 增强后的新的特征图谱就可以通过下面的式子计算得到:

上式中, $\otimes$ 可以是 element-wise summation, element-wise multiply 等, 根据实验结果显示, element-wise summation 效果最好. 为了得到一个有效且强大的 $M(F)$ Attention map 生成模块, 本文从 channel 和 spatial 两个分支分别使用 attention 机制, 然后利用下面的公式计算 $M(F)$:

上式中, $\sigma$ 代表 Sigmoid 函数.

channel attention branch 和 spatial attention branch 的模块结构如下面的公式3和公式4所示, 具体的符号含义可以查阅论文或代码:

BAM%2Fform3.jpg

BAM%2Fform4.jpg

在从两个注意力分支中获取通道注意力 $M_c (F)$ 和空间注意力 $M_S (F)$ 后,作者将它们组合起来,生成最终的3D attention map $M(F)$. 由于这两个 attention map 的 shape 不同,作者还需要将 attention map 扩展到 $R^{C\times H\times W}$, 然后将它们合并. 在逐项求和、乘法、max运算等多种组合方法中, 针对梯度流的特点, 作者选择逐项求和. 作者通过实证验证了基于元素的求和在三种选择中效果最好. 求和后, 作者取一个sigmoid函数,得到0到1范围内的三维 attention map $M(F)$. 将该三维注意图与输入特征图F巧妙相乘,然后将其添加到原始输入特征图上,得到细化后的特征图

实验

部分实验结果如下图所示

BAM%2Ftab1.jpg

BAM%2Ftab2.jpg