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提升模型的表征能力。作者从两个维度出发:
- channel attention module
- spatial attention module
第一个学习"what" to attend, 第二个学习"where" to attend。
三、 Method
先来看一下整体的流程:
可以看到模块分为两个部分:
- 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。具体操作如下所示:
- Squeeze the spatial dimension。
- 同时使用average-pooling 和 maxpooling,生成 F a v g c F_{avg}^c Favgc 和 F m a x c F_{max}^c Fmaxc 描述子。
- 將两个描述子输入到一个shared network(MLP)。
- 通过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。具体流程如下图所示:
- 输入上面的输出 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。
- 拼接上面两个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等网络中。