Proposal Classifier for MOT
论文标题:Learning a Proposal Classifier for Multiple Object Tracking –CVPR
论文地址:https://arxiv.org/abs/2103.07889
论文源码:https://github.com/daip13/LPC_MOT
Introduction
提出了一个新的基于proposal的可学习框架。该框架类似于两步目标检测器Faster-RCNN,可以以数据驱动的方式解决MOT问题。为了生成proposal,我们提出了一种迭代图聚类方法,以降低计算成本的同时保持生成的提案的质量。对于proposal评分,使用一个可训练的图卷积网络(GCN)来学习生成的proposal的结构模式,并根据估计的质量分数对它们进行排序。对于轨迹推断,采用了一种简单的去重叠策略来生成跟踪输出,同时遵守没有检测不能分配给多个跟踪的约束条件。
主要贡献:
- 提出了一个新颖的可学习框架建模MOT为proposal的产生、打分和选择推理的过程。
- 为proposal的生成提出了一个图聚类策略,有效减少计算的同时保证提出了proposal的质量。
- 使用一个GCN为proposal进行打分,直接优化proposal,而非优化两两之间的匹配,通过GCN的信息聚合能力,增加预测的准确性。
使用两个关键模块来设计MOT算法:1)proposal生成策略 2)使用图卷积网络(GCN)进行proposal评分策略。给定一组轨迹(使用简单机制局部分组检测集),proposal生成模块生成一组proposal,其中包含完全覆盖每个人最近帧的完整轨迹集,但也可能有多个受污染轨迹集的proposal(即将多个不同的人重叠生成一个proposal)。下一步是通过使用可训练的GCN来确定proposal最优的匹配,并使用学习到的排名/评分函数对它们进行排序。最后,采用一种推理算法,给定每个proposal的排名生成跟踪输出,同时遵守典型的跟踪约束,比如没有分配给多个轨道的检测。
Method
以批处理方式进行模型数据关联的一种常用方法是使用图,其中每个节点表示一个检测,每条边表示节点之间可能的链接。然后,数据关联可以转换为一个图的划分任务,即找到最佳的活动边集来预测图的划分成轨迹。
给定一批视频帧和相应的检测 D = { d 1 , d 2 , . . . d k } D=\lbrace d_{1},d_{2},...d_{k}\rbrace D={d1,d2,...dk},其中 k k k为所有输入帧的检测目标框总数。每个检测框都用 d i = ( o i , p i , t i ) d_{i}=(o_{i},p_{i},t_{i}) di=(oi,pi,ti)表示,其中 o i o_{i} oi表示边界框的原始像素值, p i p_{i} pi包含其二维图像坐标, t i t_{i} ti表示表示时间帧。轨迹定义为一组时间有序的检测框 T i = { d i 1 , . . . d i n } \mathcal {T}_{i}=\lbrace d{i_{1}},...d_{i_{n}} \rbrace Ti={di1,...din},其中 n i n_{i} ni是形成轨迹 i i i的检测次数。
Data Pro-Processing
为了减少proposal生成过程中的模糊性和计算复杂度,轨迹集 T = { τ 1 , τ 2 , . . . τ n } \mathcal T=\lbrace \tau_{1},\tau_{2},...\tau_{n} \rbrace T={τ1,τ2,...τn}的生成通过连接相邻帧的检测 D D D。这些轨迹片段作为之后任务的基础模块。
Proposal Generation
如图(b)所示,采用了 G = ( v , ϵ ) G=(v,\epsilon) G=(v,ϵ),其中 v = { v 1 , v 2 , . . . v n } v=\lbrace v_{1},v_{2},...v_{n} \rbrace v={v1,v2,...vn}, ϵ ∈ v × v \epsilon \in v \times v ϵ∈v×v来表示结构化跟踪数据集 T \mathcal T T。其中图中的一个子集 P i = { v i } P_{i}=\lbrace v_{i} \rbrace Pi={vi}就是一个proposal。提出了一种迭代图聚类策略,通过模拟自下向上的聚类过程,它可以在proposal质量和计算成本之间提供良好的权衡。
Proposal Scoring
对于所有的Proposal集合
P
=
{
P
i
}
P=\lbrace P_{i} \rbrace
P={Pi},需要进行计算相应得分并进行排序,从而选择轨迹的最优表示。得分可以定义为准确率和召回率的组合:
KaTeX parse error: No such environment: equation at position 8: \begin{̲e̲q̲u̲a̲t̲i̲o̲n̲}̲ \begin{aligned…
其中w是控制精度分数的加权参数, P i P_{i} Pi是所有检测标签的GT集,|·|测量检测的数量, n ( P i ) n(P_{i}) n(Pi)表示一个Proposal中包含的目标数量。prec测量纯度,rec反映了Pi与匹配的GT集的接近程度。
采用基于GCN的网络来学习估计上述定义的prospoal分数。proposal的准确率可以通过训练过程学习双交叉熵损失的精度。但是召回率不遍历所有的proposal就很难学习,作者发现当精度较高时,标准化后的轨道长度( ∣ P i / C ∣ |P_{i}/C| ∣Pi/C∣,其中C是归一化的常数)与提案的召回率呈正相关。可以通过近似这个参数估计召回率,将网络集中训练提高Proposal准确率。最后的轨迹推断使用类似NMS的去重叠算法,将排序后的轨迹集 T ⋆ \mathcal T_{\star} T⋆匹配最优结果。
Iterativate Proposal Generation
作者使用tracklets T = { T 1 , … , T n } \mathcal T = \{\mathcal T_1,\dots,\mathcal T_n\} T={T1,…,Tn}作为图构建的基础单元,n表示tracklets的数目,远少于检测数目k。首先使用CNN对于每个检测 d i d_{i} di提取相应的ReID特征 α i \alpha_{i} αi 。然后基于外貌时间和位置信息这三个相似度计算两个检测或者检测和tracklets之间的总体相似度。最终,通过基于affifity使用匈牙利算法连接检测产生tracklets。tracklets的纯度直接影响后续的推理实验。
这里作者使用一个双向阈值策略,对于高affifity相关的使用高的阈值 θ 1 \theta_1 θ1 ,使用低阈值 θ 2 \theta_2 θ2 避免关联存在相似的目标。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qNeUUtrS-1640485103450)(image/
迭代proposal生成的可视化。在每次迭代中,只有满足阈值的一小部分边(红色实线)是激活的。在迭代 i i i中生成的每个集群将在迭代i+1中被分组为一个顶点。为了保持集群的纯度,在前几次迭代中设置了严格的阈值。随着迭代次数的增加,这些阈值将逐渐放宽,以增加proposal的生成。
集群,为了在早期迭代中保持生成的集群的高纯度,我们将每个集群的最大限制在一个阈值 s m a x s_{max} smax值以下。在这个阶段,目标对象的顶点可能会被过度分割成几个集群。在迭代i中生成的集群被用作下一次迭代的输入顶点。一个新的图可以建立在这些集群的基础上,从而产生更大大小的集群。最终的proposal集包括每次迭代中的所有集群,从而提供了一个过于完整和多样化的proposal集群 P = P i P={\mathbf P_{i}} P=Pi。
Affifinity Graph Construction.
在每次迭代
i
i
i就会构建一个Affifinity图建模所有顶点
V
:
=
{
v
1
,
v
2
.
.
.
v
n
}
V:=\lbrace v_{1},v_{2}...v_{n} \rbrace
V:={v1,v2...vn}之间的相似度。顶点
o
i
=
(
α
i
,
t
i
,
p
i
)
o_{i}=(\alpha_{i},t_{i},p_{i})
oi=(αi,ti,pi),其中
α
i
\alpha_{i}
αi是proposal的平均ReID特征,
t
i
=
{
t
i
s
,
.
.
.
t
i
e
}
t_{i}=\lbrace t_{i}^{s},...t_{i}^{e} \rbrace
ti={tis,...tie}是proposal中检测的排序时间戳,也就是不同时间内的目标对象的位置,
p
i
=
{
p
i
s
,
.
.
.
p
i
e
}
p_{i}=\lbrace p_{i}^{s},...p_{i}^{e} \rbrace
pi={pis,...pie}是相应的二维图像坐标。一个边缘的affifinity得分
(
v
i
,
v
j
)
(v_{i},v_{j})
(vi,vj)定义为基于时间、空间和外观相似性的平均得分:
KaTeX parse error: No such environment: equation at position 8: \begin{̲e̲q̲u̲a̲t̲i̲o̲n̲}̲ \begin{aligned…
g(⋅)表示两定点间的最小时间距离,如果两节点在相同的时间戳上
g
(
t
i
,
t
j
)
=
−
1
\mathbf{g}(t_i,t_j)=−1
g(ti,tj)=−1,
f
(
⋅
)
\mathbf {f}(\cdot)
f(⋅)代表顶点
v
i
v_i
vi的预测框中心和顶点
v
j
v_{j}
vj的开始框中心之间的欧氏距离,
σ
p
,
σ
t
\sigma_{p},\sigma_{t}
σp,σt为控制参数。
Purity Classifification Network
在经过前面网络的生成集群得到了一个Affifinty 矩阵和proposal集群 P = P i P={\mathbf P_{i}} P=Pi。在此阶段用纯度分类网络来估计生成的Proposal集的精度分数 { p r e c ( P i ) } \lbrace prec(\mathbf {P_{i}})\rbrace {prec(Pi)}。具体来说,给定一个proposal P i = { v i } i = 1 N i P_{i}=\lbrace v_{i} \rbrace_{i=1}^{N_{i}} Pi={vi}i=1Ni与 N i N_{i} Ni顶点,GCN网络将其顶点和子图affifity矩阵作为输入,预测 P i P_{i} Pi是概率。
Design of Feature Encoding
对于每个检测框
d
i
d_{i}
di,使用CNN进行特征提取。每个ReID特征图表示为
α
i
\alpha_{i}
αi,对应的节点为
v
i
v_{i}
vi使用检测特征图的均值表示。每个Propoal
P
i
=
{
v
i
}
i
=
1
N
i
P_{i}=\lbrace v_{i} \rbrace_{i=1}^{N_{i}}
Pi={vi}i=1Ni都是按照每个顶点的开始帧升序排序的,即在相邻帧中不同检测目标按时间排序,对于每一对时间关联的跟踪轨迹
v
i
v_{i}
vi和
v
i
+
1
v_{i+1}
vi+1,节点
v
i
v_{i}
vi的结束时间戳和节点
v
i
+
1
v_{i+1}
vi+1的开始时间戳分别表示为
t
e
i
t_{ei}
tei和
t
s
i
+
1
t_{si+1}
tsi+1,时间戳中的边界框参数为
(
x
i
,
y
i
,
w
i
,
h
i
)
(x_{i},y_{i},w_{i},h_{i})
(xi,yi,wi,hi)和
(
x
i
+
1
,
y
i
+
1
,
w
i
+
1
,
h
i
+
1
)
(x_{i+1},y_{i+1},w_{i+1},h_{i+1})
(xi+1,yi+1,wi+1,hi+1),并且通过公式计算节点
v
i
v_i
vi的时间特征
s
t
i
st_{i}
sti
KaTeX parse error: No such environment: equation at position 8: \begin{̲e̲q̲u̲a̲t̲i̲o̲n̲}̲ \begin{aligned…
通过外观相似度和时间特征,concat形成特征编码
f
i
=
c
o
n
c
a
t
(
α
i
,
s
t
i
)
f_{i}=concat(\alpha_{i},st_{i})
fi=concat(αi,sti).
Design of GCN
在获得检测框集
P
i
P_{i}
Pi节点的特征记为
F
0
(
P
i
)
F_{0}(P_{i})
F0(Pi)。对于
P
i
P_{i}
Pi的affifity矩阵记为
A
0
(
P
i
)
A_{0}(P_{i})
A0(Pi),使用零一全连接的L层图网络。计算每个顶点和其邻居的特征的带权均值和,经过变换学习到每个Proposal的内在一致性。
F
l
+
1
(
P
i
)
=
σ
(
D
(
P
i
−
1
)
⋅
(
A
(
P
i
)
+
I
)
⋅
F
l
(
P
i
)
⋅
W
l
)
F_{l+1}(P_{i})=\sigma(D(P_{i}^{-1})\cdot (A(P_{i})+I)\cdot F_{l}(P_{i})\cdot W_{l})
Fl+1(Pi)=σ(D(Pi−1)⋅(A(Pi)+I)⋅Fl(Pi)⋅Wl)
其中
D
(
P
i
)
=
∑
j
A
i
j
(
P
i
)
D(P_{i})=\sum_{j}A_{ij}(P_{i})
D(Pi)=∑jAij(Pi)是对角的出入度矩阵,
F
l
(
P
i
)
F_{l}(P_{i})
Fl(Pi)表示第L层的特征embedding。
W
l
W_{l}
Wl是变换矩阵,
σ
\sigma
σ为非线性激活函数,在顶层的特征embedding
F
l
(
P
i
)
F_{l}(P_{i})
Fl(Pi),所有的顶点使用一个最大池化来获取最终的结果,最后使用一个全连接层进行分类。
Trajectory Inference
获得了纯度分类的结果,可以通过公式1获得所有proposals的质量得分。通过一个简单的去重叠算法保证每个tracklet都可以被分配到一个独一无二的ID。
首先:对所有的proposals按照质量得分进行降序排序。然后:从排名列表中序列化的为proposal中每个节点分配ID,并且去除所有proposal中已经被处理过的顶点。
Result
执行以下步骤:首先,估计所有现有proposal的置信度;其次,收集质量分数最高的建议,并为该proposal中的顶点分配唯一的跟踪ID;第三,通过删除在前面的proposal中的顶点来修改剩余的proposal。