• TLD算法回顾

TLD(Tracking-Learning-Detection)是英国萨里大学的一个捷克籍博士生Zdenek Kalal在其攻读博士学位期间提出的一种新的单目标长时间(long term tracking)跟踪算法。该算法与传统跟踪算法的显著区别在于将传统的跟踪算法和传统的检测算法相结合来解决被跟踪目标在被跟踪过程中发生的形变、部分遮挡等问题。同时,通过一种改进的在线学习机制不断更新跟踪模块的“显著特征点”和检测模块的目标模型及相关参数,从而使得跟踪效果更加稳定、鲁棒、可靠。

TLD算法详细描述参见:http://www.cnblogs.com/liuyihai/p/8306419.html

  • 基于TLD的多目标跟踪框架

现实的场景中,对于一个拍摄的视频序列,只跟踪视频序列的一个目标越来越不能满足实际需求。  因此,探讨TLD算法在多目标跟踪中的应用研究很有必要。与单目标跟踪相比, 多目标跟踪的整体流程依然是跟踪、检测、学习和综合输出,唯一的区别是随时可以添加新的跟踪目标。 基于以上分析,多目标跟踪算法总过程如下图所示。

上图整个框架实现过程如下:(1)读入视频序列。(2) 用鼠标标定或者输入矩形框参数的形式定位跟踪的目标框(就是画一个矩形框)。(3)初始化参数,生成样本。样本用来得到检测模块的样本库。(4) 跟踪的目标框分别进入跟踪模块和检测模块, 通过相关条件判断在下一帧是否存在跟踪到目标。(5)通过学习模块反馈作用检测模块,更新检测模块的样本库。并用检测模块对跟踪模块进行更新。(6)对于每一帧跟踪模块和检测模块的结果在综合模块中进行处理输出定位下一帧中目标出现的位置方位。(7)如果在执行的过程中,添加新的目标,则重复上述过程,依次处理每一个跟踪目标,这样就实现了多个目标的跟踪。

  • TLD多目标跟踪原理详解

-----------------------------------------------------多目标跟踪模块---------------------------------------------

跟踪单个目标只需要四个参数(横坐标,纵坐标,长度,宽度)就能确定被跟踪目标的信息位置。但是跟踪多个目标时候,需要对不同目标加以区分, 所以目标矩形框的数据结构略作改变, 在以前的数据结构中添加一个序号用来表示不同的目标,这样用五个参数就可以很好地区分多个目标。如下图所示。

存在多个目标时,同一帧图像中同时存在多个目标要被跟踪,多个目标是以结构体数组的形式存放的。这时候跟踪模块需要使用LK中值流法(方法原理同TLD单目标跟踪)以循环的方式反复跟踪结构体数组中的每个目标,直到所有目标被跟踪完毕。

-----------------------------------------------------多目标检测模块---------------------------------------------

目标检测模块也是让待测的滑动矩形框依次通过方差分类器、集合分类器和最近邻分类器,过滤掉不满足条件的滑动矩形框,找出最近似的矩形框。

多目标时滑动窗口的形成过程

对于单目标 TLD 算法,滑动窗口是这样产生的。以跟踪目标框在视频中的长宽为基数, 以一定尺度比例缩放; 每缩放一次遍历一次整个图像片,最终得到大量的滑动窗口。 每一个目标框为基数产生的滑动窗口都达到了几万个,每一帧图像多要产生滑动窗口。如果同时有多个目标,也按照这种方式分别产生各自跟踪窗口的滑动矩形框,数量将成倍增加,并且在后面检测这些窗口的时候处理速度也非常缓慢。这就导致不能用简单的循环重复实现TLD算法检测模块对多目标的检测改进。 当有多个目标产生滑动矩形框时,滑动窗口成倍增加的主要原因是不同尺寸生成的滑动窗口不一致所致。 为了减少生成滑动窗口的数量,在视频序列中跟踪多个目标的时,让标定的跟踪目标矩形框间长宽比固定,这样生成的滑动窗口是与初始目标框成比例缩放的。 那么处理每一帧视频时,不同的跟踪目标只需要生成一次滑动窗口便可。

宽度和长度归一化过程具体如下:

a)计算出第一个被跟踪的目标框的宽度和长度的比率,如下式所示,w0 表示第一个目标框的宽度, h0 表示第一个目标框的高度, p 表示宽度和长度比的值。

b)那么对于第n(n=2,3,...,N)个被跟踪的目标框,我们令其宽度保持不变,可以通过下式计算出第n个被跟踪的目标框的归一化高度.

下图给出了新添加目标后(蓝色目标),进行归一化处理后的跟踪过程:

综上所述,当视频序列要添加新的目标的时(新目标鼠标框定的目标与第一个目标的长宽比一般不一致),根据第一个目标框的长宽比归一化处理新添加的目标,这样新添加的目标与初始的目标长宽比一致只是大小不一样。这样跟踪多个目标也只需要生成一组滑动窗口即可,计算量大大降低。

多目标时的方差滤波过程

方差分类器筛选滑动窗口的依据是方差阈值,大于该阈值则通过方差分类器,小于该阈值丢弃。图像中有多个目标时,采取如下策略确定方差阈值大小:如果只跟踪一个目标,就得到该目标的方差,然后让该目标框方差大小的一半作为方差分类器的阈值;如果存在多个目标的时候,就选择最小 跟踪目标框方差的一半作为方差分类器的阈值。通过上述分析得知,如果同时跟踪的目标越多,并且多个目标最大方差与最小的方差相差很大的时, 方差分类器筛选出来的滑动窗口数量较多。反之,多个目标框方差较为接近的时候,方差分类器筛选出来的滑动窗口数量相对较少。

多目标时的集合分类器过程
        因此, 多目标集合分类器主要完成两项工作,其一, 进一步过滤掉不符合条件的待测滑动窗口,其二,对于筛选出来窗口进行分类,使得不同滑动窗口属于不同的跟踪目标。 随机森林有良好的特性, 多目标集合分类器依然基于随机森林。在集合分类器中,每增加一个新的目标,就以该目标框长度、 宽度、编号和方差参数条件来进行仿射变换等生成正样本。由于每一个目标框都是带有编号的,这样正样本通过随机森林时,训练出来的结果都带有编号的, 以区分其属于不同的目标。另一个方面,上一步待测的滑动矩形框也会通过随机森林, 通过随机森林也会得到 2bitBP 编码的特征码,根据特征码与上述训练出来的库进行对比,如果在库中比对,比对的结果满足阈值条件,则认为含有前景目标,予以保留。样本库中的样本都是根据不同目标有编号的,这样比对成功的滑动窗口就可以编号。否
则丢弃。  从上述过程中可以看出,一个待测窗口开始进入集合分类器的时候,是没有加以区分的,通过集合分类器后,被保留下来的滑动窗口已经带有特定编号了,并且该编号与跟踪目标框的编号是一致的。多个待测窗口通过该集合分类器后,被筛选出来的滑动窗口已经被标有不同的编号了,从而达到过滤和分类的目的。 当然,同时跟踪多个目标时,一个待测窗口可能同时被打上多个不同编号,但他们之间并不矛盾。
        多目标时的最近邻分类器过程


        对于多个目标,最近邻分类器主要完成两个功能。其一是,将跟踪模块跟踪到的图像片与上一帧的图像片进行匹配比对,若相似度大于指定阈值则认为。最终跟踪模块跟踪的结果成功。其二是,将通过集合分类器的滑动窗口与各自的的图像片进行比对,其相似度大于一定的阈值则认为,滑动窗口时该矩形框的最终检测窗口。


-----------------------------------------------------多目标学习模块---------------------------------------------
        传统的 TLD 算法,学习模块分为在线模型和 P-N 学习模块。因为在实验中,在上述多目标最近邻分类器已经充当了在线模型的作用,故多目标学习模块主要完成两部分的内容。其一是,最近邻样本库的训练;其二是,集合分类器的训练。扩展的多目标最近邻分类器充当了与在线模型类似的功能,故对于多个目标学习模块只需要训练更新集合分类器和最近邻分类器的总样本库。对于集合分类器中正样本产生是在添加目标的时产生的。最近邻分类器中的正样本库由各自在上一帧中跟踪到的目标加上编号生成的,负样本只有一个库,是与被跟踪目标相似度都小的图像片组成的样本。 正样本和负样本的产生来源于两部分。其一,每增加一个目标,会在样本库中添加属于该的目标的正样本和更新负样本库。其二, 每一次检测模块最终的得到的滑动窗口也会作为新的样本存入各自样本库中, 并更新负样本。 学习样本库如下图所示。

-----------------------------------------------------多目标综合模块---------------------------------------------

多目标综合模块与单目标的策略是一致的,只是这时候有多个目标,循环处理每一个目标即可。

  • TLD多目标跟踪算法源码
  • TLD多目标跟踪参考文献

[1]http://tldvision.com/pdf/tld2_spec_sheet.pdf

[2]姚沛. 基于TLD多目标跟踪算法研究

  • TLD多目标跟踪演示视频

多动静目标跟踪:http://www.miaopai.com/show/kQQI-zVHpomC-MQ7JiMaA0d1SjZeeZxpdO8ryw__.htm

无人机航拍多目标跟踪 :

  • 程序安装及运行答疑

liuyihai@126.com       liuyihai@aliyun.com

  • 博文预告

下一篇博文将详细讲述深度学习(人工智能)算法在视频目标跟踪中的应用情形-----欢迎阅读

Video Target Tracking Based on Online Learning—TLD多目标跟踪算法的更多相关文章

  1. Video Target Tracking Based on Online Learning—TLD单目标跟踪算法详解

    视频目标跟踪问题分析         视频跟踪技术的主要目的是从复杂多变的的背景环境中准确提取相关的目标特征,准确地识别出跟踪目标,并且对目标的位置和姿态等信息精确地定位,为后续目标物体行为分析提供足 ...

  2. Video Target Tracking Based on Online Learning—深度学习在目标跟踪中的应用

    摘要 近年来,深度学习方法在物体跟踪领域有不少成功应用,并逐渐在性能上超越传统方法.本文先对现有基于深度学习的目标跟踪算法进行了分类梳理,后续会分篇对各个算法进行详细描述. 看上方给出的3张图片,它们 ...

  3. Survey of single-target visual tracking methods based on online learning 翻译

    基于在线学习的单目标跟踪算法调研 摘要 视觉跟踪在计算机视觉和机器人学领域是一个流行和有挑战的话题.由于多种场景下出现的目标外貌和复杂环境变量的改变,先进的跟踪框架就有必要采用在线学习的原理.本论文简 ...

  4. 论文阅读之:Deep Meta Learning for Real-Time Visual Tracking based on Target-Specific Feature Space

    Deep Meta Learning for Real-Time Visual Tracking based on Target-Specific Feature Space  2018-01-04  ...

  5. 201904Online Human Action Recognition Based on Incremental Learning of Weighted Covariance Descriptors

    论文标题:Online Human Action Recognition Based on Incremental Learning of Weighted Covariance Descriptor ...

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

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

  7. 论文笔记:Visual Object Tracking based on Adaptive Siamese and Motion Estimation Network

    Visual Object Tracking based on Adaptive Siamese and Motion Estimation 本文提出一种利用上一帧目标位置坐标,在本帧中找出目标可能出 ...

  8. 【Machine Learning】KNN算法虹膜图片识别

    K-近邻算法虹膜图片识别实战 作者:白宁超 2017年1月3日18:26:33 摘要:随着机器学习和深度学习的热潮,各种图书层出不穷.然而多数是基础理论知识介绍,缺乏实现的深入理解.本系列文章是作者结 ...

  9. [笔记]Learning to Rank算法介绍:RankNet,LambdaRank,LambdaMart

    之前的博客:http://www.cnblogs.com/bentuwuying/p/6681943.html中简单介绍了Learning to Rank的基本原理,也讲到了Learning to R ...

随机推荐

  1. C:宏定义的一些格式(怕忘记)

    现在还没怎么用到宏定义,但以后肯定会经常用的,写下这盘,以后忘记了可以温故.首先宏定义必须写在函数之外,其作用域从宏定义命令起到源程序结束,也就是说一但定义系统就会分配内存,想让它结束用“#undef ...

  2. k-近邻算法实例

    1. 简单例子 步骤 1.1 计算已知点和被求点的距离 1.2 按距离递增排序 1.3 求出距离最近的前k个点的类别最大值作为目标分类 from numpy import * import opera ...

  3. SpringMVC底层数据传输校验的方案

    团队的项目正常运行了很久,但近期偶尔会出现BUG.目前观察到的有两种场景:一是大批量提交业务请求,二是生成批量导出文件.出错后,再执行一次就又正常了. 经过跟踪日志,发现是在Server之间进行jso ...

  4. Wamp环境搭建常见错误问题解决

    第一点.对于apache + php + mysql 的版本的正确选择 问题:网上有些教学视频已经很早了,然后很多人照着来,完全和视频里讲的一样,但是结果就是搭建不成功. 出现问题原因:三件套的版本选 ...

  5. Fragment生命周期及实现点击导航图片切换fragment,Demo

    PS:Fragment简介 Fragment是Android3.0后引入的一个新的API,他出现的初衷是为了适应大屏幕的平板电脑, 当然现在他仍然是平板APP UI设计的宠儿,而且我们普通手机开发也会 ...

  6. Java NIO (三) 通道(Channel)

    通道(Channel):由 java.nio.channels 包定义的,Channel 表示 IO 源与目标打开的连接.Channel 类似于传统的"流",只不过 Channel ...

  7. Java中静态代码块、构造代码块、构造函数、普通代码块

    在Java中,静态代码块.构造代码块.构造函数.普通代码块的执行顺序是一个笔试的考点,通过这篇文章希望大家能彻底了解它们之间的执行顺序. 1.静态代码块 ①.格式 在java类中(方法中不能存在静态代 ...

  8. K:java中序列化的两种方式—Serializable或Externalizable

    在java中,对一个对象进行序列化操作,其有如下两种方式: 第一种: 通过实现java.io.Serializable接口,该接口是一个标志接口,其没有任何抽象方法需要进行重写,实现了Serializ ...

  9. RBAC__权限设计__结构化表的输出(不知道怎么描述标题,反正就是设计表) 难点重点 必须掌握🤖

    RBAC 反正就是很厉害. 干就完事了,不BB 直接进入正题 本文写的就是如何设计表,以及设计表的思路. 用户和角色 : 多对多字段放在哪张表更好点? 用户找角色,角色找权限. 放在user表中,是正 ...

  10. Java笔记:开发环境

    Java开发环境 Java是由Sun Microsystems公司于1995年5月推出的Java面向对象程序设计语言和Java平台的总称.由James Gosling和同事们共同研发,并在1995年正 ...