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