论文笔记-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}{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的更多相关文章
- 论文笔记:Fully-Convolutional Siamese Networks for Object Tracking
Fully-Convolutional Siamese Networks for Object Tracking 本文作者提出一个全卷积Siamese跟踪网络,该网络有两个分支,一个是上一帧的目标,一 ...
- Deep Reinforcement Learning for Visual Object Tracking in Videos 论文笔记
Deep Reinforcement Learning for Visual Object Tracking in Videos 论文笔记 arXiv 摘要:本文提出了一种 DRL 算法进行单目标跟踪 ...
- 论文笔记系列-Neural Network Search :A Survey
论文笔记系列-Neural Network Search :A Survey 论文 笔记 NAS automl survey review reinforcement learning Bayesia ...
- 论文笔记之:Action-Decision Networks for Visual Tracking with Deep Reinforcement Learning
论文笔记之:Action-Decision Networks for Visual Tracking with Deep Reinforcement Learning 2017-06-06 21: ...
- Motion-Based Multiple Object Tracking
kalman filter tracking... %% Motion-Based Multiple Object Tracking % This example shows how to perfo ...
- Multiple Object Tracking using K-Shortest Paths Optimization简要
参考文献:Multiple Object Tracking using K-Shortest Paths Optimization 核心步骤: 两步:一.detection 二.link detect ...
- 论文笔记: Deep Learning based Recommender System: A Survey and New Perspectives
(聊两句,突然记起来以前一个学长说的看论文要能够把论文的亮点挖掘出来,合理的进行概括23333) 传统的推荐系统方法获取的user-item关系并不能获取其中非线性以及非平凡的信息,获取非线性以及非平 ...
- 论文笔记: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 ...
- 多目标跟踪(MOT)论文随笔-POI: Multiple Object Tracking with High Performance Detection and Appearance Feature
网上已有很多关于MOT的文章,此系列仅为个人阅读随笔,便于初学者的共同成长.若希望详细了解,建议阅读原文. 本文是tracking by detection 方法进行多目标跟踪的文章,最大的特点是使用 ...
随机推荐
- git实现码云的上传和下载
上传步骤: 1.码云上新建一个项目 XXXX? ?(项目名) 2.本地创建一个文件夹E:/XXXX,然后使用git bash? ?? 3.cd 到本地文件夹中E:/XXXX? //如果是在创建的文件中 ...
- [WCF] - 使用 bat 批处理文件将 WCF 服务部署为 Windows Service
1. 添加 Windows Service 项目 2. 添加 WCF 项目引用 3. 更新 App.config 配置文件(可以从 WCF的 Web.config 拷贝过来),设置服务地址. 4. 配 ...
- Redis搭建Windows平台
安装程序下载 从官网下载安装程序. https://redis.io/download https://github.com/MicrosoftArchive/redis/releases 新地址:h ...
- java当中JDBC当中请给出一个sql server的stored procedure例子
3.sql server的stored procedure例子: import java.sql.*;public class StoredProc0 {public static void main ...
- 构建工具-Gulp 相关知识
layout: layout title: 『构建工具-Gulp』相关内容整理 date: 2017-04-26 22:15:46 tags: Gulp categories: Tools --- G ...
- a+b的问题
题目描述: 给定两个整数 a, b (a, b 均不超过 int 类型的表示范围),求出 a + b 的和. 输入描述: 每行输入两个整数 a 和 b,用空格隔开. 输出描述: a + b 的值. 样 ...
- hadoop 批量处理脚本编写
编写shell脚本就是解决批量处理 1. 在/usr/local/bin 创建脚本 并授权所有用户 chmod a+x xcall.sh xcall.sh 比如:删除/tmp/*所有文件 批量删 ...
- Git和Github的介绍、简单操作、冲突(上)
目的: 1.git与github简介 2.Git与SVN区别 3.Github 的简单使用 4.下载安装Git-20-64-bit.exe 5.Git常用命令 5.1Git命令使用场景 5. ...
- mysql优化limit
limit 1.当只需要一条数据的时候,用limit1: 2.当需要提高分页效率的时候: 如果用上面的语句分页少量数据还是可以用的,但是随着数据量越来越大,直接用limit语句查询速度就会越来越慢,降 ...
- Spring Cloud Alibaba学习笔记(12) - 使用Spring Cloud Stream 构建消息驱动微服务
什么是Spring Cloud Stream 一个用于构建消息驱动的微服务的框架 应用程序通过 inputs 或者 outputs 来与 Spring Cloud Stream 中binder 交互, ...