CBAM 论文笔记

CBAM: Convolutional Block Attention Module

CBAM ECCV 2018

论文链接: https://arxiv.org/abs/1807.06521

一、 Problem Statement

SE block只关注于channel-wise attention,但是忽略了spatial-wise attetion。作者融合了这两个,提升SE Module的性能。

二、 Direction

通过Convolutional Block Attention Module提升模型的表征能力。作者从两个维度出发:

  1. channel attention module
  2. spatial attention module

第一个学习"what" to attend, 第二个学习"where" to attend。

三、 Method

先来看一下整体的流程:

CBAM 论文笔记

可以看到模块分为两个部分:

  • Channel Attention Module
  • Spatial Attention Module

假设我们有一个feature map F ∈ R C × H × W F \in \R^{C \times H \times W} F∈RC×H×W作为输入,CBAM会首先会根据这个输入,通过Channel Attention Module生成一个1D channel attention map M c ∈ R C × 1 × 1 M_c \in \R^{C \times 1 \times 1} Mc​∈RC×1×1,然后这个channel attention map会与原始输入进行element-wise multiplication。
F ′ = M c ( F ) ⊗ F F' = M_c (F) \otimes F F′=Mc​(F)⊗F
第二部,得到 F ′ F' F′输出后,將其输入到后续的Spatial Attention Module,生成一个2D的spatial attention map, 维度为 M s ∈ R 1 × H × W M_s \in \R^{1 \times H \times W} Ms​∈R1×H×W

F ′ ′ = M s ( F ′ ) ⊗ F ′ F'' = M_s (F') \otimes F' F′′=Ms​(F′)⊗F′

具体两个模块的内容如下:

1. Channel Attention Module

Channel attention module探索的是特征中inter-channel的关系。channel attention关注的是给定一个输入图片,“what” is meaningful。具体操作如下所示:
CBAM 论文笔记

  1. Squeeze the spatial dimension。
  2. 同时使用average-pooling 和 maxpooling,生成 F a v g c F_{avg}^c Favgc​ 和 F m a x c F_{max}^c Fmaxc​ 描述子。
  3. 將两个描述子输入到一个shared network(MLP)。
  4. 通过element-wise summation进行融合,产生channel attention map M c ∈ R C × 1 × 1 M_c \in \R^{C \times 1 \times 1} Mc​∈RC×1×1。

公式演示为:
M c ( F ) = σ ( M L P ( A v g P o o l ( F ) ) + M L P ( M a x P o o l ( F ) ) ) = σ ( W 1 ( W 0 ( F a v g c ) ) + W 1 ( W 0 ( F m a x c ) ) ) \begin{aligned} M_c(F) &= \sigma (MLP(AvgPool(F)) + MLP(MaxPool(F))) \\ &=\sigma(W_1(W_0(F_{avg}^c))+W_1(W_0(F_{max}^c))) \end{aligned} Mc​(F)​=σ(MLP(AvgPool(F))+MLP(MaxPool(F)))=σ(W1​(W0​(Favgc​))+W1​(W0​(Fmaxc​)))​

2. Spatial Attention Module

下面来看一下Spatial Attention Module。这个模块关注的是: “where” is an informative part。具体流程如下图所示:
CBAM 论文笔记

  1. 输入上面的输出 F ′ F' F′, 使用两个pooling操作,产生两个2D特征图: F a v g s ∈ R 1 × H × W , F m a x s ∈ R 1 × H × W F_{avg}^s \in \R^{1\times H \times W}, F_{max}^s \in \R^{1\times H \times W} Favgs​∈R1×H×W,Fmaxs​∈R1×H×W。
  2. 拼接上面两个2D 特征图后,进行标准卷积操作,产生一个2D spatial attention map。

公式演示如下:
M s ( F ) = σ ( f 7 × 7 ( [ A v g P o o l ( F ) ; M a x P o o l ( F ) ] ) ) = σ ( f 7 × 7 ( [ F a v g s ; F m a x s ] ) ) \begin{aligned} M_s(F) &= \sigma(f^{7 \times 7}([AvgPool(F); MaxPool(F)]))\\&=\sigma(f^{7 \times 7} ([F_{avg}^s; F_{max}^s])) \end{aligned} Ms​(F)​=σ(f7×7([AvgPool(F);MaxPool(F)]))=σ(f7×7([Favgs​;Fmaxs​]))​

3. Arrangement of attention modules

上面两个模块如何放置,作者进行了实验。实验表明,channel-first order 和串联排列是最优的选择。

四、 Conclusion

SE模块只关注了inter-channel的关系,而CABM模块关注了inter-channel和inter-spatial的关系。如果CABMchannel attention module仅仅使用average pooling就和SE block一样了。通过实验,证明了CABM提升了网络表征能力。可以简单高效地嵌入到ResNet,MobileNet等网络中。

Reference

上一篇:李宏毅《深度学习》- Self-attention 自注意力机制


下一篇:学习笔记之机器翻译与文本摘要2