淘先锋技术网

首页 1 2 3 4 5 6 7

博客:http://blog.csdn.net/qianxin_dh



       最近一段时间在学习TLD跟踪算法,通过对代码的解读以及实际运行,感觉到这个算法的跟踪效果那是十分犀利啊!真想拿它来做点小东西,满足下自己的好奇心,嘿嘿~趁着实验室有装备,我就搭建了一个小小系统,利MFC做了个界面,将TLD算法作为主要核心,实现了摄像机随着人物的移动而跟着相应摆动,当然,本人水平有限,目前效果算是一般,接下来想把这个系统接着完善下去,同时程序因为涉及到相机控制等,代码量比较大,这里就不贴出来了~~ 好啦,下面也将这段时间的学习记录下。


一.TLD概述

TLD算法将长期目标跟踪任务分解为三个模块:跟踪模块,检测模块,学习模块。

其中,跟踪模块主要负责对相邻帧间的目标进行跟踪;检测模块会找出一系列目标可能会出现的位置,并在必要时对跟踪模块进行校正(如跟踪失败时),学习模块则是对检测器的性能进行评估并更新,TLD框架如图一所示。


图一

跟踪模块:

TLD中采用了金字塔光流法,并结合跟踪错误检测算法(FB error及匹配相似度)实现对目标的跟踪任务。


检测模块(个人认为这里有很大的改进空间,比如降低候选目标窗口数量,对分类器进行精简等,最终在跟踪的准确性和实时性上找到一个balance):

TLD的检测分类器(图二所示)包括三部分:方差分类器,集合分类器,最近邻分类器。当前帧中的每一个扫描窗口依次通过上面三个分类器,全部通过才被认为含有前景目标。


图二

方差分类器:利用积分图计算每个扫描窗口的方差,方差大于某一阈值(目标图像片方差的50%)的,进入集合分类器模块。

集合分类器:集合分类器共有10棵树(基本分类器),每棵树有13个判断节点,每个判断节点经过比较得到一个二进制位0或者1,这样每棵树就对应得到一个13位的二进制码x。每个二进制码x对应于一个后验概率,那么整个集合分类器就有10个后验概率,将10个后验概率进行平均,如果大于阈值(经验值0.65),该图像片含有前景目标

最近邻分类器:计算图像片(归一化为15*15)到在线模型的相关相似度与保守相似度,若相关相似度大于某阈值(0.6),则认为含有前景目标。

综合模块综合跟踪器跟踪到的单个目标和检测器可能检测到的多个目标,然后输出保守相似度最大的一个目标。


学习模块:

TLD学习模块主要生成集合分类器和最近邻分类器所需的样本,对分类器进行训练。


二.TLD在跟踪系统中的应用说明


        首先,大家不要喷我怎么把界面设计的如此难堪(初步设计一下...)。这里我也只是简要介绍下这个界面的功能(有兴趣的朋友可以和我多多交流,大家共同进步),界面的上方是用于显示跟踪画面,也就是picture控件,界面的下方有一些按钮,分别是对摄像机的操作(如上下左右,放大缩小...),控制换面显示的开关以及跟踪算法的运行,空白处是我当时预留的位置,想加入的一些别的功能,有机会再补充吧。这些摄像机控制按钮只是一开始为了调整摄像机位置设置的,等程序开始运行后,便不再需要操作,摄像机会根据目标的位置自动摆动到相应位置,而且个人感觉速度还马马虎虎吧。