论文笔记-Deep Affinity Network for Multiple Object Tracking
作者: ShijieSun, Naveed Akhtar, HuanShengSong, Ajmal Mian, Mubarak Shah
来源: arXiv:1810.11780v1
项目:https://github.com/shijieS/SST.git
摘要
MOT方法一般包含两个步骤:目标检测和数据关联。 目标检测这两年随着深度学习的发展而迅速发展,但是数据关联绝大多数还是采用hand crafted的方式将表观特征,运动信息,空间关系,group关系等进行结合。 这篇文章则是利用深度网络实现端到端的表观特征抽取和数据关联。 Deep Affinity Network(DAN)还实现了轨迹的初始化和终止等操作。在MOT15和MOT17,以及UA-DETRAC数据集上验证了有效性。
方法介绍
-
符号定义:
- $I_t$ 视频的第$t$帧
- $t-n:t$ 从$t-n$ 到$t$的时间间隔
- 下标 $t-n, t$ 表示元素是对$I_{t-n}, I_t$计算得到
- $\mathcal{C}_t$ 第$t$帧中目标的中心坐标的集合, $\mathcal{C}_t^i$表示集合的第$i$个元素
- $F_t$第$t$中目标的特征, $F_t^i$表示$t$帧中第$i$个目标的特征
- $\Psi_{t-n,t}$是一个$N\times N\times 2M$的tensor,其中N表示目标的个数, $M$表示每个目标特征向量的维度
- $L_{t-n, t}$二值关联矩阵, 1表示关联, 0表示不关联
- $A_{t-n, t}$相似度矩阵, 由$\Psi$到$A$进而得到$L$
- $\Tau_t$ 直至第$t$帧时的轨迹的集合。轨迹使用二元组的集合表示,$\Tau_t^i={(0,1),(1,2)}$表示轨迹中的关联是第0帧的第一个目标和第1帧的第2个母校
- $\mathcal{Z}(\cdot)$算子用来计算集合或者矩阵中的元素
- $\Lambda_t\in R^{\mathcal{Z}(\Tau_{t-1})\times(\mathcal{Z}(\mathcal{C_t})+1)}$ 是一个accumulator matrix,其元素表示目标与轨迹的相似度
- $N_m$表示每一帧中最大允许的目标个数, $B$是batchsize
-
Deep Affinity Network (DAN)
如图1所示, DAN包含了两部分:特征抽取模块(feature extractor)和相似度估计模块(Affinity estimator), 整体的训练是end-to-end方式的。
DAN的输入是两幅图像$I_t, I_{t-n}$以及每幅图像中对应目标的中心点坐标$\mathcal{C}t, \mathcal{C}$, 这里不要求两幅图像连续, 时间间隔$N\in\mathbb{N}^{rand}\sim [1, N_V]$.
DAN的输出应该是两幅图像中目标的关联矩阵$L_{t-n, t}$
-
Data Preparation
- Photometric distortions: 像素值尺度变化$[0.7, 1.5]$, 转换成HSV空间, 饱和度的尺度变化$[0.7, 1.5]$, 然后再转回到RGB中,同样尺度[0.7, 1.5]的变化
- 使用图像像素均值expand frame, 尺度变化范围$[1, 1.2]$
- 图像裁剪, 尺度范围$[0.8, 1]$, 同时需要包含所有检测目标的中心点
以0.3的概率按上述方法扩展样本对。然后图像固定大小$H\times W\times 3$, 图像水平翻转的概率$0.5$
-
MOT中每一帧存活的轨迹个数不是固定的,给网络的训练带来难度。因此文章给出了一个轨迹个数的上限值$N_m=80$ , Fig.2 给出了关联矩阵的构建示意图。这里为了清晰演示,取$N_m=5$. 第1帧和第30帧图像各检测到4个目标, 总共有$5$个人。 Fig.2c展示了包含dummy row和column的中间矩阵$L_{1, 30}'$的构建, dummy row或者column用来表示dummy bounding box,从而让关联矩阵大小一致,不随目标个数变化而变化。 Fig.2d中关联矩阵进一步augmented引入新的row和column,表示新出现的目标和终止的轨迹。最终使用Fig.2d的矩阵作为训练目标。最后一行或者列中包含多个1则表示多个目标终止或出现。
-
Feature extractor
在VGG16上进行了修改, 将VGG16后面的全连接层和softmax层都换成了卷积层,这么做主要是卷积层能够更好地encoding目标的空间特征。另外这里的输入数据也更大$3\times 900 \times 900$, 从而修改后的VGG16最后一层的输出还有$56\times 56$大小。
VGG16最后输出的$56\times 56$的feature map采用表2上半部分的结构进一步缩小到$3\times 3$
然后根据Table 3,选择9个feature maps,利用目标的中心坐标$\mathcal{C}_t$在channel上选择特征,降维采用的$1\times 1$的卷积核, 特征进行concatenate。最终每一个目标形成$520$维的特征向量。对于那些dummy的目标,其特征表示为全零向量。
-
Affinity estimator
feature extractor之后每幅图像抽取的特征$F_t\in R^{N_m\times 520}$,然后将两幅图像目标的特征任意的组合就形成了tensor $\Psi\in R^{N_m\times N_m\times(520\times 2)}$, 然后在利用5层卷积核为$1\times 1$的卷积层压缩维度形成相似度矩阵$M\in R^{N_m\times N_m}$,压缩网络的模型如Table 2的下半部分所示。
这里的M对应于真实的Label,即两个目标是否关联。但是没有解释新出现的轨迹和离开的轨迹。因此文章对相似度矩阵$M$进行了扩充。为了让模型更好训练以及loss更好定义,这里$M$分开进行行列扩充,扩充的向量$\textbf{v}=\gamma \textbf{1}$ , $\gamma$是超参。
-
Network Loss
$M_1\in R^{N_m\times(N_m+1)}$列扩展矩阵每一行表示第$m$个目标关联情况或者是否结束。 $M_2\in R^{(N_m+1)\times N_m}$行扩展矩阵对应了反向匹配时第二幅图像中目标的关联情况或者是否是新出现的轨迹。对行,列扩展矩阵$M_1, M_2$分别进行行,列softmax得到$A_1, A_2$表示的是概率。
因此DAN网络损失包含4部分:前向损失,后向损失,一致性损失和组合损失
$$
\begin{aligned}
\mathcal{L}_f(L_1, A_1) &= \frac{\sum(L_1\odot(-\log A_1))}{\sum L_1}\
\mathcal{L}b(L_2, A_2) &= \frac{\sum(L_2\odot(-\log A_2))}{\sum L_2}\
\mathcal{L_c}(\widehat{A_1}, \widehat{A_2}) &= \Vert\widehat{A_1}-\widehat{A_2} \Vert_1\
\mathcal{L_a}(L_3, \widehat{A_1}, \widehat{A_2}) &= \frac{\sum (L_3\odot (-\log(max(\widehat{A_1}, \widehat{A_2}))))}{\sum (L_3)}\
\mathcal{L} &= \frac{\mathcal{L_f}+\mathcal{L_b}+\mathcal{L_a}+\mathcal{L_c}}{4}
\end{aligned}
$$
其中$L_1, L_2$都是与$M_1, M_2$对应的$L$的trimmed 版本, $\widehat{A_1}, \widehat{A_2}$是trimmed成$N_m\times N_m$的版本, $L_3$则是同时去掉了最后一行和最后一列。关于四种loss的关系阐述
We compute the final loss $L$ as the mean value of the four sub-losses. The overall cost function of our network is defined as the Expected value of the training data loss. The afore-mentioned four sub-losses are carefully designed for our problem. In the Forward and Backward losses, instead of forcing $A_q$, where $q \in{ 1, 2}$1; to approximate corresponding Lq by using a distance metric, we maximize the probabilities encoded by the relevant coefficients of $A_q$. We argue that this trategy is more sensible than minimizing a distance between a binary matrix ($L_q$) and a probability matrix ($A_q$). Similarly, given the difference between $\widehat{A_1}$ and $\widehat{A_2}$ is expected to be small, we employ $l_1$-distance instead of more commonly used $l_2$-distance for the Consistency loss. Once the DAN is trained, we use it to compute the affinity matrix for an input frame pair as $A \in R^{N_m\times (N_m+1)} = \mathcal{A}(max(\widehat{A_1},\widehat{ A_2}))$ , where $\mathcal{A}(.)$ appends the ($N_m + 1$)th column of $A_1$ to the matrix in its argument. The max operation used in our definition of the affinity matrix $A$ also justifies the maximization performed to compute the Assemble loss. Thus, the four sub-losses
defined above are complementary that result in a systematic approximation of the ground truth data association. -
**DAN deployment **
因为feature extractor部分是参数共享的,而在计算相似度矩阵的时候只是后面的affinity estimator牵涉到两两相互操作,因此,每张图片其实只进行一次feature extractor的操作,后面的affinity estimator是进行匹配。
-
Deep track association
这部分很关键。为了匹配当前帧中的目标, 将每一帧的特征矩阵$F$和对应的时间戳保存起来,然后可以计算历史frames与当前frame之间的相似度矩阵。
关联过程: 首先根据第1帧图像中的目标个数初始化轨迹集合$\Tau_0$,轨迹中每一个元素是一个二元组(时间戳, 轨迹编号),使用hungrain algorithm对accumulator matrix $\Lambda$分解去grow对应的轨迹, $\Lambda$是当前帧目标与多个历史帧目标的相似度矩阵的累积求和,注意这里累积求和是相同轨迹编号进行求和。
注意这里有个问题,匈牙利算法是一对一约束,但相似度矩阵中添加的最后一行一列不满足这个要求,于是匈牙利算法只是对去除最后一行和列的矩阵进行分解,然后再把最后的行列加进来。
Experiments
实验部分还是很充分的,在MOT15和MOT17上进行了行人跟踪的实验, 在UA-DETRAC上进行了车辆的跟踪。
结语
实验没有给出在MOT16上DPM检测器下的跟踪性能,我跑了下代码发现性能很差。在MOT17库上性能好是因为MOT17库上的检测相对准确。也就是说该方法其实对于检测的精度还是非常依赖的。因为网络的输入是目标的中心点坐标,并且在抽取特征阶段是利用中心点位置channel 作为特征,检测误差必定导致特征的不准确,从而影响性能。