BAM: Bottleneck Attention Module论文解读
简介:
ECCV2018有一篇文章是CBAM(Convolutional Block Attention Module),这篇论文组里也已经比较熟悉。BAM是由同一批团队打造,也可以称为是CBAM的姐妹篇,但注意两者’B’是不同的。
摘要:
深度神经网络的最新进展已经通过架构搜索开发出更强的代表能力。在这项工作中,我们关注一般深度神经网络中注意力的影响。我们提出了一个简单有效的注意模块,名为瓶颈注意模块(BAM),可以与任何前馈卷积神经网络集成。我们的模块沿着两个独立的路径,即通道和空间推断出注意力图。我们的模块通过许多参数在瓶颈上构建层次关注,并且可以与任何前馈模型一起以端到端的方式进行训练。
作者提出了三点贡献:
1.我们提出了一个简单有效的注意力模块BAM,它可以与任何CNN集成。
2.我们通过广泛的消融研究验证了BAM的设计。
3.我们在各种广泛的实验中验证了BAM的有效性多基准测试的基线架构(CIFAR-100,ImageNet-1K,VOC 2007
和MS COCO)。
主要结构:
分为两部分:通道注意力和空间注意力
通道注意力:
为了估计来自通道矢量Fc的通道间的注意力,我们使用具有一个隐藏层的多层感知器(MLP)。 为了节省参数,隐藏的激活大小设置为
R
C
r
×
1
×
1
R^{\frac{C}{r}×1×1}
RrC×1×1
,其中r是缩减比率。 在MLP之后,我们添加批量标准化(BN)层以使用空间分支输出调整尺度大小。
空间注意力:
这个空间分支产生了空间Attention去增强或者抑制特征在不同的空间位置,众所周知,利用上下文信息是去知道应该关注哪些位置的关键点。在这里我们为了高效性运用空洞卷积去增大感受野。
二者结合:
作者将得到的McF和MsF分别扩展到
R
C
×
H
×
W
R^{C×H×W}
RC×H×W
之后,再进行相加和。
整体结构图:
这里作者将BAM放在了Resnet网络中每个stage之间。通过可视化我们可以看到多层BAMs形成了一个分层的注意力机制,这有点像人类的感知机制。BAM在每个stage之间消除了像背景语义特征这样的低层次特征,然后逐渐聚焦于高级的语义–明确的目标。