近期提出的ViT模型在各种计算机视觉任务上展现了令人鼓舞的结果,这要归功于能够通过自注意力对补丁或令牌的长期依赖性进行建模。然而这些方法通常指定每个令牌相似感受野。这种约束不可避免地限制了每个自注意力层在捕捉多尺度特征的能力。本文提出一种新的注意力,称为分流自注意力(Shunted Self-attention,SAA),允许ViT在每个注意力层的混合尺度上对注意力进行建模。SAA关键思想是将异构感受野大小注入到令牌中:在计算自注意力矩阵之前,选择性合并令牌以表示更大的目标特征,同时保留某些令牌以保留细粒度特征。这种新颖的合并方案使得自注意力模块能够学习目标之间的关系,同时减少令牌数量和计算成本。
分流Transformer块
为了降低处理高分辨率特征图时的计算成本,PVT引入了空间约简注意力(Spatial Reduction Attention,SRA)取代原来的多头自注意力(MSA)。然而SRA倾向于在一个自注意力层中存储太多令牌,并且仅在单个尺度上提供令牌特征。这些限制阻碍了模型捕捉多尺度目标的能力,尤其是小尺寸目标。
分流自注意力
输入序列
F
F
F首先投影到查询
Q
Q
Q,键
K
K
K和值
V
V
V向量。之后多头自注意力采用
H
H
H独立注意力头并行计算自注意力。为了减少计算成本,遵循PVT并减少K,V长度而不是Swin中按照区域划分
{
Q
,
K
,
V
}
\{Q,K,V\}
{Q,K,V}。本文的SSA与PVT的SRA不同点之处在于,在同一自注意力层的注意力头之间,K、V长度不相同。相反,长度在不同头中变化,以捕捉不同粒度的信息。这提供了多尺度令牌聚合。键和值
K
,
V
K,V
K,V对于不同头下采样到不同尺寸:
Q
i
=
X
W
i
Q
K
i
,
V
i
=
M
T
A
(
X
,
r
i
)
W
i
K
,
M
T
A
(
X
,
r
i
)
W
i
V
V
i
=
V
i
+
L
E
(
V
i
)
\begin{aligned} Q_{i}&=XW_{i}^{Q}\\ K_{i},V_{i}&=MTA(X,r_{i})W_{i}^{K},MTA(X,r_{i})W_{i}^{V}\\ V_{i}&=V_{i}+LE(V_{i})\\ \end{aligned}
QiKi,ViVi=XWiQ=MTA(X,ri)WiK,MTA(X,ri)WiV=Vi+LE(Vi)
其中
M
T
A
(
⋅
.
r
i
)
MTA(\cdot.r_{i})
MTA(⋅.ri)是第i层的多尺度令牌聚合层,其中下采样率为
r
i
r_{i}
ri。实践中采用和卷积和步幅为
r
i
r_{i}
ri的卷积实现下采样。
W
i
Q
,
W
i
K
,
W
i
V
W_{i}^{Q},W_{i}^{K},W_{i}^{V}
WiQ,WiK,WiV是第i头线性投影参数。在注意力头之间有变量KaTeX parse error: Expected '}', got 'EOF' at end of input: r_{i]。因此自注意力中键和值可以捕捉不同尺度。
L
E
(
⋅
)
LE(\cdot)
LE(⋅)是MTA通过深度卷积对值
V
V
V的局部增强分量。
分量自注意力可以描述为:
h
i
=
Softmax
(
Q
i
K
i
T
d
k
)
V
i
h_{i}=\text{Softmax}(\frac{Q_{i}K_{i}^{T}}{\sqrt{d_{k}}})V_{i}
hi=Softmax(dkQiKiT)Vi。
得益于多尺度键核值,本文的分流自注意力在捕捉多尺度目标时更强大。计算成本的降低可以取决于
r
r
r的值。当
r
r
r变大,
K
,
V
K,V
K,V中更多令牌被合并,且
K
,
V
K,V
K,V长度更短。因此,计算成本较低,但它仍然保留了捕捉大目标的能力。当
r
r
r变小,更多细节被保留但带入更多计算成本。融合各种
r
r
r 到一个自注意力层使得捕捉多细粒度特征。
具体细节前馈层
在传统的前馈层中,全连接层是逐点的且无交叉令牌信息可以学习。这里本文目标是通过指定前馈层中的细节来补充局部信息。通过在前馈层的两个全连接层之间添加数据特定层来补充前馈层中局部细节。
x
′
=
F
C
(
x
;
θ
1
)
x
′
′
=
F
C
(
σ
(
x
′
+
D
S
(
x
′
;
t
h
e
t
a
)
)
;
θ
2
)
\begin{aligned} x^{\prime}&=FC(x;\theta_{1})\\ x^{\prime\prime}&=FC(\sigma(x^{\prime}+DS(x^{\prime};theta));\theta_{2})\\ \end{aligned}
x′x′′=FC(x;θ1)=FC(σ(x′+DS(x′;theta));θ2)
其中
D
S
(
⋅
;
θ
)
DS(\cdot;\theta)
DS(⋅;θ)是具体细节层,参数为
θ
\theta
θ,实践中由深度卷积实现。
补丁嵌入层
如何映射图像到序列对于模型性能是重要的。ViT直接划分输入图像为16x16无重叠补丁。 Scaled relu
matters for training vision transformers发现在补丁嵌入使用卷积提供了高质量补丁序列,它帮助Transformer比传统的大跨度非重叠补丁嵌入看得更好。在本文模型中,根据模型尺寸采用具有重叠得不同卷积层。将步幅为2和零填充得7x7卷积层作为补丁嵌入的第一层,并根据模型大小添加步幅为1的额外3x3卷积层。最后使用步幅为2的无重叠投影层生成大小为
H
4
×
W
4
\frac{H}{4}\times \frac{W}{4}
4H×4W。