APP下载

基于PCA和SVM的人脸识别研究

2019-05-24付康陈中举杜友福

电脑知识与技术 2019年7期
关键词:机器学习人脸识别

付康 陈中举 杜友福

摘要:针对人脸图像的像素维度太高,不利于机器识别的问题,提出了基于PCA和SVM的人脸识别系统。以LFW数据集为数据源,使用Python编程语言进行测试。对数据进行预处理后,使用PCA算法对图像数据降维,最后利用SVM进行模型的训练与测试,获得实验结果。采用网格搜索的方法获取SVM的最优参数,保证了实验结果的准确性。

关键词:PCA;SVM;人脸识别;Python;机器学习

中图分类号:TP393 文献标识码:A

文章编号:1009-3044(2019)07-0209-03

Abstract: Aiming at the problem that the pixel dimension of the face image is too high, which is not conducive to machine recognition, a face recognition system based on PCA and SVM is proposed. The LFW data set is used as the data source and the Python programming language is used to test. After preprocessing the data, the PCA algorithm is used to reduce the dimensionality of the image data. Finally, the SVM is used to train and test the model, and the experimental results are obtained. The grid search method is used to obtain the optimal parameters of the SVM, which ensures the accuracy of the experimental results.

Key words:PCA;SVM;face recognition;Python;machine learning

人脸识别是图像模式识别与计算机视觉领域的一个重要研究内容,它根据人类的面部特征(几何或统计特征等)来进行身份鉴别。1965年,Bledsoe等人在PanoramicResearchInc上发表了第一篇人脸识别的报告[1],他们用脸部器官间的间距等参数作为特征,构建了一个半自动人脸识别系统,开始了真正意义上的人脸识别研究。1965年至1990年,基于几何结构特征的方法和基于模板匹配的方法是人脸识别的主要方法。1991年,麻省理工学院的Turk等人提出了特征脸Eigenface[2],该方法是后来其他大多数算法的基准。1992年,Brunelli等通过实验得出基于模板匹配的方法优于基于几何结构特征的方法[3]的结论。1997年,Belhumeur等人提出了基于子空间分析的人脸识别算法Fisherface[4],它先通过主成份分析方法将人脸降维,然后采用线性判别分析LDA期望获得类间差异大且类内差异小的线性子空间,所以它无法对复杂的非线性模型进行建模。到了21世纪,出现了许多对局部领域像素亮度或颜色值进行手工特征提取的方法,例如对人脸比较有效的基于无监督学习的特征LearningDescriptors[5]与GaborFace、LBPFace[6]等。

目前,大多数情况下计算机读取的是一张静态二维图片,这些图片本质上是由多维数字矩阵组成,如一张256×256的RGB彩色图片就有196608个数字。针对这种情况,计算机可以使用人类设计的算法从图像中提取特征或者学习到特征。

以LFW数据集为数据源,首先将数据分为训练集与测试集,使用PCA(主成分分析)对训练集的数据进行降维,获得人脸特征向量(特征脸)。然后将训练数据放入SVM(支持向量机)中,利用网格搜索的方法获取最优参数,得到一个支持向量分类器。最后使用支持向量分类器对测试集数据进行预测,得到准确率。

1 相关技术

1.1 PCA降维

降维的过程实质是一个线性变换的过程,它的核心思想是將数据沿方差最大方向投影,使它们更易于区分。PCA(主成分分析)在减少数据集维数的同时,保持着数据集中对方差贡献最大的特征[7]。

图片的本质是多维数据矩阵,在Python程序中读取下载完毕的数据,将其保存为特征向量矩阵[X],其中,矩阵的每一行是一个图像实例,每一列是一个特征值。使用PCA算法首先将每一行的数据进行零均值化处理并且计算协方差矩阵[Cov=1mXXT]。然后,计算协方差矩阵[Cov]的特征值以及它们对应的特征向量。假设需要将数据降维到k维,那么根据特征值的大小将特征向量从上到下进行排列,取前k行组成新的矩阵Q,最后将矩阵Q与矩阵X相乘之后,便获得人脸图像数据降维到k维的数据。

1.2支持向量分类器

SVM(支持向量机)是一种常用的机器学习分类方法,它通过构造最优超平面,使分类误差达到最小。针对非线性分类问题,SVM通过核函数的非线性变换将输入空间变换到一个高维空间,然后在这个新空间求得最优分类面[8]。实际上,SVM就是找到一个距离分类样本点间隔最大的分类超平面[wx+b=0]。针对多分类问题,也可以将其分解为多个二分类问题。人脸识别是典型的非线性支持向量机分类问题,分类流程如下:

使用Python中sklearn包的SVM方法实现分类的过程。其中,kernel的值设为rbf,表示核函数的类型为高斯核函数;class_weight的值设为balanced,表示每个类的权重是它出现频数的倒数。

1.3网格搜索

在人脸识别问题中,选择高斯核函数来构造支持向量分类器时,参数[σ]的选择十分重要。在高维特征空间中,参数[σ]的大小会决定数据分布的复杂程度。同样地,惩罚参数C的选择也会对分类器的性能产生影响。遍历多种参数组合,选择其中表现最好的组合,是参数选择中常用的一种方法。因为这种方法像网格一样交叉,所以被形象地称为网格搜索。

使用Python的GridSearchCV方法可以实现网格搜索,其中的參数C表示对分类错误的惩罚程度,C越高越不能容忍误差,易过拟合;C越低,分类器对误差的容忍度越高,易欠拟合。GridSearchCV参数中的gamma=[-12σ2],gamma越大,[σ]越小,对应的支持向量也就越少,gamma值越小则支持向量越多。

2 基于PCA和SVM的人脸识别实验

2.1实验数据来源

实验数据来自LFW数据集,它是2010~2015年知名领导人的一系列照片。在编写Python程序时,使用sklearn.dataset中的fetch_lfw_people进行数据的加载,选择最少拥有80张照片的类别。图片总张数为1140张,特征数为1850个,类的个数为5,数据以数组的形式被加载之后,将数据维度降为150。通过调用train_test_split方法将数据分为训练数据集与测试数据集两个部分,训练数据集占80%,测试数据集占20%。

2.2实现流程

使用Python语言来完成基于PCA和SVM的人脸识别系统设计,具体实现流程如图1所示:

3 实验结果

3.1测试结果

在完成支持向量分类器的训练之后,使用测试集数据对分类器的准确率进行测试,结果如表1所示:

其中,查准率(P)表示所有预测为此人的样本中,实际上为此人的百分比,越高越好;查全率(R)表示所有实际上为此人的样本中,成功预测为此人的百分比,越高越好。F1分数=[2PR(P+R)],当F1分数较高时,分类器的表现更好。由表1可知F1分数最后为0.90,所以此分类器具有较好的表现。

3.2效果展示

4 总结

本文利用PCA技术对人脸图像进行降维,并提取重要特征;使用SVM技术训练机器识别不同的人脸图片,将它们进行分类。实验结果表明,基于PCA与SVM的人脸识别系统在特定的人脸库中进行人脸识别是可行的。通过网格搜索进行参数选择,提高了分类器的准确率,要进一步提高准确率,还可以通过选取更具区分力的特征来实现。所以,可以围绕不同特征维数对识别准确率的影响来展开后续研究。

参考文献:

[1] BledsoeW W.Man-machinefacialrecognition[J].Rep.PRI,1966,22.

[2] Turk M,Pentland A.Eigenfacesforrecognition[J].Journalofcognitiveneuroscience,1991,3(1):71-86.

[3] Brunelli R,PoggioT.Facerecognition:Featuresvel usternplates[J].IEEEtransactionsonpatternanalysisandmachineintelligence,1993,15(10):1042-1052.

[4] Belhumeur P N,Hespanha J P,Kriegman D J.Eigenfacesvs.fisherfaces:Recognitionusingclassspecificlinearprojection[J].IEEETransactionsonpatternanalysisandmachineintelligence,1997,19(7):711-720.

[5] Winder S A J,Brown M,Learninglocalimagedescriptors[C]//ComputerVisionandPatternRecognition,2007.CVPR07.IEEEConferenceon.IEEE.2007:1-8.

[6] Chen D,Cao X,Wen F,et al.Blessingofdimensionality:High—dimensionalfeatureanditsefficientcompressionforfaceverification[C]//ProceedingsoftheIEEEConferenceonComputerVisionandPattern Recognition,2013:3025-3032.

[7] 李德福,黄新.基于二维PCA和SVM算法的人脸识别系统[J].桂林电子科技大学学报,2017(5):391-395.

[8] 杨梅芳,石义龙.基于2DPCA+PCA与SVM的人脸识别[J].信息技术,2018(2):32-36.

【通联编辑:唐一东】

猜你喜欢

机器学习人脸识别
人脸识别 等
揭开人脸识别的神秘面纱
前缀字母为特征在维吾尔语文本情感分类中的研究
基于支持向量机的金融数据分析研究
基于类独立核稀疏表示的鲁棒人脸识别
基于K-L变换和平均近邻法的人脸识别