论文地址:https://arxiv.org/abs/2103.07889

代码地址:https://github.com/daip13/LPC_MOT

介绍和相关工作

主要贡献:

  1. 提出了一个新颖的可学习框架建模MOT为proposal的产生、打分和选择推理的过程。
  2. 为proposal的生成提出了一个图聚类策略,有效减少计算的同时保证提出了proposal的质量。
  3. 使用一个GCN为proposal进行打分,直接优化proposal,而非优化两两之间的匹配,通过GCN的信息聚合能力,增加预测的准确性。

遮挡问题任然是MOT中的一个任务的难题,在拥挤的环境中更加难以处理。传统的方法通过各种启发式或者手工设计的机制来处理遮挡。例如MHT方法中使用的将数据关联进行适当的延迟,保持假设有效性,直到模糊匹配消失或被解决。在基于网络流的工作中,会将数据关联建模为一个图,节点代表检测,边代表节点间的可能性连接。这样通过连接非连续的节点对来处理遮挡。但是这两种方法都需要对不同任务手工设计阈值之类的参数,相较于所有任务灵活性差。

受Faster R-CNN以及一个聚类方法的启发,作者提出了将MOT算法:1)产生proposal;2)使用GCN对proposal打分然后选择。

过程如下图所示,如下图(b)给定一小段轨迹的集合,作者提出的生成模型会产生包含覆盖所有检测的完整tracklet的proposals集合,当然其中也包含多个不同目标组成的proposal,包括污染proposal。然后如图(c)使用GCN来为所有的Proposal打分并排序。然后如图(d),对于每个proposal及其得分,使用一个推理算法产生轨迹输出,满足一个检测分配一个轨迹的原则。


除了解决检测问题,之前也有很多工作在数据关联方面做文章。但是大多数之前在优化成对的亲密度所作的工作,在得到高复杂度的计算的同时,所提升的精度并不值得。最近几个工作在整个关联算法上实现端到端优化,例如Deep Hungarian Net (DHN)将不可微的HA算法进行可微变换。

作者使用无向图来建模数据关联任务,类似于Faster RCNN的思路,提出proposal,为proposal打分,最后剪枝实现追踪。

方法

给定一系列视频帧及其相应的检测 D = { d 1 , … , d k } D = \{d_1,\dots,d_k\} D={ d1,,dk} k k k所有帧的总检测数。每个检测 d i = ( o i , p i , t i ) d_i = (o_i,p_i,t_i) di=(oi,pi,ti),分别表示边界框原始像素,2D图像的坐标,时间戳。一条时间序列的轨迹表示为 T i = { d i 1 , … , d i n i } \mathcal T_i = \{d_{i_1},\dots,d_{i_{n_i}}\} Ti={ di1,,dini}, n i n_i ni表示形成轨迹 i i i的所有检测数目,任务的目的是找到包含所有目标的最优ID分配的m个轨迹的集合 T ∗ = { T 1 , … , T m } \mathcal T_* = \{\mathcal T_1,\dots,\mathcal T_m\} T={ T1,,Tm}

框架

如上图所示,作者所提框架包含四个主要的阶段:

数据预处理:
为了减少proposal生成过程中的模糊性和计算复杂度,轨迹片段的生成通过连接相邻两帧的检测。这些轨迹片段作为之后任务的基础模块。

Proposal生成:
如上图b所示,采用一个图 G = ( v , ε ) G = (v,ε) G=(v,ε) v : = { v 1 , … , v n } v := \{v_1,\dots,v_n\} v:={ v1,,vn}, ε ⊂ v × v ε ⊂ v\times v εv×v来表示构建的轨迹数据 T \mathcal T T。其中图中的一个子集 P i = { v i } P_i = \{v_i\} Pi={ vi}就是一个Proposal,每个目标至少有一个完美的proposal。从图中探索所有的Proposal来获得最优的proposals { P ^ i } i = 1 m \{\hat P_i\}^m_{i=1 } { P^i}i=1m太费力,作者提出了一个可替代的图聚类策略,通过模拟自下而上的聚类过程,获得proposal质量和计算力之间的平衡。

Proposal打分:
对于所有的Proposal集合 P = { P i } P = \{P_i\} P={ Pi},需要进行计算他们的相应得分并进行排序,从而选择轨迹的最优表示。

得分可以定义为准确率和召回率的组合: score ⁡ ( P i ) = rec ⁡ ( P i ) + w ⋅ prec ⁡ ( P i ) (1) \operatorname{score}\left(\mathcal{P}_{i}\right)=\operatorname{rec}\left(\mathcal{P}_{i}\right)+w \cdot \operatorname{prec}\left(\mathcal{P}_{i}\right)\tag{1} score(Pi)=rec(Pi)+wprec(Pi)(1) rec ⁡ ( P i ) = ∣ P i ∩ P ^ i ∣ / ∣ P ^ i ∣ (2) \operatorname{rec}\left(\mathcal{P}_{i}\right)=\left|\mathcal{P}_{i} \cap \hat{\mathcal{P}}_{i}\right| /\left|\hat{\mathcal{P}}_{i}\right|\tag{2} rec(Pi)=PiP^i/P^i(2) prec ⁡ ( P i ) = { 1 ,  if  n ( P i ) = 1 0 ,  otherwise  (3) \operatorname{prec}\left(\mathcal{P}_{i}\right)=\left\{\begin{array}{ll} 1, & \text { if } n\left(\mathcal{P}_{i}\right)=1 \\ 0, & \text { otherwise } \end{array}\right.\tag{3} prec(Pi)={ 1,0, if n(Pi)=1 otherwise (3)
w w w是权重平衡参数, P ^ i \hat{\mathcal{P}}_{i} P^i是所有标签 m a j o r ( P i ) major(P_i) major(Pi)的检测的GT框集合, m a j o r ( P i ) major(P_i) major(Pi)是proposal P i P_i Pi的主要标签。 ∣ ⋅ ∣ |·| 代表求数量, n ( P i ) n(P_i) n(Pi)表示Proposal P i P_i Pi中标签的个数。准确率prec代表纯度,召回率rec代表proposal P i P_i Pi和GT P ^ i \hat{\mathcal{P}}_{i} P^i的匹配程度。

准确率可以通过二分交叉熵损失进行训练学习,但是召回率不遍历所有的proposal就很难学习,作者发现标准化轨迹长度 ( ∣ P i ∣ / C , C 是 标 准 化 常 数 ) (|P_i| /C,C是标准化常数) (Pi/C,C)在准确率很高的情况下,这个参数和召回率成正相关,所以可以通过近似这个参数估计召回率,将网络集中训练提高Proposal准确率。

轨迹推理:
类似于检测中的NMS,通过排序好的proposals进行最终轨迹 T ∗ \mathcal T_* T的推理,这里作者采用了一种简单的去重叠算法实现。

数据预处理

作者使用tracklets T = { T 1 , … , T n } \mathcal T = \{\mathcal T_1,\dots,\mathcal T_n\} T={ T1,,Tn}作为图构建的基础单元,n表示tracklets的数目,远少于检测数目 k k k

首先使用CNN对于每个检测 d i d_i di提取相应的ReID特征 a i a_i ai。然后基于外貌时间和位置信息这三个亲密度计算两个检测或者检测和tracklets之间的总体亲密度。最终,通过基于亲密度使用匈牙利算法连接检测产生tracklets。tracklets的纯度直接影响后续的推理实验。

这里作者使用一个双向阈值策略,对于高亲密相关的使用高的阈值 θ 1 \theta_1 θ1,使用低阈值 θ 2 \theta_2 θ2避免关联存在相似亲密度的竞争对手。

迭代Proposal的生成

提出了一个逐渐生成所有proposal的策略,主要包括两个模块如上图:

Affinity Graph Construction 亲和图构造
每次迭代 i i i,构建一个亲和图 G G G建模所有顶点 V : = { v 1 , … , v n } V:=\{v_1,\dots,v_n\} V:={ v1,,vn}间的相似度, v i = ( a i , t i , p i ) v_i=(a_i,t_i,p_i) vi=(ai,ti,pi) a i a_i ai是一个proposa的平均ReID特征, t i = [ t i s , … , t i e ] t_i=[t_i^s,\dots,t_i^e] ti=[tis,,tie]表示proposal中检测的时间戳排序。 p i = [ p i s , … , p i e ] p_i = [p_i^s,\dots,p_i^e] pi=[pis,,pie]为相应的二维图片坐标。顶点 ( v i , v j ) (v_i,v_j) (vi,vj)之间的边的亲密度得分定义为基于时、空和外貌相似度的平均得分:
a i j ( v i , v j ) = ( s i j a ( a i , a j ) + s i j t ( t i , t j ) + s i j p ( p i , p j ) ) / 3 (4) a_{i j}\left(v_{i}, v_{j}\right)=\left(s_{i j}^{a}\left(\mathbf{a}_{i}, \mathbf{a}_{j}\right)+s_{i j}^{t}\left(\mathbf{t}_{i}, \mathbf{t}_{j}\right)+s_{i j}^{p}\left(\mathbf{p}_{i}, \mathbf{p}_{j}\right)\right) / 3\tag{4} aij(vi,vj)=(sija(ai,aj)+sijt(ti,tj)+sijp(pi,pj))/3(4) s i j a ( a i , a j ) = ( a i ⋅ a j ) / ( ∣ a i ∣ ⋅ ∣ a j ∣ ) (5) s_{i j}^{a}\left(\mathbf{a}_{i}, \mathbf{a}_{j}\right)=\left(\mathbf{a}_{i} \cdot \mathbf{a}_{j}\right) /\left(\left|\mathbf{a}_{i}\right| \cdot\left|\mathbf{a}_{j}\right|\right)\tag{5} sija(ai,aj)=(aiaj)/(aiaj)(5)
s i j t ( t i , t j ) = { exp ⁡ ( − g ( t i , t j ) / σ t )  if  g ( t i , t j ) > 0 − i n f ,  otherwise  (6) s_{i j}^{t}\left(\mathbf{t}_{i}, \mathbf{t}_{j}\right)=\left\{\begin{array}{lr} \exp \left(-\mathbf{g}\left(\mathbf{t}_{i}, \mathbf{t}_{j}\right) / \sigma_{t}\right) & \text { if } \mathbf{g}\left(\mathbf{t}_{i}, \mathbf{t}_{j}\right)>0 \\ -i n f, & \text { otherwise } \end{array}\right.\tag{6} sijt(ti,tj)={ exp(g(ti,tj)/σt)inf, if g(ti,tj)>0 otherwise (6) s i j p ( p i , p j ) = exp ⁡ ( − f ( p i , p j ) / σ p ) (7) s_{i j}^{p}\left(\mathbf{p}_{i}, \mathbf{p}_{j}\right)=\exp \left(-f\left(\mathbf{p}_{i}, \mathbf{p}_{j}\right) / \sigma_{p}\right)\tag{7} sijp(pi,pj)=exp(f(pi,pj)/σp)(7)
g ( ⋅ ) g(·) g()表示两定点间的最小时间距离,如果两节点在相同的时间戳上 g ( t i , t j ) = − 1 \mathbf{g}\left(\mathbf{t}_{i}, \mathbf{t}_{j}\right)=-1 g(ti,tj)=1 f ( ⋅ ) f(·) f()代表顶点 v i v_i vi的预测框中心和顶点 v j v_j vj的开始框中心之间的欧氏距离, σ t , σ p σ_t,σ_p σt,σp为控制参数。

Cluster Proposals
Proposals产生的基础想法是使用连接的成分来寻找聚类,为了保持早期聚类的纯度,限制聚类的最大尺存的阈值 s m a x s_{max} smax。这个过程中,顶点可能会被过分碎片,分入多个聚类。第 i i i个迭代产生的聚类作为下一次迭代的输入顶点节点。再这些聚类的基础上可以构建新的图,从而产生更大的聚类,最终所有的proposal P = { P i } P = \{P_i\} P={ Pi}包括所有迭代产生的聚类。

纯度分类网络

该网络的主要目的是评估产生的Proposal P P P的准确度得分 { p r e c ( P i ) } \{prec(P_i)\} { prec(Pi)}。一个Proposal P i = { v i } i = 1 N i P_i = \{v_i\}_{i=1}^{N_i} Pi={ vi}i=1Ni N i N_i Ni个顶点,GCN将顶点的特征和子图的亲密度作为输入,预测 P i P_i Pi的纯净的概率,如下图,模型包括两部分:

特征编码设计:
对于每个检测 d i d_i di,直接使用CNN进行特征embedding a i a_i ai的提取。节点 v i v_i vi的相应特征 a i a_i ai使用其中所有检测特征的均值来表示。

每个proposal P i = { v i } i = 1 N i P_i = \{v_i\}_{i=1}^{N_i} Pi={ vi}i=1Ni都是按照每个顶点的开始时间戳进行按升序排列的,对于每对时间关联的tracklet 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_{e_i} tei t s i + 1 t_{s_i+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

s t i = { [ 2 ( x i + 1 − x i ) w i + w i + 1 , 2 ( y i + 1 − y i ) h i + h i + 1 , log ⁡ ( h i + 1 h i ) log ⁡ ( w i + 1 w i ) , ( t s i + 1 − t e i ) ]  if  i > 0 [ 1 , 0 , 0 , 0 , 0 ]  otherwise  (8) \mathbf{s t}_{i}=\left\{\begin{array}{r} {\left[\frac{2\left(x_{i+1}-x_{i}\right)}{w_{i}+w_{i}+1}, \frac{2\left(y_{i+1}-y_{i}\right)}{h_{i}+h_{i+1}}, \log \left(\frac{h_{i+1}}{h_{i}}\right)\right.} \\ \left.\log \left(\frac{w_{i+1}}{w_{i}}\right),\left(t_{s_{i+1}}-t_{e_{i}}\right)\right] \quad \text { if } i>0 \\ {[1,0,0,0,0]} & \text { otherwise } \end{array}\right. \tag{8} sti=[wi+wi+12(xi+1xi),hi+hi+12(yi+1yi),log(hihi+1)log(wiwi+1),(tsi+1tei)] if i>0[1,0,0,0,0] otherwise (8)

通过外貌特征和时刻特征,concat形成特征编码 f i = c o n c a t ( a i , s t i ) f_i = concat(a_i,st_i) fi=concat(ai,sti)

GCN设计:
如上获得了 P i P_i Pi的结点的特征 F 0 ( P i ) \mathbb{F}_{0}\left(\mathcal{P}_{i}\right) F0(Pi)。对于 P i P_i Pi的亲密度矩阵 A 0 ( P i ) \mathbb{A}_{0}\left(\mathcal{P}_{i}\right) A0(Pi),使用一个全连接的 L L L层图网络(图3a)计算: F l + 1 ( P i ) = σ ( D ( P i ) − 1 ⋅ ( A ( P i ) + I ) ⋅ F l ( P i ) ⋅ W l ) (9) \mathbb{F}_{l+1}\left(\mathcal{P}_{i}\right)=\sigma\left(\mathbb{D}\left(\mathcal{P}_{i}\right)^{-1} \cdot\left(\mathbb{A}\left(\mathcal{P}_{i}\right)+\mathbb{I}\right) \cdot \mathbb{F}_{l}\left(\mathcal{P}_{i}\right) \cdot \mathbb{W}_{l}\right)\tag{9} Fl+1(Pi)=σ(D(Pi)1(A(Pi)+I)Fl(Pi)Wl)(9)
D ( P i ) = ∑ j A i j ( P i ) \mathbb{D}\left(\mathcal{P}_{i}\right)=\sum_{j} \mathbb{A}_{i j}\left(\mathcal{P}_{i}\right) D(Pi)=jAij(Pi)是对角的度矩阵。 F l ( P i ) \mathbb{F_l}\left(\mathcal{P}_{i}\right) Fl(Pi)代表第 l l l层的特征embedding。 W l \mathbb W_l Wl是变换矩阵,σ是非线性激活函数。在顶层的特征embedding F L ( P i ) \mathbb{F_L}\left(\mathcal{P}_{i}\right) FL(Pi) P i P_i Pi的所有顶点使用一个最大池化来获得最终结果。最终一个全连接层运用到 P i P_i Pi进行纯与不纯的分类。

公式9中所示,每层图网络就进行了计算每个顶点和其邻居的特征的带权均值和,通过 W l \mathbb W_l Wl进行变换特征,最后将变换后的特征喂入激活函数三件事。如此的过程可以学习到每个proposal的内在一致性。

轨迹推理

获得了纯度分类的结果,可以通过公式1获得所有proposals的质量得分。通过一个简单的去重叠算法保证每个tracklet都可以被分配到一个独一无二的ID。

首先:对所有的proposals按照质量得分进行降序排序。
然后:从排名列表中序列化的为proposal中每个节点分配ID,并且去除所有proposal中已经被处理过的顶点。

实验