文章目录[隐藏]
Dynamic Head
论文标题:Dynamic Head: Unifying Object Detection Heads with Attentions
论文地址:https://arxiv.org/pdf/2106.08322v1.pdf
论文源码:https://github.com/microsoft/DynamicHead微软
Motivation
文章提出了一个动态的head架构,通过attention机制将多种不同表示形式(corner,center,anchor box)的目标检测方法统一为一个。
- scale-awareness:特征层间的self-attention能够识别不同尺度物体(一张图片中有不同尺度的物体需要识别).
- spatial-awareness:空间位置间的self-attention能够帮助识别不同形状物体.(指同一类物体有不同形状、朝向和不同视角)
- task-awareness:输出的通道间的self-attention能够用于关注特定的任务.(指物体可以选用不用的表示方式,如边框、中心点、corner点等)
通过结合这三种self-attention,作者在不引入计算cost的情况下极大地提高了目标检测头的表示能力。使用SOTA backbone Swin-L时,将COCO的结果记录刷到了60.6AP!
Approach
如果将backbone的输出视为一个3维的tensor,即
l
e
v
e
l
×
s
p
a
c
e
×
c
h
a
n
n
e
l
level\times space\times channel
level×space×channel,这个unified head就可以被看作一个attention学习问题。一个直观的方案是在此tensor之上构造一个full self-attention机制,然而,优化问题难以解决并且计算cost 难以承受。
作者提出在分别在level-wise,spatial-wise,和channel-wise等每个独特的特征维度上分别地应用attention 机制。
scale-aware attention只应用在level dimension,对于一个物体,scale-aware attention会根据其scale来学习各种语义level上的相关重要性来增强相应于其scale 的level上的特征。同理spatial-aware attention学习空间位置上的关联表示。 task-aware attention作用于channel,根据物体返回的不同卷积核响应,让不同的channel响应不用的任务。通过这种方式实现了一个作用域detection head的unified attention机制。
Dynamic Head: Unifying with Attentions
将L层的特征图通过上采样或者下采样来resize到一个中间层,然后concatenate起来得到特征图
F
i
n
=
{
F
i
}
i
=
1
F_{in} = \left\{F_i\right\}_{i=1}
Fin={Fi}i=1,这个特征图的尺寸可被视为一个4维的tensor
F
∈
R
L
×
H
×
W
×
C
F \in R^{L×H×W×C}
F∈RL×H×W×C,其中L表示的是金字塔中的level数量,
H
、
W
、
C
H、W、C
H、W、C分辨是特征图的高、宽、和通道数。令
S
=
H
×
W
S=H×W
S=H×W将上述4维tensor reshape成一个3维的tensor
F
∈
R
L
×
S
×
C
F \in R^{L×S×C}
F∈RL×S×C。
给定
F
∈
R
L
×
S
×
C
F \in R^{L×S×C}
F∈RL×S×C这样的一个tensor,self-attention的通用公式为:
W
(
F
)
=
π
(
F
)
⋅
F
W
(
F
)
=
π
(
F
)
⋅
F
W ( F ) = π ( F ) ⋅ F W(F) = π(F) · F
W(F)=π(F)⋅FW(F)=π(F)⋅F
其中
π
(
⋅
)
π(·)
π(⋅)是一个 attention function.一种很简单的attention实现方式是使用全连接,但是全连接从所以维度上学习,由于我们的维度很大,计算代价太大,不可取。
所以这里将attention function转为3个序列化的attentions,每个都只聚焦于一个角度:
W
(
F
)
=
π
C
(
π
S
(
π
L
(
F
)
⋅
F
)
⋅
F
)
⋅
F
W(F)=\pi _C(\pi_S(\pi_L(F)·F)·F)·F
W(F)=πC(πS(πL(F)⋅F)⋅F)⋅F
其中
π
L
(
⋅
)
,
π
S
(
⋅
)
,
和
π
C
(
⋅
)
πL(·), πS(·), 和πC (·)
πL(⋅),πS(⋅),和πC(⋅)分别是三个不同的attention function,分别应用在不同的维度
L
,
S
,
C
L,S,C
L,S,C。
Scale-aware Attention
π
L
π_L
πL
目标检测中应对多尺度变换有很多方法,比如: image pyramid、 feature pyramid、SNIPER等。其中 feature pyramid用的比较多,对于feature pyramid的聚合也有很多方法,比如:PANET、ASFF等。Dynamic Head中的尺度attention其实就是一个feature pyramid一个attention操作,scale-attention函数如下所示:
π
L
(
F
)
⋅
F
=
σ
(
f
(
1
S
C
∑
S
,
C
F
)
)
⋅
F
\pi_{L}(\mathcal {F})\cdot \mathcal {F}=\sigma(f(\frac {1}{SC}\sum_{S,C}\mathcal {F}))\cdot \mathcal{F}
πL(F)⋅F=σ(f(SC1S,C∑F))⋅F
σ
(
)
\sigma()
σ()为hard-sigmoid函数,
1
S
C
∑
S
,
C
F
\frac {1}{SC}\sum_{S,C}\mathcal {F}
SC1∑S,CF就是一个avg-pooling操作。scale-attention就是对每一个尺寸对应的特征
F
l
∈
R
H
×
W
×
C
\mathcal {F}_{l}\in R^{H\times W\times C}
Fl∈RH×W×C做avg-pooling操作,在通过一个
1
×
1
1\times 1
1×1的卷积后进行hard-sigmoid输出一个attention值与
F
\mathcal{F}
F相乘。
Spatial-aware Attention
π
S
π_S
πS
考虑到
S
S
S是高维度,将这个模块分为两步:第一步使用可变形卷积(deconv)让注意力学习稀疏,然后aggregating 不同level上相同spatial location的特征。
π
S
(
F
)
⋅
F
=
1
L
∑
l
=
1
L
∑
k
=
1
k
w
l
,
k
⋅
F
(
l
;
p
k
+
Δ
p
k
;
c
)
⋅
Δ
m
k
\pi_{S}(\mathcal{F})\cdot \mathcal{F}=\frac{1}{L}\sum_{l=1}^{L}\sum_{k=1}^{k}w_{l,k}\cdot \mathcal{F}(l;p_{k}+\Delta p_{k};c)\cdot\Delta m_{k}
πS(F)⋅F=L1l=1∑Lk=1∑kwl,k⋅F(l;pk+Δpk;c)⋅Δmk
K是位置稀疏采样点数量,可以认为是DCN的采样数,
F
(
l
;
p
k
+
Δ
p
k
;
c
)
\mathcal{F}(l;p_{k}+\Delta p_{k};c)
F(l;pk+Δpk;c)就是deformable conv操作,
Δ
p
k
\Delta p_k
Δpk是学习到的偏置,
w
l
,
k
w_{l,k}
wl,k是deconv的参数,
F
(
l
;
p
k
+
Δ
p
k
;
c
)
\mathcal{F}(l;p_{k}+\Delta p_{k};c)
F(l;pk+Δpk;c)表示
F
\mathcal{F}
F第
l
l
l层特征的第
c
c
c个通道的
p
k
+
Δ
p
k
p_{k}+\Delta p_{k}
pk+Δpk位置的值。
Task-aware Attention
π
C
π_C
πC.
为了实现关联的学习和泛化到不同的物体表示方法,最后应用了一个task-aware attention。它动态地开启或关闭特征图的channels来适应不同的tasks:
π
C
(
F
)
⋅
F
=
max
(
α
1
(
F
)
⋅
F
c
+
β
1
(
F
)
,
α
2
(
F
)
⋅
F
c
+
β
2
(
F
)
)
\pi_{C}(\mathcal{F})\cdot \mathcal{F}=\max(\alpha^{1}(\mathcal{F})\cdot \mathcal{F}_{c}+\beta^{1}(\mathcal{F}),\alpha^{2}(\mathcal{F})\cdot\mathcal{F}_{c}+\beta^{2}(\mathcal{F}))
πC(F)⋅F=max(α1(F)⋅Fc+β1(F),α2(F)⋅Fc+β2(F))
通过对
F
\mathcal{F}
F中的
C
C
C个通道进行Dynamic relu来对不同的通道进行不同的激活达到attention操作。
F
c
\mathcal{F}_{c}
Fc是指第
c
c
c个channel的特征切片,
[
α
1
,
α
2
,
β
1
,
β
2
]
=
θ
(
⋅
)
[\alpha^{1},\alpha^{2},\beta^{1},\beta^{2}]=\theta(\cdot)
[α1,α2,β1,β2]=θ(⋅)是一个超参数,用来学习控制激活的阈值。首先在
L
×
S
L\times S
L×S维度上做global average pooling来降维,然后使用两个全连接和一个Noramlization layer,最后使用一个shifted sigmoid函数来normalize输出到
[
−
1
,
1
]
[-1,1]
[−1,1]之间。
Ablation Study
Experiment
版权声明:本文为CSDN博主「Fwenxuan」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_42714574/article/details/123063292
暂无评论