DEFT
介绍与相关工作
作者假定在传统的CNN目标检测器中加入一个可学习的目标匹配模型来实现高质量的MOT,更进一步,通过联合训练检测和追踪(关联模型),两个模型会互相适应,最终表现更好。和直接使用检测作为黑盒获得输出送入关联逻辑中相比,对检测和帧间关联使用相同的backbone进行训练更加有效,精度更高。
这篇论文中作者提出了一个方法,使用一个检测器的多尺度的backbone来获得每个目标的embedding,并且将这些embedding作为一个目标追踪关联的子网络中的外貌特征进行输入。将该方法命名为‘Detection Embeddings for Tracking’,简称DEFT。
由于特征共享网络的设计,该方法同时使用外貌和运动线索来进行追踪的速度和有些只是用简单关联策略的方法相当。并且由于DEFT对于外貌embedding会保留多帧,因此对于遮挡和长帧间位移具有更好的鲁棒性。
与其他DBT方法利用外貌特征的方法不同,这些方法主要优点是将检测和关联独立后,对于外貌特征采用单独的且耗时的特征提取器来进行处理,但是显然算力高且速度慢了,但是可以通过优化子网络来提高精度和速度。DEFT中,关联和检测是在一个统一的网络进行学习的的,因此目标关联和检测之间延迟很短。
JDE范式中有一个基于CenterNet的CenterTrack方法,达到了SOTA,但是由于其模型的特点,只能预测相邻帧。所以对处理长帧之间的遮挡或者位移问题不是很理想。JDE模型使用一个reID分支拓展了YOLOV3来为关联操作进行提取目标embedding,特征提取和检测分支共享特征且联合学习,FairMOT在改良JDE的基础上,利用了CenterNet检测器来提升追踪效果。
DEFT和JDE和FairMOT类似,采用联合学习检测和特征匹配的策略。在此基础上,克服了一些其他模型的缺点(例如CenterTrack),当应用到具有挑战性的例子时,通过提供一个更长的轨迹记忆来聚合相似度分数,并通过应用一个简单的基于LSTM的运动模型来过滤物理上不可信的匹配。
DEFT网络
训练和推理如下图所示,DEFT是在CenterNET作为backbone进行部署的:
DEFT在训练时,目标关联的损失会通过检测的backbone反向传播,从而对外观特征进行了检测和匹配的优化。同时加入一个低维的LSTM来过滤匹配。
推理的时候,embedding提取头会使用从检测器获得的特征图和bbox作为输入来为每个检测到的目标进行外貌特征embedding的提取。matching头使用这些当前帧检测和过去帧的记录(轨迹)embedding来进行相似度的计算。运动预测模型(LSTM)过滤物理上不可能的轨迹匹配。最后使用匈牙利算法HA来进行在线关联。
目标embedding
如图1所示,matching网络所使用的embedding是从检测backbone中提取的,标记为‘embedding extractor’,embedding extractor利用检测产生的中间特征图来构建embedding帮助追踪时的目标关联。使用检测不同层的特征图来提取多尺度的外貌特征,增强了embedding的鲁棒性。
DEFT将一个视频帧 t t t作为输入,通过检测头,输出bbox集合: B t = { b 1 t , b 2 t , … , b N t t } B_t = \{b_1^t,b_2^t,\dots,b_{N_t}^t\} Bt={b1t,b2t,…,bNtt}。 N t = ∣ B t ∣ N_t = |B_t| Nt=∣Bt∣为bbox在 t t t帧的数量。
对于每个检测目标,从估计的2D目标中心位置提取特征embedding,假设第 i i i个目标在大小为 W × H W×H W×H的输入帧的中心位置为 ( x , y ) (x,y) (x,y),此时特征图大小为 W m × H m × C m W_m×H_m×C_m Wm×Hm×Cm,那么就提取在位置 ( y H H m , x W W m ) \left(\frac{y}{H} H_{m}, \frac{x}{W} W_{m}\right) (HyHm,WxWm)的 C m C_m Cm维的向量作为第 i i i个目标在特征图 m m m的特征向量 f i m f_i^m fim。然后concat这 M M M个特征图的特征构建 e e e维的最终特征embedding,即第 i i i个目标的最终embedding为 f i = f i 1 ⋅ f i 2 … f i M f_{i}=f_{i}^{1} \cdot f_{i}^{2} \ldots f_{i}^{M} fi=fi1⋅fi2…fiM。
实验中,检测的特征图的维度是不同的,因此为了获得上述的embedding,需要增加额外的卷积层来对某些层进行升维或者降维。实验中一般会对靠前的特征图进行增加维度(通道数较小),对靠后的特征图进行减维。
匹配头Matching head
匹配头采用DAN,使用目标embedding来评估所有两帧间的检测对相似度得分。在每帧中允许最大 N m a x N_{max} Nmax个目标,构建张量 E t , t − n ∈ R N max × N max × 2 e E_{t, t-n} \in \mathbb{R}^{N_{\max } \times N_{\max } \times 2 e} Et,t−n∈RNmax×Nmax×2e,如此,每个 t t t帧目标的特征embedding就会和所有 t − n t-n t−n帧的目标的embedding沿着深度维度进行concat,反之亦然。
为了构建固定尺寸的张量
E
t
,
t
−
n
E_{t, t-n}
Et,t−n,对余下的张量直接padding为0处理,将
E
t
,
t
−
n
E_{t, t-n}
Et,t−n喂入
(4-6)个1维卷积组成的匹配头,获得相似度矩阵输出:
A
t
,
t
−
n
∈
R
N
m
a
x
×
N
m
a
x
A_{t,t-n}\in \mathcal R^{N_{max}×N_{max}}
At,t−n∈RNmax×Nmax。
由于通过embedding学习的相似度,所以无法保证向后匹配(t—> t-n)和向前匹配(t-n—> t)获得的得分是相同的,所以会独立计算两个方向的相似度得分,表示为‘bwd’和‘fwd’。
为了保证有些检测无法完成关联,会在 A t , t − n A_{t,t-n} At,t−n中加入一列固定值 c c c,对 A ^ b w d \hat A^{bwd} A^bwd的每一行使用softmax,获得最终的包括无法匹配的得分的亲密度得分。 c c c不敏感,网络会自动学习将能匹配的亲密度输出高于 c c c。
对于每个 A ^ b w d [ i , j ] \hat A^{bwd}[i,j] A^bwd[i,j]代表关联 b i t b^t_i bit和 b i t − n b^{t-n}_i bit−n的可能性, A ^ b w d [ i , N m a x + 1 ] \hat A^{bwd}[i,N_{max}+1] A^bwd[i,Nmax+1]代表 b i t b^t_i bit是 t − n t-n t−n中未出现,即新目标的概率。相似的使用转置矩阵 A t , t − n T A^T_{t,t-n} At,t−nT构造前项亲密度关系矩阵,同样增加一列固定值 c c c,对每行进行softmax,获得 A ^ f w d \hat A^{fwd} A^fwd。
推理的时候, b i t b^t_i bit和 b j t − n b^{t-n}_j bjt−n之间匹配的相似度得分采用 A ^ b w d [ i , j ] \hat A^{bwd}[i,j] A^bwd[i,j]和 A ^ f w d [ j , i ] \hat A^{fwd}[j,i] A^fwd[j,i]的均值。
在线数据关联Online Data Association
和其他模型处理暂亡轨迹相同,会对暂亡的轨迹保存 N a g e N_{age} Nage帧,若在此期间未匹配,则丢弃释放内存。
定义一个轨迹 T T T作为从帧 t − δ t − δ t−δ到 t − 1 t-1 t−1之间待关联检测的集合,可能对每一帧都未检测, T T T大小为 ∣ T ∣ |T| ∣T∣,表示它所包含的bbox及其相关联的embedding的数量。定义第 i i i个检测 b i t b_i^t bit和该待关联轨迹集合 T j T_j Tj之间的距离为(所有轨迹(过去帧检测)和该检测相关的正匹配和逆匹配概率总平均):
d ( b i t , T j ) = 1 ∣ T j ∣ ∑ b k t − n ∈ T j A ^ t , t − n f w d [ k , i ] + A ^ t , t − n b w d [ i , k ] 2 (1) d\left(b_{i}^{t}, \mathrm{~T}_{j}\right)=\frac{1}{\left|\mathrm{~T}_{j}\right|} \sum_{b_{k}^{t-n} \in \mathrm{T}_{j}} \frac{\hat{A}_{t, t-n}^{f w d}[k, i]+\hat{A}_{t, t-n}^{b w d}[i, k]}{2} \tag{1} d(bit, Tj)=∣ Tj∣1bkt−n∈Tj∑2A^t,t−nfwd[k,i]+A^t,t−nbwd[i,k](1)
追踪问题化为二分图任务匹配任务。用
K
=
{
T
j
}
K = \{T_j\}
K={Tj}表示当前轨迹的集合,使用Eq.1获得所有成对匹配距离矩阵 (双向相似度均值),大小为
∣
K
∣
×
N
t
|K|×N_t
∣K∣×Nt,加上一个大小为
∣
K
∣
×
∣
K
∣
|K|×|K|
∣K∣×∣K∣的轨迹无检测匹配矩阵
X
X
X来构建检测追踪匹配相似度矩阵
D
∈
R
∣
K
∣
×
(
N
t
+
∣
K
∣
)
D\in R^{|K|×(N_t+|K|)}
D∈R∣K∣×(Nt+∣K∣)。
X
X
X的对角线元素由轨迹中检测的未匹配得分的均值计算得来,非对角线元素为
−
∞
-\infin
−∞。D定义如下:
D
=
[
S
∣
X
]
(2)
D=[S \mid X]\tag{2}
D=[S∣X](2)
S
[
j
,
i
]
=
d
(
b
i
t
,
T
j
)
(3)
S[j, i]=d\left(b_{i}^{t}, \mathrm{~T}_{j}\right)\tag{3}
S[j,i]=d(bit, Tj)(3)
X
[
j
,
k
]
=
{
1
∣
T
j
∣
∑
b
k
t
−
n
∈
T
j
A
^
t
,
t
−
n
f
w
d
[
k
,
N
max
+
1
]
j
=
k
−
∞
,
j
≠
k
(4)
X[j, k]=\left\{\begin{array}{ll} \frac{1}{\left|\mathrm{~T}_{j}\right|} \sum_{b_{k}^{t-n} \in \mathrm{T}_{j}} \hat{A}_{t, t-n}^{f w d}\left[k, N_{\max }+1\right] & j=k \\ -\infty, & j \neq k \end{array}\right.\tag{4}
X[j,k]={∣ Tj∣1∑bkt−n∈TjA^t,t−nfwd[k,Nmax+1]−∞,j=kj=k(4)
第
j
(
k
)
j(k)
j(k)个检测未在当前帧出现的概率。
最终,通过HA算法来解决 D D D定义的二分图问题得到分配。如果关联度大于阈值 γ 1 \gamma_1 γ1,加入关联。未匹配的检测会初始化为一个新的track。 N a g e N_{age} Nage未匹配的tracks丢弃。
运动预测Motion Forecasting
运动模型经常使用卡尔曼滤波或者LSTM模型,DEFT使用LSTM来进行运动预测。给定模型
∆
T
p
a
s
t
∆T_{past}
∆Tpast过去帧的信息,预测每个track未来
∆
T
p
r
e
d
∆T_{pred}
∆Tpred帧的位置。用来限制关联操作:
如果当前帧的检测和运动模型预测的位置太远,那么直接将Eq.1中得到的亲密度得分置为
−
∞
-\infin
−∞。下面会有消融实验证明限制的有效性。
训练Training
如图1,输入图片对,图片对之间可以空缺 1 ≤ n ≤ n g a p 1≤n≤n_{gap} 1≤n≤ngap帧,用来增强模型对于暂时遮挡和消失检测的鲁棒性。
对于每个训练对,创建两个GT匹配矩阵: M f w d M^{fwd} Mfwd和 M b w d M^{bwd} Mbwd代表向前和向后关联,GT匹配矩阵的的每个实体属于[0,1],维度为 N m a x × ( N m a x + 1 ) N_{max}×(N_{max}+1) Nmax×(Nmax+1),允许未匹配。值为1,解码为对应匹配,为0则未匹配。
训练DEFT的匹配使用损失函数 L l o s s L_{loss} Lloss, L l o s s L_{loss} Lloss定义为 L l o s s f w d L_{loss}^{fwd} Llossfwd和 L l o s s b w d L_{loss}^{bwd} Llossbwd损失的均值。 L l o s s b w d L_{loss}^{bwd} Llossbwd代表帧 t t t向帧 t − n t-n t−n中bbox匹配的损失, L l o s s f w d L_{loss}^{fwd} Llossfwd反之。
损失定义如下,
∗
*
∗代表
f
w
d
fwd
fwd或者
b
w
d
bwd
bwd:
L
match
∗
=
∑
i
=
1
N
max
∑
j
=
1
N
max
+
1
M
∗
[
i
,
j
]
log
(
A
^
∗
[
i
,
j
]
)
(5)
\mathcal{L}_{\text {match }}^{*}=\sum_{i=1}^{N_{\max }} \sum_{j=1}^{N_{\max }+1} M^{*}[i, j] \log \left(\hat{A}^{*}[i, j]\right)\tag{5}
Lmatch ∗=i=1∑Nmaxj=1∑Nmax+1M∗[i,j]log(A^∗[i,j])(5)
L
match
=
L
match
f
w
d
+
L
match
b
w
d
2
(
N
t
+
N
t
−
n
)
,
(6)
\mathcal{L}_{\text {match }}=\frac{\mathcal{L}_{\text {match }}^{f w d}+\mathcal{L}_{\text {match }}^{b w d}}{2\left(N_{t}+N_{t-n}\right)},\tag{6}
Lmatch =2(Nt+Nt−n)Lmatch fwd+Lmatch bwd,(6)
为了更好的联合优化这个双任务网络,定义总体平衡损失如下:
L
joint
=
1
e
λ
1
(
L
detect
t
+
L
detect
t
−
n
2
)
+
1
e
λ
2
L
match
+
λ
1
+
λ
2
(7)
\mathcal{L}_{\text {joint }}=\frac{1}{e^{\lambda_{1}}}\left(\frac{\mathcal{L}_{\text {detect }}^{t}+\mathcal{L}_{\text {detect }}^{t-n}}{2}\right)+\frac{1}{e^{\lambda_{2}}} \mathcal{L}_{\text {match }}+\lambda_{1}+\lambda_{2}\tag{7}
Ljoint =eλ11(2Ldetect t+Ldetect t−n)+eλ21Lmatch +λ1+λ2(7)
L
d
e
t
e
c
t
t
\mathcal L^t_{detect}
Ldetectt代表
t
t
t帧检测损失,两个
λ
\lambda
λ是平衡权重。
实验