TLD(Tracking-Learning-Detection)学习笔记(六)

2014年11月16日

Learning——学习模块

正如之前一篇博文所说的,学习模块是整个TLD算法的核心部分,只有完全理解这个模块,才能掌握TLD的精髓。

3.对于学习模块,它是整个TLD系统的“大脑”,是核心部分。在得到跟踪模块以及检测模块提供的样本之后,它要对这两种样本进行一种“取舍”(这里用到的是一种PN-Learning学习方法),再把得到的结果提供给检测模块。可以说,跟踪与检测模块提供的样本是可以互相修复互相纠正的,以达到错误率最小的效果。

PN-Learning

这里的学习模块主要用到一种“PN学习”(PN learning)的方法。在这里推荐一篇博文:再谈PN学习,感觉讲的还是不错的。

PN学习即PN learning, P指代Positive Constraint,也称之为P-expert或者growing event,N指代Negative Constraint,也称之为N-expert或者pruning event。

P-expert的作用是发现目标的新的外观(形变),并以此来增加正样本的数量,从而使得检测模块更具鲁棒性;N-expert的作用是生成负的训练样本。N-expert的前提假设是,(被跟踪的)前景目标仅可能出现在视频帧中的一个位置,因此,如果前景目标的位置是确定的,那么其周围必然是负样例。

TLD模块中的PN学习作用是通过对视频序列的在线处理来逐步改善检测模块(TLD中的Detection)的性能。对视频中的每一帧而言,我们希望评估检测模块在当前帧中的误检,并以此来更新目标模型,从而使得在以后的视频帧处理过程中避免类似的错误再次发生。PN学习的关键在于两种类型的“专家(experts)”:P-experts检查那些被检测模块错误分类为正样本(前景目标)的数据;N-experts检查哪些被检测模块错误分类为负样本(背景)的数据;需要提醒的是,无论P-experts还是N-experts都会产生一定的偏差。那么,如果用这些存在偏差的数据来更新检测模块(目标模型),是否会造成检测模型的性能恶化呢?作者经过研究发现,尽管存在误差,在一定条件下,误差是允许的,并且检测模块的性能会因此得到改善。

PN学习包含四个部分:(1)一个待学习的分类器;(2)训练样本集–一些已知类别标签的样本;(3)监督学习–一种从训练样本集中训练分类器的方法;(4)P-N experts–在学习过程中用于产生正(训练)样本和负(训练)样本的表达函数;这四个部分之间的关系如下图所示:

首先根据一些已有类别标记的样本,借助监督学习方法来训练,从而得到一个初始分类器。之后,通过迭代学习,利用上一次迭代得到的分类器对所有的未赋予标签的样本数据进行分类,而P-N experts则找出那些错误分类的样本,并依此来对训练样本集做出修正,使得下一次迭代训练之后得到的分类器的性能有所改善。P-experts将那些被分类器标记为负样本,但根据结构性约束条件应该为正样本的那些样本赋予“正”的标签,并添加到训练样本集中;而N-experts则将那些被分类器标记为正样本,但根据结构性约束条件应该为负样本的那些样本赋予“负”的标签,并添加到训练样本集当中;这也就意味着,P-experts增加了分类器的鲁棒性,而N-experts则增加了分类器的判别能力。

下面我们就举例来说明PN学习的运行机制:假设存在三个连续的视频帧如下所示,每个视频帧之上都有若干个扫描窗口如(a)所示:

每一个扫描窗口就表示一个图像片(image patch),图像片的类别标签用(b)(c)中的彩色圆点来表示。检测模块对每个图像片的类别赋值过程是彼此独立的,因此,N个扫描窗口就存在个类别标签的组合。而(b)则显示了其中一种可能的类别标签形式,这种类别标签标明,待检测目标在一个视频帧中可能同时出现在好几个区域,并且,待检测目标在相邻视频帧之间的运动没有连续性(例如(b)中最前面的图像中右上角的红色圆点在后面的两个图像中均没有出现),显然,这种类别标签形式是错误的。相反,(c)所示的类别标签形式则显示,每个视频帧中,目标只可能出现在一个区域,并且,相邻视频帧之间检测到的目标区域是连续了,构成了一个目标的运动轨迹。这种性质,我们称之为“结构性”的。PN学习的关键就是找到这种结构性的数据,从而来判别检测模块所产生的错误标签

刚才的例子表明:P-experts寻找视频序列中的时域上的结构性特征,并且假设目标是沿着轨迹线移动的,即,相邻帧之间的移动很小,且存在一定的相关性。P-experts记录目标在上一帧中的位置,并根据帧与帧之间的跟踪算法(这里采用的是LK光流法)来预测目标在当前帧中的位置。如果检测模块将跟踪算法预测到的目标在当前帧中的位置标记为负标签,那么P-experts就产生一个正的训练样本;N-experts寻找视频序列中的空间域上的结构性特征,并且假设目标在一个视频帧中只可能出现在一个位置。N-experts对检测模块在当前帧中的所有输出结果以及跟踪模块的输出结果进行分析,并找到具有最大可能性的那个区域。当前帧中所有目标可能出现的区域当中,如果某个区域同最大可能性区域之间没有重叠,就将其认定为负样本。另外,具有最大可能性的那个区域,被用于重新初始化跟踪模块。

下面,再给出一个例子来说明情况:

上图所示为三个连续的视频帧,PN学习需要处理的是t时刻那个黄色框所在区域的那个小车。跟踪模块在相邻帧之间给出小车的位置,从前面的分析我们知道,跟踪模块给出的区域可以被P-experts用来产生正的训练样本;但由于遮挡,在t+2时刻,P-experts产生了错误的正(训练)样本;与此同时,N-experts则找出目标最可能出现的位置(用红色的星号来标记),并且将所有其他的区域标记为负的训练样本;这里,N-experts在t+2时刻很好的修正了P-experts的错误。

未完待续

至此,TLD算法的三个模块总结暂时告一段落。之后如果有新的理解或者对代码的优化,会继续不定期更新这一系列。