logo

行人跟踪技术介绍与综述大总结

作者:福怼怼2021.07.04 13:07浏览量:569

简介:简要介绍:目标跟踪的基本流程与框架、存在的挑战、相关方法以及目标跟踪最新的进展和相关论文与代码。

1 前言

1.1 目标检测与目标跟踪

1.2 行人识别与行人重识别

2 视觉目标跟踪技术

2.1 视党目标跟踪基本流程与框架

2.2 视觉目标跟踪方法

2.3 视觉目标跟踪最新进展

2.4视党目标跟踪相关论文

2.5 视觉目标跟综相关项目源码

3 总结

前言

视觉(行人)目标跟踪是计算机视觉中的一个重要研究方向,有着广泛的应用,如:视频监控,人机交互, 无人驾驶等。过去二三十年视觉目标跟踪技术取得了长足的进步,特别是最近两年利用深度学习的目标跟踪方法取得了令人满意的效果,使目标跟踪技术获得了突破性的进展。

本文旨在简要介绍:目标跟踪的基本流程与框架,目标跟踪存在的挑战,目标跟踪相关方法,以及目标跟踪最新的进展和相关论文与代码大盘点等。

1.1 目标检测与目标跟踪

行人跟踪属于目标跟踪的一个子类,即要跟踪的目标是行人。首先要区分目标检测(object detection)和目标跟踪(object tracking)的区别:

目标检测就是检测出一个图片或者一个视频中目标的位置(静态或者动态)。如深度学习中的yolo等算法。

目标追踪是给定视频中第一帧目标以及它的位置,然后跟踪这个目标,并预测它的轨迹,(如果出现一些遮挡,也可以根据轨迹来跟踪这个目标)。目标跟踪强调“跟踪”这个词,就像警察抓跟踪犯人一样,即使跟丢了,下次犯人出现也能被识别。假设使用yolo等算法检测出目标,但有时候还会出现丢帧的情况,如果用了跟踪算法,那么即使丢帧了,也可以跟踪住目标而不丢失,而且如果使用yolo,虽然给定了目标的位置,但是如果同一类有多个目标时,是很难求出它们各自的轨迹,除非使用overlab来模拟跟踪或者进行实例分割,区分同类中不同的目标)。

目标跟踪与目标检测对比的几个特点:

1)跟踪速度比检测快。当你跟踪在上一帧中检测到的对象时,你会非常了解目标的外观。你也知道在前一帧中的位置和它的运动的方向和速度。因此,在下一帧中,可以使用所有这些信息来预测下一帧中目标的位置,并对对象的预期位置进行小范围搜索,以准确定位目标。因此,在设计高效的系统时,通常在每n帧上运行对象检测,而在其间的n-1帧中采用跟踪算法。

2)当检测失败时跟踪来帮助。

3)跟踪保留身份信息。目标检测的输出是包含目标的矩形数组。 但是,没有标识附加到对象。

1.2 行人识别与行人重识别

行人识别和行人重识别也是容易与行人跟踪相混淆的两个名词。

行人识别可以总结为从一张图片中识别出所有的人,具体可以分为哪些是人,分别在什么地方,也就是识别和定位。我们在这一任务中的主要任务是希望区分出行人和背景,并将行人定位。这和行人目标检测基本同义。

行人重识别(Person re-identification,简称ReID)也称行人再识别,主要解决跨摄像头跨场景下行人的识别与检索。该技术能够根据行人的穿着、体态、发型等信息智能认知行人。主要用于行人检测、行人分割、骨架关键点检测及姿态识别、行人跟踪、动作识别、行人属性结构化等。是人脸识别之后一个重要的研究方向。

(行人重识别详细介绍)https://blog.csdn.net/ctwy291314/article/details/83618646

2 视觉目标跟踪技术

Face++行人目标跟踪视频展示:

https://www.bilibili.com/video/av30052632?from=search&seid=9397452108064433921

2.1 视觉目标跟踪基本流程与框架

视觉目标(单目标)跟踪任务就是在给定某视频序列初始帧的目标大小与位置的情况下,预测后续帧中该目标的大小与位置。这一基本任务流程可以按如下的框架划分:

输入初始化目标框,在下一帧中产生众多候选框(Motion Model),提取这些候选框的特征(Feature Extractor),然后对这些候选框评分(Observation Model),最后在这些评分中找一个得分最高的候选框作为预测的目标(Prediction A),或者对多个预测值进行融合(Ensemble)得到更优的预测目标。

根据如上的框架,我们可以把目标跟踪划分为5项主要的研究内容. (1)运动模型:如何产生众多的候选样本。(2)特征提取:利用何种特征表示目标。(3)观测模型:如何为众多候选样本进行评分。(4)模型更新:如何更新观测模型使其适应目标的变化。(5)集成方法:如何融合多个决策获得一个更优的决策结果。下面分别简要介绍这5项研究内容。

运动模型(Motion Model):旨在描述帧与帧目标运动状态之间的关系,显式或隐式地在视频帧中预测目标图像区域,并给出一组可能的候选区域。生成候选样本的速度与质量直接决定了跟踪系统表现的优劣。常用的有:粒子滤波(Particle Filter)和滑动窗口(Sliding Window)。粒子滤波是一种序贯贝叶斯推断方法,通过递归的方式推断目标的隐含状态。而滑动窗口是一种穷举搜索方法,它列出目标附近的所有可能的样本作为候选样本。此外还有均值漂移(Mean shift)和粒子滤波( Particle Filtering) 等。

特征提取(Feature Extractor): 鉴别性的特征表示是目标跟踪的关键之一。常用的特征被分为两种类型:手工设计的特征(Hand-crafted feature)和深度特征(Deep feature)。常用的手工设计的特征有灰度特征(Gray),方向梯度直方图(HOG),哈尔特征(Haar-like),尺度不变特征(SIFT)等。与人为设计的特征不同,深度特征是通过大量的训练样本学习出来的特征,它比手工设计的特征更具有鉴别性。因此,利用深度特征的跟踪方法通常很轻松就能获得一个不错的效果。

观测模型(Observation Model):大多数的跟踪方法主要集中在这一块的设计上。根据不同的思路,观测模型可分为两类:生成式模型(Generative Model)和判别式模型(Discriminative Model)。生成式模型通过在线学习方式建立目标模型,然后使用模型搜索重建误差最小的图像区域,完成目标定位,这一过程可以视为模板匹配。这一类方法没有考虑目标的背景信息,图像信息没有得到较好的应用。通俗点讲就是在当前帧对目标区域建模,下一帧寻找与模型最相似的区域就是预测位置,比较著名的有卡尔曼滤波,粒子滤波,mean-shift等。常用的理论方法包括:子空间,稀疏表示,字典学习等。而判别式模型通过训练一个分类器去区分目标与背景,选择置信度最高的候选样本作为预测结果。判别式方法已经成为目标跟踪中的主流方法,因为有大量的机器学习方法可以利用。分类器采用机器学习,训练中用到了背景信息,这样分类器就能专注区分前景和背景,所以判别类方法普遍都比生成类好。常用的理论方法包括:逻辑回归,岭回归,支持向量机,多示例学习,相关滤波等。

模型更新(Model Update): 模型更新主要是更新观测模型,以适应目标表观的变化,防止跟踪过程发生漂移。模型更新没有一个统一的标准,通常认为目标的表观连续变化,所以常常会每一帧都更新一次模型。但也有人认为目标过去的表观对跟踪很重要,连续更新可能会丢失过去的表观信息,引入过多的噪音,因此利用长短期更新相结合的方式来解决这一问题。

集成方法(Ensemble Method): 集成方法有利于提高模型的预测精度,也常常被视为一种提高跟踪准确率的有效手段。可以把集成方法笼统的划分为两类:在多个预测结果中选一个最好的,或是利用所有的预测加权平均。

视觉目标跟踪面临的挑战

视觉运动目标跟踪是一个极具挑战性的任务,因为对于运动目标而言,其运动的场景非常复杂并且经常发生变化,或是目标本身也会不断变化。那么如何在复杂场景中识别并跟踪不断变化的目标就成为一个挑战性的任务。如下图我们列出了目标跟踪中几个主要的挑战因素:

遮挡(Occlusion)是目标跟踪中最常见的挑战因素之一,遮挡又分为部分遮挡(Partial Occlusion)和完全遮挡(Full Occlusion)。解决部分遮挡通常有两种思路:(1)利用检测机制判断目标是否被遮挡,从而决定是否更新模板,保证模板对遮挡的鲁棒性。(2)把目标分成多个块,利用没有被遮挡的块进行有效的跟踪。对于目标被完全遮挡的情况,当前也并没有有效的方法能够完全解决。

形变(Deformation)也是目标跟踪中的一大难题,目标表观的不断变化,通常导致跟踪发生漂移(Drift)。解决漂移问题常用的方法是更新目标的表观模型,使其适应表观的变化,那么模型更新方法则成为了关键。什么时候更新,更新的频率多大是模型更新需要关注的问题。

背景杂斑(Background Clutter)指得是要跟踪的目标周围有非常相似的目标对跟踪造成了干扰。解决这类问题常用的手段是利用目标的运动信息,预测运动的大致轨迹,防止跟踪器跟踪到相似的其他目标上,或是利用目标周围的大量样本框对分类器进行更新训练,提高分类器对背景与目标的辨别能力。

尺度变换(Scale Variation)是目标在运动过程中的由远及近或由近及远而产生的尺度大小变化的现象。预测目标框的大小也是目标跟踪中的一项挑战,如何又快又准确的预测出目标的尺度变化系数直接影响了跟踪的准确率。通常的做法有:在运动模型产生候选样本的时候,生成大量尺度大小不一的候选框,或是在多个不同尺度目标上进行目标跟踪,产生多个预测结果,选择其中最优的作为最后的预测目标。

当然,除了上述几个常见的挑战外,还有一些其他的挑战性因素:光照(illumination),低分辨率(Low Resolution),运动模糊(Motion Blur),快速运动(Fast Motion),超出视野(Out of View),旋转(Rotation)等。所有的这些挑战因数共同决定了目标跟踪是一项极为复杂的任务。更多信息请参考http://cvlab.hanyang.ac.kr/tracker_benchmark/datasets.html

2.2 视觉目标跟踪方法

视觉目标跟踪方法根据观测模型是生成式模型或判别式模型可以被分为生成式方法(Generative Method)和判别式方法(Discriminative Method)。前几年最火的生成式跟踪方法大概是稀疏编码(Sparse Coding)了, 而近来判别式跟踪方法逐渐占据了主流地位,以相关滤波(Correlation Filter)和深度学习(Deep Learning)为代表的判别式方法也取得了令人满意的效果。下面我们分别简要概括这几种方法的大体思想和其中的一些具体的跟踪方法。

稀疏表示(Sparse Representation):给定一组过完备字典,将输入信号用这组过完备字典线性表示,对线性表示的系数做一个稀疏性的约束(即使得系数向量的分量尽可能多的为0),那么这一过程就称为稀疏表示。基于稀疏表示的目标跟踪方法则将跟踪问题转化为稀疏逼近问题来求解。如稀疏跟踪的开山之作L1Tracker, 认为候选样本可以被稀疏的表示通过目标模板和琐碎模板,而一个好的候选样本应该拥有更稀疏的系数向量。稀疏性可通过解决一个L1正则化的最小二乘优化问题获得,最后将与目标模板拥有最小重构误差的候选样本作为跟踪结果。L1Tracker中利用琐碎模板处理遮挡,利用对稀疏系数的非负约束解决背景杂斑问题。随后在L1Tracker基础上的改进则有很多,比较有代表性的有ALSA,L1APG等。

相关滤波(Correlation Filter):相关滤波源于信号处理领域,相关性用于表示两个信号之间的相似程度,通常用卷积表示相关操作。那么基于相关滤波的跟踪方法的基本思想就是,寻找一个滤波模板,让下一帧的图像与我们的滤波模板做卷积操作,响应最大的区域则是预测的目标。根据这一思想先后提出了大量的基于相关滤波的方法,如最早的平方误差最小输出和(MOSSE)利用的就是最朴素的相关滤波思想的跟踪方法。随后基于MOSSE有了很多相关的改进,如引入核方法(Kernel Method)的CSK,KCF等都取得了很好的效果,特别是利用循环矩阵计算的KCF,跟踪速度惊人。在KCF的基础上又发展了一系列的方法用于处理各种挑战。如:DSST可以处理尺度变化,基于分块的(Reliable Patches)相关滤波方法可处理遮挡等。但是所有上述的基于相关滤波的方法都受到边界效应(Boundary Effect)的影响。为了克服这个问题SRDCF应运而生,SRDCF利用空间正则化惩罚了相关滤波系数获得了可与深度学习跟踪方法相比的结果。

深度学习(CNN-Based):因为深度特征对目标拥有强大的表示能力,深度学习在计算机视觉的其他领域,如:检测,人脸识别中已经展现出巨大的潜力。但早前两年,深度学习在目标跟踪领域的应用并不顺利,因为目标跟踪任务的特殊性,只有初始帧的图片数据可以利用,因此缺乏大量的数据供神经网络学习。只到研究人员把在分类图像数据集上训练的卷积神经网络迁移到目标跟踪中来,基于深度学习的目标跟踪方法才得到充分的发展。如:CNN-SVM利用在ImageNet分类数据集上训练的卷积神经网络提取目标的特征,再利用传统的SVM方法做跟踪。与CNN-SVM提取最后一层的深度特征不同的是,FCN利用了目标的两个卷积层的特征构造了可以选择特征图的网络,这种方法比只利用最后的全连接层的CNN-SVM效果有些许的提升。随后HCF, HDT等方法则更加充分的利用了卷积神经网络各层的卷积特征,这些方法在相关滤波的基础上结合多层次卷积特征进一步的提升了跟踪效果。然而,跟踪任务与分类任务始终是不同的,分类任务关心的是区分类间差异,忽视类内的区别。目标跟踪任务关心的则是区分特定目标与背景,抑制同类目标。两个任务有着本质的区别,因此在分类数据集上预训练的网络可能并不完全适用于目标跟踪任务。于是,Nam设计了一个专门在跟踪视频序列上训练的多域(Multi-Domain)卷积神经网络(MDNet),结果取得了VOT2015比赛的第一名。但是MDNet在标准集上进行训练多少有一点过拟合的嫌疑,于是VOT2016比赛中禁止在标准跟踪数据集上进行训练。2016年SRDCF的作者继续发力,也利用了卷积神经网络提取目标特征然后结合相关滤波提出了C-COT的跟踪方法取得了VOT2016的冠军。

2.3 视觉目标跟踪最新进展

目标跟踪最近几年发展迅速,以基于相关滤波(Correlation Filter)和卷积神经网络(CNN)的跟踪方法已经占据了目标跟踪的大半江山。如下图给出的2014-2016年以来表现排名靠前的一些跟踪方法。

可以看到前三名的方法不是基于相关滤波的方法就是基于卷积神经网络的方法,或是两者结合的方法。比如ECCV2016的C-COT就是在相关滤波的基础上结合卷积神经网络的杰作。下图给出这些方法在标准跟踪数据集OTB2013上的跟踪结果:

可以看到基于卷积神经网络的方法取得了惊人的突破,以MDNet为首的CNN方法较2014年的第一名DSST在成功率上有15个百分点的提升。预计未来两年相关滤波和卷积神经网络将仍然会是目标跟踪领域的主角。

2.4视觉目标跟踪相关论文

截至2018年VOT论文综述:

  1. 目标跟踪论文、项目、源码大全集:https://github.com/foolwood/benchmark_results
  2. 多目标跟踪论文、源码https://github.com/SpyderXu/multi-object-tracking-paper-list
  3. 目标跟踪论文简要解读:https://blog.csdn.net/zhu_hongji/article/details/80515031
  4. 单目标跟踪论文解读:https://zhuanlan.zhihu.com/p/96631118
  5. 目标跟踪论文简要解读https://www.cnblogs.com/wind-chaser/p/11346880.html
  6. 目标跟踪论文简要解读https://blog.csdn.net/qq_17783559/article/details/88666892
  7. VOT(Visual Object Track)论文解读https://www.jianshu.com/p/7bcb18084966

2.5 视觉目标跟踪相关项目源码

  1. https://github.com/Zhongdao/Towards-Realtime-MOT mot(multi-object-tracking) **
  2. https://github.com/STVIR/pysot 商汤单目标跟踪
  3. https://github.com/foolwood/DaSiamRPN DaSiamRPN
  4. https://github.com/torrvision/siamfc-tf tensorflow版SiamFC
  5. https://github.com/visionml/pytracking pytorch 视觉跟踪库
  6. https://github.com/HEscop/TBCF 相关滤波方法
  7. https://github.com/foolwood/KCF

https://github.com/joaofaro/KCFcpp和 https://github.com/uoip/KCFpy KCF

  1. https://github.com/ZQPei/deep_sort_pytorch deepSort
  2. https://github.com/Qidian213/deep_sort_yolov3
  3. https://github.com/kimyoon-young/centerNet-deep-sort
  4. https://github.com/xinshuoweng/AB3DMOT 3D多对象跟踪基准”的官方Python实现
  5. https://github.com/researchmm/SiamDW SiamDW
  6. https://github.com/hyeonseobnam/MDNet MDNet
  7. https://github.com/longcw/MOTDT 通过深度学习的候选人选择和人员重新识别进行实时多人跟踪
  8. https://github.com/JunshengFu/tracking-with-Extended-Kalman-Filter使用基于传感器融合的扩展卡尔曼滤波器进行目标跟踪
  9. https://github.com/srianant/kalman_filter_multi_object_trackinghttps://github.com/kcg2015/Vehicle-Detection-and-Tracking卡尔曼滤波跟踪
  10. https://github.com/zllrunning/SiameseX.PyTorch PyTorch implementation of Siamese networks for tracking: SiamFC, SiamRPN, SiamRPN++, SiamVGG, SiamDW, SiamRPN-VGG.
  11. https://github.com/abhineet123/Deep-Learning-for-Tracking-and-Detection
  12. https://github.com/MVIG-SJTU/AlphaPose 人体姿态跟踪
  13. https://github.com/microsoft/human-pose-estimation.pytorch pose estimation
  14. https://github.com/facebookresearch/DetectAndTrack 姿态跟踪
  15. https://github.com/kylemcdonald/FaceTracker 人脸跟踪
  16. https://github.com/ucbdrive/3d-vehicle-tracking 单眼3d车辆跟踪
  17. https://github.com/andrewssobral/simple_vehicle_counting
  18. https://github.com/ChanChiChoi/awesome-Face_Recognition face recognition paper list

3 总结

本文主要介绍了目标检测、目标跟踪、行人识别、行人重识别这些术语的区别;然后详细介绍了视觉目标跟踪技术的pipeline、视觉目标跟踪面临的挑战与发展,以及论文与开源代码大盘点。

转自:https://zhuanlan.zhihu.com/p/259644385

相关文章推荐

发表评论