林椹尠,李相宇,惠小强
(1.西安邮电大学 理学院, 陕西 西安 710121; 2.西安邮电大学 通信与信息工程学院,陕西 西安 710121;3.西安邮电大学 物联网与两化融合研究院, 陕西 西安 710061)
人脸识别作为生物特征识别领域的重要方法之一,因其具有非接触性和不易窃取性的特点,已经被广泛的应用于安全监控、人机交互、人工智能以及电子商务安全中。人脸识别受到数据中面部姿态、图片颜色、图像大小、背景环境等条件的影响,通常可将人脸识别分为限制性条件下和非限制性条件下的两种识别类型。在限制性条件下,人脸数据多为单一背景下,正面姿态的单人灰度头像的识别。在非限制性条件下,人脸数据大多是从真实环境中采集,并综合了脸部的姿态、光照、表情、背景等多种影响因素,更具有实际应用价值[1-3]。
基于支持向量机(Support Vector Machine,SVM)算法[4-5],基于主成份分析法[6-7](Principal Component Analysis,PCA)和基于方向梯度直方图(Histogram of Oriented Gradient,HOG)算法[8-9],是较为常用的人脸识别算法。SVM算法通过对核函数的优化和分类算法的改进来进行人脸识别,由于其提取图像的全部特征,计算量较大,故不适用于大数据的快速识别;PCA是对全局进行特征提取,降低了特征的维度,但识别准确率受光照的影响较大;基于HOG特征提取的方法,不受光照和几何形变的影响,其计算量依然较大。在限制性条件下,如同一背景下的人脸识别和单一表情下的人脸识别,上述3种算法均具有较高的识别准确率。在非限制条件下的人脸识别问题,由于数据中保留较多的冗余信息,使得算法的计算量较大,尤其是在样本量较少的情况下,这三种算法的识别准确率不高。
针对非限制性条件下人脸识别算法计算量大及识别准确率较低的问题,本文将Haar特征分类器[10]引入到原始数据的预处理过程中,结合HOG特征提取、快速PCA降维处理和SVM分类算法,构建了一种针对非限制性条件下的人脸识别方法。
图1是在非限制性条件下获取的部分人脸图像数据。从中可见部分人脸数据的背景、人脸的偏转角度、面容姿态和表情等都存在着较大的差别,并且存在数据成像效果较差或人脸不完整的情况,这些数据均不能用做人脸识别中分类模型的训练样本。
图1 非限制性条件下的人脸图像
为了减小图像中存在的噪声对人脸识别准确率的影响,使得特征提取和人脸识别具有较高的鲁棒性,在训练样本进行特征提取之前,需要对原始数据先进行预处理。原始数据的预处理包括从人脸数据库中读取原始数据和人脸区域的检测与提取两个部分,其流程如图2所示。
图2 原始数据预处理流程
非限制性条件下,原始数据因其采集方式不同,部分人脸图像无法用于分类模型的训练,在读取数据之前,需要将这部分数据舍弃。考虑到人脸数据库中样本命名方式不同,为了实现样本数据的大批量的读取以及有序化保存,本文采用OpenCV跨平台计算机视觉库,通过C++编程实现原始数据的批量读取与有序化保存[11]。经过有序化保存后的样本数据方便于人脸的检测与提取快速实现。
考虑到在非限制性条件下,人脸识别中原始的样本数据存在着大量的冗余信息和干扰信息。为了优化实验样本,在原始数据预处理阶段引入Haar特征分类器,去除人脸区域外冗余信息和干扰信息,并对读取的数据进行人脸的检测和人脸区域的提取。在提取过程中,考虑到原始数据为彩色图像,直接读取将得到较大的数据量并且容易出现误检或漏检的情况。首先,为了降低图像的数据量,对原始数据进行灰度化处理。然后,为了弱化光照的影响,增强图像的对比度,对灰度化处理后的图像进行直方图均衡化处理[12],其效果如图3所示。再利用Haar特征分类器,对处理后的数据进行人脸的检测与提取,图4为人脸检测和人脸区域的提取结果。
经过预处理后的数据统一保存为64×128像素,每一类样本均以从小到大的序列命名并存储。这样就得到了用于特征提取的样本图像数据。
图3 灰度化及直方图均衡化的图像
图4 人脸区域的检测与提取
方向梯度直方图(HOG)是由Dalal等在2005年提出,用于对行人进行检测[13]。HOG特征具有较强的鲁棒性,其对光照变化和几何变化都不敏感,并且HOG特征的计算量较少。因此,采用方向梯度直方图对样本图像数据进行特征提取。
假设I(x,y)表示样本图像像素点的位置;Gx(x,y)和Gy(x,y)分别表示像素点梯度向量在水平和垂直方向上的分量;G(x,y)表示梯度向量的大小;θ(x,y)表示梯度向量的与水平方向的夹角,像素点梯度向量在水平和垂直方向上的分量梯度分量定义[13]为
Gx(x,y)=I(x+1,y)-I(x-1,y),
(1)
Gy(x,y)=I(x,y+1)-I(x,y-1).
(2)
则
(3)
(4)
式(1)(2)可分别计算出各像素点(x,y)在水平及垂直方向上的梯度分量,式(3)(4)分别计算出各像素点的梯度幅值及梯度方向。
根据实验样本的像素大小,在HOG特征提取的过程中,选用8×8像素的单元对64×128像素的窗口进行划分,共形成了128个单元,其中相邻的单元不重叠。然后,把4个单元组成16×16像素的块,共组成105个块,其中块的步进大小为8个像素,水平方向的块数为7,垂直方向的块数为15。最后,对每个单元统计方向梯度直方图,将所有梯度方向划分为9个角度区间,作为直方图的横轴,角度范围所对应的梯度值累加值作为直方图纵轴,每个角度区间划分如图5。这样,一个块就具有36个特征值,然后,将105个块的特征值串联起来,得到了一个样本的3780维HOG特征。
图5 角度区间划分
对于人脸识别问题,其样本特征维度往往远高于样本数。本文的样本数据为8192(64×128)维,即使是所提取的HOG特征,也达到3780维。对于PCA算法中协方差矩阵的求解,其计算数据量为3780×3780维,这将导致运算数据量很大,程序运行时间较长[7]。为了快速有效地降低样本维度,使用快速PCA的方法[14]来求解样本HOG特征矩阵的特征值及特征向量。
设Z为样本HOG特征矩阵,ZT为样本特征矩阵的转置,构造矩阵T=Z×ZT。设T的前k个特征值D和特征向量W,其中k为样本数。对非正定矩阵P,若
P-1×(Z×ZT)×Z=S,
则等价于
P-1×(ZT)-1×ZT×Z×ZT×P=S,
所以,
(ZT×P)-1×ZT×Z×(ZT×P)=S,
可以看出,ZT×Z的特征向量为ZT×P,而Z×ZT的特征向量矩阵为P,即W=P。由ZT×Z和Z×ZT的特征向量相同可得,快速PCA算法中协方差矩阵的特征向量[14]为V=ZT×W,其中V表示协方差矩阵的特征向量。
对提取的HOG特征进行快速PCA降维处理之前,需要先对数据进行零均值归一化预处理[14]。再利用快速PCA降维算法求出样本矩阵的特征值及特征向量。为了使特征向量V作为低维空间的基向量,则需要特征向量V进行归一化处理,使特征向量V′满足正交化和归一化条件。由样本矩阵Z和低维空间基向量V′得到样本的PCA最终值为Zpca=Z×V′,其中Zpca表示最终的样本矩阵。
可以看出,经过PCA降维处理后的数据维度,由3780维减少到了k维,即维数与样本数相等。这样,就有效地减少了数据量,能加快运行速度。
经HOG特征提取和PCA降维处理后得到特征数据,但同一样本中不同特征分量的数值大小存在着较大的差异性。为了更方便地应用支持向量机(SVM)分类识别,使数据具有可比较性,在进行分类和识别之前,对数据再进行归一化处理。
采用中值归一化方法[15]把同一样本的数据归一化到[-1,1]之间,即
其中,Xfinal为归一化处理后的数据,X为原始数据,Xmax为原始数据中的最大值,Xmin为原始数据中的最小值。经中值归一化处理后的样本数据,将用于人脸识别的最终数据,但是样本数据特征量较多,且样本数量不多。
根据SVM算法对小样本、高维度的数据具有强大的分类能力特点,在人脸识别阶段选用SVM算法对样本进行分类并识别。
SVM算法通过寻找不同样本间的最优超平面,将不同的类别区分而进行分类。最优超平面可以表示[16]为
其中,sign为符号函数,αi为Lagrange乘子,yi为分类标志,φ(x)为x的高维映射函数。通过核函数k(x·xi)代替φ(x)·φ(xi),上式变为
最终得到最优分类超平面。
基于SVM的人脸识别包括模型的训练和样本的测试两个部分。本文采用线性核函数,对训练样本进行训练并对SVM算法中的参数进行优化,得到最终的训练模型。然后,用训练好的模型对测试样本进行测试,得到人脸识别的准确率和测试时间。
实验环境分别为硬件环境和软件平台两个部分。硬件环境包括一台PC机,Windows 7_64位操作系统,处理器为Intel(R) Core(TM) i5-2450M CPU @ 2.50GHz,内存为4.0G等;软件平台为Visual Studio 2015,OpenCV 3.2.0,MATLAB R2015b等。
在MATLAB平台中使用libsvm工具包,是由台湾大学林智仁(Lin Chih-Jen)教授等开发所设计的SVM模式识别与回归的软件包[17]。
实验数据选用非限制性条件下的LFW人脸库。LFW人脸库中包含5749人,共13233幅图像,图像像素为250×250。实验过程中以数据量大于40张的人脸图像作为实验样本,共选出14个实验样本,如图6所示。
图6 实验样本
通过以下4种方式进行模型的训练和样本的测试:
(1)选择各类中的10张作为实验样本,其中,5张作为训练样本,5张作为测试样本;
(2)选择各类中的20张作为实验样本,其中,10张作为训练样本,10张作为测试样本;
(3)选择各类中的30张作为实验样本,其中,15张作为训练样本,15张作为测试样本;
(4)选择各类中的40张作为实验样本,其中,20张作为训练样本,20张作为测试样本。
实验仿真包括实验样本的预处理和分类识别两个阶段。首先,在OpenCV搭建的实验平台上完成原始数据的灰度化和直方图均衡化处理、人脸特征区域的提取和数据的有序化保存,预处理后的数据如图7所示。然后,在MATLAB平台上,对分类提取的4种不同数量的实验样本进行HOG特征提取、快速PCA降维处理、数据归一化和SVM分类等过程,记录下4种不同数量的样本的识别准确率,同时,记录5次测试阶段的识别时间并取平均值作为最终的识别时间。
在预处理阶段的数据有序化保存时,对64×64像素和64×128像素两种格式的识别准确率进行对比。测试结果显示,64×64像素的识别准确率为89.28%,低于64×128像素的93.57%,所以,把预处理后的数据全部保存为64×128像素。
图7预处理后的部分样本
为了验证本文方法的有效性,采用比较的方法,分别把本文方法与SVM算法、PCA+SVM算法、HOG+SVM算法在相同实验条件下人脸识别的效果进行了对比。分别取4种算法在4种不同数量实验样本情况下的人脸识别率,实验结果如表1所示,测试识别时间对比结果如图8所示。
由表1可见,4种算法的识别准确率都随着训练样本数的增加有明显的提高。在相同数量的训练样本和测试样本的情况下,直接对原始数据使用SVM算法的识别准确率最低,PCA+SVM算法和HOG+SVM算法的识别率虽然有所提高,但是其识别率依然较低。本文方法在实验样本数较多和较少的情况下,其识别准确率均优于其他3种算法,在最大样本量的识别准确率可以达到93.57%。从图8中可知,本文方法不仅提升了识别准确率,而且其识别用时较小,提高了识别的速度。SVM算法在测试阶段的识别时间随着实验样本数的增加而增大,虽然,HOG+SVM算法识别时间有所减少,但是,其识别时间仍受到实验样本数的影响。本文方法和PCA+SVM算法的用时基本相同,而且受实验样本数的影响不大。
表1 不同算法的识别准确率
图8测试识别时间对比
为了改善非限制性条件下的人脸识别准确率较低的问题,提出了一种结合Haar特征分类器、HOG特征提取和快速PCA降维处理的人脸识别改进方法。通过与SVM算法、PCA算法以及HOG算法的对比实验表明,该方法相较于其他3种算法具有较高的识别率,较短测试识别时间,且在较少样本下情况下,识别率相对较高。但是,在有遮挡物和偏转角度较大情况下,本文算法的人脸识别率不理想,算法还需做进一步的改进。