论文地址:RetinaTrack: Online Single Stage Joint Detection and Tracking
一、 介绍
MOT任务现在大部分还是DBT范式,这些DBT生成的实时的MOT算法,往往在追踪时不去计算检测的时间,事实上,他们在检测所需的时间却很长。本篇paper主要研究在自动驾驶方面的追踪,所以对速度和准确度要求都很高。RetinaTrack基于实时的RetinaNet检测器,加入实例级别嵌入进行数据关联。提出一个简单有效的post-FPN预测子网络来解决RetinaNet不适合对不同尺度的每个实例进行嵌入的问题。
主要贡献
- 提出了一个联合训练的检测和追踪模型,简单有效易部署。
- 提出了一个单镜头检测架构的简单修改,即能够提取实例级特征,使用这些特征进行跟踪或其他用途。
- 在Waymo Open数据集为检测和研究2D图片提供了一个baseline,且达到的SOTA。
相关工作
追踪方面:
传统的DBT范式下,追踪用于连接相邻帧,早期深度学习,追踪比较执着于寻找一个优化的算法来进行应对任何特征之间的匹配,目前更加执着于寻找这样一种适合于匈牙利匹配或者说是数据关联的最合适的特征。例如传统的Deep SORT,使用预训练的检测器,ReID模型和匈牙利算法就完成了不错的追踪,RetinaTrack使用一个更加轻量的整合了ReID分支的检测网络,相较于Deep Sort更加简单。
检测与跟踪:
通过MOT的一个评价指标MOTA(假阳和假阴),可以看出,检测器性能对于追踪的效果是十分重要的。为了解决这些问题,MOT Challenge让多个任务使用相同的边界框作为检测结果,也就是说它假定这两者将分开进行,这对联合检测和追踪的模型不友好。可能也是由于黑盒检测,以及相关文献的缺少,导致了这种方法容易收到质疑。
二、 RetinaTrack结构
和其他基于锚的检测相同,RetinaNet产生的检测也是锚框。为了将这些相邻帧的锚相关联,需要确定相应锚的特征向量,将他们传入特征嵌入网络中进行训练。
1. RetinaNet
在基于锚的RetinaNet中,在网格的顶点放置
K
K
K个不同形状(宽高比和大小)锚框
{
A
1
,
.
.
.
,
A
K
}
\{A_1,...,A_K\}
{A1,...,AK},用于预测这些锚的相关属性(分类得分,框回归偏移量)。
就RetinaNet而言,这里使用基于FPN的特征提取器产生带有不同分辨率
W
i
×
H
i
W_i×H_i
Wi×Hi的多层特征图
F
i
F_i
Fi。每个特征图
F
i
F_i
Fi传送到两个post-FPN的具体子网络中来分别预测
K
K
K个张量
{
Y
i
,
k
c
l
s
}
k
=
1
:
K
\{Y_{i,k}^{cls} \}_{k=1:K}
{Yi,kcls}k=1:K和
{
Y
i
,
k
l
o
c
}
k
=
1
:
K
\{Y_{i,k}^{loc} \}_{k=1:K}
{Yi,kloc}k=1:K,
{
Y
i
,
k
c
l
s
}
k
=
1
:
K
\{Y_{i,k}^{cls} \}_{k=1:K}
{Yi,kcls}k=1:K是大小为
W
i
×
H
i
×
N
W_i×H_i×N
Wi×Hi×N代表
N
N
N维分类得分(图2a),
{
Y
i
,
k
l
o
c
}
k
=
1
:
K
\{Y_{i,k}^{loc} \}_{k=1:K}
{Yi,kloc}k=1:K是
W
i
×
H
i
×
4
W_i×H_i×4
Wi×Hi×4的边界框偏移量(图2b)。对于每个特征图
F
i
F_i
Fi计算张量公式如下:
L
=
λ
c
l
s
⋅
L
c
l
s
+
λ
L
1
⋅
L
L
1
+
λ
giou
⋅
L
giou
(1)
\mathcal{L}=\lambda_{c l s} \cdot \mathcal{L}_{c l s}+\lambda_{L 1} \cdot \mathcal{L}_{L 1}+\lambda_{\text {giou }} \cdot \mathcal{L}_{\text {giou }}\tag{1}
L=λcls⋅Lcls+λL1⋅LL1+λgiou ⋅Lgiou (1)
Y
i
,
k
loc
(
F
i
)
≡
Conv
(
Conv
(
4
)
(
F
i
;
θ
l
o
c
)
;
ϕ
k
l
o
c
)
(2)
Y_{i, k}^{\operatorname{loc}}\left(F_{i}\right) \equiv \operatorname{Conv}\left(\operatorname{Conv}^{(4)}\left(F_{i} ; \theta^{l o c}\right) ; \phi_{k}^{l o c}\right) \tag{2}
Yi,kloc(Fi)≡Conv(Conv(4)(Fi;θloc);ϕkloc)(2)
k
=
{
1
,
…
,
K
}
k=\{1,…,K\}
k={1,…,K}为
K
K
K个锚的下标索引,使用
C
o
n
v
(
4
)
Conv^{(4) }
Conv(4)代表四个
3
X
3
3X3
3X3的卷积层(包含
B
N
BN
BN和
R
e
l
u
Relu
Relu)。FPN后的模型参数为
θ
c
l
s
θ^{cls}
θcls ,
{
ϕ
k
c
l
s
}
k
=
1
K
\{ϕ_k^{cls} \}_{k=1}^K
{ϕkcls}k=1K,
θ
l
o
c
θ^{loc}
θloc和
{
ϕ
k
l
o
c
}
k
=
1
K
\{ϕ_k^{loc} \}_{k=1}^K
{ϕkloc}k=1K。虽然FPN层后的参数不共享,但是FPN参数共享。
2. 使用锚框级特征修改预测子任务
公式1,2中K个锚框共享所有的卷积层参数来进行分类和回归,因此,没有明确的方法来提取每个实例的特征,因为如果两个检测匹配相同位置的锚点具有不同的形状,那么在网络中唯一可以区分它们的点是在最后的类和框回归预测。当追踪遮挡时, 目标更有可能对应那些相同位置的锚框,这是有问题的(图3)。
做法是在post-FPN预测之前强制的进行锚框分离,使用中间级特征任然能够可以唯一的关联一个锚框。我们相较于原本的网络结构做出了一点修改,采用了一点方式来进行限制权重。在我们的RetinaTrack模型中,我们通过以下参数化进行预测:
F
i
,
k
=
Conv
(
m
1
)
(
F
i
;
θ
k
)
(3)
F_{i, k}=\operatorname{Conv}^{\left(m_{1}\right)}\left(F_{i} ; \theta_{k}\right) \tag{3}
Fi,k=Conv(m1)(Fi;θk)(3)
Y
i
,
k
c
l
s
≡
Sigmoid
(
Conv
(
Conv
(
m
2
)
(
F
i
,
k
;
θ
c
l
s
)
;
ϕ
c
l
s
)
)
(4)
Y_{i, k}^{c l s} \equiv \operatorname{Sigmoid}\left(\operatorname{Conv}\left(\operatorname{Conv}^{\left(m_{2}\right)}\left(F_{i, k} ; \theta^{c l s}\right) ; \phi^{c l s}\right)\right) \tag{4}
Yi,kcls≡Sigmoid(Conv(Conv(m2)(Fi,k;θcls);ϕcls))(4)
Y
i
,
k
l
o
c
≡
Conv
(
Conv
(
m
2
)
(
F
i
,
k
;
θ
l
o
c
)
;
ϕ
l
o
c
)
(5)
Y_{i, k}^{l o c} \equiv \operatorname{Conv}\left(\operatorname{Conv}^{\left(m_{2}\right)}\left(F_{i, k} ; \theta^{l o c}\right) ; \phi^{l o c}\right) \tag{5}
Yi,kloc≡Conv(Conv(m2)(Fi,k;θloc);ϕloc)(5)
对于每个post-FPN层 F i F_i Fi,我们并行的使用 K K K个带有 m 1 m_1 m1层的卷积序列来预测 F i , k F_{i,k} Fi,k张量(图2c),视为每种锚框实例级别的特征,会有每个唯一的 F i , k F_{i,k} Fi,k关联每个检测框。将第一个片段命名为task-shared post-FPN layers,对 K K K种锚框的每种形状使用共享的参数 θ k θ_k θk。
使用两个并行的task-specific post-FPN layers来处理每个 F i , k F_{i,k} Fi,k。分别通过 m 2 m_2 m2个 3 × 3 3×3 3×3的卷积后加一个输出 N N N个分类通道或者一个4个通道的偏移回归的最终 3 × 3 3×3 3×3卷积。对于这两个任务, K K K个锚框计算时共享参数 θ c l s θ^{cls} θcls , ϕ c l s ϕ^{cls} ϕcls , θ l o c θ^{loc} θloc和 ϕ l o c ϕ^{loc} ϕloc 。
3. 嵌入结构
对于特征
F
i
,
k
F_{i,k}
Fi,k,额外加入第三个任务,由
m
3
m_3
m3个1×1卷积层组成的将特征映射到最终的追踪embedding空间:
Y
i
,
k
e
m
b
≡
Conv
(
m
3
)
(
F
i
,
k
;
θ
e
m
b
)
(6)
Y_{i, k}^{e m b} \equiv \operatorname{Conv}^{\left(m_{3}\right)}\left(F_{i, k} ; \theta^{e m b}\right) \tag{6}
Yi,kemb≡Conv(m3)(Fi,k;θemb)(6)
总结下来就是,RetinaTrack预测每个锚框的实例级特征
F
i
,
k
F_{i,k}
Fi,k。对于一个检测
d
d
d,存在一个唯一的锚框来产生这个
d
d
d,并且
F
i
,
k
F_{i,k}
Fi,k是一个唯一的关联这个
d
d
d的特征。
4. 训练
分类使用
f
o
c
a
l
l
o
s
s
focal loss
focalloss,边界框偏移回归使用
H
u
b
e
r
L
o
s
s
Huber Loss
HuberLoss。对于
e
m
b
e
d
d
i
n
g
embedding
embedding使用采样三组对比样本的批处理策略的三元组损失:
L
B
H
(
θ
;
X
)
=
∑
j
=
1
A
SoftPlus
(
m
+
max
p
=
1
…
A
t
j
=
t
p
D
j
p
−
min
ℓ
=
1
…
A
t
j
≠
t
ℓ
D
j
ℓ
)
(7)
\mathcal{L}_{B H}(\theta ; X)=\sum_{j=1}^{A} \text { SoftPlus }\left(m+\max _{p=1 \ldots A \atop t_{j}=t_{p}} D_{j p}-\min _{\ell=1 \ldots A \atop t_{j} \neq t_{\ell}} D_{j \ell}\right) \tag{7}
LBH(θ;X)=j=1∑A SoftPlus ⎝⎛m+tj=tpp=1…AmaxDjp−tj=tℓℓ=1…AminDjℓ⎠⎞(7)
A是匹配上GT框的锚框数量,
t
y
t_y
ty是匹配上的锚框
y
y
y对应的追踪ID。
D
a
b
D_{ab}
Dab表示嵌入a和b之间的非平方的欧式距离。m是保护参数(m=0.1)。
三、 实验
COCO数据集上单张图片进行检测的消融实验:
Waymo数据集上的追踪消融:
Embedding层深度消融:
MOT17数据集对比:
使用不同关联方法对比:分别使用IOU、放弃三元组损失直接使用特征
F
i
,
k
F_{i,k}
Fi,k和使用预训练的ReID提取检测特征来进行独立的计算亲密度。
Waymo数据集评估:
四、 总结
提出了一个简单有效的联合检测追踪的方法RetinaTrack,并扩展单级检测器来处理实例级属性。此外还证明了联合训练的有效性优于训练独立检测和跟踪模型的主流方法。