目标检测之标签分配算法TOOD(TOOD: Task-aligned One-stage Object Detection)
TOOD算法
- 背景
- Architecture
- Task-aligned Head(T-head)
- task-interactive features
- Task-aligned Predictor (TAP)
- Task Alignment Learning(TAL)
- Task-aligned Sample Assignment
- Task-aligned Loss
- 总结
背景
在one-stage目标检测中位置检测头和分类头通常是用在俩个并行分支上的,这样会导致一个问题就是它们之间没有交互,分类结果无法考虑目标位置,这俩个任务之间就无法做到对齐。

上图展示了目标检测的结果,这里主要关注Dining table这个检测结果,其中score是指分类准确率,IOU则是指定位的分数。第一行的检测结果来自ATSS,可以明显看到score比较高的地方与IOU比较高的地方是不同的,再对比真实图像,可以发现分类预测结果的分数应该跟IOU相对应,所以这也是分类任务和定位任务不对齐导致的。第二行的结果则来自TOOD,可以发现分类结果和定位结果是相对应的,说明了俩个任务的对齐有了改进。
在这个基础上提出了TOOD算法,它是基于学习的方式对分类任务和位置预测任务进行对齐。
TOOD主要由Task-aligned Head(T-Head)和Task Aligmment Learning(TAL)俩部分组成。其中T-Head是一种平衡具体任务特征学习和任务交互学习的方法。TAL是分类提出了样本分配策略和task-aligned 损失实现了在俩个任务中optimal anchor对齐的目的。
TOOD代码:代码链接
TOOD论文:论文链接
Architecture
TOOD的整体结构如下

TOOD是接在FPN特征层之后,TOOD默认每个grid的anchor只有一个。从上图可以看出,T-head接在了FPN层之后,TAL则是连接在了最后,用来对齐俩个任务。然后通过反向传播update T-head的参数,从而调整分类和位置的准确率。
Task-aligned Head(T-head)

上图是T-head的结构图,其中(a)是普通的目标检测head,它是将classification prediction和localization prediction分开输出。(b)是T-head的整体结构,可以发现它先用了
N
N
N层卷积处理了FPN的特征图获得
X
i
n
t
e
r
X^{inter}
Xinter,然后
X
i
n
t
e
r
X^{inter}
Xinter通过俩个TAP模块分别预测输出classification和prediction。(c)是TAP模块的具体结构
task-interactive features
通过T-head的结构可以发现,其先计算了任务交互的特征
X
i
n
t
e
r
X^{inter}
Xinter,它是使用了
N
N
N个Conv网络获取。具体如下,输入是FPN层的输出
X
F
P
N
X^{FPN}
XFPN(PAN其实也一样),其中
X
F
P
N
∈
R
H
×
W
×
C
X^{FPN}\in R^{H\times W\times C}
XFPN∈RH×W×C。然后通过卷积层,即
X
k
i
n
t
e
r
=
{
δ
(
c
o
n
v
k
(
X
f
p
n
)
)
,
k
=
1
δ
(
c
o
n
v
k
(
X
k
−
1
i
n
t
e
r
)
)
,
k
>
1
,
∀
k
∈
{
1
,
2
,
⋯
,
N
}
X_k^{inter} = \left\{\begin{matrix}\delta(conv_k(X^{fpn})),k=1\\\delta(conv_{k}(X^{inter}_{k-1 })),k>1\end{matrix}\right.,\forall_k\in\{1,2,\cdots,N\}
Xkinter={δ(convk(Xfpn)),k=1δ(convk(Xk−1inter)),k>1,∀k∈{1,2,⋯,N}
其中
δ
\delta
δ是指relu函数,
c
o
n
v
k
conv_k
convk则是指第
k
k
k层的卷积,这样就获得了它们的交互特征
Task-aligned Predictor (TAP)
TAP分别用于预测分类和类别。先分析它的layer attention,它的方法比较简单,这里记权重为
w
k
w_k
wk是先将
X
1
−
N
i
n
t
e
r
X^{inter}_{1-N}
X1−Ninterconcat,得到
X
i
n
t
e
r
∈
R
H
×
W
×
C
∗
N
X^{inter}\in R^{ H\times W \times C*N}
Xinter∈RH×W×C∗N,然后通过global average pooling得到
x
i
n
t
e
r
∈
R
1
×
1
×
C
∗
N
x^{inter}\in R^{1\times 1 \times C*N}
xinter∈R1×1×C∗N,然后根据
x
i
n
t
e
r
x^{inter}
xinter计算注意力权重
w
∈
R
N
w\in{R^N}
w∈RN,即
w
=
σ
(
f
c
2
(
δ
(
f
c
1
(
x
i
n
t
e
r
)
)
)
)
w = \sigma(fc_2(\delta(fc_1(x^{inter}))))
w=σ(fc2(δ(fc1(xinter))))其中
σ
\sigma
σ是sigmoid函数,
f
c
fc
fc为全连接层
有了注意力权重后,就可以得到
X
t
a
s
k
X^{task}
Xtask,即
X
k
t
a
s
k
=
w
k
⋅
X
k
i
n
t
e
r
,
∀
k
∈
{
1
,
2
,
⋯
,
N
}
X^{task}_k = w_k\cdot X^{inter}_k,\forall_k\in\{1,2,\cdots,N\}
Xktask=wk⋅Xkinter,∀k∈{1,2,⋯,N}然后基于
X
t
a
s
k
X^{task}
Xtask得到
Z
t
a
s
k
Z^{task}
Ztask,即
Z
t
a
s
k
=
c
o
n
v
2
(
δ
(
c
o
n
v
1
(
X
t
a
s
k
)
)
)
Z^{task} = conv_2(\delta(conv_1(X^{task})))
Ztask=conv2(δ(conv1(Xtask)))这里
Z
t
a
s
k
Z^{task}
Ztask可以通过sigmoid函数转换成预测的概率图
P
∈
R
H
×
W
×
80
P\in R^{H\times W\times 80}
P∈RH×W×80或
B
∈
R
H
×
W
×
4
B\in R^{H\times W\times 4}
B∈RH×W×4,即
P
/
B
=
σ
(
Z
t
a
s
k
)
P/B = \sigma(Z^{task})
P/B=σ(Ztask)注意这里的
H
H
H和
W
W
W是FPN特征图的大小,并非实际图像的大小。
再分析概率图
M
/
O
M/O
M/O,
M
/
O
M/O
M/O主要用于调整
P
/
B
P/B
P/B,由
X
i
n
t
e
r
直
接
学
习
,
X^{inter}直接学习,
Xinter直接学习,这里
M
=
σ
(
c
o
n
v
2
(
δ
(
c
o
n
v
1
(
X
i
n
t
e
r
)
)
)
M
∈
R
H
×
W
×
1
M = \sigma(conv_2(\delta(conv_1(X^{inter})))\qquad M\in R^{H\times W \times 1}
M=σ(conv2(δ(conv1(Xinter)))M∈RH×W×1
O
=
c
o
n
v
4
(
δ
(
c
o
n
v
3
(
X
i
n
t
e
r
)
)
)
O
∈
R
H
×
W
×
8
O = conv_4(\delta(conv_3(X^{inter})))\qquad O\in R^{H\times W \times 8}
O=conv4(δ(conv3(Xinter)))O∈RH×W×8针对分类预测,这里
P
P
P的调整方式如下
P
a
l
i
g
n
=
P
×
M
P^{align} = \sqrt{P\times M}
Palign=P×M这里可以这么理解,通过交互特征对预测的分类结果进行调整。
针对位置预测,
B
B
B是学习了预测偏差,对每个位置的
(
i
,
j
)
(i,j)
(i,j)预测进行了偏移,具体如下
B
a
l
i
g
n
(
i
,
j
,
c
)
=
B
(
i
+
O
(
i
,
j
,
2
×
c
)
,
j
+
O
(
i
,
j
,
2
×
c
+
1
)
,
c
)
B^{align}(i,j,c) = B(i+O(i,j,2\times c),j+O(i,j,2\times c+1),c)
Balign(i,j,c)=B(i+O(i,j,2×c),j+O(i,j,2×c+1),c)
Task Alignment Learning(TAL)
TAL的创新有俩个点,第一个是基于新的metric方法选择最高质量的anchor,第二个是同时考虑了框的分配和权重。它通过了新的样本分配策略和新的损失函数实现了俩个任务的对齐
Task-aligned Sample Assignment
Task-aligned Sample Assignment是为了实现高分类分数的地方有精准的位置特征,同时其他地方只有低分类分数。为此作者提出了一个新的anchor对齐的metric方法。
论文中将metric记为
t
t
t,其中
t
=
s
α
+
μ
β
t= s^{\alpha}+\mu^{\beta}
t=sα+μβ其中
s
s
s为分类分数,
μ
\mu
μ为预测框和真实框的匹配度,
α
\alpha
α和
β
\beta
β为超参数。明显
t
t
t考虑了分类分数和IOU分数。
同时它基于新的metric
t
t
t作为评价标准,将
t
t
t值最大的
m
m
m个作为positive anchor,剩余的则作为negative anchor。
Task-aligned Loss
对于分类损失,作者在训练中发现直接用
t
t
t值作为分类结果,但是它发现这样很难收敛,所以作者使用了归一化后的
t
^
\hat{t}
t^,根据论文的理解,
t
^
\hat{t}
t^为
t
^
=
t
(
m
a
x
(
t
)
−
m
i
n
(
t
)
)
∗
m
a
x
(
u
)
\hat{t} = \frac{t}{(max(t)-min(t))}*max(u)
t^=(max(t)−min(t))t∗max(u)个人认为
t
^
=
t
(
m
a
x
(
t
)
)
∗
m
a
x
(
u
)
\hat{t} = \frac{t}{(max(t))}*max(u)
t^=(max(t))t∗max(u)这俩种方式都是合理的。
所以pos部分损失函数为
L
c
l
s
_
p
o
s
=
∑
i
=
1
N
p
o
s
B
C
E
(
s
i
,
t
i
^
)
L_{cls\_pos} = \sum^{N_{pos}}_{i=1}BCE(s_i,\hat{t_i})
Lcls_pos=i=1∑NposBCE(si,ti^)同时采用focal loss的方式,可以得到
L
c
l
s
L_{cls}
Lcls为
L
c
l
s
=
∑
i
=
1
N
p
o
s
∣
t
^
i
−
s
i
∣
γ
B
C
E
(
s
i
,
t
i
^
)
+
∑
j
=
1
N
n
e
g
s
j
γ
B
C
E
(
s
j
,
0
)
L_{cls} = \sum^{N_{pos}}_{i=1}|\hat{t}_i-s_i|^{\gamma}BCE(s_i,\hat{t_i})+ \sum^{N_{neg}}_{j=1}s_j^{\gamma} BCE(s_j,0)
Lcls=i=1∑Npos∣t^i−si∣γBCE(si,ti^)+j=1∑NnegsjγBCE(sj,0)其中
γ
\gamma
γ为超参数
对于位置损失,它则是将 t ^ \hat{t} t^作为giou的相结合,具体如下 L r e g = ∑ i = 1 N p o s t ^ i L G I O U ( b i , b i ˉ ) L_{reg} = \sum^{N_{pos}}_{i=1}\hat{t}_iL_{GIOU}(b_i,\bar{b_i}) Lreg=i=1∑Npost^iLGIOU(bi,biˉ)其中 b b b为预测的boxes坐标, b ˉ \bar{b} bˉ则是与之相对应的真实坐标。
所以总损失为 L T A L = L c l s + L r e g L_{TAL} = L_{cls}+L_{reg} LTAL=Lcls+Lreg
总结
TOOD算法在后来被许多经典算法引用,在yolov6和yolov8中使用了其ASL的方法,在ppyolo中在采用了T-head+ASL,说明了该算法具有强大的适应能力,能够应用于one-stage的目标检测算法中。
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐



所有评论(0)