基于HOG和特征描述子的人脸检测与跟踪
2020-04-09
(浙江工业大学 计算机科学与技术学院,浙江 杭州 310023)
人脸检测是指在给定图像中确定人脸的位置、大小和姿态,其本质是模式识别的一种应用。常用的人脸检测方法有基于知识的方法、基于统计模型的方法和基于模板匹配的方法等。人脸跟踪是在图像序列中捕获人脸信息的一种技术,该技术在视频监控、图像处理和人机交互等方面应用广泛,是近年来计算机视觉中的热点之一。常用的人脸跟踪方法有基于图像特征的方法、基于机器学习的方法和基于深度学习的方法等。随着社会的发展,人们对人脸检测的精度要求和人脸跟踪的准确度要求不断提高,因此该课题的深化研究有重要的实用价值。在人脸检测中存在真实场景下的光照变化和随机噪声问题;在人脸跟踪中会出现多人脸干扰和人脸姿态变换的问题[1]。针对这两类难点,国内外学者进行了大量的研究。对于人脸检测中遇到的难点,吴素雯等[2]提出了一种基于Gabor优化的卷积神经网络与选择性搜索策略相结合的算法,提高了在光照变化下的检测效率,但对部分倾斜和光照不均匀的人脸仍存在漏检。洪杨等[3]针对人脸图像中存在的区域噪声提出了改进的多尺度Retinex算法,能够提高原图像的检测率,然而漏检问题依然存在。Lienhart等[4]对Haar特征进行扩展,训练形成了Haar-like分类器,能够检测倾斜角度的人脸,但是暴力枚举的过程增加了内存消耗。胡丽乔等[5]提出了一种自适应加权HOG特征的人脸识别算法,在识别率上优于传统算法,同时在光照方面具有较强的鲁棒性,但是计算复杂度偏高。对于人脸跟踪遇到的难点,Fukunaga等[6]提出Meanshift算法,基于核直方图对人脸进行建模,跟踪准确率较差。历艳琨等[7]利用人脸特征点跟踪3D人脸姿态的变化,实现了对单人脸姿态的稳定跟踪。张江鑫等[8]提出了一种基于Camshift聚类的粒子滤波人脸跟踪算法,能在人脸无规则曲线运动中准确跟踪目标人脸。杨超等[9]提出了一种改进的Camshift-KLT算法,能够减小跟踪偏移距离,提高跟踪命中率。以上跟踪算法都比较偏向对人脸区域或轮廓的跟踪,无法区分不同的人脸,会出现当多个人脸区域重叠时跟踪目标转移至另一张人脸的问题,使得跟踪准确率下降。
笔者提出了一种基于HOG和特征描述子的人脸检测与跟踪算法。实验前先对视频帧进行预处理操作,利用直方图均衡化进行光照补偿,利用中值滤波进行图像降噪;然后基于HOG特征检测人脸;最后通过ResNet生成特征描述子,利用结合特征描述子的校正策略获得跟踪结果。笔者算法能够减少光照和噪声的影响,而且可以在多人脸干扰和人脸姿态不断变化的情况下区分不同的人脸。算法分为基于HOG特征的人脸检测过程和基于特征描述子的人脸跟踪过程,下文将按照上述思路分别进行说明。
1 基于HOG特征的人脸检测
图1为基于HOG特征的人脸检测流程图。首先输入一张人脸图像,然后提取HOG特征,再与人脸检测器进行匹配,最后输出检测的结果。
图1 基于HOG特征的人脸检测流程图
针对真实场景中的光照和噪声问题,HOG特征提取步骤中的归一化伽马能够进一步消除光照变化、随机噪声带来的影响,提高人脸检测准确度。
1.1 提取HOG特征
特征提取是模式识别研究的基本问题之一。对于图像识别,高质量的图像特征可以有效地表示原始图像的性质,且在图像分类中起决定作用[10]。在人体关键部位图像中合适的特征描述包括HOG特征和Haar-like特征等[11]。方向梯度直方图(Histogram of oriented gradient,HOG)特征的核心思想是在一个大小统一、网格密集的细胞单元上进行计算,利用相互重叠的局部对比度归一化技术来提高描述能力[12]。HOG特征能够很好地描述图像局部差分信息且不易受噪声干扰,在目标检测和跟踪领域中是描述边缘和形状最好的特征之一。另一种常用的Haar-like特征反映了目标的灰度变化情况,适合描述目标阴影。与Haar-like特征相比,HOG特征保持了几何和光学转化不变性,能够很好地描述目标轮廓,因此笔者采用HOG特征作为人脸检测中的特征表示。
HOG特征提取步骤[13-16]为
1)归一化伽马。使用伽马变换归一化图像,有效地降低图像局部的阴影和光照变化。
2)滑动窗口设置。分割图像为若干个滑动窗口(block),block用于在整幅图像上滑动提取人脸HOG特征。
3)计算梯度。将block均匀分成4 个单元(cell),block之间采用重叠两个细胞单元(cell)的形式进行滑动。计算出图像的像素点(x,y)的水平方向和垂直方向的梯度,水平方向上的梯度Ix(x,y)为
Ix(x,y)=I(x+1,y)-I(x-1,y)
(1)
垂直方向上的梯度Iy(x,y)为
Iy(x,y)=I(x,y+1)-I(x,y-1)
(2)
得出像素点(x,y)的梯度幅值m(x,y)为
(3)
同样可得像素点(x,y)的梯度方向θ(x,y)为
(4)
4)累加计算获得空间细胞的梯度方向。将梯度方向均匀分成m(m通常为9)个方向(bin),如果梯度方向存在正负,则将360°均匀分成m个区间,否则将180°均匀分成m个区间。将相同cell上所有相同梯度方向的点梯度幅值进行基于权重的累加计算,得出该cell的梯度直方图(HOG)。
5)在重叠的细胞块内进行归一化对比。归一化每个block内的多个cell梯度直方图为一个直方图来表示当前block的HOG特征。
6)收集检测窗口上所有块的HOG。通过滑动block窗口完成整幅图像的HOG特征的提取。
7)输出HOG特征。
1.2 匹配人脸检测器
利用HOG特征匹配人脸首先需要训练人脸检测器,训练分为预处理和训练两个阶段。
预处理阶段:1)输入采集的人脸图像训练集、测试集,标记每一张图片的具体的人脸边界(bounding box);2)进行图片上采样,目的是为了放大较小的人脸,使检测准确度提高,上采样的同时调整相应的bounding box;3)对训练集中的人脸图像进行镜像处理,扩充样本数量。
训练阶段:1)定义扫描器(scanner),用于扫描图片并提取HOG特征;2)设置scanner的窗口尺寸,通过图像金字塔变换实现在不同尺寸上检测人脸的目的;3)定义训练器(trainer),用于训练人脸检测器,其通过scanner初始化;4)进行训练,生成并完善人脸检测器,当出现未确认的人脸边界时对该区域进行忽略,防止出现错误的人脸检测信息;5)进行测试,得到返回的检测结果。
图2为一种正面人脸检测器的HOG特征,该人脸检测器对正脸的匹配度较好。相较于现有常用的基于Haar-like特征的人脸检测算法,该算法精度更高,能够识别更多的人脸。为了在输入的视频帧中能更好地提取人脸的有效信息,笔者选用基于HOG特征的人脸检测算法。
图2 人脸检测器的HOG特征
2 基于特征描述子的人脸跟踪
图3为基于特征描述子的人脸跟踪流程图。首先输入当前帧通过人脸检测得到的结果,定位各张人脸的68 个关键点,将其分别输入到ResNet模型中得到内容为128 维向量的特征描述子。若原先未存有特征描述子,则初始化该特征描述子为跟踪目标的判断基准,若已存在特征描述子,则计算两者的欧氏距离。考虑到当前帧中可能有多个人脸,会生成多个距离值,选择距离值最小的作为当前帧的计算值。如果距离值低于默认阈值,则表明两个特征描述子都基于同一张人脸生成,更新特征描述子为当前帧生成的描述子并更新跟踪区域;反之则认为两个特征描述子不属于同一张人脸,此时替换存储的特征描述子,转移跟踪目标为新特征描述子表示的人脸。当前帧处理完后,载入下一帧,循环进行人脸跟踪。
图3 基于特征描述子的人脸跟踪流程图
2.1 利用ResNet获取特征描述子
卷积神经网络(Convolutional neural network,CNN)在图像处理、模式识别和计算机视觉等方面引起了人们广泛的关注,因为CNN模型能够有效提取图像的特征描述子[17]。深度残差网络(Residual networks,ResNet)是由He等[18]提出的一种改良的卷积神经网络,动机是神经网络的退化问题。传统CNN与ResNet相比,传统CNN中卷积层和全连接层在传递信息时,存在信息丢失、损耗等问题;而ResNet能通过旁路支线将输入连接到后面的层,使其可以直接学习残差,优化基础网络性能的同时保护了信息的完整性。因此笔者采用ResNet模型,在提取特征描述子方面能够比传统CNN取得更好的效果。
算法采用ResNet模型提取人脸特征描述子,输入人脸图像及对应的关键点,返回一个128 维的人脸特征描述子。在人脸特征描述子提取完成后,依次添加对应的人脸标识,便于跟踪结果的更新。
2.2 利用欧氏距离计算相似性度量
特征描述子本质上是特征向量,计算特征向量的相似性可用距离进行评价。常用的距离有曼哈顿距离、欧氏距离和切比雪夫距离,通过实验对比将3 种距离分别用于计算人脸特征描述子的相似性度量,最后选取区分度较好的欧氏距离作为衡量人脸特征描述子的标准。欧氏距离指两点在m维空间上的真实距离,2个n维向量A(x11,x12, …,x1n)和B(x21,x22, …,x2n)的欧氏距离为
(5)
2.3 利用人脸标识队列更新跟踪目标
因为一张图片可能有多个人脸,需分别计算得出两个人脸特征描述子的欧氏距离。选取最小的距离值后,需要用阈值评价两个描述子的相似程度。当距离值小于阈值即相似度较高,则认定两个人脸属于同一个人,跟踪结果更新;否则相似度较低,认定人脸属于他人,跟踪目标转移。因为视频帧中人脸的姿态时刻发生变化,每一帧的人脸都不尽相同。如果始终以初始检测的人脸描述子为基准进行相似度计算,在视频帧中始终只有同一人的前提下,会出现因人脸姿态变化过大导致距离值偏大,使得跟踪结果出现偏差。且新检测的视频帧中的人脸不可能与存储的原特征描述子的人脸完全一致,从而使距离值总有一定的误差。为了尽可能地消除这种误差,当认定检测的视频帧中人脸为存储的人脸时,将人脸标识对应的原特征描述子进行更新。由于视频帧的连贯性,人脸的姿态变化在检测的连续两帧中变化较小。采用检测的上一帧中相同人脸的特征描述子作为基准,能从最大程度上抑制人脸姿态变化产生的干扰。当新提取的特征描述子与当前存储的特征描述子相似度过低时,将新出现的人脸特征描述子替换原特征描述子并同时替换人脸标识。
为了防止某一帧中由于随机干扰因素过于严重导致的相同人脸也检测错误的情况出现,设计了一种基于时间顺序的长度为L(L为大于1的奇数)的人脸标识队列。该队列中根据时间先后顺序,将每一帧中检测到的人脸标识放入队列末尾,根据队列的先入先出原则,当队列元素总数达到L,则移除开头的元素。队列中始终存储当前帧和前L-1帧的人脸标识,队列中数目最多的人脸标识则为连续帧中的人脸检测结果。只有在当前帧的人脸检测结果与连续帧的人脸检测结果相同时,原特征描述子才进行更新,能够较好地降低某一帧的误差影响。
3 实验及结果分析
3.1 实验环境
所有仿真结果基于Inter(R)Core(TM)i5-8250U @ 1.60 GHz处理器,8 GB内存,操作系统为Ubuntu 16.04,编程语言使用Python 3.6,使用PyCharm 2018开发环境编写算法,每段图像序列长度为1 000 帧,每帧图像分辨率为640×480。
3.2 实验模型
Dlib是一个包含机器学习算法的第三方开源工具包,为提高人脸检测和跟踪的准确率,实验所需模型采用Dlib中经大量数据训练完成的模型。人脸检测模型采用的基于HOG的正面人脸检测器,参考页面为http://dlib.net/dlib/image_processing/frontal_face_detector.h.html。人脸关键点模型采用的68 点关键点模型,下载地址为http://dlib.net/files/shape_predictor_68_face_landmarks.dat.bz2。训练完成的ResNet模型,下载地址为http://dlib.net/files/dlib_face_recognition_resnet_model_v1.dat.bz2。
3.3 图像中光照和噪声的预处理结果
使用直方图均衡化和中值滤波进行预处理的效果如图4所示。图4(a)为原始样例图像,分辨率为640×480,图像中光照不均匀且存在随机噪声;图4(b)为直方图均衡化处理的人脸图像,针对图像的光照问题,从视觉效果看,处理后的图像亮度提升明显,对比度增强,细节特征也更加清晰;图4(c)为进行中值滤波处理后的人脸图像,针对图像的噪声问题,其中大部分突出的噪声点已被过滤。该样例图像的直方图均衡化和中值滤波处理的时间约为0.002 96 s,对检测帧数的时间影响可忽略不计。
图4 样例图像的处理结果
3.4 HOG特征提取结果及人脸检测
以图4(c)为待检测样例图像,基于HOG特征的人脸检测进一步消除了光照和噪声的影响,提取得到的结果如图4(d)所示,为使结果更加直观,运算中归一化了各个像素点的梯度,同时加入了梯度量级的非线性映射梯度,使梯度方向产生了明显的深浅和长度差异,更容易区分边缘。图5(a)为经过人脸检测器匹配后的标记人脸边界的图像,可以看出当存在一张或多张人脸时,基于HOG特征的人脸检测器都能予以识别。图6表示随着视频序列的长度逐渐增大时,基于Hog特征和基于Haar-like特征的人脸检测算法在检测人脸准确度上的情况,可以看出基于Hog特征的检测准确度在90%以上,而基于Haar-like特征的检测准确度只有60%左右,说明基于Hog特征的人脸检测算法比基于Haar-like特征的能检测到更多的人脸,更适合本实验的人脸检测研究,而基于Haar-like特征的算法准确度较低,容易遗漏视频帧中的部分人脸,影响人脸跟踪结果。
图5 人脸检测算法结果与人脸关键点定位结果
图6 不同人脸检测算法的对比实验
3.5 人脸跟踪结果实验
将检测到人脸的视频帧进行人脸关键点定位。图5(b)为图5(a)进行人脸关键点定位的结果,位于眉毛、眼睛、鼻子、嘴巴和面部轮廓的特征点都已经被标明。通过输入当前视频帧和定位的人脸关键点到训练好的ResNet模型,可以得到128 维的特征描述子,作为当前图像中人脸的向量表示,图5(b)左一的人脸提取的特征描述子如图7所示。
图7 人脸的特征描述子
针对两个特征描述子的相似度比较问题,需要通过与默认阈值比较得出结果。默认阈值的确定需要计算两个相同人脸的不同特征描述子的距离值作为标准,且该距离值变化幅度不能过大,最好在某一数值上下保持微小波动。图8(a)为曼哈顿距离、欧氏距离、切比雪夫距离3 种距离在已知相同人脸的两个不同特征描述子下进行计算的结果。图8(b)为曼哈顿距离、欧氏距离、切比雪夫距离3 种距离在已知不同人脸的两个不同特征描述子下进行计算的结果。由图8(a)可知,相同人脸的不同特征描述子的曼哈顿距离变化较大,在(1.15,3.70)的区间内波动,结合图8(b)中不同人脸特征描述子的曼哈顿距离波动区间(3.65,5.63),两者存在重叠区间。而欧氏距离和切比雪夫距离在相同人脸的不同特征描述子的条件下距离值变化较为平稳(图8a)。表1为实验中欧氏距离与切比雪夫距离的比较,能够看出:切比雪夫距离的变化范围虽平稳,区分度仍然偏小,且当距离值为0.09时不能很好地判定一组特征描述子是否为同一张人脸。而欧氏距离的变化范围较小且区分度较切比雪夫距离更大,故笔者采用欧氏距离作为一组特征描述子是否为相同人脸的判别标准,参考表1的数据,相同人脸的不同特征描述子的欧氏距离小于0.38,而不同人脸的不同特征描述子的欧氏距离大于0.43,计算得出边界值0.38和0.43的平均值为0.405,结果保留两位小数为0.40,将其设定为默认阈值。
图8 相同人脸和不同人脸的一组特征描述子的不同距离
表1 实验中欧氏距离与切比雪夫距离的比较
Table 1 The comparison of Euclidean distance and Chebyshev distance in experiment
距离度量相同人脸的不同特征描述子不同人脸的不同特征描述子欧氏距离范围(0.13,0.38)(0.43,0.63)切比雪夫距离范围(0.03,0.09)(0.09,0.15)
更新原特征描述子所需的人脸标识队列长度L需要通过多人脸跟踪实验确定。表2为人脸标识队列长度L对人脸跟踪准确率的关系,从表中可得:当L等于5时,人脸跟踪准确率达到峰值;且当L大于5时,值越大人脸跟踪准确率越低,因为当人脸标识队列长度越大,不同人脸的跟踪目标切换越不灵活,会出现整个视频序列都只跟踪初始人脸的情况。为了即能降低视频某一帧的误差影响,又能灵活地应对多个人脸的跟踪目标切换,取L为5,此时本实验人脸跟踪准确率为83.78%。多人脸跟踪优先度问题的解决策略是:以视频帧中最先被识别的人脸为初始跟踪目标,每当跟踪目标消失时进行目标切换。图9为多人脸实验效果图,第1张图为第1个人的人脸跟踪结果,第2,3张图中当第2个人从视频中出现时,实验的跟踪目标仍为第1个人,当第1个人的人脸从视频中消失时,跟踪目标转换到第2个人,而当第2个人出现时,因为跟踪目标已经切换,所以跟踪结果不受影响。
表2 人脸标识队列长度L对人脸跟踪准确率的关系
Table 2 The relationship between the length of a face queue and face tracking accuracy
人脸标识队列长度L人脸跟踪准确率/%376.08583.78782.38979.781174.07
图9 多人脸切换实验
笔者算法和近年来提出的人脸跟踪算法比较如表3,4所示。单人脸情况下,表中算法都有较高的跟踪准确率。多人脸情况下,表中算法的跟踪准确率都有不同程度的下降,文献[8-9]的算法因为未针对多人脸干扰问题提出有效的解决方案,在切换跟踪目标上出现明显误差,使得平均误识别帧数增大。在跟踪准确率方面,笔者算法提出的跟踪校正策略对多人脸干扰问题的解决效果较好,相比其他两种算法有明显优势。在跟踪实时性方面,笔者算法虽然比其他两种算法耗时,但基本上满足实时的需求。
表3 单人脸情况下不同跟踪算法的实验对比
表4 多人脸情况下不同跟踪算法的实验对比
4 结 论
通过对人脸特征的研究,提出了一种基于HOG和特征描述子的人脸检测与跟踪算法。该算法引入图像预处理,降低了光照变化与随机噪声的干扰。在人脸检测方面,笔者方法通过HOG特征能够检测视频帧出现的人脸,进一步降低光照、噪声的影响。在人脸跟踪方面,笔者方法借助人脸的关键点实时生成特征描述子,通过比较欧氏距离来更新跟踪目标,能够排除现实场景中多人脸的干扰,同时也更好地适应了人脸的姿态变化。实验结果表明算法准确率较高且鲁棒性较好。但是,实验中也反映出该算法存在的不足,即当场景中人脸的数目过多导致视频帧率下降,该问题在以后工作中会采用优化人脸检测算法进一步改良。