论文地址:Learning a Neural Solver for Multiple Object Tracking

一、 摘要

本文是一个MOT的Offline方法。

图网络引入MOT带来了一个困难,就是如何构建一个结构化域,并且在其中进行操作。大多数基于学习的框架主要工作在于如何获得更好的外貌特征从而优化网络框架。论文提出了一个模型,通过在图域上直接操作,可以对检测集进行全局推理,并预测最终的解决方案。展现了MOT学习任务不一定需要局限于特征的提取,也可以运用在数据关联方面。

创新:

  1. 提出了一个基于MPN的MOT方法,利用问题的自然图结构,进行特征学习和最终解预测。
  2. 受传统MOT图公式启发,提出一个新颖的时间感知神经信息传递迭代更新步骤。

二、 介绍

图网络视角下可以将MOT的关联看作是一个图划分的任务,将每个目标看作是一个结点,结点的边表示两个目标的之间的关联,可以表示两个目标间的相似度。
可以将它分解为两个过程:

  1. 为每条边分配一个代价,用以表示两个检测属于同一目标的可能性;
  2. 这些代价被用来在图优化框架中获得最优的图划分。

过去工作主要分为两类:

  1. 专注于图公式的;
  2. 专注于边代价函数计算的。

第一种,研究者专注于通过大量的信息建立复杂图的优化结构,以便编码检测之间的高阶依赖关系,某种程度上说,这种方式的边代价通常是手工设计的。

第二种采用简单框架的优化图结构,主要集中于利用深度学习技术来提升边权的定义。利用孪生神经网络可以编码可靠的目标间的成对交互,但无法解释场景中的高阶信息。两者都陷入了一个困境:MOT是否应该专注于提升图优化框架或者是特征提取。

本论文提出了在学习特征的同时,学习通过对整个图的推理来提供的解决方案。使用MOT的经典网络流公式来定义模型,直接预测图的最终分割成轨迹。过程中使用一个消息传递网络(MPN)来在图上组合深度特征为高阶信息,因此可以解释检测间的全局交互。

三、 图问题解释追踪

我们首先引入网络流的MOT公式的概述,然后解释如何利用这种框架完成数据关联。然后解释如何利用这个框架将数据关联任务重新制定为一个学习问题。

问题设置

在DBT范式中,输入目标检测集 O = { o 1 , . . . , o n } O = \{o_1,...,o_n\} O={ o1,...,on} n n n表示一个视频的总共的所有帧总共目标数,每个检测表示为 o i = ( a i , p i , t i ) o_i = (a_i,p_i,t_i) oi=(ai,pi,ti) a i a_i ai表示边界框的原始像素, p i p_i pi表示二维坐标, t i t_i ti表示时间戳。一个轨迹都可以定义为一个时间顺序的检测集合 T i = { o i 1 , … , o i n i } T_i=\{o_{i_1},…,o_{i_{n_i }}\} Ti={ oi1,,oini}, n i n_i ni表示轨迹i包含的的检测数目。MOT的目标是找到一个能最好的解释O的一个所有轨迹的集合 T ∗ = { T 1 , . . . , T m } T_* = \{T_1,...,T_m\} T={ T1,...,Tm}

这个问题可以用无向图 G = ( V , E ) G = (V, E) G=(V,E)来建模, V : = { 1 , … , n } , E ⊂ V × V V:=\{1,…,n\},E ⊂ V×V V:={ 1,,n},EV×V。每个节点 i ∈ V i∈V iV代表一个独一无二的检测 o 1 ∈ O o_1∈O o1O,通过构造边缘集合 E E E,使得不同帧中的每一对检测节点都是连通的,从而恢复检测缺失的轨迹。将原始检测分配到轨迹的任务可以被视为图中的节点分组为互不相连的组分的任务, T i = { o i 1 , … , o i n i } T_i=\{o_{i_1},…,o_{i_{n_i }}\} Ti={ oi1,,oini}可以被映射为一组节点 { i 1 , . . . , i n i } \{i_1,...,i_{n_i }\} { i1,...,ini}

网络流公式

为每条边引入二元变量,当一条边连接的结点属于相同轨迹并且在轨迹内暂时连续的设置为1,剩下的都设置为0。一个轨迹 T i = { o i 1 , … , o i n i } T_i=\{o_{i_1},…,o_{i_{n_i }}\} Ti={ oi1,,oini}可以由边等价表示为 { ( i 1 , i 2 ) , … , ( i n i − 1 , i n i } ∈ E \{(i_1,i_2),\dots,(i_{n_{i-1}},i_{n_i} \} \in E { (i1,i2),,(ini1,ini}E,对应他在图中的时间顺序的路径。不同时间戳上的每一对结点 ( i , j ) ∈ E (i,j)\in E (ij)E,定义二分变量 y ( i , j ) y_{(i,j)} y(i,j)
y ( i , j ) : = { 1 ∃ T k ∈ T ∗  s.t.  ( i , j ) ∈ T k 0  otherwise  y_{(i, j)}:=\left\{\begin{array}{cc} 1 & \exists T_{k} \in \mathcal{T}_{*} \text { s.t. }(i, j) \in T_{k} \\ 0 & \text { otherwise } \end{array}\right. y(i,j):={ 10TkT s.t. (i,j)Tk otherwise 
y ( i , j ) = 1 y_{(i,j)} = 1 y(i,j)=1对应的 ( i , j ) (i,j) (i,j)是正项。假设轨迹结点不相交,即一个结点只能属于一个轨迹。因此 y y y存在线性限制,对于每个节点 i ∈ V i∈V iV
∑ ( j , i ) ∈ E  s.t.  t i > t j y ( j , i ) ≤ 1 (1) \sum_{(j, i) \in E \text { s.t. } t_{i}>t_{j}} y_{(j, i)} \leq 1 \tag{1} (j,i)E s.t. ti>tjy(j,i)1(1)
∑ ( i , k ) ∈ E  s.t.  t i < t k y ( i , k ) ≤ 1 (2) \sum_{(i, k) \in E \text { s.t. } t_{i}<t_{k}} y_{(i, k)} \leq 1 \tag{2} (i,k)E s.t. ti<tky(i,k)1(2)

从学习代价到预测方案

标准的方式是为每个边 y ( i , j ) y_{(i,j)} y(i,j)赋予一个代价 c ( i , j ) c_{(i,j)} c(i,j) ,代表为正项的可能性。最终划分可以优化为:

本方法采用直接预测图像的正项边,例如直接预测二元变量y的真实值。如此,就将任务变成了一个边上的分类问题,标签即为y。这样,引进的网络流公式就将MOT任务作为了一个全学习任务。

四、 消息传递追踪

我们的基于使用图公式训练一个不一样的框架,将多目标追踪作为边分类任务训练。输入检测集合,模型训练图中每个边的二元流值 y y y。在本模型提出的MPN网络中,外观和几何线索在整个检测集中传播,允许我们的模型对整个图形进行全局推理。
Pipeline由四个步骤组成:

  1. 图结构
    对于视频中的检测集进行构图,节点对应检测,边对应节点的连接。
  2. 特征嵌入
    使用一个卷积神经网络,作用于Bbox中的图像,初始化外貌特征嵌入。使用特征计算一个向量编码边界框的相对大小,位置和时间距离,然后喂入MLP网络,返回一个几何嵌入。
  3. 神经消息传递
    在图上执行几次消息传递,在每一轮消息传递中,节点与其连接边共享外观信息,边与其关联节点共享几何信息信息。依赖整体图结构,返回更新后的包含高阶信息的节点嵌入和边。
  4. 训练
    使用最终的边嵌入,进行正项\非正项的二元分类任务,使用交叉熵训练。
    在测试时,我们使用我们的模型的每边预测作为目标流变量的连续近似(0到1之间)。使用一个简单的舍入方案,将得分二值化,或者最终轨迹(如下图1)。

MPN 消息传递网络

G = ( V , E ) G=(V,E) G=(V,E) h i ( 0 ) h_i^{(0)} hi(0) 为节点 i ∈ V i∈V iV的节点嵌入。 h ( i , j ) ( 0 ) h_{(i,j)}^{(0)} h(i,j)(0) 为一条边 ( i , j ) ∈ E (i,j)∈E (i,j)E的边嵌入。MPN的目的是学习一个函数,通过图来传递保留在节点和边的信息。
传递更新分为两步,通过节点更新边 ( v → e ) (v → e) (ve)以及通过边来更新节点 ( e → v ) (e → v) (ev),迭代更新 L L L次。对于每个 l ∈ { 1 , . . . , L } l ∈ \{1,...,L\} l{ 1,...,L},总体更新为:

( v → e ) h ( i , j ) ( l ) = N e ( [ h i ( l − 1 ) , h j ( l − 1 ) , h ( i , j ) ( l − 1 ) ] ) (3) (v \rightarrow e) \quad h_{(i, j)}^{(l)}=\mathcal{N}_{e}\left(\left[h_{i}^{(l-1)}, h_{j}^{(l-1)}, h_{(i, j)}^{(l-1)}\right]\right) \tag{3} (ve)h(i,j)(l)=Ne([hi(l1),hj(l1),h(i,j)(l1)])(3)

( e → v ) m ( i , j ) ( l ) = N v ( [ h i ( l − 1 ) , h ( i , j ) ( l ) ] ) (4) (e \rightarrow v) \quad m_{(i, j)}^{(l)}=\mathcal{N}_{v}\left(\left[h_{i}^{(l-1)}, h_{(i, j)}^{(l)}\right]\right) \tag{4} (ev)m(i,j)(l)=Nv([hi(l1),h(i,j)(l)])(4)

h i ( l ) = Φ ( { m ( i , j ) ( l ) } j ∈ N i ) (5) h_{i}^{(l)}=\Phi\left(\left\{m_{(i, j)}^{(l)}\right\}_{j \in N_{i}}\right)\tag{5} hi(l)=Φ({ m(i,j)(l)}jNi)(5)
N e N_e Ne N v N_v Nv代表可学习函数,[.]代表concatt, N i ∈ V N_i∈V NiV代表节点i的邻接节点集, Φ Φ Φ代表顺序不变性操作,例如求和、最大化或者最小化。可以看出 L L L次迭代,最多获得了距离 L L L的迭代信息,有点类似于CNN的接受域。

时间感知消息传递

我们的目标是在节点更新过程中编码一个具体的MOT感应偏差。

公式 4 , 5 4,5 45允许节点与领域交互,通过上下文聚合更新信息。公式 1 , 2 1,2 1,2体现了流结构的限制,一个结点只连接一个过去节点和一个未来节点。将所有相邻的嵌入集合在一起,使得更新后的节点嵌入很难捕捉到这些约束是否被违反。

因此将MOT图的时序信息编码加入MPN公式,有利于网络学习。因此修改公式 4 、 5 4、5 45, 通过将聚合分解为两部分,可以感知时间的更新规则:一部分为过去节点信息,一部分为未来节点信息。使用 N i f u t N_i^{fut} Nifut N i p a s t N_i^{past} Nipast分别表示节点i过去和未来帧的邻域结点,相同的定义两个不同的MLP: N v f u t N_v^{fut} Nvfut N v p a s t N_v^{past} Nvpast。在消息迭代更新的第 l l l层,对于每个节点 i ∈ V i∈V iV,先对他的所有邻域节点 j ∈ N i j∈N_i jNi计算 p a s t past past f u t u r e future future边到点的嵌入:
m ( i , j ) ( l ) = { N v past ( [ h i ( l − 1 ) , h ( i , j ) ( l ) , h ( i ) ( 0 ) ] )  if  j ∈ N i past N v fut ( [ h i ( l − 1 ) , h ( i , j ) ( l ) , h ( i ) ( 0 ) ] )  if  j ∈ N i f u t (6) m_{(i, j)}^{(l)}=\left\{\begin{array}{l} \mathcal{N}_{v}^{\text {past}}\left(\left[h_{i}^{(l-1)}, h_{(i, j)}^{(l)}, h_{(i)}^{(0)}\right]\right) \text { if } \quad j \in N_{i}^{\text {past}} \\ \mathcal{N}_{v}^{\text {fut}}\left(\left[h_{i}^{(l-1)}, h_{(i, j)}^{(l)}, h_{(i)}^{(0)}\right]\right) \text { if } \quad j \in N_{i}^{f u t} \end{array}\right. \tag{6} m(i,j)(l)=Nvpast([hi(l1),h(i,j)(l),h(i)(0)]) if jNipastNvfut([hi(l1),h(i,j)(l),h(i)(0)]) if jNifut(6)

其中加入初始节点是为了让模型不会忘记初始特征。然后关于他们相对于节点i的位置(未来、过去)独立的聚合特征:
h i , p a s t ( l ) = ∑ j ∈ N i p a s t m ( i , j ) ( l ) (7) h_{i, p a s t}^{(l)}=\sum_{j \in N_{i}^{p a s t}} m_{(i, j)}^{(l)} \tag{7} hi,past(l)=jNipastm(i,j)(l)(7)
h i , f u t ( l ) = ∑ j ∈ N i f u t m ( i , j ) ( l ) (8) h_{i, f u t}^{(l)}=\sum_{j \in N_{i}^{f u t}} m_{(i, j)}^{(l)} \tag{8} hi,fut(l)=jNifutm(i,j)(l)(8)
通过concat他们,计算最终的嵌入(图2c):
h i ( l ) = N v ( [ h i , past ( l ) , h i , f u t ( l ) ] ) (9) h_{i}^{(l)}=\mathcal{N}_{v}\left(\left[h_{i, \text {past}}^{(l)}, h_{i, f u t}^{(l)}\right]\right) \tag{9} hi(l)=Nv([hi,past(l),hi,fut(l)])(9)

特征嵌入

最初的输入MPN的嵌入由其他的BP网络获得:
外貌嵌入:依赖一个CNN网络,表示为 N v e n c N_v^{enc} Nvenc。每个检测 o i ∈ O o_i∈O oiO,对应图片补丁 a i a_i ai区域。 o i o_i oi相应的节点嵌入计算: h i ( 0 ) : = N v e n c ( a i ) h_i^{(0)}:=N_v^{enc}(a_i) hi(0):=Nvenc(ai)
几何嵌入:不同时间戳 t i , t j t_i,t_j ti,tj 的两个检测 o i o_i oi o j o_j oj,考虑参数化他们的边界框(左上角坐标和长,宽) ( x i , y i , h i , w i ) (x_i,y_i,h_i,w_i) (xi,yi,hi,wi) ( x j , y j , h j , w j ) (x_j,y_j,h_j,w_j) (xj,yj,hj,wj),计算相对距离:
( 2 ( x j − x i ) h i + h j , 2 ( y j − y i ) h i + h j , log ⁡ h i h j , log ⁡ w i w j ) \left(\frac{2\left(x_{j}-x_{i}\right)}{h_{i}+h_{j}}, \frac{2\left(y_{j}-y_{i}\right)}{h_{i}+h_{j}}, \log \frac{h_{i}}{h_{j}}, \log \frac{w_{i}}{w_{j}}\right) (hi+hj2(xjxi),hi+hj2(yjyi),loghjhi,logwjwi)
将这个向量、一个时间戳距离 t j − t i t_j-t_i tjti和外貌相对距离 concat到一起喂入神经网络 N v e n c N_v^{enc} Nvenc获得初始边嵌入 h ( i , j ) ( 0 ) h_{(i,j)}^{(0)} h(i,j)(0)

训练推导

训练损失:使用MLP加上一个 s i g m o d sigmod sigmod输出单元的 N e c l a s s N_e^{class} Neclass,用以表示类别。对于每个边 ( i , j ) ∈ E (i,j)∈E (i,j)E。通过喂入 N e c l a s s N_e^{class} Neclass第l层迭代结果 ( h ( i , j ) ( l ) ) (h_{(i,j)}^{(l)}) (h(i,j)(l))计算预测 y ^ ( i , j ) ( l ) \hat y_{(i,j)}^{(l)} y^(i,j)(l)。训练时对于最后一层嵌入的预测基于真实标签 y y y使用二分类交叉熵:
L = − 1 ∣ E ∣ ∑ l = l 0 l = L ∑ ( i , j ) ∈ E w ⋅ y ( i , j ) log ⁡ ( y ^ ( i , j ) ( l ) ) + ( 1 − y ( i , j ) ) log ⁡ ( 1 − y ^ ( i , j ) ( l ) ) (10) \mathcal{L}=\frac{-1}{|E|} \sum_{l=l_{0}}^{l=L} \sum_{(i, j) \in E} w \cdot y_{(i, j)} \log \left(\hat{y}_{(i, j)}^{(l)}\right)+\left(1-y_{(i, j)}\right) \log \left(1-\hat{y}_{(i, j)}^{(l)}\right) \tag{10} L=E1l=l0l=L(i,j)Ewy(i,j)log(y^(i,j)(l))+(1y(i,j))log(1y^(i,j)(l))(10)

l 0 ∈ 1 , . . . , L l_0 ∈ {1 ,...,L} l01,...,L, w w w表示一个衡量参数,用以衡量正项和非正项边之间的不平衡。

推理:基于最终的指标变量 y ∈ [ 0 , 1 ] y∈[0,1] y[0,1]。由于时间注意的更新步骤,设置阈值 0.5 0.5 0.5的二值化也能够很好的满足公式 1 , 2 1,2 1,2的限制。最后使用一个简单的贪婪舍入方案获得一个可行的二值输出。

五、 实验

1.消融实验:



2. 基准评估

补充

1.正项非正项检测:

如果一个检测是非正项,他的输入输出流应当都为0,通过将1,2式右边替换为不等式获得:
∑ ( j , i ) ∈ E  s.t.  t i > t j y ( j , i ) ≤ y i (11) \sum_{(j, i) \in E \text { s.t. } t_{i}>t_{j}} y_{(j, i)} \leq y_{i} \tag{11} (j,i)E s.t. ti>tjy(j,i)yi(11)
∑ ( i , k ) ∈ E  s.t.  t i < t k y ( i , k ) ≤ y i (12) \sum_{(i, k) \in E \text { s.t. } t_{i}<t_{k}} y_{(i, k)} \leq y_{i} \tag{12} (i,k)E s.t. ti<tky(i,k)yi(12)
该式子可以看出当 y i = 0 y_i=0 yi=0(非正项)时候,节点i的两条边都为 0 0 0 y i = 1 y_i=1 yi=1时候,这个限制等价于公式 1 , 2 1,2 1,2

2.舍入解决方案