基于Adaboost首帧检测的时空上下文人脸跟踪算法
2020-03-25李心达米晓红孙俊喜
张 尧, 才 华,2, 李心达, 米晓红, 孙俊喜
(1. 长春理工大学 电子信息工程学院, 长春 130022; 2. 长春中国光学科学技术馆, 长春 130117;3. 河南科技大学 管理学院, 河南 洛阳 471023; 4. 东北师范大学 信息科学与技术学院, 长春 130117)
在智能安全领域, 目标跟踪应用广泛[1]. 在跟踪过程中, 存在一定的外界干扰, 例如: 光照变化、 遮挡、 抖动等, 这些外界干扰会严重影响目标跟踪的稳定性. 结合目标周围上下文进行辅助跟踪是将时间上下文和空间上下文相结合, 可极大提高跟踪的稳定性. 其中时间上下文是指相邻两帧目标图像的时间连续性, 空间上下文是指目标周围的背景与目标本身构成空间上的结构关系. 时空上下文(spatio-temporal context, STC)算法[2]将目标周围的稠密上下文信息作为要素结合到跟踪过程中, 该算法在跟踪性能上远超过当时大部分主流的跟踪算法. 近年来, 已有很多根据STC算法进行性能改进的相关算法被提出, 如基于权值改进的时空上下文算法[3]和基于Retinex灰度增强与颜色信息的时空上下文跟踪算法[4], 分别从赋予与跟踪目标运动相似度不同的各区域不同权值和结合颜色信息与Retinex灰度增强角度改进时空上下文算法, 对算法跟踪能力方面进行提升.
本文采用一种启动跟踪时即启动人脸检测的方法, 改进原算法首帧需要手动框选的跟踪机制. 选取根据Adaboost算法检测到的人脸中心位置为STC跟踪算法第一帧的目标中心; 再利用Kalman滤波对目标的位置进行辅助预测, 使用时空上下文的跟踪结果校正预测结果, 以提高跟踪算法的准确性和鲁棒性.
1 STC跟踪算法
STC算法利用Bayes框架, 在图像低阶特征上对目标与附近区域的时空关系进行统计关系建模[5]. 跟踪结果为置信图中似然概率最大的位置, 计算目标置信图为
m(x)=p(x|o).
(1)
利用边缘化的联合概率P(x,m(z)|o)、 条件概率P(x|m(z),o)和先验概率P(m(z)|o), 目标对象的位置似然函数计算公式为
用条件概率P(x|m(z),o)表示目标与上下文间的空间关系:
P(x|m(z),o)=hSC(x-z),
(3)
其中,hSC(x-z)表示跟踪目标和周围上下文区域z间的关系函数, 该函数为非径向对称函数, 即
hSC(x-z)≠hSC(|x-z|).
(4)
图1 非径向对称函数示例
非径向对称函数能有效预防干扰情况, 图1为非径向对称函数示例. 由图1可见, 目标人脸的右眼Zr到中心点X*的距离与左眼Zl到中心点X*的距离有相同的绝对值, 由于该函数具有非径向性,hSC(x-zr)≠hSC(x-zl), 所以当跟踪目标左眼(Zl)时, 不会与右眼(Zr)混淆.
先验概率可表示为
P(m(z)|o)=I(z)ωσ(z-x*),
(5)
其中:I(z)表示z点的图像强度;ωσ(·)表示一个加权函数, 定义为
ωσ(z)=a×exp{-x2/σ2}.
(6)
用置信图表示所跟踪目标对象在一定范围内出现的概率, 进行建模可得
(7)
其中:α为控制模型尺度的参数;β为改变置信图形状的参数;b为归一化常量. 将式(3)和式(5)代入式(7)可得
(8)
其中⊗为卷积运算符. 利用式(8)可得任意点概率的值[6], 转换到频域计算, 可极大缩短运算时间, 进行快速Fourier变换(FFT)得
(9)
其中:F表示FFT函数; ⊙表示频域相乘. 因此有
(10)
(11)
(12)
其中mt+1表示为
(13)
2 改进算法
2.1 Adaboost首帧检测
输入视频帧后, 利用Adaboost算法进行人脸检测, 并初始化跟踪区域. Adaboost算法利用级联的思想训练出强分类器进行人脸检测[7]. 针对时空上下文算法的需要, 引入两种扩展Haar特征[8], 与4种基本的Haar-like特征共同进行检测. 图2为扩展Haar特征在人脸上的匹配图. 积分示意图如图3所示, 对眼睛与鼻子组成的扩展特征进行计算.
图2 扩展Haar特征在人脸上的匹配
图3 积分示意图
利用Haar特征计算特征值的方法[9]计算A~F的像素值:
(14)
因此, 该类扩展Haar特征的特征值为
iiA+iiC+iiE-iiB-iiD-iiF.
(15)
实验中, 识别系统分类器[10]由ORL人脸库、 网络图片及拍摄图片训练组成. 训练样本包括5 500张人脸图片和5 500张非人脸图片, 合计11 000张训练样本图进行训练, 图4为训练集的部分图像. 扩展后的检测率可达95.59%, 平均检测时间可达468 ms. 图5为算法训练后的检测效果.
图4 训练集部分样本
图5 首帧测试实验结果
2.2 Kalman滤波辅助跟踪
Kalman滤波算法对于跟踪系统起点无要求, 通过状态方程与观察方程对系统进行描述, 在计算量方面, 由于使用递归方法, 计算量较小. 图6为Kalman滤波算法模型.
图6 Kalman滤波原理模型
预测方程和修正方程构成Kalman滤波器, 状态预测方程组为
(16)
其中Δt为时间间隔. 状态更新方程组为
(17)
其中:Kk为Kalman增益因子;R为常数;H为系数矩阵;zk=(xsk,ysk)表示在k时刻, STC算法跟踪到的目标中心点坐标. 状态方程组运算获得Kalman增益因子, 用于进行预测以及更新系统的状态[11].H和R表示如下:
使用Kalman滤波公式递推, 不断更新下一帧目标的位置.
2.3 算法过程
本文改进算法跟踪过程如下.
输入: 进行视频分帧操作, 获得视频帧序列;
步骤1) 利用本文训练分类器检测首帧的目标位置, 改进STC算法与Kalman滤波器, 并初始化目标, 计算目标的置信图m(x)和先验概率P(m(z)|o), 同时获得中心位置x0和y0, 作为Kalman滤波器的初始状态, 设置协方差矩阵P=0;
图7 改进算法模型
步骤4) 重复步骤2),3), 对运动目标进行跟踪.
跟踪过程结构流程如图7所示.
3 实 验
利用Kalman滤波在处理遮挡问题和抖动问题上效果较好的特点, 选择几组分别存在遮挡和抖动的数据集进行实验. 将改进算法与传统STC算法进行比较, 并增添对照组算法----fDSST(fast discriminative scale space tracking)算法[12]和CN(adaptive color attributes for real-time visual tracking)算法[13]. 由于改进的算法首帧由Adaboost算法检测, 为了对比的客观性, 原算法初始帧选择与改进算法检测相同位置, 开始算法跟踪.
3.1 定性分析
对于部分遮挡情况, 选择Shelter1作为测试图像序列. 图8为Shelter1,BlurFace,Shelter2数据集中的对比实验结果. Shelter数据集共有267帧图片, 男子反复用手臂遮挡面部, 由于遮挡的原因, 原算法从140帧开始, 出现跟踪漂移等问题, 本文改进算法可有效对抗遮挡带来的跟踪失败问题, 实时跟踪目标, 对照组文献[12]算法与文献[13]算法较原STC算法, 也能稳定进行跟踪. 在BlurFace数据集中, 从30帧开始出现了各种角度的摄像机移动和抖动问题, 从250帧开始, 原算法出现无法稳定跟踪及跟踪精度下降等问题, 而改进后的算法能稳定进行跟踪. 在Shelter2数据集中, 男子多次快速抖动遮挡物对面部进行遮挡, 改进算法明显在跟踪效果与跟踪紧致度上优于原算法与对比算法.
图8 Shelter1,BlurFace,Shelter2数据集中的对比实验结果
3.2 定量分析
下面使用计算中心位置误差值定量判断算法性能, 中心误差利用计算实际目标的位置与跟踪算法跟踪到位置的欧氏距离定义. 图9为4种跟踪算法的中心误差对比实验结果.
图9 不同跟踪算法的中心误差结果
4种算法在不同视频数据集中的中心误差平均值及成功率的对比结果列于表1. 由表1可见, 在同时存在遮挡与抖动的视频集Shelter2中, STC算法成功率仅为86.37%, 而改进算法的成功率达到97.85%, 因此改进算法能有效应对遮挡及抖动问题的发生, 保证算法的准确性.
表1 各种算法在数据集中的中心误差平均值及成功率对比结果
当3组数据集分别存在遮挡、 抖动及同时存在遮挡、 抖动现象时, 本文改进算法可稳定跟踪, 提高跟踪成功率并减少跟踪的中心位置误差值; 在同时出现遮挡与抖动的数据集Shelter2中, 对照组CN跟踪算法以及原算法都发生了不同程度的跟踪漂移现象, 本文改进算法仍能保持97.85%的跟踪成功率, 跟踪效果良好. 表明引入Kalman预测机制辅助跟踪的改进算法能有效抵抗遮挡与抖动带来的跟踪问题.
综上所述, 本文提出了一种针对人脸首帧检测的改进时空上下文跟踪算法, 通过训练Adaboost分类器进行首帧检测, 针对原算法处理抖动、 遮挡问题的局限性, 引入Kalman滤波进行跟踪预测. 实验结果表明, 改进算法可实现首帧检测, 避免了首帧手动框选的不便, 同时提高了算法在遮挡、 抖动等情况下的跟踪鲁棒性, 减少了中心位置误差.