MOTDT翻译
MOTDT
《Real-time multiple people tracking with deeply learned candidate selection and person re-identification》
论文地址:https://arxiv.org/abs/1809.04427
源码地址:https://github.com/longcw/MOTDT
摘要
在多目标追踪领域,一类主流的方案是“先检测再追踪”(Tracking-by-detection)。这种方法把连续视频帧里的检测到的目标做关联,生成目标的轨迹。但是,同类别目标的遮挡和目标检测的不准确性给目标追踪带来了巨大的挑战。
在本文中作者提出:
- 通过从检测和跟踪的输出中收集候选项来解决这个不可靠的检测问题,让检测和跟踪生成的信息能够在各类场景中达到互补的作用。(因为高置性度的检测结果能够防止因长期跟踪导致的跟踪漂移;同时轨迹预测能够处理因遮挡导致的噪声,所以作者才提出score分数函数)
- 为了实时应用大量候选项的最优选择。提出一种新的基于全卷积神经网络的score评分函数,利用这个函数能够共享整张图片的计算。
- 和deepsort类似,本文也采用了利用大量人员重识别数据集进行训练,得到相应的人员重识别的外观表示,提高追踪器的识别能力。(多目标跟踪的目的是估计特定类别中物体的轨迹。在这里, 作者利用人的重新识别来解决人的跟踪问题)
一.介绍
常用的跟踪检测方法是在每一帧上使用检测器,并在帧间进行关联检测以生成目标轨迹。在这种跟踪框架中,无论是同类别内遮挡还是不可靠检测都是巨大的挑战。同类别内的拥挤和物体的相似外表都会导致数据关联的模糊性。利用包括运动、形状和物体外观等多种线索,都融合在一起以缓解这一问题。另一方面,检测结果并不总是可靠的。在拥挤的场景中,姿态的变化和遮挡通常会导致检测失败,如误报、漏检和不准确的边界。有研究提出批量处理不可靠检测,这些方法通过引入未来帧的信息来解决检测噪声的问题,即利用整个视频帧或时间窗口的检测结果,通过求解全局优化问题,将检测结果与轨迹连接起来。批处理模式下的跟踪是没有因果关系的,不适合对时间要求严格的应用程序(Offline模式)。与这些论文相比,我们专注于在线的多人跟踪问题,只使用当前和过去的帧(Online模式)。
为了在线模式下处理不可靠的检测,我们的跟踪框架在每一帧的检测和轨迹输出中优化选择候选对象。提出将跟踪器和目标检测器作为两个独立的身份,并保持它们的结果作为候选。他们根据手工制作的特征来选择候选特征,例如颜色直方图、光流和运动特征。产生冗余候选的直觉是,检测和轨迹可以在不同的场景中相互补充。一方面,跟踪器的可靠预测可以用于检测缺失或边界不准确情况下的短期关联;另一方面,有把握的检测结果是必不可少的,防止轨道长期漂移到背景上,如何以统一的方式对检测和轨迹的输出进行评分,仍然是一个悬而未决的问题。
在本文中,我们充分利用深度神经网络来解决不可靠的检测和类内遮挡问题。
贡献:
- 利用深层神经网络来解决不可靠的检测和类别内的遮挡问题。
- 将检测和跟踪结果结合起来, 并基于深层神经网络选择最佳候选项,来处理在线跟踪中的不可靠检测问题
- 提出了一种分层数据关联策略, 该策略利用空间信息和深度学习的行人重新识别 (reid) 特征。
二.相关工作
在所谓的超检测过程中,它们从多个检测器收集输出。将多个检测器的结果结合在一起可以提高跟踪性能,但对实时应用效果不佳。相比之下,我们的跟踪框架只需要一个检测器,并从现有的轨迹生成候选。使用二值分类器和单目标跟踪器进行在线多目标跟踪,共享分类的特征图,但仍然有很高的计算复杂度。批处理方法将跟踪问题表述为一个全局优化问题,这些方法利用来自未来帧的信息来处理噪声检测和减少数据关联中的歧义。我们的框架在在线模式下利用了深入学习的ReID特性,提高了在处理类内遮挡问题时的识别能力。
三.方法的提出
3.1 框架概述
在这项工作中,我们扩展了传统的逐检测跟踪,从检测和轨迹的输出中收集候选对象。我们的框架由两个顺序的任务组成,即候选人选择和数据关联。
流程:首先使用统一的评分函数来衡量所有的候选项,融合了一个有鉴别力训练的对象分类器(Real-Time Object Classification)和一个设计良好的跟踪器置信度(Tracklet Confidence ), 以制定评分函数。然后非最大抑制 (nms) 随后与估计的分数一起执行。在获得没有冗余的候选项后, 我们使用外观表示和空间信息, 将现有轨道与所选候选项分层关联。我们的外观表示是从3.4节中所述的人员重新识别中学到的。 第3.5节详细介绍了层次数据关联。
3.2 实时目标分类
将检测和轨迹的输出相结合会导致候选量过多。我们的分类器使用基于区域的==全卷积神经网络(R-FCN)==对整个图像共享大部分计算。因此,它比对图像补丁进行分类要高效得多,这些补丁是从大量重叠的候选区域中裁剪出来的。
给定一个图像帧,将使用具有编码器-解码器体系结构的全卷积神经网络来预测整个图像的得分图。编码器部分是实现实时性能的轻量级卷积骨干,并且我们为解码器部分引入了上采样,以提高输出得分图的空间分辨率,以用于以后的分类。每个要分类的候选人都定义为感兴趣的区域(RoI)
x
=
(
x
0
,
y
0
,
w
,
h
)
x=(x_0,y_0,w,h)
x=(x0,y0,w,h),其中
(
x
0
,
y
0
)
(x_0,y_0)
(x0,y0)代表左上角点,w, h为区域的宽度和高度。为了提高计算效率,我们期望每个RoI的分类概率直接由共享的得分图来投票。一个简单的投票方法是构造图像上所有点的前景概率,然后计算RoI内点的平均概率。但是,这种简单的策略会丢失对象的空间信息。 例如,即使RoI仅覆盖对象的一部分,仍然可以获得较高的置信度得分。为了将空间信息显式编码到得分图中,我们采用了位置敏感的RoI池化层,并根据k2个位置敏感得分图z估计了分类概率。特别地,我们用一个规则的网格将RoI分成
k
×
k
k×k
k×k个
b
i
n
s
bins
bins。每个
b
i
n
s
bins
bins都有相同的大小
⌊
w
k
×
h
k
⌋
\lfloor \frac wk \times \frac hk \rfloor
⌊kw×kh⌋,代表了目标的具体空间位置。我们从k2个的得分图中抽取
k
×
k
k×k
k×k个
b
i
n
s
bins
bins的响应。每个分数图只对应一个
b
i
n
bin
bin。一个 RoI
x
x
x的最终分类概率公式为:
p
(
y
∣
z
,
x
)
=
σ
(
1
w
h
∑
i
=
1
k
2
∑
(
x
,
y
)
∈
b
i
n
i
z
i
(
x
,
y
)
)
(
1
)
p(y|z,x)=\sigma(\frac{1}{wh}\sum_{i=1}^{k^{2}}{\sum_{(x,y)\in bin_i}z_i(x,y)}) \qquad (1)
p(y∣z,x)=σ(wh1i=1∑k2(x,y)∈bini∑zi(x,y))(1)
其中,
σ
(
x
)
=
1
1
+
e
−
x
\sigma(x)=\frac{1}{1+e^{-x}}
σ(x)=1+e−x1是一个
s
i
g
m
o
i
d
sigmoid
sigmoid函数,
z
i
z_i
zi表示第
i
i
i个得分图。
在训练过程中,我们在真值边界框周围随机抽取roi作为正例,从背景中抽取相同数量的roi作为负例。通过对网络进行端到端的训练,译码器顶部的输出,即k2得分图,学会对目标的特定空间位置做出反应。例如,如果 k = 3 k = 3 k=3,我们有9个得分图分别响应目标的左上角,顶部居中,右上角,…,右下角。通过这种方式,在不使用可学习参数的情况下,RoI池化层对空间位置敏感,且具有较强的识别能力。请注意,所提出的神经网络只用于候选分类,而不是用于边界框回归。
3.3 Tracklet置信度和评分功能
在给定新帧的情况下,利用卡尔曼滤波估计每条轨迹的新位置。这些预测被用于处理由于物体视觉属性的变化和拥挤场景中的遮挡而导致的检测失败。但它们不适合长期跟踪。如果长时间不进行检测更新,卡尔曼滤波的精度会降低。Tracklet置信度用于测量时域信息的滤波精度。
通过从连续帧中候选者进行时间关联来生成小轨迹。 我们可以将一条轨迹分成一组小轨轨迹,因为一条轨迹在其生命周期内会被中断和检索多次。 每次从丢失状态中检索轨迹时,都会重新初始化卡尔曼滤波器。 因此,仅使用最后一个轨迹的信息来制定轨迹的置信度。这里我们定义
L
d
e
t
L_{det}
Ldet作为检测结果关联轨迹的数量,
L
t
r
k
L_{trk}
Ltrk作为最后检测被关联之后轨迹预测的数目。轨迹置信度被定义为:
s
t
r
k
=
m
a
x
(
1
−
l
o
g
(
1
+
α
⋅
L
t
r
k
)
,
0
)
⋅
1
(
L
d
e
t
≥
2
)
(
2
)
s_{trk}=max(1-log(1+\alpha \cdot L_{trk}),0)\cdot {1}(L_{det}\geq2)\qquad(2)
strk=max(1−log(1+α⋅Ltrk),0)⋅1(Ldet≥2)(2)
其中
1
(
⋅
)
\large 1(\cdot)
1(⋅)是指示函数:如果输入为
T
r
u
e
True
True则等于1,否则等于0。
我们要求
L
d
e
t
≥
2
L_{det}\geq 2
Ldet≥2,在使用轨迹作为候选之前,使用观测检测构建合理的运动模型。融合分类概率和轨迹置信度,形成候选
x
x
x的统一评分函数:
s
=
p
(
y
∣
z
,
x
)
⋅
(
1
(
x
∈
C
d
e
t
)
)
+
s
t
r
k
(
1
(
x
∈
C
t
r
k
)
)
(
3
)
s=p(y|z,x)\cdot (1(x\in C_{det}))+s_{trk}(1(x\in C_{trk}))\qquad(3)
s=p(y∣z,x)⋅(1(x∈Cdet))+strk(1(x∈Ctrk))(3)
这里我们使用
C
d
e
t
C_{det}
Cdet表示来自检测的候选,
C
t
r
k
C_{trk}
Ctrk来自轨迹的候选,
s
t
r
k
s_{trk}
strk∈[0,1]来惩罚来自不确定轨迹的候选。最后,使用非最大抑制基于统一分数选择数据关联的候选。我们通过阈值
τ
n
m
s
\tau_{nms}
τnms定义最大
I
o
U
IoU
IoU对于最小分数也有阈值
τ
s
\tau_s
τs。
3.4 具有ReID特征的外观表示
候选对象之间的相似度函数是数据关联的关键组成部分。我们认为,通过数据驱动方法深度学习的对目标外观,在相似度估计任务上优于传统手工制作的特征。为了学习目标的外观和相似度函数,我们使用深度神经网络从RGB图像中提取特征向量,并利用得到的特征之间的距离来制定相似度。我们利用上述中提出的网络架构,并在几个大规模行人重识别数据集的组合上训练网络。该网络 H r e i d H_{reid} Hreid由GoogLeNet的卷积主干和部分对齐的全连接(FC)层的K个分支组成。
给定一个人的RGB图像
I
I
I,其外观表示形式为
f
=
H
r
e
i
d
(
I
)
f=H_{reid}(I)
f=Hreid(I)。我们直接使用特征向量之间的欧氏距离来测量两幅图像
I
i
和
I
j
I_i和I_j
Ii和Ij的距离
d
i
j
d_{ij}
dij。在训练过程中,训练数据集中的身份图像形成为一组三元组
{
⟨
I
i
,
I
j
,
I
k
⟩
}
\{\langle I_i,I_j,I_k\rangle\}
{⟨Ii,Ij,Ik⟩},其中
⟨
I
i
,
I
j
⟩
\lang I_i,I_j \rang
⟨Ii,Ij⟩是来自同一个人的正对,
⟨
I
i
,
I
k
⟩
\lang I_i,I_k \rang
⟨Ii,Ik⟩是来自两个不同的人的负对。给定N个三元组,最小化的损失函数公式如下:
l
t
r
i
p
l
e
t
=
1
N
∑
⟨
I
i
,
I
j
,
I
k
⟩
∈
T
m
a
x
(
d
i
j
−
d
i
k
+
m
,
0
)
(
4
)
l_{triplet}=\frac{1}{N}\sum_{\lang I_i,I_j,I_k \rang \in T} max(d_{ij}-d_{ik}+m,0)\qquad(4)
ltriplet=N1⟨Ii,Ij,Ik⟩∈T∑max(dij−dik+m,0)(4)
其中m> 0是预定义的余量。 我们忽略易于处理的三元组,即
d
i
k
−
d
i
j
>
m
d_{ik}-d_{ij}>m
dik−dij>m,以增强学习的特征表示的判别能力。
3.5 分层数据关联
利用轨迹的预测来处理在拥挤的场景中发生的检测丢失。受类别内遮挡的影响,这些预测可能与其他目标有关。为了避免将其他不需要的目标和背景用于外观表示,我们利用不同的特征将轨迹与不同的候选进行层次关联。特别是,我们首先将数据关联应用于来自检测的候选对象,使用具有最大距离阈值 τ d \tau_d τd的外观表示。然后,我们基于候选和轨迹之间的IoU,用阈值 τ i o u \tau_{iou} τiou将剩余的候选与未关联的轨迹相关联。我们只在轨迹与检测相关联时更新轨迹的外观表示。通过保存相关检测的ReID特征来进行更新。最后,基于剩余的检测结果初始化新的轨迹。通过分层数据关联,我们只需要每帧从检测中提取一次ReID特征作为候选。将这一点与之前的高效评分功能和tracklet置信度相结合,我们的框架可以以实时速度运行。
步骤: