一种基于人脸核心特征的PCA 人脸识别算法及应用
2012-12-22李冠楠
李冠楠 ,李 强
(顺德职业技术学院电子与信息工程系,广东 顺德528300)
人脸识别中常用的PCA(Principle Component Analysis,主成分分析方法)方法,是一种被广泛应用的标准人脸识别方法。该方法是利用K-L 变换抽取人脸主要成分,构成特征脸空间,识别时将测试图像投影到此空间,得到一组投影系数,通过与各个人脸进行比较进行识别。但是传统的PCA 人脸识别技术还远未达到实用的程度,准确率为30% ~70%左右,这其中一个重要的原因是PCA 算法对人脸的大小、角度、光照等因素比较敏感[1]。
近年来对于人脸识别较好的Adaboost 是一种具有自适应的Boosting 算法[2],它通过建立多学习机组合使得弱学习机的性能得到提升,由于具有对学习机性能的自适应和对学习现象的免疫性,受到广泛关注。而且基于Haar-like 特征的Adaboost 对象检测算法已经比较成熟,人脸检测的准确率可达到90% ~95%。本文提出了利用Adaboost 算法提取人脸核心特征,包括左眼、右眼、鼻子和嘴巴,然后根据人脸核心特征识别人脸,可以有效克服人脸识别中的大小、角度、光照等不利因素,显著提高了人脸识别率,并成功应用到了智能相片搜索系统中。
1 PCA 和Adaboost 的人脸识别方法
1.1 PCA 算法
PCA 方法,也叫做特征脸方法,是一种基于整幅人脸图像的识别算法,被广泛应用于降维,在人脸识别领域也表现突出。对于一副M×N 的人脸图像,将其每列相连构成一个大小为D=M×N 维的列向量。D 是人脸图像的维数,也是图像空间的维数。设n 是训练样本的数目,Xj表示第j 幅人脸图像形成的人脸向量,则所需样本的协方差矩阵为:
其中u 为训练样本的平均图像向量:
令A=[x1-u,x2-u,…,xn-u],则有sr=AAT,其维数为D×D。
根据K-L 变换原理,需要求得的新坐标系由矩阵AAT的非零特征值所对应的特征向量组成。直接计算的计算量比较大,所以采用奇异值分解SVD(Singular Value Decomposition)定理,通过求解AAT的特征值和特征向量来获得AAT的特征值和特征向量。
依据SVD 定理,令li为矩阵AAT的r 个非零特征值,υi为AAT对应于li的特征向量,则AAT的正交归一特征向量ui为:
则“特征脸”空间为:w=(u1,u2,…,ur)。
将训练样本投影到“特征脸”空间,得到一组投影向量W=wTw,构成人脸识别的数据库。识别时,先将每一幅待识别的人脸图像投影到“特征脸”空间,再利用最邻近分类器比较其与库中人脸的位置,从而识别出该图像是否是库中的人脸,如果是,是哪一幅人脸。
1.2 Adaboost 算法
AdaBoost 是一种分类器算法,其基本思想是利用大量的分类能力一般的弱分类器(Weak Classifier)通过一定的方法叠加(Boost)起来,构成一个分类能力很强的强分类器(Stage Classifier),生成强分类器的算法步骤为:设输入为n 个训练样本{x1,y1},{x2,y2},…,{xn,yn},其中yi={0,1}对应假样本和真样本,已知训练样本中有m 个假样本,l 个真样本,第j个特征生成的简单分类器形式为:
式中:hj表示简单分类器的值,θj为阈值,pj表示不等号的方向,只能取±1,fj(x)表示特征值。
(1)初始化权重,对于yi= 0 的样本,w1,i=1/(2m);对于yi=1 的样本,w1,i=1/(2l)。
(2)对每个t=1,2,…,T(T 为训练的次数):
②对于每个特征j,按上面方法生成相应的简单分类器hj,计算当前误差εj=∑iwi|hj(xi)-yi|。
③选择具有最小误差εt的简单分类器ht加入到强分类器中去。
④更新每个样本对应的权重wt+1,i=wt,iβt1-θi,如果第i 个样本xi被正确分类,则ei=0,反之ei=1,βt=εt/(1-εt)。
(3)最后形成强分类器:
式中,αt=lg(1/βt)。
最后将强分类器按照强弱次序串联起来,形成级联分类器。
2 人脸核心特征的PCA 识别算法
基于人脸核心特征的PCA 人脸识别算法的流程如图1 所示。包括建立人脸核心特征样本库,生成人脸核心特征检测分类器,形成人脸核心特征记忆空间,根据人脸核心特征识别人脸四个步骤。本文使用OpenCV 计算机视觉函数库实现基于人脸核心特征的PCA 人脸识别算法,OpenCV 是Intel®开源计算机视觉库,它由一系列C 函数和少量C++类构成,实现了图像处理和计算机视觉方面的很多通用算法[3]。
图1 基于人脸核心特征的PCA 人脸识别算法流程图
2.1 建立人脸核心特征样本库
为了实现人脸核心特征的检测,包括左眼、右眼、鼻子、嘴巴,需要建立左眼、右眼、鼻子、嘴巴样本库。建立样本库的流程如图2 所示,首先,准备人脸图片,我们使用美国耶鲁大学的Yale 人脸样本库,如图3 所示;然后从人脸样本图片中截取人脸核心特征样本,包括左眼、右眼、鼻子、嘴巴;最后对样本进行归一化处理,包括大小调整,角度调整等。
图2 建立人脸核心特征样本库流程图
图3 Yale 人脸样本库部分图片
2.2 生成人脸核心检测分类器
检测分类器是根据对象样本库生成的样本特征文件,生成一种对象的检测分类器后,系统将能够根据分类器检测出图片中的对象。基于Haar-like 特征的Adaboost 算法分类器是目前较成熟的对象检测算法,该算法生成包含对象Haar-like 特征的级联的分类器,可以快速检测对象。
基于Haar-like 特征的Adaboost 算法分类器的生成流程如图4 所示。首先,准备样本库,样本库中包括正样本(包含检测对象的图片),以及负样本(不包含检测对象的图片);并设置训练集和测试集,即将样本库中的正负样本的一部分设置为训练图片,另一部分作为测试图片;然后,根据训练集训练检测分类器;最后,根据测试集进行测试,完善检测分类器。生成了人脸核心特征,包括左眼、右眼、鼻子、嘴巴分类器后,就可以进行人脸核心特征的检测与提取[4]。
图4 生成人脸核心检测分类器流程图
2.3 形成人脸核心特征记忆空间
传统PCA 人脸识别算法是根据用户输入的若干已知名称的人脸图片形成人脸记忆空间,基于人脸核心特征的PCA 人脸识别算法则生成人脸核心特征记忆空间,其流程如图5 所示。首先,用户输入若干已知名称的人脸图片;然后,系统使用人脸核心特征检测分类器,检测并截取人脸中的核心特征,包括左眼、左眼、右眼、鼻子、嘴巴;最后使用PCA 算法生成人脸核心特征记忆空间,包括左眼、右眼、鼻子、嘴巴记忆空间[6]。
图5 形成人脸核心特征记忆空间流程图
形成人脸核心特征记忆空间的PCA 算法步骤包括:
第1 步 假设有P 幅已知名称的对象图像(如左眼、右眼、鼻子、嘴巴),每个对象图像大小为M×N,对象矩阵X=(x1,x2,…,xP)T。其中向量xi为由第i 个图像的每一列向量堆叠成一列的MN 维列向量,即把矩阵向量化。
第2 步 计算平均对象。
第3 步 计算差值对象,每一个对象与平均对象的差值di=xi-ψ,i=1,2,…,P。
第4 步 构建协方差矩阵。
第5 步 形成对象记忆空间W=(u1,u2,…,uQ),其中协方差矩阵的特征向量和ui是ATA 的特征值和正交归一化特征向量,Q 满足条件。
2.4 基于人脸核心特征识别人脸
基于人脸核心特征识别人脸的流程图如图6 所示,首先,用户输入待识别人脸;然后,系统根据人脸核心特征检测分类器提取出待识别人脸的核心特征,包括左眼、右眼、鼻子、嘴巴;然后,系统将待识别人脸的核心特征对象与人脸核心特征记忆空间中的对象进行比较;最后,系统根据各个人脸核心特征的比较结果和系统设置的阈值确定识别结果[6]。
图6 基于人脸核心特征识别人脸流程图
基于人脸核心特征识别人脸的算法步骤如下:
第1 步 将待识别的人脸核心特征图像(左眼、右眼、鼻子、嘴巴)与平均对象的差值对象投影到对象记忆空间,得到其特征向量,其中是将每一个对象与平均对象的差值矢量投影到对象记忆空间。
第2 步 定义阈值。
第3 步 采用欧式距离来计算与每个对象的距离。为了区分对象和非对象,还需要计算原始图像与由对象空间重建的图像之间的距离。
第4 步 根据比较结果确定识别结果。
3 实验与结果
随着数码相机、摄像机以及个人电脑的普及,大家的数码相片、视频的数量急剧增长,要找出包含某人的相片和视频要耗费较长的时间和较多的精力。本文使用基于人脸核心特征的PCA 人脸识别算法实现了智能相片搜索系统,该系统可以根据已知人脸搜索电脑中的相片和视频,经过测试,准确率达到75%左右。
高于使用传统的PCA 人脸识别算法识别的结果,表明本文提出的方法的有效性。
智能相片搜索系统的运行流程如图7 所示。首先,管理人脸核心特征记忆空间,即向系统输入已知姓名的人脸相片;然后,设置搜索选项,包括搜索人数、搜索路径等;最后进行相片或视频搜索。
图7 智能相片搜索系统运行流程图
4 结束语
基于人脸核心特征的人脸识别算法通过人脸核心特征,包括左眼、右眼、鼻子、嘴巴进行人脸识别,充分利用了成熟、可靠的基于Haar-like 特征的Adaboost对象检测算法,有效克服了传统PCA 人脸识别中的大小、角度、光照等不利因素。但当人脸有剧烈表情,如大笑、大哭、惊等,会导致该算法的识别率降低。下一步,将在增加核心特征识别权重,增加新的人脸核心特征,如人脸轮廓、等方面进行进一步探索。
[1] Viola P,Jones M J Robust.Real-Time Face Detection[J].International Journal of Computer Vision,2004,57(2):137-154.
[2] Viola P,Jones M.Rapid Object Detection Using a Boosted Cascade of Simple Features[C]//Proc. IEEE Conf. Computer Vision and Pattern Recognition,2001:511-518.
[3] Kirby M,Sirovich L.Application of the KL Procedure for the Characterization of Human Faces[J].IEEE Tran Pattern Anal Machine Intell,1990(12):103-108.
[4] Turk M,Pentland A. Eigenfaces for Recognition[J]. J Cognitive Neuroscience,1991,3(1):71-86.
[5] Yambor W,Draper B,Beveridge J R.Analysis of PCA-Based Face Recognition Algorithms:Eigenvector Selection and Distance Measures[C]//Second Workshop on Empirical Evaluation Methods in Computer Vision,2000.
[6] 甘玲,朱江.扩展Haar 特征检测人眼的方法[J]. 电子科技大学学报,2010(2):247-250.
[7] 秦宏伟,孙劲光.基于自适应预处理和PCA 的人脸识别方法的研究[J].计算机工程与应用,2011(14):186-188.