Multi-Object Tracking with Multiple Cues and Switcher-Aware Classification 似乎是商汤投 CVPR2019的论文。文中提出了一个统一的多目标跟踪(MOT)框架,学习充分利用长期和短期线索来处理 MOT 场景中的复杂情况。在现实系统中,可以认为每个组件都是不可靠的,所以作者联合多个模块交叠使用。现行方案中,检测器用于发现,ReID 进行识别。ReID 抠图依赖于检测,但尚未由模块能有效纠正检测器的疏漏,使得系统在入口处存在瓶颈。为此,框架中引入了商汤之前独步天下的单目标跟踪器 SiamRPN,具备部分发现和识别功能,弥合其他组件产生的纰漏。此外,为了更好地关联,论文提出了切换器感知分类(switcher-aware classification,SAC),它考虑了潜在的身份切换引起者(切换器)。比较诡异的是 SOT 和 ReID 均为方形输入,与行人抠图比例相去甚远。
系统组成:
Detector、SOT、IQA(Image Quality Assessment)、ReID、SAC、MCF、Kalman Filter。
- Detector:MOT16中使用与 POI 相同的检测器,MOT17中使用更严格的 NMS 和质量过滤器调整结果。
- SOT:SiamRPN,修改了 anchor,使用私有行人数据(100min)调整网络,根据匹配情况计算跟踪质量。方形输入导致图像拉伸?
- IQA:Resnet-18,使用 MOT16中的7段视频训练。输入尺寸未提及。
- ReID:修改版 Inception-v4,使用私有行人数据(100min),输入为224x224。
- SAC:基于 XGBoost,使用 MOT16中的7段视频训练。
- MCF:最小费用流算法。
- Kalman Filter:平滑轨迹。
3. 所提框架
问题的形成
一个被跟踪目标的轨迹可以用
X
=
{
X
t
}
X = \{X_t\}
X={Xt} 表示,其中
X
t
=
[
X
t
x
,
X
t
y
,
X
t
w
,
X
t
h
]
X_t = [X_t^x, X_t^y, X_t^w, X_t^h]
Xt=[Xtx,Xty,Xtw,Xth],
t
t
t 是帧索引 ,
X
t
x
,
X
t
y
X_t^x, X_t^y
Xtx,Xty 是边界框的左上角坐标,
X
t
w
,
X
t
h
X_t^w, X_t^h
Xtw,Xth 是边界框的宽度和高度。
q
X
q_X
qX 是目标
X
X
X 的整体跟踪质量,
I
t
X
I_t^X
ItX 是目标
X
X
X 在帧
t
t
t 处的外观。
3.1 整体设计
该框架在线模式使用以下步骤:
- 步骤1. 最初,跟踪目标集 S \mathcal{S} S 设置为空, t = 1 t = 1 t=1。
- 步骤2. 在第 t t t 帧,对于目标 X X X,使用 SOT 子网络在下一帧 I t + 1 I_{t + 1} It+1 中搜索目标模板 E X E_X EX。SOT 子网络在 I t + 1 I_{t+1} It+1 中为模板输出最可能的位置 D t r a c k D_{track} Dtrack。
- 步骤3. 对于 I t + 1 I_{t+1} It+1 中的检测结果 D d e t D_{det} Ddet,ReID 子网络使用其对应的检测图像区域 I t + 1 , D d e t I_{t + 1,D_{det}} It+1,Ddet 以及目标历史外观 { I t i X } , i = 1 , 2 , . . . , K \{I_{t_{i}}^X\}, i=1,2,...,K {ItiX},i=1,2,...,K 来提取长期 ReID 特征。
- 步骤4. SOT 在步骤2中找到的目标 D t r a c k D_{track} Dtrack 的位置、检测器找到的位置 D d e t D_{det} Ddet 以及步骤3中获得的 ReID 特征组合为目标的匹配特征。
- 步骤5. 找到目标 Λ \Lambda Λ 的潜在切换器,即最可能的身份切换引起者,并提取其 SOT 和 ReID 特征。
- 步骤6. 借助切换器的匹配特征,切换器感知分类器(SAC)使用目标的匹配特征来生成关于检测结果是否与目标匹配的匹配分数。对于帧 I t + 1 I_{t+1} It+1 中的每个检测结果重复该步骤,以便获得它们与被跟踪目标的匹配分数。%SAC 由 Ω \Omega Ω 表示。
- 步骤7. 利用跟踪到的目标与步骤6中找到的检测结果之间的匹配分数,构建已跟踪目标和检测结果的二分图。使用最小费用网络流查找图的匹配结果。
- 步骤8.
- 对于匹配的目标,使用匹配到的检测信息更新位置和模板。
- 对于不匹配的目标,使用 SOT 结果更新跟踪器位置,并丢弃认为不可靠或丢失的目标。
- 对于孤立的检测结果,如果它们的置信度分数满足新目标的条件,则将它们添加到跟踪目标集合中。
- 步骤9.通过设置 t = t + 1 t = t + 1 t=t+1,重复下一帧的步骤2到8,直到不再有帧到达。
3.2 用于 SOT 的 Siamese-RPN 架构
基础跟踪器
我们在框架中使用 Siamese-RPN 跟踪器来提取短期线索。按照最初的模式,当前帧的模板
E
X
E_X
EX 也被称为示例,调整为
127
×
127
127\times 127
127×127 大小。在下一帧中搜索目标,搜索区域
R
R
R 将根据
X
X
X 的位置从帧
I
t
+
1
I_{t+1}
It+1 中裁剪,然后调整为
255
×
255
255\times 255
255×255。具体而言,搜索区域的图像比例与示例相同。如下图所示,搜索区域和示例通过共享权重的孪生 CNN 传递。然后,示例和搜索区域的 CNN 特征后接两个分支,每个分支由两个卷积层组成。一个分支用于获取分数图,另一个分支用于边界框回归。假定搜索区域中示例的正确位置对应于得分图上的分数最高。不同位置的边界框回归应指向此正确位置。
图3. SOT 的 Siamese-RPN 架构。
短期特征生成
SOT 子网络输出 SOT 分数和预测的边界框,称为 SOT 框。要匹配的检测边界框称为检测框。我们将 SOT 分数表示为
p
p
p,SOT 框表示为
D
t
r
a
c
k
D_{track}
Dtrack,检测框表示为
D
d
e
t
D_{det}
Ddet,然后短期特征
f
s
f_s
fs 计算如下:
f
s
(
D
t
r
a
c
k
,
D
d
e
t
)
=
I
o
U
(
D
t
r
a
c
k
,
D
d
e
t
)
f_s(D_{track}, D_{det}) = IoU(D_{track}, D_{det})
fs(Dtrack,Ddet)=IoU(Dtrack,Ddet)
用于 MOT 跟踪的干扰者感知 SOT 跟踪器
为了最大化 Siamese-RPN 的效果。我们修改锚点以适应行人的目标尺度。此外,我们使用行人数据改进网络。SOT 跟踪器的另一个问题是,如果目标丢失,很难判断何时停止跟踪。 当跟踪器漂移到背景干扰者时,跟踪器可能无法停止跟踪干扰者。为了使跟踪器得分能够感知干扰者,我们设计了跟踪得分优化策略。 我们使用在3.1节中步骤7找到的匹配结果来细化跟踪器得分。对于目标
X
X
X,精确的整体跟踪质量
q
X
q_X
qX 如下:
q
X
,
t
+
1
=
{
q
X
,
t
+
I
o
U
(
D
t
r
a
c
k
,
D
d
e
t
)
⋅
p
2
,
i
f
m
a
t
c
h
e
d
,
q
X
,
t
⋅
d
e
c
a
y
⋅
p
k
,
o
t
h
e
r
w
i
s
e
,
q_{X, t+1} = \left\{ \begin{array}{rcl} \frac{q_{X, t} + IoU(D_{track}, D_{det})\cdot p}{2}, \mathrm{if\ matched,}\\ q_{X, t} \cdot decay \cdot p^k, \mathrm{otherwise,} \end{array} \right.
qX,t+1={2qX,t+IoU(Dtrack,Ddet)⋅p,if matched,qX,t⋅decay⋅pk,otherwise,
其中 d e c a y decay decay 和 k k k 是用于处理不一致目标的超参数, D d e t D_{det} Ddet 是检测框。这样,如果跟踪质量 q X q_X qX 低于阈值 ζ t \zeta_{t} ζt,我们就会丢弃不可靠的目标。
3.3 使用 ReID 网络获得长期线索
我们使用 GoogLeNet Inception-v4的修改版本作为 ReID 子网的主干 CNN。ReID 特征从分类之前的最后一个FC层中提取。Table 1和 Table 2展示了主干 CNN 的详细信息。为从目标的 tracklet 历史记录中选择
K
K
K 张图像,我们设计了一种质量感知机制。
为了获得高质量的长期线索,我们使用质量过滤器在过去的
K
K
K 段时期内选择
K
K
K 张最佳图像,以确保质量和鲁棒性。所选
K
K
K 帧图像构成目标跟踪历史记录,其索引为
H
=
{
t
1
…
,
t
K
}
\mathcal{H}=\{t_1 \ldots, t_K\}
H={t1…,tK}。我们选择的
K
K
K 帧定义如下:
t
i
=
arg
max
t
−
i
δ
<
t
^
≤
t
−
(
i
−
1
)
δ
Q
(
I
t
^
X
)
,
i
=
1
,
2
,
.
.
.
,
K
t_i = \mathop{\arg\max}_{t - i\delta < \hat{t} \leq t - (i-1)\delta} \mathop{Q}(I_{\hat{t}}^X) , i = 1, 2, ..., K
ti=argmaxt−iδ<t^≤t−(i−1)δQ(It^X),i=1,2,...,K
其中 Q Q Q 网络输出质量得分,使用 Resnet-18模型实现。 I t X I_{t}^X ItX 是帧 t t t 上目标 X X X 的图像区域。超参数 δ \delta δ 决定选择间隔。
例如,当 i = 1 i=1 i=1 时,从帧 t , t − 1 , . . . , t − δ + 1 t, t-1, ..., t-\delta+1 t,t−1,...,t−δ+1 中选择质量得分最高的作为 t 1 t_1 t1。当 i = 2 i=2 i=2 时, t 2 t_2 t2 从 t − δ , t − δ − 1 , . . . , t − 2 δ + 1 t-\delta, t-\delta-1, ..., t-2\delta+1 t−δ,t−δ−1,...,t−2δ+1 中选择。因此, t i t_i ti 中的 i i i 对应于不同的步幅和搜索范围。
长期特征生成
选择
K
K
K 张图像后,将所有这些图像和需匹配的检测结果馈送到 ReID 子网络并输出其 ReID 特征。然后我们可以获得目标
K
K
K 条长期特征,如下所示:
F
l
X
=
{
f
l
(
A
t
i
X
,
A
d
e
t
)
∣
i
=
1
,
…
,
K
}
,
where
f
l
(
A
t
i
X
,
A
d
e
t
)
=
A
t
i
X
T
⋅
A
d
e
t
∣
A
t
i
X
∣
∣
A
d
e
t
∣
,
\mathcal{F}^X_l = \{f_l(A_{t_i}^X, A_{det})| i=1, \ldots, K\}, \\ \textrm{where } f_l(A_{t_i}^X, A_{det}) = \frac{{A_{t_i}^X} ^\textrm{T} \cdot A_{det}}{\left | A_{t_i}^X \right | \left | A_{det} \right |},
FlX={fl(AtiX,Adet)∣i=1,…,K},where fl(AtiX,Adet)=
AtiX
∣Adet∣AtiXT⋅Adet,
A
t
i
X
A_{t_i}^X
AtiX 是从目标
X
X
X 的跟踪记录中选择的第
i
i
i 张图像的 ReID 特征向量,
A
d
e
t
A_{det}
Adet 是检测结果的 ReID 特征。为了减少计算,对于 tracklet 中的每个图像,ReID 网络提取一次特征。 保存后以备后续使用。
3.4 切换器感知分类器
切换者检索
我们通过观察大量的身份转换(IDS),发现大多数 IDS 发生在当两个目标彼此相遇并发生较大重叠时。它启发我们将与当前目标最大重叠的另一个目标标记为最可能的潜在切换者。数学上,对于帧
t
t
t 中的每个 tracklet
X
X
X,其位置用
X
t
X_t
Xt 表示,并且可能的切换者如下获得
Λ
=
arg
max
Y
∈
S
s
.
t
.
Y
≠
X
I
o
U
(
X
t
,
Y
t
)
.
\Lambda = \mathop{\arg\max}_{Y \in \mathcal{S} \mathop{s.t.} Y \neq X} \mathop{IoU}(X_t, Y_t).
Λ=argmaxY∈Ss.t.Y=XIoU(Xt,Yt).
其中
S
\mathcal{S}
S 是跟踪目标的集合。
输入特征
这里我们将两个子网络视为特征提取运算符
ϕ
\phi
ϕ,并将二者的输入——目标
X
X
X 和检测结果
D
D
D 表示为
Γ
X
,
D
\Gamma_{X,D}
ΓX,D,切换者与之类似。分类器的输入特征由两部分组成:
- 首要考虑目标的特征,由 ϕ ( Γ X , D ) \phi(\Gamma_{X,D}) ϕ(ΓX,D) 表示,
- 以及切换者的特征 ϕ ( Γ Λ , D ) ) \phi(\Gamma_{\Lambda,D})) ϕ(ΓΛ,D))。
ϕ \phi ϕ 定义如下:
ϕ ( Γ X , D ) = { f s ( D t r a c k , D d e t ) } ∪ F l X . \phi(\Gamma_{X,D})= \{f_s(D_{track}, D_{det})\} \cup \mathcal{F}^X_l. ϕ(ΓX,D)={fs(Dtrack,Ddet)}∪FlX.
ϕ ( X , t ) \phi(X, t) ϕ(X,t) 的维度是 K + 1 K+1 K+1,切换者与之类似。然后我们通过连接这两个部分来获得分类器的输入。
分类
我们利用带加权分位数草图的正则化牛顿提升决策树,由 XGBoost 在分类步骤中提出。
如果分类结果
y
y
y 大于阈值
ζ
m
\zeta_{m}
ζm,那么将成本为
1
−
y
1 - y
1−y 的相应边添加到图中。
3.5 训练
3.5.1 训练数据生成
SOT 子网络和 ReID 子网络是独立训练的。对于 SOT 子网络,我们根据视频的标注生成一些目标图像对,并根据 SiamRPN 的训练模式扩展图像对以包含一部分背景。为了更好的训练,我们只考虑与真实目标 IoU 大于0.65的框作为正样本且小于0.45的作为负样本。对于 ReID 子网络,将每个目标都视为一个类,我们训练网络来预测输入目标的类别。ReID 子网络的输入是目标图像区域,标签是其类号。
我们需要先得到两个子网络的输入,从而为切换者感知分类器生成训练样本和相应的被标注。
- 首先,我们运行基线 MOT 算法并生成所有假设的训练视频轨迹。
- 然后,我们使用 IoU 阈值 0.6 0.6 0.6 将它们与真实目标联系起来,即只考虑 IoU 大于 0.6 0.6 0.6 的对。用匈牙利算法最大化 IoU 值的总和。对于帧 t t t 的目标 X X X,如果 X t , X t − δ , . . . , X t − ( K − 1 ) δ X_{t}, X_{t-\delta}, ..., X_{t-(K-1)\delta} Xt,Xt−δ,...,Xt−(K−1)δ 的标注为同一目标或至多其中一个与标注无关,那么我们将其视为有效的跟踪。
- 对于每个有效的 tracklet,我们在帧 t + 1 t+1 t+1 中随机采样检测结果,辅以公式5定义的潜在切换者,组成 MOT 框架的输入。根据公式1、4、6生成分类器的输入。根据检测的标注信息获得切换者感知分类器的标签。
- 此外,对于正样本,我们可以交换切换者和主要考虑的目标,以生成用于切换者感知分类器的另一个训练负样本。
对于质量滤波器,我们将与真实目标 IoU 大于0.6的图像区域作为正样本,其余作为负样本。
3.6 预处理和离线聚类
检测得分过滤策略
有时检测器给出的检测结果噪声很多,带有奇怪的误报并且置信度不可靠。我们提出了两种解决方案来改进这些检测结果:
- 第一个是更严格的 NMS 方法。
- 第二个是训练一个置信度得分提炼器。
在这里,我们使用长期线索选择中的质量过滤器作为置信提炼器。
长期跟踪聚类
基于在线模式的输出结果,我们设计了一个简单的批量聚类后处理程序。
-
第一步是由轨迹构建子图。对于每个 tracklet,
- 首先,我们将每个帧视为一个孤立节点;
- 然后如果有两个节点具有相似 ReID 特征,即它们之间的余弦距离小于阈值,我们将在两个节点之间添加一条边;
- 最后我们可以获得一些切片,每个切片是一个连接的子图。
-
第二步是将这些切片合并到不同的目标之间。
- 如果两个切片的帧索引重叠小、空间距离小且 ReID 特征类似(我们计算两个切片的平均特征距离),就合并二者;
- 如果合并了两个切片,则原始位置中的切片将成为新的标识;
- 此外,在拆分和合并操作之后,我们在每个 tracklet 中进行插值,以便修复更多的漏报。