基于决策的人脸检测与自动跟踪方法
2019-09-28史双飞
史双飞,张 震
(上海大学 机电工程与自动化学院,上海 200072)
0 引 言
人脸检测与跟踪一直都是计算机视觉领域的研究热点,在视频监控、人机交互、运动分析等视频分析场景中应用广泛。人脸检测作为第一步骤非常关键,它的目标是找出图像中所有人脸对应的位置,并输出人脸外接矩形在图像中的位置。而人脸跟踪则需要在视频序列中实时确定已被检测的人脸在后续帧中的运动轨迹。目前为止,在简单稳定的环境中,人脸检测与跟踪已取得了较好的成果。而在实际人流量较大的复杂场景中,遮挡、尺度变化、光照变化、杂乱背景、人脸姿态及表情等仍会在很大程度上影响人脸检测与跟踪的效果,如何增强检测跟踪算法的鲁棒性仍是研究的重点。
目前已有的人脸检测算法分为基于知识和基于统计的方法[1]。基于知识的人脸检测算法主要是利用人脸特征的先验知识及规律来检测人脸,包括眼睛、眉毛、嘴巴、鼻子等器官特征,各器官相互之间的几何位置关系,人脸形状、边缘、纹理、肤色等特征。如建立YCbCr彩色空间的肤色模型[2],利用人脸灰度特征和几何特征来定位人脸的方法[3]等,这些方法虽然特征明显,但易受光照、遮挡等外界因素干扰。基于统计的人脸检测算法是将人脸看作一个整体,根据统计学原理通过大量人脸图像样本构造人脸模式空间,根据相似度量来判断人脸是否存在。该方法主要通过机器学习算法训练大量人脸和非人脸样本,从而得到表征人脸的有效分类器。常用方法有神经网络法[4-5]、支持向量机法[6]、AdaBoost算法[7-8]等,这类方法检测精度更高,适应性和鲁棒性均有了很大提升,只是需要事先训练大量样本,相较于实际应用过程中的大量在线计算,文中倾向于后者,因此选择AdaBoost算法进行人脸检测。
复杂场景中的多人脸跟踪方法种类繁多,其中应用较多的有:光流法[9]、Meanshift算法[10]、Camshift算法[11]、Kalman滤波[12]和粒子滤波算法[13]等。然而仅单独使用这些传统的跟踪算法,不仅计算量大,鲁棒性不够,且不能在线学习,从而不能适应跟踪目标的变化,因此需要将这些方法进行组合或在此基础上形成鲁棒性较好且能在线学习新目标的算法。文中采用一种MDP算法[14],将在线多目标跟踪规划成一个马尔可夫决策过程(Markov decision processes)中的决策,将每个目标的生命周期(从出现到消失)建模成一个MDP,即将目标的出现和消失看作是MDP中的状态转移,然后使用现有的单目标跟踪方法来处理问题,可以泛化使用到各个场景的跟踪中。
文中在原始MDP算法的基础上,通过基于AdaBoost的Viola-Jones(VJ)[8]算法快速检测人脸,将该结果作为MDP跟踪算法的目标检测输入,实现人脸自动检测。同时,为了增强新算法的鲁棒性,还在跟踪过程中加入了Kalman滤波进行运动估计,从而更好地处理目标ID分配错误的情况。
1 基于AdaBoost的VJ人脸检测算法
人脸检测作为人脸跟踪的第一道工序,其准确性将对后续人脸跟踪系统的性能和稳定性产生重大影响。人脸检测的目的是为了获取任务目标人脸区域的位置、大小等信息,为后续的跟踪奠定良好的基础。文中主要利用基于AdaBoost的VJ算法[8]进行人脸检测。
VJ检测算法的整体框架分成三个部分。
1.1 引入积分图像计算目标的类Haar特征
与使用像素来描述人脸相比,使用类Haar特征不仅包含一定领域的信息,且计算速度快,因而在人脸检测算法中被大量使用。此外还引入积分图计算类Haar特征,只需遍历一次图像便可求出图像中所有区域的像素和。
1.2 采用Adaboost算法构建分类器
VJ算法采用基于Adaboost的分类器学习方法,其核心思想是针对同一个训练集训练不同的弱分类器,将弱分类器相结合,从而构成一个强分类器。为了提升弱分类器,在一次学习结束后,对错误分类的样本通过增加其权重并重新学习以得到比上一次更好的分类器。具体步骤如下:
(1)给定人脸图片(x1,y1),…,(xn,yn),其中xi表示第i个样本;yi=1表示正样本(人脸);yi=0表示负样本(非人脸)。
(2)初始化样本权值。
(1)
其中,m为正样本数;n为负样本数。
(3)首先,归一化权值:
(2)
其中,t是迭代次数。
其次,对特征j,训练一个弱分类器hj,然后对每个特征生成的弱分类器计算权重误差:
(3)
最后,选择具有最小误差εt的分类器ht叠加到强分类器中,并更新权值:
(4)输出强分类器。
(4)
1.3 构建级联分类器
人脸检测中,只靠一个强分类器还不足以保证检测的正确率,需要一连串的强分类器联合在一起来提高检测正确率。文中利用筛选式级联分类器,先将多个强分类器按复杂度排序,简单的在前面,类似于一个决策树,如图1所示。第一个简单而高效的分类器输出True结果就会触发同样具有较高检测率的第二个分类器对窗口图像做出评价。以此类推,第二个分类器输出True结果将触发第三个分类器对窗口图像做出评价。只要有一个分类器节点输出False结果,直接认为该窗口图像不包含目标物,从而拒绝该窗口。
图1 级联分类器模型
2 MDP跟踪算法
2.1 MDP算法原理
基于MDP的跟踪算法将在线的多目标跟踪问题规划成MDP中的决策,为每一个目标建立一个MDP模型,将目标的出现到消失看作是MDP中的状态转移,并采用强化学习的方法学习相似数据的关联性,然后使用现有的单目标跟踪方法来处理问题。
2.2 MDP的组成
用MDP来建模一个目标的生命周期,包括四个部分:目标的状态集S、目标可采取的动作A、状态转移函数T(描述各状态进行各动作后的影响)、实值奖励函数r(描述在状态s下执行动作a的实时奖励)。
图2 目标的MDP模型
MDP模型将目标分为四个状态:激活,跟踪,丢失,休止。如图2所示,当VJ检测器检测出人脸,随即进入激活状态,然后根据事先训练好的SVM分类器[15]判断该目标转移到跟踪或休止状态。处于跟踪状态的人脸目标通过光流法及Kalman运动估计继续跟踪,若人脸有遮挡或者离开相机的视野范围导致目标跟踪失败,则进入丢失状态。目标处于丢失状态时,先利用强化学习训练得到的二类SVM分类器,计算丢失目标与VJ检测器传来的目标之间的相似度分数,然后通过匈牙利算法[16]获得丢失状态下的目标集合与VJ检测目标集合间的最优分配。根据分配,可以将丢失状态的目标和某些检测目标关联,然后将其转移到跟踪状态,否则就继续保持丢失状态。当目标处于丢失状态超过一定的阈值帧数后,就将其转移到休止状态,这是一个终结状态,不能再进行转移。文中着重介绍跟踪状态下所采用的策略及其改进方案。
2.3 MDP跟踪状态下的策略
在跟踪状态下,MDP主要决定目标是继续保持跟踪状态还是转移到丢失状态。若目标无遮挡且还在相机视野内,则保持跟踪,否则转移到丢失状态。
2.3.1 光流计算
决策过程采用类似TLD跟踪算法[17],首先用检测边界框在线初始化目标的外观模型,构建目标模板,利用光流信息进行跟踪,以正反向误差(forward-backward)作为评判标准。光流法用于计算两帧图像间对应点的运动矢量,即给定目标模板I上的一点u=(ux,uy),通过Lucas-Kanade方法[18]计算该点的光流找到新视频帧J上的对应点v=u+d,其中d=(dx,dy)是u处的光流。在计算了所有采样点的正向光流之后,根据正反向误差来判断光流是否稳定,即根据J帧的目标检测值v反向计算目标模板I对应点u的光流,获得一个新的预测u'。若光流稳定,则u和u'应该彼此接近,因此一个点的正反向误差可以用正反向预测之间的欧氏距离来表示:e(u)=‖u-u'‖2。若所有采样点的FB的中值emedFB小于设置的阈值,则认为跟踪稳定,反之则不稳定。借此可以过滤掉不稳定的点,并用剩下的匹配点形成一个新的边界框,作为新的目标位置,并且在跟踪过程中,MDP会收集目标的历史模板,便于后续操作。
2.3.2 重叠区域计算
根据上述两个指标,可以得到特征表达式φTracked(s)=(emedFB,omean),奖励函数如下:
(5)
其中,e0和o0是指定的阈值。当a=a3时,y(a)=+1;a=a4时,y(a)=-1。也就是说当emedFB小于设定的阈值,omean大于设定阈值的时候,目标会继续保持跟踪状态,反之转移到丢失状态。
2.3.3 运动估计
在实际应用中,目标处于运动状态且每个目标的运动方向是随机的,因此若是目标之间产生相对运动导致交叉重叠,那将会产生目标ID分配错误的情况,这是光流法的误差遗留问题。于是文中在原来的基础上引入了Kalman滤波,根据目标的历史信息来估算下一帧该目标可能出现的位置,然后将光流估计得出的边界框与运动估计得出的边界框进行比较,判断是否会出现反向,如果出现反向较大的情况,就认为跟踪失败,该目标应处于丢失状态。
(6)
其中,a为运动目标在该方向的加速度;Δt为采样时间。其矩阵形式为:
(7)
则Kalman系统状态方程如下:
xk=Axk-1+Buk-1+wk-1
(8)
其中,xk-1为状态向量;A为转换矩阵;B为系统参数;uk-1为系统输入;wk-1为系统噪声。
3 实验测试与分析
为了验证算法的有效性,文中进行了8个不同场景的多人脸跟踪实验,并选择3个指标对该算法进行评价,分别是多人脸跟踪准确度(MFTA)、多人脸跟踪精度(MFTP)以及跟踪速率(Hz)。实验在Inter Core i5 CPU 1.6GHz和内存8 G的PC机上进行。
图3分别展示了8个不同场景的视频序列多人脸跟踪的实验结果,按顺序分别是Crossing,Dance,Door,Elevator,Exercise,Lab,Road,Subway。可以看出,Dance,Elevator,Lab等场景较为简单,且目标人物基本都为正脸的情况下,人脸检测与跟踪的效果明显比其他场景复杂、人脸姿态各异的跟踪效果要好一些,且在目标被遮挡后仍能继续跟踪。可见该算法对目标人脸的跟踪具有一定的鲁棒性。
图3 视频序列的正脸检测与跟踪
表1 改进算法的跟踪性能
表1显示了该算法的性能,除了Crossing和Subway两个场景的准确率稍低(推测可能是人脸与背景相似度较高,检测器出现了误检),总体来看,该算法基本可以稳定地检测并跟踪场景内的正脸目标,其速率也能满足应用要求。
4 结束语
MDP算法是一种结合在线与离线学习的视觉跟踪算法,在其基础上,文中提出一种基于VJ人脸检测优化的MDP多目标跟踪算法,并且在跟踪过程中使用光流法结合Kalman运动估计来提高人脸跟踪的准确性和鲁棒性。此外,对于没有被跟踪的VJ检测目标,会初始化一个MDP继续跟踪。该算法能够有效适用于复杂场景中人脸目标的稳定跟踪。