APP下载

时空上下文相似性的TLD目标跟踪算法*

2018-07-13范洪博

计算机与生活 2018年7期
关键词:置信检测器成功率

张 晶,王 旭,范洪博

昆明理工大学 信息工程与自动化学院,昆明 650500

1 引言

目标跟踪是计算机视觉领域中的重点研究话题,同时在信息物理融合系统(cyber-physical systems)等工业混成实时嵌入式系统感知领域里是一个热门话题,如视频监控、机器人技术等应用领域,通过信息融合技术将不同传感器获取的目标特征信息进行融合并进行后台处理。尽管目标跟踪在现如今得到飞速的发展,但对于复杂场景,如光照变化、快速移动、遮挡、背景模糊等场景的目标跟踪仍然具有很高的挑战性。目前取得良好跟踪效果的有STC(spatio-temporal context)通过贝叶斯框架对要跟踪的目标和它的局部上下文区域的时空关系进行建模,得到目标和其周围区域低级特征的统计相关性,根据目标运动的连续性再来评估新的一帧中目标出现位置的置信图,置信最大者即为新的一帧的目标位置[1];CN(adaptive color attributes for real-time visual tracking)先将RGB空间的图像映射到CN空间,并使用PCA(principal component analysis)降维,对每一个通道均进行快速傅里叶变换(fast Fourier transform,FFT)、核映射后再进行训练,并根据下一帧的核映射求出响应图像,输出响应目标[2-4];KCF(high-speed tracking with kernelized correlation filters)对CSK(circulant structure of tracking-by-detection with kernels)[5]进行更进一步的改进,同时引进了多通道特征,可以使用比灰度特征更好的梯度颜色直方图(histogram of oriented gradient,HOG)特征或者其他颜色特征等[6-7];ODFS(real-time object tracking via online discriminative feature selection)通过沿着正样本的最陡上升梯度和负样本的最陡下降梯度来迭代优化目标函数,使得弱分类器的输出最大化并不断优化分类器[8-9]等,但是传统的跟踪器对于全遮挡或者出视角后再出现的目标无法持续跟踪。因此Kalal等人提出了TLD(tracking-learning-detection)算法[10-11],该算法将跟踪器与检测器相结合,解决了目标消失后再出现的无法重新跟踪的难题,但对于一些复杂情况,如快速移动、运动模糊等破坏了中值光流法的假设条件,TLD算法的跟踪器就失去效果,故本文将跟踪效果好的STC算法结合TLD算法来解决这个问题。而单纯地将STC算法融合到TLD算法中,存在如何判断STC跟踪失效的问题。本文提出了一种时空上下文相似性的计算方法,即输出框保守相似度计算与跟踪点运动相似判断相结合的方法。同时针对传统TLD算法在跟踪失败时对检测出的多个目标不进行输出的问题,提出了目标时空模型思想,在判定跟踪失效后保存更新的上下文时空模型,建立目标时空模型,利用这个模型对检测到的多个目标,相继求出其置信图,平均置信图最大的检测目标作为输出,随后更新目标时空模型。图1给出了本文算法在跟踪失败后,对检测出的多目标的输出结果。其中左侧为跟踪器认定失败后检测器检测到的多个目标,标志为1号、2号框,右侧是本文算法提出的目标时空模型对1号和2号求出的置信值,可观察到1号框平均置信值最大,故输出1号框作为当前目标输出。

2 TLD以及STC跟踪算法

2.1 TLD算法基本原理

TLD算法将传统的跟踪算法和传统的检测算法相结合来解决目标在被跟踪过程中发生的形变、部分遮挡等问题。同时,通过一种改进的在线学习机制不断更新跟踪模块的“显著特征点”和检测模块的目标模型及相关参数。即将跟踪任务分为三部分:

检测器,全帧采用扫描窗口来定位目标,检测器是一种级联分类器结构,将待检测目标区域依次经过方差分类器、集合分类器和最近邻分类器,从而栓选是目标可能性高的子窗口。

跟踪器,采取中值流跟踪(median flow tracker)以及加入跟踪失败检测方法,在连续的相连帧之间利用金字塔LK(Lucaks-Kanade)流法寻找上一帧的若干特征点在当前帧的位置,从而估计目标运动。

学习器,采取P-N学习算法对当前帧更新正负样本标志位,并把样本放入训练集用于更新分类器的相关参数,改善检测器的精度。

2.2 STC算法基本原理

STC算法基于贝叶斯框架,对当前帧目标矩形确定的局部上下文区域的图像灰度与位置进行统计建模。通过一些基本的概率公式,计算置信图找到似然概率最大的位置,即为跟踪结果。具体算法论述以及公式含义在文献[1]中已详细介绍,本文只简要叙述了算法过程:

(1)计算t帧人为选定的矩形框的置信图以及上下文先验模型。

(2)计算当前帧空间上下文模型。

(3)更新空间上下文模型。

(4)利用t帧的上下文区域在t+1帧计算上下文先验模型。

(5)已知t+1帧的下文先验模型以及空间上下文模型,计算其置信图。

(6)将t+1帧得到的置信图最大点,作为目标在t+1帧的位置,随后返回第一步继续计算下一帧。将每一帧的置信图的极值点作为目标位置输出。

3 基于时空上下文相似性的TLD目标跟踪算法

Fig.1 Target time-space model calculates the output of multi-target图1 目标时空模型对检测出的多目标的输出计算图

Fig.2 Tracking point comparison after similarity calculation图2 相似度计算后前后跟踪点对比

STC算法通过结合中值流跟踪算法融合到TLD算法中,这样有助于克服TLD中值流算法在跟踪过程中的缺点。而本文在实验发现,根据文献[12-13]的直接替换思想,将跟踪结果的保守相似度大于0.5来验证跟踪结果的有效性是不具有鲁棒性的,原因如下:如图2,因部分遮挡导致目标变化,保守相似度过低,若采取直接替换的思想则判断跟踪无效,但实验发现STC跟踪结果作为输出是理想结果,若不输出,那么此时算法就要进行检测器的检测,这样大大增加了算法的计算周期。为了缩短计算周期,本文引入运动相似度的计算[14],如图右侧是经过相似判断后留下的相似度高的跟踪点。首先利用传统的中值流算法,计算得到初始跟踪点集合(左侧图),其次将STC算法计算输出的前后目标框中心像素运动的位移向量与初始跟踪点位移向量进行相似计算。跟踪点相似值大于设定阈值的数量占比即为此帧的相似度。相似度高于设定阈值,则直接认定跟踪有效,本文多次实验后将阈值定为0.5,即在中值法计算得到的区域,有一半以上的跟踪点运动与前一帧的目标运动非常相似,根据目标运动的连续性特征,本文将计算结果输出。相反的,跟踪点运动相似度低,可能的原因就是目标的快速移动、运动模糊等噪声因素破坏了中值流中光流法的假设条件,但保守相似度的计算过程没有这个假设条件,故再进行输出框的保守相似度计算,最终保守相似度高于0.5,判断跟踪有效,否则,跟踪无效,进行检测器检测。另外,从图中也可看出中值流算法得到的跟踪点部分并不是目标上的,如左图树枝上的跟踪点,那么原TLD算法利用这些跟踪点进行目标窗口调整显然不够严谨,故本文再次利用运动相似度高的跟踪点(如图右侧)进行目标窗口调整会比TLD算法更加准确得多。

3.1 跟踪点与STC输出框运动相似度计算

这里的运动相似度也可理解为STC算法输出框与中值流预测框的运动相似对比。相似度计算如下:

首先,利用传统TLD中值流跟踪算法得到的跟踪点以及STC算法输出的前后框的中心像素点(以下简称中心像素点)来初始计算点表示第 t-1、t帧的第n位跟踪点,表示STC第t-1、t帧输出框的中心像素位置。

其次,将跟踪点位移向量用极坐标表示,如下:

最后,将每个跟踪点与中心像素的距离转换成一种权值,即相似值,公式如下:

3.2 目标时空模型

传统的TLD算法在综合处理模块,在跟踪器失败,检测器成功情况下,当检测出一个聚类框时就输出此目标,而检测出多个目标时,不输出任何检测目标。既然检测出了多个候选目标,那么真实的目标极大可能是其中的一个,于是本文结合STC算法求置信图的机制,在每次跟踪器判断失效时将时空模型存储下来,本文称之为目标时空模型。随后在检测出的每一个候选目标上,求其上下文先验模型,并对其求置信图,求解如下:

其中,Cij(x)表示第i个目标在时空模型求得的置信图就是第i个候选目标的上下文先验模型,Ii(x)为其上下文区域的像素位置的灰度值为中心位置。从此式可知,每一个检测目标i会求得m个置信图,平均置信值最大的检测目标作为当前帧的输出,一旦输出后,就要对目标时空模型进行更新。本文只保留在每一个检测目标中,求得的最大置信图所对应的时空模型即只保留那些求到过最大置信图的时空模型。如图1,1号框求得最大置信图模型下标为3、4,2号框求得最大置信图的下标为3、4,即最终的目标时空模型更新为

3.3 TLD-STCS算法的时空模型更新

因经过窗口调整后,目标输出框大小会发生变化,即前一帧更新得到的时空模型与利用当前输出框计算得到的空间模型大小会不一致。为了很好地进行空间模型的更新,本文采取的是中心位置对齐后的更新方式,将文献[1]中的时空模型更新公式改进为:

其中…⊕…表示中心位置对齐后数据进行加法计算,具体过程如图3所示,最左侧图像表示在t帧上,红色方框是利用t-1帧更新得到的时空模型区域。那么根据STC算法,下一步进行的是利用t帧的目标学习得到上下文空间模型,然后进行时空模型更新得到下一帧的时空模型但是本文算法最终的目标框大小可能改变,如图中间部分,目标框变大,最终学习的上下文空间模型比大,因此本文采取中心对齐的融合更新方法,如图右侧的蓝色框,同时也保留了上下文扩大出来的部分数据。同理,目标框变小后也使用这样的更新方式,即本文的时空模型更新可以适应目标变化而自适应更新。

3.4 算法流程

(1)初始化跟踪框。

(2)检测器的学习。

(3)跟踪模块:利用STC目标跟踪器计算下一帧目标图像块,并利用3.1节计算此目标的运动相似度,相似度S高于设定阈值0.5,则认定跟踪有效,并利用运动相似度高的跟踪点进行目标窗口调整,否则,计算该图像块kbb的保守相似度大于设定阈值0.5即跟踪有效,相反的跟踪判定无效,保留此时的时空模型,放入目标时空模型。

(4)检测模块:对全帧逐步子窗口的检测,并对通过检测器的图像块进行聚类,对每个聚类框dbbi求其保守相似度

(5)综合处理模块:综合处理模块如算法1所示,算法第1~8行为跟踪有效的处理过程。首先采取STC跟踪输出框相似度S和保守相似度判定跟踪有效;其次检测器输出的聚类框保守相似度大于跟踪输出框的且两者的重叠度O(kbb,dbb)<0.5,若最终满足这两个条件的聚类框就一个,即直接输出,否则对满足条件O(kbb,dbbi)>0.7的聚类框与跟踪框进行加权输出。若跟踪判定无效,检测成功,过程为第9~14行,对检测到的唯一聚类框直接作为目标输出,否则采取3.2节的方法,用目标时空模型对每个聚类框求解置信图,平均值最大者输出,并更新目标时空模型。若跟踪无效,检测器无聚类输出,即目标丢失。

Fig.3 Learn of spatial context model for TLD-STCS algorithm for target scale expansion图3 TLD-STCS算法对目标尺度扩展的空间模型学习图

(6)学习与更新:TLD算法通过在线学习对检测器进行更新,STC算法对综合处理模块的输出框采取3.3节的更新方法,而目标时空模型在STC跟踪输出框判定无效时,将当前帧的时空模型放入目标时空模型中,其更新机制采取3.2节的方法。图4给出了本文TLD算法的学习模块、检测器模块、STC跟踪器的空间模型以及目标时空模型的学习和更新的具体过程。

(7)跟踪下一帧,返回步骤(3)。

算法1综合处理模块过程

Fig.4 Learning and updating process block diagram图4 学习与更新过程方框图

4 实验结果

为验证本文算法的鲁棒性,将本文算法与TLD和STC算法进行对比验证,均是公开的C++代码。而实验的视频资源来自吴毅老师发表的目标跟踪评测文章[15]提到的评测视频库,保证实验的可信度。

本文算法是在TLD公开的多尺度C++代码上改写的,主要增加了目标时空模型、相似度判断以及引入STC算法,具体算法运行速度如表1。本文的实验环境为Intel®i5-4590 3.30 GHz处理器、8 GB内存,软件环境为Win7+VS2013+OpenCV。本文采取文献[9]提供的Ground truth以及初始框的位置与大小,实验序列包括目标旋转、遮挡、形变、快速运动等挑战条件,在相关网站(http://www.visual-tracking.net)选择了11个测试视频序列,共有7 428帧。

本文采用精度与成功率来检测算法的性能。文献[5]给出这两种评测方法的详细概念和计算公式,本文就不再叙述。3种跟踪算法的精度图与跟踪成功率图如图5、图6所示,通过对11个视频序列的跟踪,综合这两种评测标准,可以看出本文算法的精度和成功率明显高于STC和TLD算法。以下就对不同的跟踪算法结合实验结果以及部分截图进行具体分析。

Fig.5 Test accuracy of video sequences图5 测试视频序列的精度图

Fig.6 Test success rate of video sequences图6 测试视频序列的成功率

4.1 光照变化及旋转变形

Fig.7 Screenshots of illumination change and rotary deformation图7 光照变化及旋转变形部分截图

在测试视频序列中,David视频序列存在剧烈的光照变化,Panda以及Sylvester视频序列存在目标变形以及旋转挑战。从图5的Panda精度图可以看到,在中心误差阈值取值小于15时,STC算法成功率小于0.2,TLD算法成功率小于0.4,而本文算法达到了0.72。主要是因为在目标被遮挡后,STC算法发生跟踪漂移,TLD算法因目标形变过大,跟踪失效后检测失败,如图7第1行的#449,而后的#581到#765这段视频序列,TLD算法因目标形变过大而多次跟踪失败。但本文结合跟踪器STC在光流法跟踪失败以及检测到多候选目标时,采取本文的目标时空模型机制,输出其最大置信值的检测目标,具有良好的跟踪效果,如#581、#765。图7的第2行是David视频序列跟踪结果部分截图,STC算法跟踪结果与本文算法差距不大,从#496、#561、#770可以看出TLD算法的跟踪中心位置误差以及跟踪重叠率低于其他两种算法,具体的跟踪数据如图5的David精度图和图6的David成功率图。图7的第3行是目标旋转的跟踪效果部分截图,STC算法在#1177后跟踪就发生了漂移,而本文算法与TLD算法有跟踪恢复机制,从而可以持续跟踪,从图5的Sylvester精度图可以看出TLD算法与本文算法差距不大,但是从图6对于视频序列的成功率图可以看出,在重叠阈值大于0.4时,本文算法的成功率大于TLD算法,即跟踪的准确性优于TLD算法。3种算法对3个测试视频序列的运行速度从表1可见,除了David视频序列,其他两个都有所提高。

4.2 快速移动及运动模糊

在测试视频序列中,本文选择了Boy、Jumping、BlurCar1、BlurOwl这4个视频序列,都存在目标快速移动及运动模糊情景。从图8第1行的Boy视频序列部分截图可以看出,STC算法在#572后跟踪发生漂移,而本文算法仍然持续准确跟踪。在图5的Boy精度图中本文算法的平均中心位置误差优于TLD算法,而从图6的Boy成功率图也可以看出,本文算法在重叠阈值取值偏高时的成功率也优于TLD算法。而从图5、图6的Jumping精度图以及成功率图可以看出本文算法最优,部分截图如图8第2行。图8第3行是BulrCar1视频序列部分结果截图,TLD算法在#181后跟踪效果不理想,输出框也很小。从图5、图6的BlurCar1中心位置误差及跟踪成功率图可得STC算法的跟踪效果优于TLD算法。本文因结合了STC跟踪器,所以改进了原本TLD的跟踪不足,对TLD跟踪失败的帧具有良好的跟踪输出,如#371、#742,最终在表2中,其平均跟踪重叠率提高到了66%,相比TLD提高了46%。同理,对于BlurOwl序列的跟踪结果,TLD算法优于STC算法,在目标运动模糊且快速的情景中,本文算法也可部分跟踪有效,如图8第4行的#363。从图5的BlurOwl中心位置误差图中可以看出,本文算法在阈值偏高时渐渐处于优势。而从图6的BlurOwl跟踪成功率图中可以看出,本文算法的平均跟踪成功率优于其他两种算法。

4.3 遮挡

本文选择KiteSurf、FaceOcc1、Faceocc2视频序列来测试本文算法在目标被遮挡再出现情况下的跟踪性能,从图5的KiteSurf可以看出,本文算法的中心位置误差图与TLD算法基本一致,优于STC算法。在图6相对应的成功率图,本文算法比STC算法跟踪成功率提高了很多,而从图6的KiteSurf成功率图可以看出,在重叠度取0.1后STC算法的成功率骤降,而本文算法虽然也降了但幅度很小,主要是因为本文算法的恢复跟踪机制,其跟踪成功率总体与TLD算法差距也不大。在FaceOcc1视频序列中,从图5对应的中心位置误差图及图6对应的跟踪成功率图可以看出,本文算法与TLD算法总体差距不大,但中心位置误差相对STC算法提高了0.4,跟踪成功率也提高了,部分跟踪结果如图9第2行。而在FaceOcc2视频序列中,目标不光有遮挡干扰,还存在旋转、光照变化等因素,导致TLD算法跟踪输出窗口预测错误,如图9第3行的#258、#722。而从图5的FaceOcc2中心位置误差图可以看出,STC算法因跟踪漂移导致跟踪效果低于TLD算法,本文算法跟踪效果处于两者之间。而跟踪成功率,在重叠阈值取0.1后,本文算法就区别于TLD算法且优于它。而STC算法最终因遮挡过度导致跟踪漂移,如#812。从表2可以看出,对具有遮挡挑战的这3个视频序列,本文算法的平均跟踪重叠率较TLD算法差距不大,且本文对遮挡挑战具有一定的鲁棒性。而从总体的跟踪平均重叠率可以看出,本文算法优于STC和TLD算法。因目标的快速移动以及背景模糊,本文算法提高了准确度,其运行速度相对TLD算法,差距并不大,可从表1观察得到。

Table 1 Average speed of tracking algorithms表1 跟踪算法的平均运行速度 f/s

Table 2 Average overlap rate of tracking results表2 跟踪结果的平均重叠率 %

Fig.8 Screenshots of fast movement and motion blur图8 快速移动及运动模糊部分截图

Fig.9 Screenshots of occlusion and object scale change图9 遮挡、目标尺度变化部分截图

4.4 目标尺度变换

图9最后一行是本文选择CarScale这个视频序列,对一组尺度变化目标的跟踪测试结果。从测试的#156、#168可以看出,STC算法因目标被遮挡而导致跟踪漂移,最终跟踪失败;而TLD算法因目标窗口选取所有跟踪点进行窗口调整,从而受一些错误跟踪点(遮挡物上的跟踪点)的影响,导致窗口调整过度,从而对目标的学习不够准确,最终跟踪失败;而采取本文算法的时空上下文相似性方法,前后中值光流法跟踪点运动相似度高,并利用这些跟踪点进行窗口调整再输出目标。当遮挡等因素破坏了光流法的假设条件或者前后预测到的跟踪点错误,那么它们的运动就会有区别,此时采取光流预测的方法就不可行,但避免直接跳到检测模块,本文结合保守相似度再来验证有效性,即在光流法跟踪失败后,再考虑保守相似度的方法。从图5的中心偏差可以看出本文算法跟踪更加准确。同样的从图6的重叠度看出,本文算法的成功率提高了接近0.5个百分点。两者相似度计算的结合进行跟踪有效性判断,降低了算法的计算周期,从表1可以看出,算法平均运行速度相比TLD算法提高了6 f/s,最终准确跟踪到目标,如#168、#191红色框。故本文算法在目标尺度变换方面也具有一定的鲁棒性。

5 结束语

本文提出了一种基于时空上下文的TLD目标跟踪算法。该算法结合STC算法和TLD算法,并提出了相似度的判断方法,即中值流跟踪点与STC跟踪结果的目标框运动的相似计算,将相似度判断方法与保守相似度计算结合来判定跟踪是否有效。同时分析了TLD算法的综合模块在跟踪失效后检测到多目标时不进行目标输出的问题,本文结合STC算法置信图计算机制,提出了目标时空模型机制,在本文算法的跟踪器无效而检测器检测到多目标时,对每个检测目标位置计算其置信图,置信图最大的位置作为当前帧的输出,从而大大提高了跟踪的成功率。最后大量实验结果表明,本文的TLD-STCS算法,性能更优秀,超过了STC和TLD算法。针对TLD跟踪器的不足以及综合处理模块的缺点,本文提出的思想能够有效地解决,从而大大提高了跟踪成功率和鲁棒性。然而,本文算法没有对多目标跟踪进行探究,下一步的工作重点放在多目标的跟踪上。

猜你喜欢

置信检测器成功率
成功率100%,一颗玻璃珠入水,瓶子终于坐不住了!
成功率超70%!一张冬棚赚40万~50万元,罗氏沼虾今年将有多火?
置信职业行为在护理教育中的研究现状
参数可调的联合子空间目标检测方法 *
基于靶试的空空导弹自主飞可靠性置信度分析*
如何提高试管婴儿成功率
基于交通诱导的高速公路交通检测器布设方案研究
基于均匀性判定规则的统计MIMO雷达多通道融合检测技术
置信电气:碳减排龙头迎发展春天
研究发现:面试排第四,成功率最高等4则