《电子技术应用》
您所在的位置:首页 > 嵌入式技术 > 设计应用 > 一种基于TLD的顾客进店实时检测算法
一种基于TLD的顾客进店实时检测算法
2016年微型机与应用第14期
张京娟,黄海于
(西南交通大学 信息科学与技术学院,四川 成都 611756)
摘要: 结合人脸检测算法和跟踪学习检测算法(Tracking Learning Detection, TLD)完成多个人脸的检测跟踪,用来实现对汽车4S店顾客的实时进店检测。由于采集图像序列帧率低,导致帧间人脸姿态变化大,容易出现目标丢失现象。本文采用Kalman滤波和最邻近数据关联方法,提出一种改进的基于TLD的顾客进店实时检测算法,有效改善了目标短暂丢失现象,增强了算法的鲁棒性。实验证明,该算法具有抵抗光线变化、小范围形变和短暂遮挡的优点,能够解决复杂环境中的实际问题。
Abstract:
Key words :

  张京娟,黄海于

  (西南交通大学 信息科学与技术学院,四川 成都 611756)

  摘要:结合人脸检测算法和跟踪学习检测算法(Tracking Learning Detection, TLD)完成多个人脸的检测跟踪,用来实现对汽车4S店顾客的实时进店检测。由于采集图像序列帧率低,导致帧间人脸姿态变化大,容易出现目标丢失现象。本文采用Kalman滤波和最邻近数据关联方法,提出一种改进的基于TLD的顾客进店实时检测算法,有效改善了目标短暂丢失现象,增强了算法的鲁棒性。实验证明,该算法具有抵抗光线变化、小范围形变和短暂遮挡的优点,能够解决复杂环境中的实际问题。

  关键词:跟踪学习检测;人脸检测;多目标跟踪;Kalman;数据关联

0引言

  本文主要是结合人脸检测算法和跟踪学习检测算法完成多个人脸的检测跟踪,实现对汽车4S店顾客的实时进店检测。

1跟踪学习检测算法简介

  跟踪学习检测算法(TrackingLearningDetection, TLD)[1]是英国萨里大学的KALAL Z提出的一种新的跟踪框架。该算法与传统跟踪算法的显著区别在于将传统的跟踪算法和传统的检测算法相结合来解决被跟踪目标在被跟踪过程中发生的形变、部分遮挡等问题。同时,通过一种改进的在线学习机制不断更新跟踪模块的“显著特征点”和检测模块的目标模型及相关参数,从而使得跟踪效果更加稳定、鲁棒、可靠。

  TLD算法对单目标的长时间跟踪由三部分组成:跟踪、学习、检测[2]。跟踪器采用LucasKanade金字塔光流法在每帧图像中跟踪目标;检测器确定所有出现目标的位置,并在必要的时候修正跟踪器,其主要工作原理是随机森林原理;学习过程采用PN学习法估计检测器的错误并更新检测器以避免相同的错误再次发生。TLD的整体框架结构图[3]如图1所示。

 

001.jpg

2顾客进店实时检测系统中的视觉跟踪问题

  汽车4S店的监控环境比较复杂:覆盖面积大、背景复杂、光线变化大、客流量大,这些都给视频监控分析带来了许多困难[4],主要包括以下几个方面:

  (1)光照影响:在现实环境中,由于汽车4S店四周采用的都是玻璃墙,随着天气的变化展厅内部的光线明暗变化特别大,容易导致背景改变和目标外观变化而造成虚假检测和错误跟踪。

  (2)遮挡问题:汽车4S店的客流量相对较大,常常会出现大量人群聚集的情况,造成人与人之间的相互遮挡比较严重,同时人脸快速移动时会难以获得清晰的人脸图像。

  (3)实时性与鲁棒性 :既要减少算法的计算量以保证实时性,又要增强算法对复杂情况的适应性,增强鲁棒性,两者是相互矛盾的。

3顾客进店实时检测系统中的视觉跟踪问题

  3.1基本思想

  首先利用人脸检测算法在规定区域检测到所有人脸,将其作为候选目标保存,然后利用TLD算法分别预测每个人脸在下一帧中出现的位置,对于跟踪失败的目标,通过对下一帧预测位置周围区域的检测,确定该范围内人脸的个数,如果仅存在一个人脸,则该人脸所在的位置即为对应人脸下一帧的位置,更新该目标的位置信息;如果该范围内的人脸多于一个,则分别计算人脸位置与Kalman预测位置中心坐标的距离d,取距离最小的人脸记为该跟踪对象。最后对每个目标分别进行进店判断,若判定目标进店,则对目标停止跟踪,清除跟踪信息。算法的流程图见图2。

  

002.jpg

  3.2初始目标的检测

  由于原始图像尺寸较大,在全图中检测人脸不仅耗费时间,而且是不必要的。因为检测到的人脸只有一部分是顾客进店时捕捉到的人脸,只有这一部分是系统需要的,因此,为了区分目标人脸和非目标人脸,需要在原始图像中划分出店门区域作为人脸检测区域,用于检测顾客进店时刻的人脸作为人脸跟踪的初始人脸。

  3.3基于卡尔曼滤波器的目标估计

  Kalman滤波器是一个对动态系统的状态序列进行线性最小方差估计的算法[5],根据人脸运动的特点和Kalman滤波的原理,建立了人脸运动的Kalman运动模型。

  首先定义状态矢量:

  X(k)={x(k),y{k},dx{k},dy{k}}T

  观测向量:

  Z(k)={x(k),y(k)}T

  其中x(k)、y(k)表示人脸矩形中心坐标,dx(k)、dy(k)分别表示矩形在X轴和Y轴方向上的速度。

  状态方程和观测方程如下:

  X(k)=φ(k,k-1)×(k-1)(1)

  Z(k)=H(k)×X(k)+V(k)(2)

  其中φ(k+1,k)是状态转移矩阵,H(k)是观测矩阵,V(k)是观测过程中的噪声向量。

  由于跟踪过程中人脸的运动具有一定规律,且受人脸姿态变化和遮挡的影响较小,本文通过Kalman滤波预测目标在下一帧的位置(x(k),y(k)),结合TLD算法进行碰撞裁决,在下一帧的待选区域中寻找与其具有最大相似度的位置来作为此帧的目标位置,对跟踪结果做进一步的预测,以避免和纠正人脸交叉所带来的跟踪错误。

  3.4目标更新

  为了实现对目标的自动初始化,需要定时启动人脸检测算法检测进店顾客。由于原始图像的采集帧率比较大,同时人脸检测算法不仅耗时且占用CPU,如果对毎帧都进行人脸检测则会导致计算机处理速度跟不上采集速度,耗时较多,无法达到实时性效果。因此,需要进行人脸跳帧检测,既要保证检测到所有的新目标,也要保证实时处理。具体方法是计算出顾客在店门区域内,必然能检测到人脸的帧数,每隔若干帧启动人脸检测算法。对于检测到的人脸,可能包含处在跟踪状态的目标和未跟踪的目标,通过计算检测到的目标与所有跟踪状态的目标的重叠度滤除已经在跟踪队列的目标,将新目标加入跟踪队列。

  3.5进店判断

  若目标从图像边缘消失则立刻将该目标的所有信息删除并退出跟踪;若目标由于受到遮挡或干扰暂时消失使跟踪器无法正确跟踪,则将此目标的跟踪状态设置为LOST,如果在接下来的一定时间内仍然没有出现就把该目标的所有信息删除,并认为该目标已经退出场景。为了保证跟踪算法的实时性,避免某些目标长期停留在跟踪区域占用计算机资源,当跟踪过程的帧数达到了N帧时,停止对这一个人跟踪,将目标最后所处位置作为判断目标是否进店的依据。

  3.6算法描述

  本文所提出的算法包括4个主要过程:初始目标检测、TLD算法、Kalman滤波和目标更新。算法主要步骤如下:

  (1)初始化跟踪目标数、检测队列、跟踪目标队列和跟踪状态队列。

  (2)读取一帧图像,若目标数为零则转步骤(1)进行目标更新。

  (3)启动TLD算法,找到该目标把跟踪结果存入目标队列。

  (4)从跟踪队列中取出一个目标,若该目标的状态为LOST,则依据该目标矩形区域的左上顶点和右下顶点的坐标(Xface1, Yface1)和(Xface2, Yface2)设置跟踪检测区域,设跟踪检测区域的左上顶点和右下顶点的坐标为(Xzone1, Yzone1), (Xzone2, Yzone2),中心坐标为(Xcenter, Ycenter),则:

  Widthzone=(Xface2-Xface1)×Rw

  Heightzone=(Yface2-Yface1)×Rh

  Xzone1=Xcenter-(Widthzone/2)

  Xzone2=Xcenter+(Widthzone/2)

  Yzone1=Y center-(Heightzone/2)

  Yzone2=Ycenter+(Heightzone/2)

  其中Rw和Rh为缩放因子。

  在上面的跟踪检测区域中进行人脸检测,若没有检测到人脸则转步骤(4);若检测到一张人脸则更新目标位置转步骤(4);若检测到多张人脸,采用Kalman滤波器利用目标在上一帧的位置X(k-1)预测在下一帧中的位置为(k),采用最邻数据关联方法[6]匹配临时目标队列中与(k)距离最近的目标,此目标作为持续跟踪的目标,并且更新滤波器状态,将结果放入跟踪队列转步骤(4)。最后转步骤(5)。

  (5)重复直到所有目标组均处理完毕。

  (6)若此帧标号是7的倍数则转步骤(7)否则转步骤(2)。

  (7)启动人脸检测,将检测到的所有人脸位置信息存入检测队列。利用表决制把检测队列中的目标与跟踪队列中的目标进行匹配并更新跟踪信息,若无匹配目标,则把该目标作为新目标添加到跟踪队列中并初始化跟踪信息。重复上述操作直至检测队列中所有的目标处理完毕。清空检测队列并转步骤(2)。

4实验与分析

  本实验采用的工业相机像素为500万,帧率为14 f/s,采集包含多个人脸的BMP图像序列,原始图像尺寸为2 592×1 944,实验平台为Intel I74790 3.60 GHz、内存8 GB、固态硬盘512 GB的工作站,以Visual Studio 2010和 OpenCV2.4.9为开发平台,编程实现了上述算法。

  4.1进店检测

  利用本文改进的TLD算法对一段在汽车4S店采集的图像序列中的人脸进行跟踪。 图3是跟踪结果, 图3(a)为第2帧中检测到1号目标,图3(b)为第49帧中检测到2号目标,图3(c)为第63帧中目标姿态发生变化后正常跟踪,图3(d)为第70帧中1号目标走出场景后结束跟踪,图3(e)为第82帧中2号目标走出场景后结束跟踪。实验测试表明,该顾客进店实时检测算法对进店顾客的统计准确率可达90%以上,能够抵抗一定程度人脸姿态变化,且处理延时平均在20 s以内,基本满足了实时性的要求。

  

003.jpg

  4.2目标丢失后的跟踪

  利用原始TLD算法、CT(Compressive Tracking)算法以及本文改进的TLD算法对一段在汽车4S店采集的图像序列中的人脸进行跟踪。 图4是对图像序列2采用TLD算法的跟踪结果,图5是采用CT算法的跟踪结果,图6是采用本文改进的TLD算法的跟踪结果。

 

004.jpg 

005.jpg

  对比图4和图5可以看出,相对于CT算法TLD算法没有出现模板漂移的现象;对比图4和图6可以看出,采用原始TLD算法,当其中一个目标丢失后,在接下来的帧中一直处在丢失状态,而采用本文算法能够重新找回丢失的目标继续跟踪,在一定程度上增强了算法的鲁棒性,提高了算法的准确性。

5结论

  本文提出一种基于TLD改进的顾客进店实时检测算法,首先对目标人脸进行检测,利用TLD对目标人脸进行跟踪,预测其在下一帧中的位置,在TLD的检测器中引入基于Kalman的滤波器,对当前帧目标所在区域进行预估,缩小了检测器的检测范围,提高了检测器处理速度。对于跟踪失败的目标,在其附近区域检测人脸;对于检测到的人脸根据最邻近数据关联方法和Kalman滤波来确定最可能的位置。对于诸如交叉和部分遮挡等较为复杂的环境,本文算法仍然能够较准确地同时对多个人脸进行跟踪。

参考文献

  [1] KALAL Z,MIKOLAJCZYK K,MATAS J.Trackinglearningdetection [J]. IEEE Transactions on Pattern Analysis and Machine Intelligence,2010,6(1),114.

  [2] KALAL Z, MIKOLAJCZYK K, MATAS J. FACETLD:trackinglearningdetection applied to faces[C]. IEEE International Conference on Image Processing(ICIP),2010:37893792.

  [3] 周鑫,钱秋朦,叶永强,等.改进后的TLD 视频目标跟踪方法[J].中国图象图形学报,2013,18(9):11151123.

  [4] 郭晖, 陈光. 基于OpenCV的视频图像处理应用研究[J]. 微型机与应用, 2010, 29(21):1416.

  [5] 梁娟, 项俊, 侯建华. 基于Camshift和Kalman滤波的自动跟踪算法[J]. 微型机与应用, 2011, 30(24):2831.

  [6] 闫辉,许廷发,吴青青,等. 多特征融合匹配的多目标跟踪[J].中国光学,2013,6(2):163170.


此内容为AET网站原创,未经授权禁止转载。