Video Target Tracking Based on Online Learning—TLD多目标跟踪算法
- 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多目标跟踪算法的更多相关文章
- Video Target Tracking Based on Online Learning—TLD单目标跟踪算法详解
视频目标跟踪问题分析 视频跟踪技术的主要目的是从复杂多变的的背景环境中准确提取相关的目标特征,准确地识别出跟踪目标,并且对目标的位置和姿态等信息精确地定位,为后续目标物体行为分析提供足 ...
- Video Target Tracking Based on Online Learning—深度学习在目标跟踪中的应用
摘要 近年来,深度学习方法在物体跟踪领域有不少成功应用,并逐渐在性能上超越传统方法.本文先对现有基于深度学习的目标跟踪算法进行了分类梳理,后续会分篇对各个算法进行详细描述. 看上方给出的3张图片,它们 ...
- Survey of single-target visual tracking methods based on online learning 翻译
基于在线学习的单目标跟踪算法调研 摘要 视觉跟踪在计算机视觉和机器人学领域是一个流行和有挑战的话题.由于多种场景下出现的目标外貌和复杂环境变量的改变,先进的跟踪框架就有必要采用在线学习的原理.本论文简 ...
- 论文阅读之: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 ...
- 201904Online Human Action Recognition Based on Incremental Learning of Weighted Covariance Descriptors
论文标题:Online Human Action Recognition Based on Incremental Learning of Weighted Covariance Descriptor ...
- 论文笔记之:Action-Decision Networks for Visual Tracking with Deep Reinforcement Learning
论文笔记之:Action-Decision Networks for Visual Tracking with Deep Reinforcement Learning 2017-06-06 21: ...
- 论文笔记:Visual Object Tracking based on Adaptive Siamese and Motion Estimation Network
Visual Object Tracking based on Adaptive Siamese and Motion Estimation 本文提出一种利用上一帧目标位置坐标,在本帧中找出目标可能出 ...
- 【Machine Learning】KNN算法虹膜图片识别
K-近邻算法虹膜图片识别实战 作者:白宁超 2017年1月3日18:26:33 摘要:随着机器学习和深度学习的热潮,各种图书层出不穷.然而多数是基础理论知识介绍,缺乏实现的深入理解.本系列文章是作者结 ...
- [笔记]Learning to Rank算法介绍:RankNet,LambdaRank,LambdaMart
之前的博客:http://www.cnblogs.com/bentuwuying/p/6681943.html中简单介绍了Learning to Rank的基本原理,也讲到了Learning to R ...
随机推荐
- 在windows 10下安装python
windows系统默认状态下是没有安装python的,我们需要下载并安装它. 首先检查是否安装了python 在"开始"菜单中输入cmd,然后右击选择管理员身份运行,这样就打开了一 ...
- shader 2 : use shaderToy in unity
shadertoy 原型,https://www.shadertoy.com/view/XslGRr 先说几个概念 Shader language目前有3种主流语言:基于OpenGL的GLSL(Ope ...
- php中const与define的区别
1 版本差异: const 要求php的版本>5.3.0 define 可以兼容php4,php5 等版本 2 定义的位置区别: const关键字定义的常量是在编译时定义的,因此const关键字 ...
- Django学习日记02_项目环境
创建一个工程: django-admin.py startproject mySite 将会产生以下文件: mySite/ manage.py mySite/ __init_ ...
- 适合小白/外行的git与github最基础最浅显教程
首先声明,这是适合小白/外行/初学者/学生看的最基础最简单的git与github教程,已经能使用svn,git等工具的朋友请不要看这篇文章来浪费时间了. 想进一步学习git的,推荐去廖雪峰博客学习. ...
- Vue-cli 创建的项目如何跨域请求
感谢BeArchitect的技术支持 问题描述: 使用 Vue-cli 创建的项目,开发地址是 localhost:8023,需要访问 localhost:9000 上的接口 分析原因: 不同域名之间 ...
- 计算机基础理论知识梳理篇(三):VLAN与VLAN网卡相关概念
VLAN(Virtual Local Area Network) 虚拟局域网(VLAN,802.1Q)是一组逻辑上的设备和用户,这些设备和用户并不受物理位置的限制,可以根据功能.部门及应用等因素将它们 ...
- React学习之路(二)
状态(state) 状态就是组件描述某种显示情况的数据,由组件自己设置和更改,也就是所组件自己维护,目的就是为了在不同状态下使组件的显示不同 在组件中只能通过getInitialState的钩子函数来 ...
- Micro Templating源码分析
关于模板,写页面的人们其实一直在用,asp.net , jsp , php, nodejs等等都有他的存在,当然那是服务端的模板. 前端模板,作为前端人员肯定是多少有接触的,Handlebars.js ...
- 【练习】jQuery
作业要求: 参考下图,点击展示不同内容. 例: <!DOCTYPE html> <html lang="en"> <head> <meta ...