论文地址:链接
代码地址:暂无
一、介绍
由于图像的模糊性,许多好性能的追踪器往往需要利用多帧作为依据实现数据关联,从而决定最终轨迹,但是这些操作由于计算量往往会导致他无法实时。事实上,实时对于online方法的实际应用是很重要的。
简单直接利用两帧外貌匹配进行关联的实时方法,并没有多好的效果。有些方法就利用多帧建立缓存的策略提高精度。但是,当匹配当前检测和轨迹时,大多数方法只进行单独考虑,即一时间是考虑一条轨迹的拓展,并没有联合考虑整体轨迹。当一条检测和多条轨迹相符合时,这样就很难处理那些歧义的轨迹。例如多个黑外套的男人走在一起,这种情况下,要么需要利用更细微的特征来识别目标,要么需要降低匹配的可能性来适应这种不确定性,这样有反过来要求匹配方法也要具有处理外貌特征的能力,以轨迹间的区分,但是事实上大多数方法是没有的。
该方法引入一种新颖的外貌建模,当匹配检测时会充分考虑所有的追踪目标。假设每个轨迹对其过去的外貌都有在线的存储,提出一个多追踪池化模型,用于从其他轨迹存储中获得最大的池化版本。
追踪框架还整合了其余四个工作。首先,利用高效存储的Bilinear LSTM框架作为匹配方法的基础;第二,使用截断方向传播的训练策略处理长轨迹;第三,加入一个运动模型拓展轨迹,用于补充消失的检测;最后,训练一个边界框坐标修正器来修正边界框坐标,从而帮助轨迹拓展。
主要贡献:
- 新颖的多轨道池化模型帮助轨迹分类考虑其余的负样本轨迹。
- 提出了相应的训练策略,利用批处理内的轨迹独立性训练模型,直接使用原始的轨迹进行长序列训练。
二、 相关工作
现在主要有两种整合正负样本信息的方法,一种是利用微调的预训练的CNN网络整合这些信息;还有一种是利用关系网络或者图神经网络去整合相同帧或者不同帧的其他轨迹的特征。该论文提出的方法,类似于第一种,但无需微调,可以进行基于场景信息进行自适应预测。
作者利用Bilinear LSTM结构去提升模型的匹配方法,提出了一个新颖的多目标池化方法,去利用轨迹间的外貌信息去提升关联效果,同时考虑了所有轨迹的特征,通过整合这些特征从而获得更加具有辨别性的特征。
三、Track Proposal Classifier
Track Proposal通过使用当前帧的检测来拓展已存在的轨迹构建的。定义 T l ( t ) T_l(t) Tl(t)是 t t t时刻的第 l l l个轨迹。 s ( l ) s(l) s(l)表示该轨迹的开始帧, d t l d^l_t dtl表示该轨迹在 t t t时刻选择的用于拓展轨迹的检测。则在时刻 t t t该轨迹可以表示为 T l ( t ) = { d s ( l ) l , d s ( l ) + 1 l , … , d t − 1 l , d t l } T_{l}(t)=\left\{d_{s(l)}^{l}, d_{s(l)+1}^{l}, \ldots, d_{t-1}^{l}, d_{t}^{l}\right\} Tl(t)={ds(l)l,ds(l)+1l,…,dt−1l,dtl}。
一个网络用于训练输出条件概率:
f
(
d
t
,
T
l
(
t
−
1
)
;
θ
)
=
p
(
d
t
∈
T
l
(
t
)
∣
T
l
(
t
−
1
)
)
(1)
f\left(d_{t}, T_{l}(t-1) ; \theta\right)=p\left(d_{t} \in T_{l}(t) \mid T_{l}(t-1)\right) \tag{1}
f(dt,Tl(t−1);θ)=p(dt∈Tl(t)∣Tl(t−1))(1)
其中 f ( ⋅ ) f(·) f(⋅)和 θ \theta θ表示一个神经网络和他的可学习参数,输入为检测和轨迹对 ( d t , T l ( t − 1 ) ) (d_t,T_l(t-1)) (dt,Tl(t−1))。
3.1 Bilinear LSTM
Vanilla LSTM定义如下:
f
t
=
σ
(
W
f
[
h
t
−
1
;
x
t
]
)
,
i
t
=
σ
(
W
i
[
h
t
−
1
;
x
t
]
)
g
t
=
σ
(
W
g
[
h
t
−
1
;
x
t
]
)
,
o
t
=
tanh
(
W
o
[
h
t
−
1
;
x
t
]
)
c
t
=
f
t
∘
c
t
−
1
+
i
t
∘
g
t
,
h
t
=
o
t
∘
tanh
(
c
t
)
(2)
\begin{aligned} \mathbf{f}_{t} &=\sigma\left(\mathbf{W}_{f}\left[\mathbf{h}_{t-1} ; \mathbf{x}_{t}\right]\right), \quad \mathbf{i}_{t}=\sigma\left(\mathbf{W}_{i}\left[\mathbf{h}_{t-1} ; \mathbf{x}_{t}\right]\right) \\ \mathbf{g}_{t} &=\sigma\left(\mathbf{W}_{g}\left[\mathbf{h}_{t-1} ; \mathbf{x}_{t}\right]\right), \quad \mathbf{o}_{t}=\tanh \left(\mathbf{W}_{o}\left[\mathbf{h}_{t-1} ; \mathbf{x}_{t}\right]\right) \\& \mathbf{c}_{t}=\mathbf{f}_{t} \circ \mathbf{c}_{t-1}+\mathbf{i}_{t} \circ \mathbf{g}_{t},\\ &\mathbf{h}_{t}=\mathbf{o}_{t} \circ \tanh \left(\mathbf{c}_{t}\right) \tag{2} \end{aligned}
ftgt=σ(Wf[ht−1;xt]),it=σ(Wi[ht−1;xt])=σ(Wg[ht−1;xt]),ot=tanh(Wo[ht−1;xt])ct=ft∘ct−1+it∘gt,ht=ot∘tanh(ct)(2)
其中[;]代表两列向量的concat操作。在序列标注问题中,
h
t
\mathbf h_t
ht代表 序列的存储信息,喂入全连接层获得输出。输入
x
t
\mathbf x_t
xt和LSTM的记忆存储
h
t
−
1
\mathbf h_{t-1}
ht−1通过以上等式操作进行整合。
但是这个公式有两个问题,一个是匹配操作容易被乘法而非加法表示;第二个是相同的LSTM记忆向量很难存储和分辨多个不同的外貌,但是轨迹在不同帧提取出不同的外貌特征是很常见的。
Bilinear LSTM通过引入一个基于乘法交互的记忆表示解决了以上问题:
h
t
−
1
=
[
h
t
−
1
,
1
⊤
,
h
t
−
1
,
2
⊤
,
…
,
h
t
−
1
,
r
⊤
]
⊤
H
t
−
1
reshaped
=
[
h
t
−
1
,
1
,
h
t
−
1
,
2
,
…
,
h
t
−
1
,
r
]
⊤
m
t
=
g
(
H
t
−
1
reshaped
x
t
)
(3)
\begin{aligned} \mathbf{h}_{t-1} &=\left[\mathbf{h}_{t-1,1}^{\top}, \mathbf{h}_{t-1,2}^{\top}, \ldots, \mathbf{h}_{t-1, r}^{\top}\right]^{\top} \\ \mathbf{H}_{t-1}^{\text {reshaped }} &=\left[\mathbf{h}_{t-1,1}, \mathbf{h}_{t-1,2}, \ldots, \mathbf{h}_{t-1, r}\right]^{\top} \\ \mathbf{m}_{t} &=g\left(\mathbf{H}_{t-1}^{\text {reshaped }} \mathbf{x}_{t}\right) \end{aligned} \tag{3}
ht−1Ht−1reshaped mt=[ht−1,1⊤,ht−1,2⊤,…,ht−1,r⊤]⊤=[ht−1,1,ht−1,2,…,ht−1,r]⊤=g(Ht−1reshaped xt)(3)
g
(
⋅
)
g(·)
g(⋅) 代表非线性激活函数,
h
t
−
1
\mathbf h_{t-1}
ht−1在和
x
t
\mathbf x_t
xt相乘之前会经过reshape变为
H
t
−
1
reshaped
\mathbf{H}_{t-1}^{\text {reshaped }}
Ht−1reshaped 。多个记忆向量可以与检测到的特征通过内积进行匹配。然后新的记忆存储
m
t
\mathbf{m}_{t}
mt用作输入到最后层产生输出,而非使用
h
t
\mathbf h_{t}
ht,但是LSTM的记忆更新过程相较于(2)是没有改变的。
3.2 应用于MOT
每条轨迹 T l ( t − 1 ) T_l(t −1) Tl(t−1)有自己的追踪过程形成的LSTM记忆存储 h t − 1 l \mathbf h^l_{t−1} ht−1l。每一帧检测结果会通过一个CNN获得相应的 x t \mathbf x_t xt,用于和之后的所有轨迹的 h t − 1 l \mathbf h^l_{t−1} ht−1l进行比较。当检测和轨迹之间获得相应的得分后,通过贪婪匹配或者MHT方法实现分配。最终分配的边界框的特征用作公式(2)的 x t l \mathbf x^l_t xtl来更新轨迹的记忆存储,更新后的记忆存储 h t − 1 l \mathbf h^l_{t−1} ht−1l会被保存用于下一帧重复操作。所有轨迹共享一个LSTM网络,他们的外貌特征会在记忆中动态更新。
3.3 多追踪池化模型
过去的工作存在只考虑相同轨迹的过去外貌特征限制,即只有匹配成功的
x
t
l
\mathbf x^l_t
xtl作为输入来更新t时刻的记忆。事实上,追踪过程中,不同的目标存在相似的外貌是很正常的,这时候通过简单的外貌特征很难区分目标。
这里就提出了一个通过考虑所有追踪目标来拓展轨迹的方法。例如图2,考虑这些目标可以提高追踪每个目标的区分度。为了同时考虑其他的轨迹,修改公式(1):
f
(
d
t
,
T
1
:
M
(
t
−
1
)
;
θ
)
=
p
(
d
t
∈
T
l
(
t
)
∣
T
1
:
M
(
t
−
1
)
)
(4)
f\left(d_{t}, T_{1: M}(t-1) ; \theta\right)=p\left(d_{t} \in T_{l}(t) \mid T_{1: M}(t-1)\right) \tag{4}
f(dt,T1:M(t−1);θ)=p(dt∈Tl(t)∣T1:M(t−1))(4)
其中 T 1 : M ( t − 1 ) = { T 1 ( t − 1 ) , T 2 ( t − 1 ) , … , T M ( t − 1 ) } T_{1: M}(t-1) = \{T_1(t-1),T_2(t-1),\dots,T_M(t-1)\} T1:M(t−1)={T1(t−1),T2(t−1),…,TM(t−1)}代表过去帧中已存的轨迹。使用 M M M表示过去 t − 1 t-1 t−1帧中存在的轨迹数, N N N代表当前帧 t t t的检测目标数。
Bilinear LSTM中,每个过去帧的轨迹关联一个独一无二的记忆
h
t
−
1
l
\mathbf h^l_{t−1}
ht−1l。当获得新的检测
x
t
\mathbf x_t
xt时候,利用公式(3)计算M个已存在的轨迹和N个新检测之间的
m
t
\mathbf{m}_{t}
mt。
m
t
+
\mathbf m^+_t
mt+代表使用目标轨迹计算得到的
h
t
−
1
l
\mathbf h^l_{t−1}
ht−1l和
x
t
\mathbf x_t
xt计算出的匹配上的结果。其余
M
−
1
M-1
M−1个轨迹,使用
M
t
−
\mathbf M^-_t
Mt−表示一个矩阵,其中每个元素表示该检测和非目标轨迹计算得出的
m
t
\mathbf{m}_{t}
mt,即负样本。
M
t
−
=
[
m
t
,
1
−
,
m
t
,
2
−
,
…
,
m
t
,
M
−
1
−
]
⊤
(5)
\mathbf{M}_{t}^{-}=\left[\mathbf{m}_{t, 1}^{-}, \mathbf{m}_{t, 2}^{-}, \ldots, \mathbf{m}_{t, M-1}^{-}\right]^{\top} \tag{5}
Mt−=[mt,1−,mt,2−,…,mt,M−1−]⊤(5)
m t , i − \mathbf m^-_{t,i} mt,i−表示第i个非目标轨迹和该检测计算的结果。
由于负样本数目不定,所以这里提出了一个最大池化这
M
−
1
M-1
M−1个负样本
m
t
\mathbf m_t
mt来获得一个固定表示的
m
t
−
\mathbf m^-_t
mt−:
m
t
−
(
j
)
=
max
i
M
t
−
(
i
,
j
)
(6)
\mathbf{m}_{t}^{-}(j)=\max _{i} \mathbf{M}_{t}^{-}(i, j) \tag{6}
mt−(j)=imaxMt−(i,j)(6)
m t − ( j ) \mathbf m^-_t(j) mt−(j)表示 m t − \mathbf m^-_t mt−第 j j j个元素, M t − ( i , j ) \mathbf M^-_t(i,j) Mt−(i,j)表示第 i i i行第 j j j列的元素,所以 m t − \mathbf m^-_t mt−中第 j j j个元素就是 M t − \mathbf M^-_t Mt−的第 j j j列的最大值。对于 M t − \mathbf M^-_t Mt−进行最大池化,可以让我们为目标检测获得非目标轨迹产生的最大相关反应。
通过concat最终获得最后的记忆表示:
m
t
all
=
[
(
m
t
+
)
;
(
m
t
−
)
]
(7)
\mathbf{m}_{t}^{\text {all }}=\left[\left(\mathbf{m}_{t}^{+}\right) ;\left(\mathbf{m}_{t}^{-}\right)\right] \tag{7}
mtall =[(mt+);(mt−)](7)
通过一个全连接层,获得二值输出,决定是否新的检测属于该目标检测( m t + \mathbf m^+_t mt+)。
表1表示所提出的网络结构。
3.4 训练损失
对于每个mini_batch,MN个轨迹proposal,交叉熵损失如下:
L
(
t
)
=
1
M
N
∑
i
=
1
M
∑
j
=
1
N
α
i
j
(
t
)
L
i
j
(
t
)
(8)
L(t)=\frac{1}{M N} \sum_{i=1}^{M} \sum_{j=1}^{N} \alpha_{i j}(t) L_{i j}(t) \tag{8}
L(t)=MN1i=1∑Mj=1∑Nαij(t)Lij(t)(8)
t
t
t代表视频帧数量,
α
i
j
\alpha_{i j}
αij代表权重因子。
对于每个训练样本
L
i
j
(
t
)
L_{ij}(t)
Lij(t),定义损失为:
L
i
j
(
t
)
=
{
−
log
p
(
d
j
t
∈
T
i
(
t
)
∣
T
1
:
M
(
t
−
1
)
)
,
if
y
i
j
(
t
)
=
1
−
log
(
1
−
p
(
d
j
t
∈
T
i
(
t
)
∣
T
1
:
M
(
t
−
1
)
)
)
,
otherwise
(9)
\begin{array}{l} L_{i j}(t)= \\ \quad\left\{\begin{array}{ll} -& \log p\left(d_{j t} \in T_{i}(t) \mid T_{1: M}(t-1)\right), \text { if } y_{i j}(t)=1 \\ -& \log \left(1-p\left(d_{j t} \in T_{i}(t) \mid T_{1: M}(t-1)\right)\right), \text { otherwise } \end{array}\right. \end{array} \tag{9}
Lij(t)={−−logp(djt∈Ti(t)∣T1:M(t−1)), if yij(t)=1log(1−p(djt∈Ti(t)∣T1:M(t−1))), otherwise (9)
d j t d_{jt} djt代表 t t t帧的第 j j j个检测, y i j ( t ) y_{ij}(t) yij(t)是代表 d j t d_{jt} djt是否属于轨迹 T i ( t ) T_i(t) Ti(t)的真实二分标签。
权重参数
α
i
j
\alpha_{i j}
αij强调训练类平衡,计算如下:
α
i
j
(
t
)
=
{
β
+
(
1
−
p
(
d
j
t
∈
T
i
(
t
)
∣
T
1
:
M
(
t
−
1
)
)
)
2
,
if
y
i
j
(
t
)
=
1
β
−
(
p
(
d
j
t
∈
T
i
(
t
)
∣
T
1
:
M
(
t
−
1
)
)
)
2
,
otherwise
(10)
\begin{array}{l} \alpha_{i j}(t)= \\ \quad\left\{\begin{array}{ll} \beta_{+}\left(1-p\left(d_{j t} \in T_{i}(t) \mid T_{1: M}(t-1)\right)\right)^{2}, & \text { if } y_{i j}(t)=1 \\ \beta_{-}\left(p\left(d_{j t} \in T_{i}(t) \mid T_{1: M}(t-1)\right)\right)^{2}, & \text { otherwise } \end{array}\right. \end{array} \tag{10}
αij(t)={β+(1−p(djt∈Ti(t)∣T1:M(t−1)))2,β−(p(djt∈Ti(t)∣T1:M(t−1)))2, if yij(t)=1 otherwise (10)
β + β_+ β+ 和 β − β_− β−代表类一致参数,以经验设置, β + = 4 β_+ = 4 β+=4, β − = 1 β_- =1 β−=1。
四、实验结果