简介
注意力机制(Attention Mechanism)源于人类视觉的研究,在认知科学中,人类会选择性地关注所有信息的一部分,而忽略其他可见信息。为了合理利用有限的资源,就需要选择视觉区域的特定部分,并重点关注它。
在神经网络中,attention机制通常是一个额外的神经网络,能够选择输入的某些部分或给不同部分分配不同的权重,从而能够在大量信息中筛选出重要的信息。
空间维度引入attention
1、以inception网络为例,给并联的不同卷积层不同的权重
2、给同一通道的不同区域赋予不同权重
通道维度引入attention
1、不同通道赋予不同的权重
一、SE-Net模型
通过对通道维度(channel-wise)增加attention机制,包括squeeze和excitation两个关键操作,通过自动学习的方式(用另一个神经网络实现),获取每个特征通道的最佳权重值。
其中不同的颜色代表每个通道的不同权重。
1、squeeze(
F
s
q
F_{sq}
Fsq)
通过全局平均池化(global average pooling),将每个通道的二位特征(
H
×
W
H\times W
H×W)压缩成1个实数,经squeeze后变成
1
×
1
×
C
1\times 1\times C
1×1×C:
z
c
=
F
s
q
(
u
c
)
=
1
H
×
W
∑
i
=
1
H
∑
j
=
1
W
u
c
(
i
,
j
)
\begin{aligned} z_c=F_{sq}(u_c) =\frac{1}{H\times W}\sum_{i=1}^H\sum_{j=1}^Wu_c(i,j) \end{aligned}
zc=Fsq(uc)=H×W1i=1∑Hj=1∑Wuc(i,j)
2、excitation(
F
e
x
F_{ex}
Fex)
为每一个特征通道生成一个权重值,通过两个全连接层组成一个Bottleneck结构去构建通道间的相关性,并输出和输入特征相同数目的权重值。
FC+Relu+FC+Sigmoid就是excitation操作,具体过程是通过一个全连接层(FC)将特征维度降低到
1
/
r
1/r
1/r,然后通过Relu激活函数再经过一个全连接层将特征维度恢复,最后通过sigmoid函数完成归一化。
excitation操作中的参数随模型
m
i
n
i
m
i
z
e
l
o
s
s
minimize\ loss
minimize loss不断迭代更新。
3、scale(
F
s
c
a
l
e
F_{scale}
Fscale)
将得到的权重加权到每个通道特征上,通过对应通道值相乘完成引入attention过程。
4、补充说明
(1)对比加入与不加入SE block的效果,SE-Net核心是通过全连接网络根据loss自动学习权重,而不是直接根据数值分布判断,使得有效的特征通道权重更大。
(2)两个全连接层比一个全连接层的好处:增加了非线性,可以更好地拟合通道间的复杂性
二、CBAM(Convolution Block Attention Module)
CBAM结合了空间(spatial)和通道(channel)的attention机制模块,不像SE-Net只关注通道,因此可以取得更好的效果,attention模块架构如下:
主要包括通道Attention模块和空间Attention模块两部分。
1、通道Attention模块
将输入feature map分别经过global max pooling和global avgerage pooling,然后经过MLP转换,再通过elementwise的加和操作将两种结果合并,并进行sigmoid归一化,公式如下:
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
)
)
)
,
其
中
W
0
∈
R
C
/
r
×
C
,
W
1
∈
R
C
×
C
/
r
,
σ
(
⋅
)
为
s
i
g
m
o
i
d
操
作
,
r
为
减
少
率
W
0
后
接
R
E
L
U
激
活
。
\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))),\\其中W_0\in R^{C/r\times C},W_1\in R^{C\times C/r},\sigma(\cdot)为sigmoid操作,r为减少率W_0后接RELU激活。 \end{aligned}
Mc(F)=σ(MLP(AvgPool(F))+MLP(MaxPool(F)))=σ(W1(W0(Favgc))+W1(W0(Fmaxc))),其中W0∈RC/r×C,W1∈RC×C/r,σ(⋅)为sigmoid操作,r为减少率W0后接RELU激活。
2、空间Attention模块
将通道Attention模块的输出作为输入,首先经过基于通道的global max pooling和global avgerage pooling,并将结果在channel维度concat在一起,在经过一个卷积变成单通道,并通过sigmoid归一化生成spatial attention feature,公式如下:
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]))
其中,
σ
(
⋅
)
\sigma(\cdot)
σ(⋅)是sigmoid操作,
f
7
×
7
f^{7\times 7}
f7×7是指核大小为
7
×
7
7\times 7
7×7的卷积操作。
最后将其与输入做乘法,得到处理后的特征。
三、Triplet Attention
CBAM虽然是基于空间和通道,但是空间Attention和通道Attention是分离的,Triplet Attention模块旨在捕捉Cross-dimension交互,并且对通道attention和空间attention的建模几乎无参数。
Triplet Attention由3个平行的Branch组成,其中两个负责捕获通道C和空间(
W
×
H
W\times H
W×H)之间的跨纬交互,最后一个类似CBAM用来构建空间attention,最后将三个Branch的输出进行平均聚合。
1、Cross-Dimension Interaction
通过三个分支分别捕捉输入张量的(C,H), (C,W), (H,W)维间的依赖关系来引入Attention中的跨维度交互作用。
2、Z-pool
负责将C维度的Tensor缩减到2维,即将该维上的平均汇集特征和最大汇集特征连接在一起。这使得该层能够保留实际张量的丰富表示,同时缩小其深度以使进一步的计算量更轻,如下所示:
Z
−
p
o
o
l
(
x
)
=
[
M
a
x
P
o
o
l
0
d
(
x
)
,
A
v
g
P
o
o
l
0
d
(
x
)
]
\begin{aligned} Z-pool(x) = [MaxPool_{0d}(x), AvgPool_{0d}(x)] \end{aligned}
Z−pool(x)=[MaxPool0d(x),AvgPool0d(x)]
3、Triplet Attention
给定输入张量
x
∈
R
C
×
H
×
W
x\in R^{C\times H\times W}
x∈RC×H×W,将其传递到Triplet Attention模块中的三个分支中。
在第1个分支中,建立(H,C)维交互:
将输入张量
x
x
x沿H轴逆时针旋转90° ,此时形状为
(
W
×
H
×
C
)
(W\times H\times C)
(W×H×C),经过Z-pool后变为
(
2
×
H
×
C
)
(2\times H\times C)
(2×H×C),再通过
k
×
k
k\times k
k×k标准卷积层和BN(batch normalize)得到
(
1
×
H
×
C
)
(1\times H\times C)
(1×H×C)的中间输出,然后sigmoid生成attention权值,最后输出是沿着H轴顺时针旋转90°保持和输入shape一致。
在第2个分支中,建立(C,W)维交互:
将输入张量
x
x
x沿W轴逆时针旋转90° ,此时形状为
(
H
×
C
×
W
)
(H\times C\times W)
(H×C×W),经过Z-pool后变为
(
2
×
C
×
W
)
(2\times C\times W)
(2×C×W),再通过
k
×
k
k\times k
k×k标准卷积层和BN(batch normalize)得到
(
1
×
C
×
W
)
(1\times C\times W)
(1×C×W)的中间输出,然后sigmoid生成attention权值,最后输出是沿着W轴顺时针旋转90°保持和输入shape一致。
在第3个分支中,建立(H,W)维交互:
输入张量
x
x
x维度经Z-pool变为
(
2
×
H
×
W
)
(2\times H\times W)
(2×H×W),再经过标准卷积层和BN,通过sigmoid生成形状为
(
1
×
W
×
H
)
(1\times W\times H)
(1×W×H)的attention权值,应用于输入
x
x
x。
最后将三个分支产生的张量聚合在一起,即求平均。
参数分析: