转自:https://blog.csdn.net/study_all/article/details/102543500
一、简介
目标跟踪是计算机视觉研究领域的热点之一,有着非常广泛的应用,如:相机的跟踪对焦、无人机的自动目标跟踪等都需要用到目标跟踪技术。此外,还有特定物体的跟踪,比如人体跟踪,交通监控系统中的车辆跟踪,人脸跟踪和智能交互系统中的手势跟踪等。
过去的几十年来,目标跟踪技术取得了长足的进步。特别是近几年,随着深度学习的目标跟踪方法的出现,获得了令人满意的效果,也涌现了越来越多的方法,这都使得目标跟踪技术取得了突破性的进展。
本文主要内容包括:目标跟踪的基本流程与框架,快速目标跟踪相关方法及其应用效果。
希望通过本文能帮助读者对目标跟踪领域有一个较为全面的认识,对其中涉及到的方法及原理有进一步的了解。
二、目标跟踪基本流程与框架
目标(单目标)跟踪任务就是在给定某视频序列初始帧的目标大小与位置的情况下,预测后续帧中该目标的大小与位置。
此基本任务大致流程可以根据框架进行如下划分:
输入初始化目标框(初始帧),在下一帧中产生众多候选框(Motion Model),提取这些候选框的特征(Feature Extractor),然后对这些候选框评分(Observation Model),最后在这些评分中找一个得分最高的候选框作为预测的目标(Prediction A),或者对多个预测值进行融合(Ensemble)得到更优的预测目标。
根据如上框架,我们可以把目标跟踪的主要研究内容归纳为5个方面:
(1)运动模型:如何产生众多的候选样本。
(2)特征提取:利用何种特征表示目标。
(3)观测模型:如何为众多候选样本进行评分。
(4)模型更新:如何更新观测模型使其适应目标的变化。
(5)集成方法:如何融合多个决策从而获得一个更优的决策结果。
下面分别简要介绍这5项研究内容:
运动模型(Motion Model): 生成候选样本的速度与质量直接决定了跟踪系统表现的优劣。常用的有两种方法:粒子滤波(Particle Filter)和滑动窗口(Sliding Window)。粒子滤波是一种序贯贝叶斯推断方法,通过递归的方式推断目标的隐含状态。而滑动窗口是一种穷举搜索方法,它列出目标附近的所有可能的样本作为候选样本。
特征提取(Feature Extractor): 鉴别性的特征表示是目标跟踪的关键之一。常用的特征被分为两种类型:手工设计的特征(Hand-crafted feature)和深度特征(Deep feature)。常用的手工设计的特征有灰度特征(Gray),方向梯度直方图(HOG),哈尔特征(Haar-like),尺度不变特征(SIFT)等。与人为设计的特征不同,深度特征是通过大量的训练样本学习出来的特征,它比手工设计的特征更具有鉴别性。因此,利用深度特征的跟踪方法通常很轻松就能获得一个不错的效果。
观测模型(Observation Model): 大多数的跟踪方法主要集中在这一块的设计上。根据不同的思路,观测模型可分为两类:生成式模型(Generative Model)和判别式模型(Discriminative Model)。生成式模型通常寻找与目标模板最相似的候选作为跟踪结果,这一过程可以视为模板匹配。常用的理论方法包括:子空间,稀疏表示,字典学习等。而判别式模型通过训练一个分类器去区分目标与背景,选择置信度最高的候选样本作为预测结果。因为有大量的机器学习方法可以利用,判别式方法已经成为目标跟踪中的主流方法。常用的理论方法包括:逻辑回归,岭回归,支持向量机,多示例学习,相关滤波等。
模型更新(Model Update): 模型更新主要是更新观测模型,以适应目标表观的变化,防止跟踪过程发生漂移。模型更新没有一个统一的标准,通常认为目标的表观连续变化,所以常常会每一帧都更新一次模型。但也有人认为目标过去的表观对跟踪很重要,连续更新可能会丢失过去的表观信息,引入过多的噪音,因此利用长短期更新相结合的方式来解决这一问题。
集成方法(Ensemble Method): 集成方法有利于提高模型的预测精度,也常常被视为一种提高跟踪准确率的有效手段。集成方法可以笼统的划分为两类:在多个预测结果中选一个最好的,或是利用所有的预测加权平均。
三、快速目标跟踪方法
模板匹配
模板匹配是目标跟踪的经典方法,它的优点有:简单准确,适用面广,抗噪性好,而且计算速度快。缺点是不能适应剧烈光照变化和目标剧烈形变。
模板匹配法,就是指在一帧图像内寻找目标模板的位置,其中和模板最像的地方就是目标。只要把全图的所有子区域和目标模板比较一下,找到最像目标模板的子区域,它就是目标的位置。如何度量子区域和目标模板的相似程度呢?最简单的办法就是计算这二者的相关系数。
相关系数(r)是一种数学距离,可以用来衡量两个向量的相似程度。它起源于余弦定理:cos(A)=(a2+c2-b2)/2bc.如果两个向量的夹角为0度(对应r=1),说明它们完全相似,如果夹角为90度(r=0),则它们完全不相似,如果夹角为180度(r = -1),则它们完全相反。把余弦定理写成向量的形式:
cos(A) = <b,c>/(|b|*|c|),
即:cos(A) = (b1c1+b2c2+… bncn)/sqrt[(b12+b22+…+bn2) (c12+c22+…+cn2)]
其中分子表示两个向量的内积,分母表示两个向量的模相乘。
在实际应用中,更常用的是去均值相关系数,它在上式的基础上还要在分子分母减去各个向量的均值:
这样,两个向量相似的部分被减掉,它们的相关性就被放大了。
假设目标模板是一个10*10的图像,它就可以被看作是一个100维的向量,每一维是一个像素点的灰度值。然后把这个向量和图像中的每一个子区域作比较,找出相关系数最大的子区域,目标的位置就找到了。
TLD
TLD算法主要由三个模块构成:追踪器(tracker),检测器(detector)和机器学习(learning)。
对于视频追踪来说,常用的方法有两种,一是使用追踪器根据物体在上一帧的位置预测它在下一帧的位置,但这样会积累误差,而且一旦物体在图像中消失,追踪器就会永久失效,即使物体再出现也无法完成追踪;另一种方法是使用检测器,对每一帧单独处理检测物体的位置,但这又需要提前对检测器离线训练,只能用来追踪事先已知的物体。
TLD是对视频中未知物体的长时间跟踪的算法。“未知物体”指的是任意的物体,在开始追踪之前不知道哪个物体是目标。“长时间跟踪”又意味着需要算法实时计算,在追踪中途物体可能会消失再出现,而且随着光照、背景的变化和由于偶尔的部分遮挡,物体在像素上体现出来的“外观”可能会发生很大的变化。
追踪器的作用是跟踪连续帧间的运动,当物体始终可见时跟踪器才会有效。追踪器根据物体在前一帧已知的位置估计在当前帧的位置,这样就会产生一条物体运动的轨迹,从这条轨迹可以为学习模块产生正样本(Tracking->Learning)。
检测器的作用是估计追踪器的误差,如果误差很大就改正追踪器的结果。检测器对每一帧图像都做全面的扫描,找到与目标物体相似的所有外观的位置,从检测产生的结果中产生正样本和负样本,交给学习模块(Detection->Learning)。算法从所有正样本中选出一个最可信的位置作为这一帧TLD的输出结果,然后用这个结果更新追踪器的起始位置(Detection->Tracking)。
学习模块根据追踪器和检测器产生的正负样本,迭代训练分类器,改善检测器的精度(Learning->Detection)。
光流法(Lucas-Kannade)
光流法的原理:利用图像序列中像素在时间域上的变化以及相邻帧之间的相关性来找到上一帧跟当前帧之间存在的对应关系,从而计算出相邻帧之间物体的运动信息。
假设一:场景中物体被跟踪的部分亮度保持不变;
假设二:运动相对于帧率是缓慢、连贯的数学表达指的是在上连续,可导;
假设三:相邻的点保持近邻δ邻域内所有像素点的速度(U,V)相等;
对于大多数30Hz摄像机,大而不连贯的运动较多,所以LK光流法在实际中的跟踪效果不好,通常一个大的窗口来捕获大的运动,但往往违背运动连贯的假设,故引入图像金字塔。
在图像金字塔的最高层计算光流,用得到的运动估计结果作为下一层金字塔的起始点,重复这个过程直到到达金字塔的最底层。这样将不满足运动假设的可能性降到最小从而实现对更快和更长的运动的跟踪。
这个算法的不足在于它不能产生一个密度很高的流向量,例如在运动的边缘和黑大的同质区域中的微小移动方面流信息会很快的褪去。它的优点在于有噪声存在的鲁棒性还是可以的。
四、快速目标跟踪方式的应用效果
- 原图像大小为640x480
- Intel(R) Xeon(R) CPU X5660 @ 2.80GHz
目标跟踪方式 |
原图像大小 |
1/2 |
1/4 |
1/6 |
模板匹配 |
40ms |
11ms |
3.8ms |
2ms |
TLD |
9ms |
4.5ms |
3.6ms |
3.5ms(效果不佳) |
光流法 |
4ms |
2.5ms |
1.8ms |
1.2ms(效果不佳) |
来源:oschina
链接:https://my.oschina.net/u/4311964/blog/4498492