作者: 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}{t-n}$, 这里不要求两幅图像连续, 时间间隔$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
    {t-n, t}$的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 作为特征,检测误差必定导致特征的不准确,从而影响性能。

论文笔记-Deep Affinity Network for Multiple Object Tracking的更多相关文章

  1. 论文笔记:Fully-Convolutional Siamese Networks for Object Tracking

    Fully-Convolutional Siamese Networks for Object Tracking 本文作者提出一个全卷积Siamese跟踪网络,该网络有两个分支,一个是上一帧的目标,一 ...

  2. Deep Reinforcement Learning for Visual Object Tracking in Videos 论文笔记

    Deep Reinforcement Learning for Visual Object Tracking in Videos 论文笔记 arXiv 摘要:本文提出了一种 DRL 算法进行单目标跟踪 ...

  3. 论文笔记系列-Neural Network Search :A Survey

    论文笔记系列-Neural Network Search :A Survey 论文 笔记 NAS automl survey review reinforcement learning Bayesia ...

  4. 论文笔记之:Action-Decision Networks for Visual Tracking with Deep Reinforcement Learning

    论文笔记之:Action-Decision Networks for Visual Tracking with Deep Reinforcement Learning  2017-06-06  21: ...

  5. Motion-Based Multiple Object Tracking

    kalman filter tracking... %% Motion-Based Multiple Object Tracking % This example shows how to perfo ...

  6. Multiple Object Tracking using K-Shortest Paths Optimization简要

    参考文献:Multiple Object Tracking using K-Shortest Paths Optimization 核心步骤: 两步:一.detection 二.link detect ...

  7. 论文笔记: Deep Learning based Recommender System: A Survey and New Perspectives

    (聊两句,突然记起来以前一个学长说的看论文要能够把论文的亮点挖掘出来,合理的进行概括23333) 传统的推荐系统方法获取的user-item关系并不能获取其中非线性以及非平凡的信息,获取非线性以及非平 ...

  8. 论文笔记:SiamRPN++: Evolution of Siamese Visual Tracking with Very Deep Networks

    SiamRPN++: Evolution of Siamese Visual Tracking with Very Deep Networks 2019-04-02 12:44:36 Paper:ht ...

  9. 多目标跟踪(MOT)论文随笔-POI: Multiple Object Tracking with High Performance Detection and Appearance Feature

    网上已有很多关于MOT的文章,此系列仅为个人阅读随笔,便于初学者的共同成长.若希望详细了解,建议阅读原文. 本文是tracking by detection 方法进行多目标跟踪的文章,最大的特点是使用 ...

随机推荐

  1. java war包 远程debug出现的问题解决,学会查看日志

    开启远程debug之后,8005 关闭tomcat 又启动不了了.. netstat -lnp 未发现8005接口 eclipse 内远程链接到服务器,debug 下发现服务器线程启动也存在问题.很多 ...

  2. MyBatis逆向工程生成配置 generator (生成pojo、mapper.xml、mapper.java)

    MyBatis逆向工程生成 mybatis需要程序员自己编写sql语句,mybatis官方提供逆向工程,可以针对单表自动生成mybatis执行所需要的代码(mapper.java.mapper.xml ...

  3. Word表格和文本自由互换

    未完 ...... 点击访问原文(进入后根据右侧标签,快速定位到本文)

  4. Ctex ERROR Reading

    提供一个"Ctex ERROR Reading"的处理办法 方法/步骤: 1. 再我们打开一些网上下载的文档的时候可能出现错误提示 2. 这种问题一般是文件编码的问题,我们需要选择 ...

  5. php数组指针函数

    数组指针函数有reset(),prev(),current(),next(),end(),key(),each() 其中reset(),prev(),current(),next(),end(),都是 ...

  6. zblog安装环境介绍?zblog安装需要什么环境

    最近在群里看到很的多人有在问:“安装zblog需要什么环境?”,其实这个问题在zblog官网的程序下载页面有说明,但是不太详细,那么本文的目的就是来给大家介绍下zblog安装环境详细说明. zblog ...

  7. Hbuilder环境下配置php

    XAMPP的安装 https://blog.csdn.net/qing666888/article/details/81914389 安装并配置好Xampp后,在Hbuilder中下载php插件,工具 ...

  8. Django基础之django分页

    一.Django的内置分页器(paginator) view from django.shortcuts import render,HttpResponse # Create your views ...

  9. 二维码制作分享-Python

    分享一个简单快捷的二维码制作,Python实现. 1.安装准备 已安装的Python+Pycharm的计算机.本人win7+Python3.6+Pycharm 2.库包下载安装 Python二维码制作 ...

  10. windows下使用 fdfs_client 上传文件(转)

    https://www.cnblogs.com/kindleheart/p/10134502.html 注意:client = Fdfs_client(r"绝对路径"),一定要是绝 ...