Coordinate Attention for Efficient Mobile Network Design
CA block CVPR2021
论文链接: https://arxiv.org/abs/2103.02907
一、 Problem Statement
SE block只关注了inter-channel的联系,忽略了位置信息。虽然CBAM添加了spatial attention module,但是是通过卷积来获取位置信息,而卷积只能捕获局部位置关系,不能够对长范围关系进行建模。
二、 Direction
提出了coordinate attention, 通过嵌入位置信息到channel attention module中,提升网络表征性能。因为2D global pooling会导致positional information的丢失,作者把channel attention分解成两个平行的1D特征编码,分别对应direation-aware特征图的vertical和horizontal方向。
三、 Method
先来看一下SE,CBAM,和CA 模块的对比图。
Coordinate Attention模块主要分为两个部分:
- Coordinate information embedding
- Coordinate attention generation
1. Coordinate information embedding
先来看一下第一步,怎么样编码坐标信息。global pooling通常很难保存位置信息,而且为了提升attention blocks对于捕获长范围位置关系的能力,作者把global pooling分解为一对1D特征编码的操作。具体如下:
给定一个输入特征
X
X
X,使用两个spatial extents of pooling kernels
(
H
,
1
)
(H, 1)
(H,1) 和
(
1
,
W
)
(1,W)
(1,W)来分别编码沿着水平方向和垂直方向的通道。
z
c
h
(
h
)
=
1
W
∑
0
≤
i
<
W
x
c
(
h
,
i
)
z
c
w
(
w
)
=
1
H
∑
0
≤
j
<
H
x
c
(
j
,
w
)
z_c^h(h) = \frac{1}{W} \sum_{0\leq i \lt W}x_c(h, i) \\ z_c^w(w) = \frac{1}{H} \sum_{0 \leq j \lt H}x_c(j, w)
zch(h)=W10≤i<W∑xc(h,i)zcw(w)=H10≤j<H∑xc(j,w)
这样就产生了一对direction-aware的特征图。上面两个变换可以使得attention block在每个方向上,捕获长距离的关系,并且保存了位置信息,有助于帮助网络定位感兴趣目标。
2. Coordinate Attention Generation
这一部分的设计遵循了三个原则:
- simple and cheap
- make full use of the captured positional information
- effectively capture inter-channel relationships
所以所做的操作是:
- 先把上面两个feature maps进行拼接融合
- 使用1x1卷积和激活函数
- 使用两个1x1卷积將其输出成两个tensor,并使用激活函数
- 与原始特征进行融合
公式演示如下:
f
=
δ
(
F
1
(
[
z
h
,
z
w
]
)
)
g
h
=
σ
(
F
h
(
f
)
)
g
w
=
σ
(
F
w
(
f
)
)
y
c
(
i
,
j
)
=
x
c
(
i
,
j
)
×
g
c
h
(
i
)
×
g
c
w
(
j
)
f = \delta(F_1([z^h, z^w])) \\ g^h = \sigma(F_h(f))\\ g^w = \sigma(F_w(f))\\ y_c(i,j)=x_c(i,j) \times g_c^h(i) \times g_c^w(j)
f=δ(F1([zh,zw]))gh=σ(Fh(f))gw=σ(Fw(f))yc(i,j)=xc(i,j)×gch(i)×gcw(j)
四、 Conclusion
CA block有两个优点:
- 不仅是cross-channel,而且是direction-aware和position-sensitive的注意力模块。
- 能够即插即用。
- 普遍能涨点
但是作者在实验的时候使用的是MobileNetv2和MobileNeXt,为何不用MobileNetV3作为baseline呢~。