这篇文章本意是为了自己整理使用,觉得还是整理出一些脉络了,所以公开出来。本意为了自用,因此没有及时明确标注文章的来源,侵删。感谢各位大佬的blog指点,我仅仅做了整理的工作。
干货 | 物体检测算法全概述:从传统检测方法到深度神经网络框架
检测算法通常包含三个部分,第一个是检测窗口的选择, 第二个是特征的设计,第三个是分类器的设计。
人工设计特征+浅层分类器 => 基于大数据和深度神经网络的End-To-End的物体检测框架
主要难点就是复杂光照情况(过暗、过曝)以及非刚性物体形变(如人体、手势的各种姿态)、低分辨率和模糊图片的检测场景。
2001年,一篇基于Haar+Adaboost的检测方法
纵观2012年之前的物体检测算法,可以归结为三个方面的持续优化:
暴力搜索候选框=>通过缩放一组图片尺寸,得到图像金字塔来进行多尺度搜索
**不足:**计算量很大并且效率不高
人脸具有很强的先验知识:比如人脸肤色YCbCr空间呈现很紧凑的高斯分布,通过肤色检测可以去除很大一部分候选区域。(不足:肤色提取只是用到简单的颜色先验,相似颜色干扰)
**改进:**提高精度衍生出如Selective Search或EdgeBox等proposal提取的方法,基于颜色聚类、边缘聚类的方法来快速把不是所需物体的区域给去除
Haar由于提取速度快,能够表达物体多种边缘变化信息,并且可以利用积分图快速计算
LBP更多的表达物体的纹理信息,对均匀变化的光照有很好的地适应性
HOG通过对物体边缘使用直方图统计来进行编码,特征表达能力更强
不足: 经验驱动,更新周期较长,改进: 不同的特征组合调优,从不同维度描述物体,如ACF检测,组合了20种不同的特征表达。
传统的分类器包含Adaboost、SVM、Decision Tree等。
Selective Search等Proposal窗口提取算法,对于给定的图像,不需要再使用一个滑动窗口进行图像扫描,而是采用某种方式“提取”出一些候选窗口,在获得对待检测目标可接受的召回率的前提下,候选窗口的数量可以控制在几千个或者几百个。
去掉了原始图像上的crop/warp等操作,换成了在卷积特征上的空间金字塔池化层。
为什么要引入SPP层呢?其实主要原因是CNN的全连接层要求输入图片是大小一致的,而实际中的输入图片往往大小不一,如果直接缩放到同一尺寸,很可能有的物体会充满整个图片,而有的物体可能只能占到图片的一角。
SPP对整图提取固定维度的特征,首先把图片均分成4份,每份提取相同维度的特征,再把图片均分为16份,以此类推。可以看出,无论图片大小如何,提取出来的维度数据都是一致的,这样就可以统一送至全连接层。
使用Selective Search来进行区域提取,速度依然不够快。
使用一个简化的SPP层 —— RoI(Region of Interesting) Pooling层,其操作与SPP类似,同时它的训练和测试是不再分多步,不再需要额外的硬盘来存储中间层的特征,梯度也能够通过RoI Pooling层直接传播。
Fast R-CNN还使用SVD分解全连接层的参数矩阵,压缩为两个规模小很多的全连接层。
Faster R-CNN则直接利用RPN(Region Proposal Networks)网络来计算候选框。RPN以一张任意大小的图片为输入,输出一批矩形区域,每个区域对应一个目标分数和位置信息。
如图1,Faster RCNN其实可以分为4个主要内容:
**RPN的本质是 “ 基于滑窗的无类别obejct检测器 ” **
RPN网络结构就介绍到这里,总结起来就是:
生成anchors -> softmax分类器提取positvie anchors -> bbox reg回归positive anchors -> Proposal Layer生成proposals
经典的检测方法生成检测框都非常耗时,如OpenCV adaboost使用滑动窗口+图像金字塔生成检测框;或如R-CNN使用SS(Selective Search)方法生成检测框。而Faster RCNN则抛弃了传统的滑动窗口和SS方法,直接使用RPN生成检测框,这也是Faster R-CNN的巨大优势,能极大提升检测框的生成速度。
图4 RPN网络结构
上图4展示了RPN网络的具体结构。可以看到RPN网络实际分为2条线,
上面一条通过softmax分类anchors获得positive和negative分类,
下面一条用于计算对于anchors的bounding box regression偏移量,以获得精确的proposal。
而最后的Proposal层则负责综合positive anchors和对应bounding box regression偏移量获取proposals,同时剔除太小和超出边界的proposals。其实整个网络到了Proposal Layer这里,就完成了相当于目标定位的功能。
2.2 anchors
提到RPN网络,就不能不说anchors。所谓anchors,实际上就是一组由rpn/generate_anchors.py生成的矩形。直接运行作者demo中的generate_anchors.py可以得到以下输出:
[[ -84. -40. 99. 55.]
[-176. -88. 191. 103.]
[-360. -184. 375. 199.]
[ -56. -56. 71. 71.]
[-120. -120. 135. 135.]
[-248. -248. 263. 263.]
[ -36. -80. 51. 95.]
[ -80. -168. 95. 183.]
[-168. -344. 183. 359.]]
其中每行的4个值 ( x 1 , x 2 , x 3 , x 4 ) (x_1, x_2, x_3, x_4) (x1,x2,x3,x4) 表矩形左上和右下角点坐标。9个矩形共有3种形状,长宽比为大约为 { 1 : 1 , 1 : 2 , 2 : 1 } \{1:1, 1:2, 2:1\} {1:1,1:2,2:1}三种,如图6。实际上通过anchors就引入了检测中常用到的多尺度方法。
其实RPN最终就是在原图尺度上,设置了密密麻麻的候选Anchor。然后用cnn去判断哪些Anchor是里面有目标的positive anchor,哪些是没目标的negative anchor。所以,仅仅是个二分类而已!
2.3 softmax判定positive与negative
一副MxN大小的矩阵送入Faster RCNN网络后,到RPN网络变为(M/16)x(N/16),不妨设 W=M/16,H=N/16。在进入reshape与softmax之前,先做了1x1卷积,如图9:
2.4 bounding box regression原理
如图9所示绿色框为飞机的Ground Truth(GT),红色为提取的positive anchors,即便红色的框被分类器识别为飞机,但是由于红色的框定位不准,这张图相当于没有正确的检测出飞机。所以我们希望采用一种方法对红色的框进行微调,使得positive anchors和GT更加接近。
对于训练bouding box regression网络回归分支,输入是cnn feature Φ,监督信号是Anchor与GT的差距 [公式],即训练目标是:输入 Φ的情况下使网络输出与监督信号尽可能接近。那么当bouding box regression工作时,再输入Φ时,回归网络分支的输出就是每个Anchor的平移量和变换尺度 [公式],显然即可用来修正Anchor位置了。
2.5 对proposals进行bounding box regression
2.6 Proposal Layer
Proposal Layer负责综合所有 [ d x ( A ) , d y ( A ) , d w ( A ) , d h ( A ) ] [d_x (A),d_y(A),d_w(A),d_h(A)] [dx(A),dy(A),dw(A),dh(A)]变换量和positive anchors,计算出精准的proposal,送入后续RoI Pooling Layer。
而RoI Pooling层则负责收集proposal,并计算出proposal feature maps,送入后续网络。从图2中可以看到Rol pooling层有2个输入:
Classification部分利用已经获得的proposal feature maps,通过full connect层与softmax计算每个proposal具体属于那个类别(如人,车,电视等),输出cls_prob概率向量;同时再次利用bounding box regression获得每个proposal的位置偏移量bbox_pred,用于回归更加精确的目标检测框。Classification部分网络结构如图16。
5 Faster R-CNN训练
这个问题首先需要回答为什么要有 anchor。在深度学习时代,物体检测问题通常都被建模成对一些候选区域进行分类和回归的问题。
在单阶段检测器中,这些候选区域就是通过滑窗方式产生的 anchor;
在两阶段检测器中,候选区域是 RPN 生成的 proposal,但是 RPN 本身仍然是对滑窗方式产生的 anchor 进行分类和回归。
为什么 anchor-free 能卷土重来
anchor-free 的方法能够在精度上媲美 anchor-based 的方法,最大的功劳我觉得应该归于 FPN,其次归于 Focal Loss。(内心OS:RetinaNet 赛高)。在每个位置只预测一个框的情况下,FPN 的结构对尺度起到了很好的弥补, FocalLoss 则是对中心区域的预测有很大帮助。当然把方法调 work 并不是这么容易的事情,相信有些细节会有很大影响,例如对重叠区域的处理,对回归范围的限制,如何将 target assign 给不同的 FPN level,head 是否 share 参数等等。
anchor-free 和 single anchor
上面提到的 anchor-free 和每个位置有一个正方形 anchor 在形式上可以是等价的,也就是利用 FCN 的结构对 feature map 的每个位置预测一个框(包括位置和类别)。但 anchor-free 仍然是有意义的,我们也可以称之为 anchor-prior-free。另外这两者虽然形式上等价,但是实际操作中还是有区别的。在 anchor-based 的方法中,虽然每个位置可能只有一个 anchor,但预测的对象是基于这个 anchor 来匹配的,而在 anchor-free 的方法中,通常是基于这个点来匹配的。
来源:从传统方法到深度学习,目标跟踪方法的发展概述
来源:目标跟踪综述
输入初始化目标框,在下一帧中产生众多候选框(Motion Model),提取这些候选框的特征(Feature Extractor),然后对这些候选框评分(Observation Model),最后在这些评分中找一个得分最高的候选框作为预测的目标(Prediction A),或者对多个预测值进行融合(Ensemble)得到更优的预测目标。
根据如上的框架,我们可以把目标跟踪划分为5项主要的研究内容
是一种基于概率密度分布的跟踪方法,使目标的搜索一直沿着概率梯度上升的方向,迭代收敛到概率密度分布的局部峰值上。首先 Meanshift 会对目标进行建模,比如利用目标的颜色分布来描述目标,然后计算目标在下一帧图像上的概率分布,从而迭代得到局部最密集的区域。Meanshift 适用于目标的色彩模型和背景差异比较大的情形,早期也用于人脸跟踪。由于 Meanshift 方法的快速计算,它的很多改进方法也一直适用至今。
给定一组过完备字典,将输入信号用这组过完备字典线性表示,对线性表示的系数做一个稀疏性的约束(即使得系数向量的分量尽可能多的为0),那么这一过程就称为稀疏表示。基于稀疏表示的目标跟踪方法则将跟踪问题转化为稀疏逼近问题来求解。如稀疏跟踪的开山之作L1Tracker, 认为候选样本可以被稀疏的表示通过目标模板和琐碎模板,而一个好的候选样本应该拥有更稀疏的系数向量。稀疏性可通过解决一个L1正则化的最小二乘优化问题获得,最后将与目标模板拥有最小重构误差的候选样本作为跟踪结果。L1Tracker中利用琐碎模板处理遮挡,利用对稀疏系数的非负约束解决背景杂斑问题。随后在L1Tracker基础上的改进则有很多,比较有代表性的有ALSA,L1APG等。
基于鉴别式模型的方法是指利用分类来做跟踪的方法,即把跟踪的目标作为前景,利用在线学习或离线训练的检测器来区分前景目标和背景,从而得到前景目标的位置。
2013利用结构化SVM方法在线学习的一个分类器,
2014一种改进的基于相关滤波的多尺度跟踪方法
在CSK的基础上,将输入变为11个颜色空间
在kcf上解决scale[多尺度搜索]和bounding effect[加入惩罚项]
在介绍SRDCF之前,先来分析下相关滤波有什么缺点。总体来说,相关滤波类方法对快速变形和快速运动情况的跟踪效果不好。
检测阶段,相关滤波对快速运动的目标检测比较乏力。相关滤波训练的图像块和检测的图像块大小必须是一样的,这就是说你训练了一个100乘100的滤波器,那你也只能检测100乘100的区域,如果打算通过加更大的padding来扩展检测区域,那样除了扩展了复杂度,并不会有什么好处。目标运动可能是目标自身移动,或摄像机移动,按照目标在检测区域的位置分四种情况来看:
一种方法是Martin Danelljan大牛的SRDCF Learning Spatially Regularized Correlation Filters for Visual Tracking,主要思路:既然边界效应发生在边界附近,那就忽略所有移位样本的边界部分像素,或者说边界附近滤波器系数为0:
Danelljan M, Hager G, Shahbaz Khan F, et al. Learning spatially regularized correlation filters for visual tracking [C]// ICCV. 2015.
SRDCF基于DCF,类SAMF多尺度,采用更大的检测区域(padding = 4),同时加入空域正则化,惩罚边界区域的滤波器系数,没有闭合解,采用高斯-塞德尔方法迭代优化。
另一种方法是Hamed Kiani提出的基于灰度特征MOSSE的CFLM Correlation Filters with Limited Boundaries和基于HOG特征的BACF,主要思路是采用较大尺寸检测图像块和较小尺寸滤波器来提高真实样本的比例,或者说滤波器填充0以保持和检测图像一样大,同样没有闭合解,采用ADMM迭代优化:
Kiani Galoogahi H, Sim T, Lucey S. Correlation filters with limited boundaries [C]// CVPR, 2015.
Kiani Galoogahi H, Fagg A, Lucey S. Learning Background-Aware Correlation Filters for Visual Tracking [C]// arXiv preprint arXiv:1703.04590, 2017.
其实这两个解决方案挺像的,都是用更大的检测和更新图像块,训练作用域比较小的相关滤波器,不同点是SRDCF的滤波器系数从中心到边缘平滑过渡到0,而CFLM直接用0填充滤波器边缘。
在SRDCF基础上 用CNN来提取特征[CNN第一层输出作为特征]。后续还有考虑多尺度或颜色特征(Color Name表)的方法以及用深度学习提取的特征结合KCF的方法(比如DeepSRDCF方法)等。
拓展资料:
相关滤波目标追踪二:从Mosse、csk、kcf、ddst单目标跟踪算法的一些总结
有比较详细的公式讲解
与CNN-SVM提取最后一层的深度特征不同的是,FCN利用了目标的两个卷积层的特征构造了可以选择特征图的网络,这种方法比只利用最后的全连接层的CNN-SVM效果有些许的提升。随后HCF, HDT等方法则更加充分的利用了卷积神经网络各层的卷积特征,这些方法在相关滤波的基础上结合多层次卷积特征进一步的提升了跟踪效果。
然而,跟踪任务与分类任务始终是不同的,分类任务关心的是区分类间差异,忽视类内的区别。目标跟踪任务关心的则是区分特定目标与背景,抑制同类目标。两个任务有着本质的区别,因此在分类数据集上预训练的网络可能并不完全适用于目标跟踪任务。于是,Nam设计了一个专门在跟踪视频序列上训练的==多域(Multi-Domain)==卷积神经网络(MDNet)
从网络结构中可以看出,GOTURN 先从输入的图像对中分别提取前一帧和当前帧的卷积特征,再送入三个全连接层,最后得到预测的位置变化。
其中卷积层是通过 ImageNet 预训练得到,并且在跟踪网络训练中固定这部分参数(防止过拟合),学习全连接层的参数。本质上说,GOTURN 也利用了深度学习强大的特征表达能力,但是,它建立了第一个基于深度学习的端到端输出的跟踪框架,而且在 GPU GTX680 上跟踪速度在能达到 100fps。
前面介绍的跟踪方法都是对通用目标的跟踪,没有目标的类别先验。在实际应用中,还有一个重要的跟踪是特定物体的跟踪,比如人脸跟踪、手势跟踪和人体跟踪等。特定物体的跟踪与前面介绍的方法不同,它更多地依赖对物体训练特定的检测器。
按照跟踪算法形式化表示和优化框架过程,多目标跟踪可以分为确定性推导的跟踪和概率统计最大化的跟踪算法
多目标跟踪-JPDAF, MHT 和RFS
多目标跟踪是单目标的复杂形式, 但是问题就变成了如何将多目标问题映射到单目标空间。同时还要考虑如何处理,检测丢失,噪点,初始位置不清和target的增减等问题
基本MTT问题
图中展现了一个典型的MTT问题,一个target没有被雷达检测到(missed detection),两个临近的目标叠加在了一起(unresolved),同时还有噪点(fasle alarm),这些统称为measurment的原始不确定性。
target 数目是时变的,同时每个target产生多个随机的measurement。
target 排列是无序的
方法分类
从处理measurement 和 target 的关系的角度来说明
JPDAF是单目标的PDAF在多目标问题上的延伸。
联合概率数据互联JPDA是数据关联算法之一,它的基本思想是:对应于观测数据落入跟踪门相交区域的情况,这些观测数据可能来源于多个目标。 JPDA的目的在于计算观测数据与每一个目标之间的关联概率,且认为所有的有效回波都可能源于每个特定目标,只是它们源于不同目标的概率不同。JPDA算法的优点在于它不需要任何关于目标和杂波的先验信息,是在杂波环境中对多目标进行跟踪的较好方法之一。然而当目标和量测数目增多时,JPDA算法的计算量将出现组合爆炸现象,从而造成计算复杂。
原文链接:https://blog.csdn.net/lzcy911music/article/details/81632133
基本假设
MHT会为每个候选目标建立一个潜在跟踪假设树,然后,计算每一个跟踪的概率,选出最有可能的跟踪组合。因为在计算概率时,整个跟踪假设都会被考虑到,所以MHT理论上适用于高阶信息例如长期的运动和外观模型。MHT分为两类HOMHT(hypothesis-oriented MHT)和TOMHT(track-oriented MHT)(其中TOMHT又分tree based 和non-tree based)。注 Hypothesis 是estimated target的轨迹。
多假设跟踪MHT是数据关联另一种算法。它的基本思想是:与JPDA不同的是,MHT算法保留真实目标的所有假设,并让其继续传递,从后续的观测数据中来消除当前扫描周期的不确定性。在理想条件下,MHT是处理数据关联的最优算法,它能检测出目标的终结和新目标的生成。但是当杂波密度增大时,计算复杂度成指数增长,在实际应用中,要想实现目标与测量的配对也是比较困难的。
原文链接:https://blog.csdn.net/lzcy911music/article/details/81632133
基本假设
基本步骤
小结
随之计算机性能提升,经典MHT算法在标准测试数据集上能与目前一流的方法媲美。比如在MOT2017上排第9。可见性能还是很不错的。 code。
MHT 算法一般包含假设生成、假设组合和枝剪、假设管理等过程, 指派问题发生在假设的组合与枝剪过程, 此时 MHT 需要获取当前测量值所有关联情况的假设, 而将这些假设全部列举出来是不现实的。针对这一点, 指派问题的效率矩阵提供了一种直观表示所有假设的方法, 它依赖于 MHT 中的几条基本假设: 1) 同一个测量只能关联于当前的 1个轨迹, 或成为杂波(虚警), 或成为新轨迹的起点; 2) 每个活动的轨迹在每个周期最多只关联于 1 个测量, 或被判断为漏报; 3) 所有杂波和新轨迹起点间没有关联性。
RFS就是把多目标的state看成单目标的state,这样就能通过单目标的方法解决问题,他与前两个区别在于它不需要data association。最简单的RFS,是伯努利RFS。我们也可以取RFS的泰勒一阶展开,即PHD(Probability Hypothesis Density)或者intensity function。 PHD的卷积就是估算的target数量。
计算廉价,假设更新和预测的RFS为Possion的。他的closed form形态被称为GM-PHD。对于非线性,还有SMC-PHD。CPHD就还考虑了基数分布,通过高计算复杂来获取高性能,同时假设更新和预测的RFS为cluster 的独立同分布。
前面的filter 包括multi-Bernoulli filter 都是不输出轨迹的。而GLMB是输出轨迹的。他的label包含两个部分一个是出生的时间,一个是对应的target。它是Bayes 多目标filter的第一个完全close form解。但是计算量很大和观测成立方增长
基于深度学习的多目标跟踪算法的主要任务是优化检测之间相似性或距离度量的设计。根据学习特征的不同,基于深度学习的多目标跟踪可以分为基于深度表观特征学习的多目标跟踪,基于深度相似性度量学习的多目标跟踪,以及基于深度高阶特征匹配的多目标跟踪,如图1所示。
图1 基于深度学习的多目标跟踪算法
深度表观特征: 利用图像识别任务中学习到的深度特征直接替换现有多目标跟踪算法框架中的表观特征,或者采用深度神经网络学习光流运动特征,计算运动相关性。
深度相似性度量: 学习检测之间的特征相似性,比如设计深度网络计算不同检测的距离函数,相同目标的检测距离小,不同目标的检测距离大,从而构造关于检测距离的代价函数。也可以设计二类分类代价,使相同目标的检测特征匹配类型为1,而不同目标的检测特征匹配类型为0,从而学习并输出(0,1)之间的检测匹配度。
深度高阶特征匹配: 如果考虑已有轨迹与检测之间的匹配或者轨迹之间的匹配,采用深度学习方法可以用于设计并计算轨迹之间的匹配相似度,这种方法可以认为是基于深度学习的高阶特征匹配方法。采用深度学习计算高阶特征匹配可以学习多帧表观特征的高阶匹配相似性,也可以学习运动特征的匹配相关度。
ECCV 2018 • Ji Zhu • Hua Yang • Nian Liu • Minyoung Kim • Wenjun Zhang • Ming-Hsuan Yang
jizhu1023/DMAN_MOT
https://paperswithcode.com/paper/online-multi-object-tracking-with-dual
In this paper, we propose an online Multi-Object Tracking (MOT) approach which integrates the merits of single object tracking and data association methods in a unified framework to handle noisy detections and frequent interactions between targets. Specifically, for applying single object tracking in MOT, we introduce a cost-sensitive tracking loss based on the state-of-the-art visual tracker, which encourages the model to focus on hard negative distractors during online learning. For data association, we propose Dual Matching Attention Networks (DMAN) with both spatial and temporal attention mechanisms. The spatial attention module generates dual attention maps which enable the network to focus on the matching patterns of the input image pair, while the temporal attention module adaptively allocates different levels of attention to different samples in the tracklet to suppress noisy observations. Experimental results on the MOT benchmark datasets show that the proposed algorithm performs favorably against both online and offline trackers in terms of identity-preserving metrics.
本文提出了一种在线多目标跟踪(MOT)方法,将单目标跟踪和数据关联方法的优点集成在一个统一的框架中,以处理噪声检测和目标间频繁的交互。具体来说,为了在MOT中应用单目标跟踪,我们引入了一种基于最先进的视觉跟踪器的代价敏感的跟踪损耗,这鼓励了模型在在线学习时关注硬的负干扰。对于数据关联,我们提出了同时具有时空注意机制的双重匹配注意网络(DMAN)。空间注意模块生成双注意图,使网络专注于输入图像对的匹配模式,而时间注意模块自适应地将不同层次的注意分配给轨迹let中的不同样本,以抑制噪声观测。在MOT基准数据集上的实验结果表明,该算法在身份保持方面优于在线和离线跟踪器。
代码解读
https://blog.csdn.net/wfei101/article/details/82228448
deep_sort代码(此处)处理流程解析:
按视频帧顺序处理,每一帧的处理流程如下:
Siamese对称卷积网络是一种检测匹配度量学习方法,如图2所示。以两个尺寸相同的检测图像块作为输入,输出为这两个图像块是否属于同一个目标的判别。
原始的检测特征包括正则化的LUV图像I1和I2,以及具有x,y方向分量的光流图像O1和O2,把这些图像缩放到121x53,并且叠加到一起构成10个通道的网络输入特征。卷积网络由三个卷积层(C1、C2、C3)、三个全连接层(F4、F5、F6)以及一个2元分类损失层(F7)组成,如图2所示。
学习过程采用经典的带有动量的随机梯度反向传播算法。minibatch大小选择为128,学习率初始为0.01。通过50个回合的训练,可以得到较为优化的网络参数。在Siamese网络学习完成之后,作者采用第六层全连接网络的输出作为表观特征,为了融合运动信息,作者又设计了6维运动**上下文特征:尺寸相对变化,位置相对变化,以及速度相对变化。**由于采用孪生的网络结构,使得其能够更好地利用一套参数来对相似的图像进行拟合,达到快速学习跟踪的目的。
Siamese-FC与之前提到的Siamese CNN都采用了孪生结构
图中z代表的是模板图像,算法中使用的是第一帧的groundtruth,x代表的是search region,即在后面的待跟踪帧中的候选框搜索区域,φ代表的是一种特征映射操作,将原始图像映射到特定的特征空间,文中采用的是CNN中的卷积层和pooling层,6×6×128代表z经过φ后得到的特征,是一个128通道6×6大小feature,同理,22×22×128是x经过φ后的特征,最后的*代表卷积操作,让22×22×128的feature被6×6×128的卷积核卷积,得到一个17×17×1的score map,代表着search region中各个位置与模板的相似度值。
算法本身是比较搜索区域与目标模板的相似度,最后得到搜索区域的score map。从原理上来说,**这种方法和相关性滤波的方法很相似。**都是在搜索区域中与目标模板进行逐点匹配,Siamese-FC算法将这种逐点平移匹配计算相似度的方法看成一种卷积操作,然后在卷积结果中找到相似度值最大的点,作为新的目标中心。
这是2018的一篇比较新的文章,说的是对于MOT问题,目前普遍的Tracking by Detection是将不可靠的目标检测结果与现有的跟踪器进行数据关联。而在本文中呢,作者提出:
(1)通过从检测和跟踪的输出中收集候选项来解决这个不可靠的检测问题.让检测和跟踪生成的信息能够在各类场景中达到互补的作用。
(2)为了实时应用大量候选项的最优选择。提出一种新的基于全卷积神经网络的score评分函数,利用这个函数能够共享整张图片的计算。
(2)和deepsort类似,本文也采用了利用大量人员重识别数据集进行训练,得到相应的人员重识别的外观表示,提高追踪器的识别能力
首先简单介绍MDNet, MDNet是一个纯深度的目标跟踪方法,训练时首先在每一个视频中根据目标的位置用高斯分布,均匀分布和随机分布结合的方法采样取得ROI框,提取对应图像patch;然后输入网络最后一层(全连接层)后,利用softmax输出目标和背景的概率,然后根据groundtruth计算loss反传,训练时仅最后一层FC层根据不同类的视频而不同,即仅有前面的层共享参数,目的是学习到更鲁棒的参数,检测的时候去掉最后一层,用新的FC层使用第一帧的信息finetune,MDNet的缺点是太慢,FPS~ 1。Real-TimeMDNet提升至FPS~40。
Real-Time MDNet[12]的贡献是:
1、受Mask R-CNN的启发,提出了一种自适应的ROIAlign;
2、对损失函数进行了改进,引入了一个内嵌实例的loss。
1. 自适应的ROIAlign:
如果把MDNet比作tracking版的R-CNN,那么RT-MDNet就可以近似的认为是tracking版的Mask R-CNN。
原始的MDNet像R-CNN一样,是先产生proposal,然后用proposal在原图上抠图提特征,这就会像R-CNN一样在提特征时产生很多冗余的部分,很自然的,可以像Faster那样,先提原图的特征,然后在featuremap上去找RoI,这样可以大大加快速度。但是普通的RoI Pooling会在两次量化的过程中积累很多误差,这些误差再积累到tracking的时序上,最后很可能会让模型漂掉。所以自然的又想到了用RoI Pooling的改进版,RoIAlign。
然而,当RoIAlign中的采样点间隔太大,会损失掉featuremap上一些有用的信息。比如,一个feature map grid上是5×5的点,但是RoIAlign在每个grid上只采2×2共4个点,这必然会导致featuremap上的信息被丢失。所以作者根据feature map grid的size自适应的调整网格里samplepoints的数量,来减少信息的损失。这就是自适应的ROIAlign。
2. 对损失函数的改进:
对Loss的改进如图4所示,引入了内嵌实例的loss,使不同域的目标在特征空间的距离相互更远,这样能学到更有判别力的特征。MDNet仅仅是在每一个域中区分目标和背景,而当目标们有相似的外观时就不能有效判别不同域中的目标,所以作者loss中嵌入了其他视频中的目标来使相互之间更有判别力。
除了采用解决目标重识别问题的深度网络架构学习检测匹配特征,还可以根据多目标跟踪场景的特点,设计合适的深度网络模型来学习检测匹配特征。Chu等人对行人多目标跟踪问题中跟踪算法发生漂移进行统计分析,发现不同行人发生交互时,互相遮挡是跟踪算法产生漂移的重要原因。如图5。
针对这个问题,他们提出了**时空域关注模型(STAM)**来学习遮挡情况,并判别可能出现的干扰目标。如图6所示,空间关注模型用于生成遮挡发生时的特征权重,对候选检测特征加权之后,通过分类器进行选择,得到估计的目标跟踪结果。时间关注模型加权历史样本和当前样本,从而得到加权的损失函数,用于在线更新目标模型。
图6 基于时空域关注模型
在这个模型中每个目标独立管理并更新自己的时空域关注模型,并选择候选检测进行跟踪,因此本质上,这种方法是对单目标跟踪算法在多目标跟踪中的扩展。为了区分不同的目标,关键的步骤是如何对遮挡状态进行建模和区分接近的不同目标。
空间注意模型用于对每个时刻的遮挡状态进行分析,空间关注模型如图7所示。主要分为三步。第一步是学习特征可见图(visibility map);第二步是根据特征可见图,计算空间关注图(Spatial Attention);第三步根据空间关注图加权原特征图。对生成的加权特征图进行卷积和全连接网络操作,生成二元分类器判别是否是目标自身。最后用得到分类打分,选择最优的跟踪结果。
图7 空间关注模型步骤
[5] A. Sadeghian, A. Alahi, and S. Savarese. “Tracking the untrackable: Learning to track multiple cues with long-term dependencies”, ICCV2017.
前面介绍的几个算法采用的深度网络模型都是基于卷积网络结构,由于目标跟踪是通过历史轨迹信息来判断新的目标状态,因此,设计能够记忆历史信息并根据历史信息来学习匹配相似性的网络结构,也是比较可行的算法框架。Sadeghian等人设计了基于长短期记忆循环网络模型(LSTM)的特征融合算法来学习轨迹历史信息与当前检测之间的匹配相似度。如图8,首先,轨迹目标与检测的匹配需要用到三种特征(表观特征、运动特征、交互特征)(左);然后,采用分层的LSTM模型(中)来实现三种特征的融合;最后,通过相似度的二部图匹配算法实现最终的匹配结果(右)。
对于表观特征,首先采用VGG-16卷积网络生成500维的特征,以这个特征作为LSTM的输入计算循环网络的输出,根据与当前时刻检测到的特征匹配的情况来学习分类器,并预训练这个网络,如图9所示。
图9 基于CNN模型和LSTM模型的轨迹与检测表观特征匹配架构
对于运动特征,取相对位移为基本输入特征,直接输入LSTM模型计算每个时刻的输出。对于下一时刻的检测,同样计算相对位移,通过全连接网络计算特征,得到500维的特征,并利用二元匹配分类器进行网络的预训练。整个过程如图10所示。
图10 基于LSTM模型的轨迹运动特征匹配架构
对于交互特征,取以目标中心位置周围矩形邻域内其他目标所占的相对位置映射图作为LSTM模型的输入特征,计算输出特征。同样通过全连接网络计算500维特征,进行分类训练,如图11所示。
图11 基于LSTM模型的目标交互特征匹配架构
当三个特征都计算之后拼接为完整的特征,输入到上层的LSTM网络,对输出的向量进行全连接计算,然后用于匹配分类,匹配正确为1,否则为0。