首先这是一篇科大和微软亚研院的文章,文章很优美,非常值得一阅。本文主要是针对行人重识别提出一种从局部之间的关系找到相关性从而生成注意力的方法,可以理解成继承 Non-local 或者 self-attention 的方法。虽然理念相似,这些方法都没有好好利用这些全局范围的结构信息。具体来说,他们直接的计算相互关系并进行权重相加,这是 wak mining capability 和 lack sufficient adaptability 的。作者总结了自己的贡献:
- 通过全局查看特征之间的关系,通过全局学习每个局部特征节点的注意力;
- 设计了 relation-aware global attention (RGA),能紧凑的表示全局范围的关系,该设计推广并设计了空间的模块 RGA-S 和通道的模块 RGA-C。
上图大致表达了本文的 motivation。他们都为了学习注意力。a 是从局部中学习到局部的注意力;b 是从全局(拼接)中学习每个局部的注意力;本文的 relation-aware global attention,可以考虑全局的关系信息来学习注意力。注意 i 和 j 计算的关系是非对称的,这一对关系要拼接起来,之后合并的特征再和原始特征拼接,最后生成对应的注意力。
具体的操作如上图所示。
Spatial Relation-Aware Global Attention
按空间
H
×
W
H \times W
H×W 分独立的特征,然后计算成对的关系(affinity)
r
i
,
j
r_{i,j}
ri,j,即
r
i
,
j
=
f
s
(
x
i
,
x
j
)
=
θ
s
(
x
i
)
T
ϕ
s
(
x
j
)
r_{i, j}=f_{s}\left(\mathbf{x}_{i}, \mathbf{x}_{j}\right)=\theta_{s}\left(\mathbf{x}_{i}\right)^{T} \phi_{s}\left(\mathbf{x}_{j}\right)
ri,j=fs(xi,xj)=θs(xi)Tϕs(xj)
最后可以获得关系矩阵
R
s
∈
R
N
×
N
R_{s} \in \mathbb{R}^{N \times N}
Rs∈RN×N。然后作者将成对关系与所有节点按找固定顺序堆叠,有
r
i
=
[
R
s
(
i
,
:
)
,
R
s
(
:
,
i
)
]
∈
R
2
N
\mathbf{r}_{i}=\left[R_{s}(i,:), R_{s}(:, i)\right] \in \mathbb{R}^{2 N}
ri=[Rs(i,:),Rs(:,i)]∈R2N,i 是 1 到 WH。同时也会加入原始特征信息,从而获得 spatial relation-aware feature
y
~
i
=
[
pool
c
(
ψ
s
(
x
i
)
)
,
φ
s
(
r
i
)
]
\widetilde{\mathbf{y}}_{i}=\left[\operatorname{pool}_{c}\left(\psi_{s}\left(\mathbf{x}_{i}\right)\right), \varphi_{s}\left(\mathbf{r}_{i}\right)\right]
y
i=[poolc(ψs(xi)),φs(ri)]
p
o
o
l
c
pool_c
poolc 是为了在通道上进行全局平均池化最后得到一个值。
y
~
i
∈
R
1
+
N
/
s
1
\tilde{\mathbf{y}}_{i} \in \mathbb{R}^{1+N / s_{1}}
y~i∈R1+N/s1。1 是原始信息,后面的是学习的关系感知的信息。然后这个 spatial relation-aware feature 用来生成第
i
i
i 的特征/节点的 spatial attention value
a
i
a_i
ai
a
i
=
Sigmoid
(
W
2
ReLU
(
W
1
y
~
i
)
)
,
a_{i}=\operatorname{Sigmoid}\left(W_{2} \operatorname{ReLU}\left(W_{1} \widetilde{\mathbf{y}}_{i}\right)\right),
ai=Sigmoid(W2ReLU(W1y
i)),
a
i
a_i
ai 是一个值。
Channel Relation-Aware Global Attenion
操作和空间上的是类似的,只不过特征的维度变成了 H × W H \times W H×W,特征数量变成了 C。
结果简单展示
感觉还是比较有趣的。不过在 2022 再看,这个点可能已经不算新了。学习了。