Track to Detect and Segment: An Online Multi-Object Tracker
论文和代码:https://jialianwu.com/projects/TraDeS.html
在交流群里看到作者公布了前段时间收录于CVPR2021的多目标跟踪论文,花了半天的时间看了一下,做个笔记。正片文章最主要的内容在于构建了一个端到端的模型,将跟踪信息用于辅助检测或者分割,在多目标跟踪(MOT)和像素级多目标跟踪(MOTS)上均达到了sota。
Introduction
现如今主流的MOT方法大致分为两种:track-by-detection(TBD)的二阶段方法和joint-detection-and-tracking的单阶段方法。TBD范式的方法将MOT分为两个独立的任务,先用一个现成的检测器检测出图像中的目标,再用其他的网络将其与现有轨迹相连,用的比较多的是Re-ID的网络。这种范式的问题便在检测和跟踪是两个独立的任务,分开训练,并不是一个端到端的模型,无法达到全局的最优解,而且通常来说速度较慢。为了解决这种二阶段带来的弊端,JDE提出了新的joint-detection-and-tracking范式,在一个前向过程中,同时进行检测和外貌特征提取,将MOT做到了端到端实现。
JDE范式依旧存在着问题:(1)虽然在这种范式中,骨干网络是两个任务共享的,但检测依然是独立在外的,没有用到跟踪的信息。作者认为,对于稳定连续的轨迹来说,检测是一个基础,反过来,跟踪线索也将有助于检测,尤其是在目标发生部分遮挡或者运动模糊的情况下;(2)在联合训练检测和跟踪任务时,普通的Re-ID损失和检测损失不太兼容,检测任务的目的是区分目标,使得类间距变大,类内距离缩小,然而Re-ID任务是关注同一类内部的不同之处。
出于以上思考,作者提出了一个新的在线跟踪模型TraDeS(Track to Detect and Segment),通过将跟踪的信息反哺给检测以及设计了一个与检测损失较兼容的Re-ID损失,来提升多目标跟踪的效果。整个模型最主要的在于两个模块:CVA(cost volume based association)模块和MFW(motion-guided feature warper)模块。CVA模块构建了一个cost volumn(类似于匹配代价矩阵),存储着两帧的embedding之间的相似度匹配的信息。接着,从cost volumn中推理出一个偏移量,即目标中心在两帧之间的位移。采用这个位移以及embedding,模型进行一个两轮的数据关联。然后,MFW模块通过偏移量,将前一帧的信息融合到当前帧中,以完成检测或者分割。
在CVA模块中,cost volumn用于监督Re-ID embedding的训练,这样目标和背景信息均在考虑的范围内,也就是说Re-ID模块也会考虑类别之间的不同。不仅提高Re-ID embedding的学习,而且在一起训练时不会伤害到检测模块的性能。此外,这里的偏移量是通过两个外貌embedding的之间的相似度学习到的,所以即使当目标有很大程度的移动或者视频帧率很低的时候,偏移量也能匹配到目标。因此,这个偏移量也可以作为稳定的跟踪信息传入到MFW模块中,来提高检测的效果。比如说,在当前帧,某个目标被部分遮挡了,但它在之前肯定是有不被遮挡的时候,将之前帧跟踪的信息融合到当前帧,可以使模型很好地应对这种部分遮挡的情况。
Preliminaries
cost volumn方法在深度估计和光流法中的应用很成熟,一般用于对两帧之间的像素进行关联。作者由此受启发,通过cost volumn来学习外貌embedding和偏移量,实验证明cost volumn是有效的。
TraDeS采用的检测框架为CenterNet,一开始的输入为图像
I
∈
R
H
×
W
×
3
\boldsymbol{I} \in\mathbb{R}^{H \times W \times 3}
I∈RH×W×3,由骨干网络提取出的特征为
f
∈
R
H
F
×
W
F
×
64
\boldsymbol{f} \in \mathbb{R}^{H_{F} \times W_{F} \times 64}
f∈RHF×WF×64,
H
F
=
H
4
H_{F}=\frac{H}{4}
HF=4H,
W
F
=
W
4
W_{F}=\frac{W}{4}
WF=4W。随后,将
f
\boldsymbol{f}
f输入进几个head,得到分类的中心点热度图
P
∈
R
H
F
×
W
F
×
N
c
l
s
\boldsymbol{P} \in \mathbb{R}^{H_{F} \times W_{F} \times N_{c l s}}
P∈RHF×WF×Ncls以及其他不同任务需要的特征图(比如用于预测2D或3D的目标大小特征图等等),其中
N
c
l
s
N_{c l s}
Ncls为目标类别的数量。CenterNet检测器是通过目标的中心点(
P
\boldsymbol{P}
P中的峰值)以及其他分支相应位置的预测来检测目标。和CenterTrack一样,TraDeS也是额外添加了一个预测偏移量的分支来完成跟踪
O
B
∈
R
H
F
×
W
F
×
2
\boldsymbol{O}^{B} \in \mathbb{R}^{H_{F} \times W_{F} \times 2}
OB∈RHF×WF×2。
TraDeS Tracker
总的来说,作者的目标是想用跟踪的信息来反馈检测的子网络,提出了Cost Volume based Association(CVA)模块来更好的学习Re-ID任务的embedding以及一些目标的运动信息和Motion-guided Feature Warper(MFW)模块来对融合之前帧的跟踪信息,以便于更好的进行检测。
Cost Volume based Association
此模块用来学习外貌embedding和偏移量,用来进行数据关联,学到的embedding不仅关注类内的不同,也关注类间的差距,与检测损失兼容性更好,CVA模块还会将跟踪的信息添加到MFW模块以加强检测的性能。
Cost Volume: 假设来自两帧图像的特征分别为
f
t
\boldsymbol{f}^{t}
ft和
f
t
−
τ
\boldsymbol{f}^{t-\tau}
ft−τ,通过一个简单的Re-ID网络来学习其外貌embedding,
e
t
=
σ
(
f
t
)
∈
R
H
F
×
W
F
×
128
\boldsymbol{e}^{t}=\sigma\left(\boldsymbol{f}^{t}\right) \in \mathbb{R}^{H_{F} \times W_{F} \times 128}
et=σ(ft)∈RHF×WF×128。通过两个embedding,构造一个cost volumn矩阵来存储两帧之间点与点之间的匹配相似度信息。为了更好的计算cost volumn矩阵,现将得到的embedding下采样两倍,得到
e
′
∈
R
H
C
×
W
C
×
128
\boldsymbol{e}^{\prime} \in \mathbb{R}^{H_{C} \times W_{C} \times 128}
e′∈RHC×WC×128,
H
C
H_C
HC和
W
C
W_C
WC很明显就是
H
F
H_F
HF和
W
F
W_F
WF的一半。通过以下公式进行计算:
C
i
,
j
,
k
,
l
=
e
i
,
j
′
t
e
k
,
l
t
−
τ
⊤
C_{i, j, k, l}=\boldsymbol{e}_{i, j}^{\prime t} \boldsymbol{e}_{k, l}^{t-\tau \top}
Ci,j,k,l=ei,j′tek,lt−τ⊤得到最终的cost volumn矩阵
C
∈
R
H
C
×
W
C
×
H
C
×
W
C
\boldsymbol{C} \in \mathbb{R}^{H_{C} \times W_{C} \times H_{C} \times {W}_{C}}
C∈RHC×WC×HC×WC,
C
i
,
j
,
k
,
l
C_{i,j,k,l}
Ci,j,k,l代表着
t
t
t时刻的
(
i
,
j
)
(i,j)
(i,j)点与
t
−
τ
t-\tau
t−τ时刻的
(
k
,
l
)
(k,l)
(k,l)点之间的相似度。这里的一个点,也就是上面公式里的
e
i
,
j
′
t
\boldsymbol{e}_{i, j}^{\prime t}
ei,j′t,代表原embedding里
(
i
,
j
)
(i,j)
(i,j)位置的所有通道的值,是个一维向量。
Tracking Offset: 在上面
C
\boldsymbol{C}
C的基础上,计算所有
t
t
t时刻点到
t
−
τ
t-\tau
t−τ时刻相应位置的偏移量
O
∈
R
H
C
×
W
C
×
2
\boldsymbol{O} \in \mathbb{R}^{H_{C} \times W_{C} \times 2}
O∈RHC×WC×2。
假设现在要计算目标
x
x
x的偏移量,其
t
t
t时刻的中心点的位置为
(
i
,
j
)
(i,j)
(i,j),那么便可以找到其在
C
\boldsymbol{C}
C中对应的一个两维的cost volumn图
C
i
,
j
∈
R
H
C
×
W
C
\boldsymbol{C}_{i, j} \in \mathbb{R}^{H_{C} \times W_{C}}
Ci,j∈RHC×WC,
C
i
,
j
\boldsymbol{C}_{i, j}
Ci,j里是目标
x
x
x的中心点与
t
−
τ
t-\tau
t−τ时刻所有点的匹配相似度。在拿到
C
i
,
j
\boldsymbol{C}_{i, j}
Ci,j之后,(1)将
C
i
,
j
\boldsymbol{C}_{i, j}
Ci,j进行两个方向的最大值池化,
池化核大小分别为
H
C
×
1
H_{C} \times 1
HC×1和
1
×
W
C
1 \times W_{C}
1×WC,然后再接softmax函数,得到两个向量
C
i
,
j
W
∈
[
0
,
1
]
1
×
W
C
\boldsymbol{C}_{i, j}^{W} \in[0,1]^{1 \times W_{C}}
Ci,jW∈[0,1]1×WC和
C
i
,
j
H
∈
[
0
,
1
]
H
C
×
1
\boldsymbol{C}_{i, j}^{H} \in[0,1]^{H_{C} \times 1}
Ci,jH∈[0,1]HC×1。这两个向量分别代表着目标
x
x
x的中心点在
t
−
τ
t-\tau
t−τ时刻中的水平和垂直位置的可能性。(2)定义了水平和垂直方向的两个偏移量模板,
M
i
,
j
∈
R
1
×
W
C
\boldsymbol{M}_{i, j} \in \mathbb{R}^{1 \times W_{C}}
Mi,j∈R1×WC和
V
i
,
j
∈
R
H
C
×
1
\boldsymbol{V}_{i, j} \in \mathbb{R}^{H_{C} \times 1}
Vi,j∈RHC×1,计算方法如下:
{
M
i
,
j
,
l
=
(
l
−
j
)
×
s
1
≤
l
≤
W
C
V
i
,
j
,
k
=
(
k
−
i
)
×
s
1
≤
k
≤
H
C
\left\{\begin{array}{ll} M_{i, j, l}=(l-j) \times s & 1 \leq l \leq W_{C} \\ V_{i, j, k}=(k-i) \times s & 1 \leq k \leq H_{C} \end{array}\right.
{Mi,j,l=(l−j)×sVi,j,k=(k−i)×s1≤l≤WC1≤k≤HC其中
s
s
s是
e
′
e^{\prime}
e′的步长(推测应该就是下采样倍数,即当前特征图一个像素在原来的图像中代表多远)。
M
i
,
j
,
l
M_{i, j, l}
Mi,j,l即为目标
x
x
x出现在
t
−
τ
t-\tau
t−τ时刻的
(
∗
,
l
)
(*, l)
(∗,l)位置的水平位移。最终,偏移量的计算为:
O
i
,
j
=
[
C
i
,
j
H
⊤
V
i
,
j
,
C
i
,
j
W
M
i
,
j
⊤
]
⊤
\boldsymbol{O}_{i, j}=\left[\boldsymbol{C}_{i, j}^{H \top} \boldsymbol{V}_{i, j}, \boldsymbol{C}_{i, j}^{W} \boldsymbol{M}_{i, j}^{\top}\right]^{\top}
Oi,j=[Ci,jH⊤Vi,j,Ci,jWMi,j⊤]⊤类似于从1到
W
C
W_C
WC的对
C
i
,
j
H
\boldsymbol{C}_{i, j}^{H}
Ci,jH的积分。得到
O
\boldsymbol{O}
O后,再将其上采样2倍,得到
O
C
∈
R
H
F
×
W
F
×
2
\boldsymbol{O}^{C} \in \mathbb{R}^{H_{F} \times W_{F} \times 2}
OC∈RHF×WF×2。这就是最终的偏移量,也会输入到MFW模块用于之后帧的检测。
Training: 由于之前的普通Re-ID损失注重类内不同,与检测损失不是很兼容,所以作者提出用cost volumn来监督网络的学习。所以作者设定,当
t
t
t时刻的点
(
i
,
j
)
(i,j)
(i,j)出现在
t
−
τ
t-\tau
t−τ时刻的
(
k
,
l
)
(k,l)
(k,l)位置时,令
Y
i
,
j
,
k
,
l
=
1
Y_{i,j,k,l}=1
Yi,j,k,l=1,否则
Y
i
,
j
,
k
,
l
=
0
Y_{i,j,k,l}=0
Yi,j,k,l=0。CVA模块的损失定义为:
L
C
V
A
=
−
1
∑
i
j
k
l
Y
i
j
k
l
∑
i
j
k
l
{
α
1
log
(
C
i
,
j
,
l
W
)
+
α
2
log
(
C
i
,
j
,
k
H
)
if
Y
i
j
k
l
=
1
0
otherwise
L_{C V A}=\frac{-1}{\sum_{i j k l} Y_{i j k l}} \sum_{i j k l}\left\{\begin{array}{cl} \alpha_{1} \log \left(C_{i, j, l}^{W}\right) +\alpha_{2} \log \left(C_{i, j, k}^{H}\right) & \text { if } Y_{i j k l}=1& \\ 0 & \text { otherwise } \end{array}\right.
LCVA=∑ijklYijkl−1ijkl∑{α1log(Ci,j,lW)+α2log(Ci,j,kH)0 if Yijkl=1 otherwise 其中,
α
1
=
(
1
−
C
i
,
j
,
l
W
)
β
\alpha_{1}=\left(1-C_{i, j, l}^{W}\right)^{\beta}
α1=(1−Ci,j,lW)β,
α
2
=
(
1
−
C
i
,
j
,
k
H
)
β
\alpha_{2}=\left(1-C_{i, j, k}^{H}\right)^{\beta}
α2=(1−Ci,j,kH)β,不难看出这是两个方向上的focal loss形式的逻辑回归损失,
β
\beta
β即为focal loss中的超参数。由于
C
i
,
j
,
l
W
C_{i, j, l}^{W}
Ci,j,lW和
C
i
,
j
,
k
H
C_{i, j, k}^{H}
Ci,j,kH是由softmax函数计算得到,所以其中并不只是包含了位置
(
i
,
j
)
(i,j)
(i,j)和位置
(
k
,
l
)
(k,l)
(k,l)之间的相似度信息,还包含了
(
i
,
j
)
(i,j)
(i,j)和前一帧中其他点的相似度信息,所以当
C
i
,
j
,
l
W
C_{i, j, l}^{W}
Ci,j,lW和
C
i
,
j
,
k
H
C_{i, j, k}^{H}
Ci,j,kH向着1的方向进行优化时,可以使得目标不仅更加靠近前一帧中的自己,还能使得目标和其他目标以及背景之间的区别更大。
Motion-guided Feature Warper
MFW模块旨在采用CVA模块得到的偏移量
O
C
O^{C}
OC作为跟踪信息,用过可变卷积将前几帧的信息传播到当前帧,使得在当前帧进行的检测更加准确。
Temporal Propagation: 将
O
C
O^{C}
OC送入一个3*3的卷积后,得到
O
D
∈
R
H
F
×
W
F
×
2
K
2
\boldsymbol{O}^{D} \in \mathbb{R}^{H_{F} \times W_{F} \times 2 K^{2}}
OD∈RHF×WF×2K2作为DCN要使用的偏移量,
K
K
K为DCN卷积核的宽或高。为了获得更多的跟踪上的信息,将
f
t
−
f
t
−
τ
\boldsymbol{f}^{t}-\boldsymbol{f}^{t-\tau}
ft−ft−τ也作为输入,与
O
C
O^{C}
OC一起进行卷积。由于TraDeS的检测或者分割是基于目标中心点的,所以直接对
f
t
−
τ
\boldsymbol{f}^{t-\tau}
ft−τ进行卷积不是很适合。作者想要对
f
t
−
τ
\boldsymbol{f}^{t-\tau}
ft−τ进行一个类似中心点的注意力操作,先从
P
t
−
τ
\boldsymbol{P}^{t-\tau}
Pt−τ中提取到
P
a
g
n
t
−
τ
∈
R
H
F
×
W
F
×
1
\boldsymbol{P}_{a g n}^{t-\tau} \in \mathbb{R}^{H_{F} \times W_{F} \times 1}
Pagnt−τ∈RHF×WF×1,压缩
P
t
−
τ
\boldsymbol{P}^{t-\tau}
Pt−τ中的通道维度,因为并不需要其中的类别信息。提取到
P
a
g
n
t
−
τ
\boldsymbol{P}_{a g n}^{t-\tau}
Pagnt−τ后,通过以下方法来得到改善后的
f
‾
q
t
−
τ
\overline{\boldsymbol{f}}_{q}^{t-\tau}
fqt−τ:
f
‾
q
t
−
τ
=
f
q
t
−
τ
∘
P
a
g
n
t
−
τ
,
q
=
1
,
2
,
…
,
64
\overline{\boldsymbol{f}}_{q}^{t-\tau}=\boldsymbol{f}_{q}^{t-\tau} \circ \boldsymbol{P}_{a g n}^{t-\tau}, \quad q=1,2, \ldots, 64
fqt−τ=fqt−τ∘Pagnt−τ,q=1,2,…,64其中的
∘
\circ
∘为Hadamard积,即按位相乘。最终用于增强检测任务的特征便为:
f
^
t
−
τ
=
D
C
N
(
O
D
,
f
‾
t
−
τ
)
∈
R
H
F
×
W
F
×
64
\hat{\boldsymbol{f}}^{t-\tau}=D C N\left(\boldsymbol{O}^{D}, \overline{\boldsymbol{f}}^{t-\tau}\right) \in \mathbb{R}^{H_{F} \times W_{F} \times 64}
f^t−τ=DCN(OD,ft−τ)∈RHF×WF×64
Feature Enhancement: 有了之前帧的信息,在当前帧被遮挡的目标,便更容易被检测出来了。为了提高鲁棒性,作者融合了前
T
T
T帧的信息:
f
~
q
t
=
w
t
∘
f
q
t
+
∑
τ
=
1
T
w
t
−
τ
∘
f
^
q
t
−
τ
,
q
=
1
,
2
,
…
,
64
\tilde{\boldsymbol{f}}_{q}^{t}=\boldsymbol{w}^{t} \circ \boldsymbol{f}_{q}^{t}+\sum_{\tau=1}^{T} \boldsymbol{w}^{t-\tau} \circ \hat{\boldsymbol{f}}_{q}^{t-\tau}, \quad q=1,2, \ldots, 64
f~qt=wt∘fqt+τ=1∑Twt−τ∘f^qt−τ,q=1,2,…,64其中,
w
t
∈
R
H
F
×
W
F
×
1
\boldsymbol{w}^{t} \in \mathbb{R}^{H_{F} \times W_{F} \times 1}
wt∈RHF×WF×1为
t
t
t时刻的权重,
∑
τ
=
0
T
w
i
,
j
t
−
τ
=
1
\sum_{\tau=0}^{T} \boldsymbol{w}_{i, j}^{t-\tau}=1
∑τ=0Twi,jt−τ=1,与Learning Spatial Fusion for Single-Shot Object Detection中类似,
w
\boldsymbol{w}
w是自适应的,通过两层卷积和softmax函数预测得到。作者实验证明,这种自适应的权重比平均求和的效果好一点。融合之后的特征
f
~
q
t
\tilde{\boldsymbol{f}}_{q}^{t}
f~qt输入到网络的head中,用来预测当前帧的检测框或者分割掩膜,有效地恢复消失的目标,降低FN,得到更高的MOTA和IDF1,使得轨迹更完整。
Tracklet Generation
上图是TraDeS的整体结构(一眼看上去还是挺复杂的……但图画得好啊)。MFW模块输出融合后的特征
f
~
q
t
\tilde{\boldsymbol{f}}_{q}^{t}
f~qt后,将其输入进网络的各个head,预测出当前帧的2Dbbox或者3Dbbox等等,再与之前的轨迹进行关联。
Head Networks: 网络的每个head均由几层轻量级的卷积层组成。对于目标检测,head采用与CenterNet一致的设计,对于实例分割,采用与CondInst相同的设计。
Data Association: 得到检测或者分割的结果后,作者设计了一个两轮的数据关联,将其与之前的轨迹相连。第一步,将新的结果与上一帧中以
(
i
,
j
)
+
O
i
,
j
C
(i, j)+\boldsymbol{O}_{i, j}^{C}
(i,j)+Oi,jC为圆心,
r
r
r为半径的圆中未匹配的最相近的检测进行关联,作者设定的
r
r
r为检测bbox的宽与高的均值。第二步,如果在第一步中,新结果并没有得到任何的匹配,便计算其与所有未匹配到的以及历史中的轨迹的embedding之间的余弦相似度,如果最高的相似度高于阈值(文中设为0.3),则将其与最高得分的轨迹相连。两轮匹配后,若新的检测或分割依旧没有匹配到轨迹,则将其设为新开始的轨迹。
TraDeS Loss: 整个结构的总损失函数为:
L
=
L
C
V
A
+
L
d
e
t
+
L
m
a
s
k
L=L_{C V A}+L_{d e t}+L_{m a s k}
L=LCVA+Ldet+Lmask
L
C
V
A
L_{C V A}
LCVA为CVA模块的损失,上文已经给出,
L
d
e
t
L_{d e t}
Ldet和
L
m
a
s
k
L_{m a s k}
Lmask推测应该就是CenterNet与CondInst中的损失相同,还没看过源码。之前有人在群里问作者,这里的检测和分割损失为何会加在一起,作者的回答是这里的检测和分割任务其实是并行的,两者之间并没有关系,都用到了前面跟踪的信息,只是为了实验一下文章的idea是否也适用于分割级别的多目标跟踪。如果单独做检测的话,分割分支和损失应该可以直接去除。
实验
这是评估各个模块效果的实验结果。两个模块效果均挺好,尤其是加了CVA模块后,IDS下降了很多。
CVA模块与数据关联的第二步均能有效的降低IDS。
是否采用偏移量的对比实验,可以看出,添加了偏移量之后的MOTA和IDF1指标均有所上升。
上表是TraDeS与近几年来的sota跟踪器之间的对比,在MOTA、IDF1指标上均比用来对比的其他检测器高,在FP、FN指标上也是,也有很低的IDS,最终生成的轨迹的完整度也超过其他的检测器。证明了采用跟踪的信息,是可以很大程度上提高检测的效果的,最明显的一点就是对当前帧被遮挡,而在之前帧未被遮挡的目标的检测更加容易更加准确。