APP下载

基于PCA和非线性SVC的小数据人脸识别

2019-12-24张持健张燕习

无线电通信技术 2019年1期
关键词:特征提取人脸人脸识别

张持健,刘 雪,张 贺,张燕习

(安徽师范大学 物理与电子信息学院,安徽 芜湖 241000 )

0 引言

人脸识别是基于人的五官信息提取面部特征,用以进行身份辨识的智能识别技术。1965年,Chan和Bledsoe设计了第一个人脸识别系统,所采用的主要方法是基于人脸几何结构特征辨别法,从而进行对人体的身份识别。该方法提取并分析面部剪影曲线的结构特征; 1991年美国MIT的Turk和Pentland提出著名的特征人脸识别方法,使用特征脸与归一化的协相关量作为人脸识别的性能测试基准算法,从而进一步提高了人脸识别的准确度。而人脸识别的应用发展则是由美国 “911事件”推动,2006年FRV国际测试走进人们的视线,2008年北京奥运会在安保方面应用了大规模的人脸识别技术[1]。

因此,人脸识别不仅是当今科学家们研究的热点,也是应用领域经久不衰的重要研究课题。但是,随着科学技术的发展,在数据集越来越纷乱的当下,人脸识别也逐渐由单一式研究发展为多项式研究,从而衍生出大数据集的人脸识别系统和小数据集的人脸识别算法2个分支方向。在小数据集的基础上,存在一些经典的人脸识别研究方法。

文献[2]提出基于PCA特征提取和距离哈希K近邻分类的人脸表情识别,这种方法主要利用了PCA对高维数据的特征提取,验证了PCA主成分分析在多维数据中的应用效果十分优秀。但PCA算法和K近邻算法的结合在小数据集上的应用效果较为良好,而在多个特征多人表情识别中则效果不尽人意。文献[3]提出PCA算法和SVM支持向量机算法的人脸识别,在ORL数据库中识别效果良好。但因为作者构建多类SVM算法时,选取的核函数不同识别率也随之改变,因此需要进行多次试验以求得最优核函数以及其他相关参数,耗费了大量的实验时间。

本文提出一种基于PCA主成分特征提取和数据降维,联合可自主选取最优参数的SVC非线性支持向量机的组合学习器,用于精准分类并节省人工选取参数时间成本的人脸识别应用。实验结果表明,本文提出的组合学习器在经典的ORL和WILD数据库中不仅识别精度高,和同类方法相比该学习器识别时间成本更低。

1 基于PCA的表情识别

1.1 数据降维和特征提取

在图像数据的原始高维空间中,包含着的冗余信息和噪声信息,会在一些实际应用中(例如图像识别或图像处理等过程中)造成一定的误差干扰,不仅增加了计算的复杂度,而且降低了识别效果的准确率。研究者期望通过对这样的高维数据使用降维技术,进行空间变换处理,以减少冗余信息造成的误差,从而提高识别的准确度。主成分分析 (PCA)是多类变量降维处理与分析研究问题中最早出现的基础理论之一,它起源于通信与系统理论中的 K-L散度[1]。PCA通过一种线性变换将高维样本数据投影到低维空间中生成对应低维样本数据,并发现一组比原始的像素基向量更能有效表示输入数据的基函数[4]。因此,只需要保留一部分特征,PCA就能揭示某些复杂数据集中的潜在隐含信息。即描述对象的最显著的特征[1]。人的面部具有多种显著的人脸特征,在PCA的基础上可以形成部分特征提取的PCA人脸识别[4]。

1.2 基于PCA的数据降维和特征提取

本次实验中,通过使用PCA的最近重构性来进行图像数据的降维处理。

(1)

(2)

(3)

PCA算法流程为:

通过交叉验证法选取最佳低维空间维数为d;

② 过程: 对所有样本进行中心化操作:

(4)

至此,就是主成分分析的优化目标,即通过对样本数据进行协方差矩阵的特征值分解,从而得到经原数据集下降维的新数据集,并且把这个已经降维的新数据集用于接下来的非线性支持向量机svc算法中,作为数据输入。

在使用ORL数据库进行实验时,输入的样本数据大小为m*n,m,n分别为图片数据的长和宽。令d为输入的维数,一般情况下d=m*n。d'则为通过PCA处理后的数据维数,通常使用交叉验证得到最优的降维后维数。输入的训练集样本为:x=[x1,x2,...,xN],共N个样本。

2 SVC非线性支持向量机及其优化

支持向量机简单来说,它是一种二分类模型。SVM在小数据集上比较容易抓取数据和特征之间的非线性关系,因此SVM在一般情况下可以解决部分非线性问题,并且避免神经网络结构选择和陷入局部最优缺陷。但是由于SVM对于有残缺的样本数据和一些非线性问题并没有通用的解决方案。研究者发现采用核函数后,支持向量机可以用于正规的非线性分类。本文采用的支持向量机SVC就是python中的非线性分类支持向量机。当训练数据不可分时,通过使用核函数学到一个非线性支持向量机[4]。

2.1 SVC非线性支持向量机

因此2类样本的几何间隔最大化从而等价于2类样本间隔最小化:

(5)

在此引入拉格朗日乘子αi:

(6)

得到目标函数对偶形式:

(7)

分类决策函数为:

(8)

在SVM支持向量机的基础上,给定核函数,利用求解线性分类问题的方法求解非线性分类问题的支持向量机。非线性分类SVC可以支持多分类应用,并且有多个核函数提供选择。如线性核函数Linear、多项式核函数poly、RBF高斯核径向基函数以及sigmoid核函数。

本文算法中,使用的是RBF的高斯径向基核函数(Gaussian Radial Basis Kernel Function):

(9)

(10)

式中,C为惩罚项系数,ε为松弛变量。

引入拉格朗日乘子后的对偶问题目标函数为:

(11)

分类决策函数变为:

(12)

2.2 网格搜索算法优化SVC

SVC的主流算法是O(n)2,因此,当出现大数据集时,SVC明显计算量爆增。在本次实验中使用SVC中的高斯径向基核函数来进行分类实验。高斯核径向基函数中的参数γ和C惩罚项无法通过概率方法进行计算,只能通过穷举实验求出。这样就更增加了实验中的时间成本和计算量。因此,本文提出改进型的SVC算法,即结合网格搜索法实现算法自动寻优的SVC算法。

2.2.1 网格搜索法原理

网格搜索法是自动化调整参数值中的常见技术之一。自动化调参进行参数优化省去了人工调参的繁琐和经验不足。因此,在PCA和SVC算法中加入网格搜索技术,使得组合的学习器通过调节每一个参数来跟踪评分结果,在运行过程中自动进行交叉验证,最终使得学习器的效果性能为最佳[5]。

网格搜索法,将待搜索参数gamma(γ)和C在一定的空间范围内划分成网格,先使用大的步长对网格中的参数进行大范围内的粗略搜索,在确定一个最优参数区间后,使用小步长再进行精细搜索[6]。使用网格搜索算法不但保证了搜索参数过程中的准确度,也节省了搜索时间。

SVC算法流程如下:

① 输入

C≥αi≥0,i=1,2,...,N,

(13)

② 计算

(14)

(15)

③ 构造分类决策函数

(16)

④ 加入网格搜索算法,求得高斯核函数最佳参数gamma和C。

3 实验结果与分析

3.1 仿真环境

实验利用python编程实现,使用Olivetti实验室的ORL人脸库和从外部网站Labeled Faces in the Wild获取的人脸识别数据库。

ORL人脸库数据集中一共有400幅人脸图像(其中总共包含40个人,每个人各有10幅人脸图,每幅图像大小为112 * 92,每幅图像的维数等于10 304)。

ORL数据集中的面部表情和细节有不同程度的改变,因此导致数据集中同一个人的人脸姿态也有不同程度的变化。对于某些个体,图像在不同时间拍摄并且改变照明和面部细节,所有的图像均采用黑色均匀背景,个体处于直立的正面位置。

Labeled Faces in the Wild集是带标记的人脸图像,里面包含了数千张公开的人脸照片。每个图像包含(62*47),接近3 000像素。

本次实验环境为Windows 10 系统,处理器为i5。编辑学习器使用的语言为python 3.7版本,搭建的识别系统运行平台为PyCharm。

3.2 算法过程

① PCA特征提取

首先,将ORL人脸库中400张图像标注划分为2类数据:训练数据集和测试数据集。读进训练数据集中随机的300张人脸图像,使用PCA对其进行特征提取和降维的预处理。实验将PCA主成分的数据确定为150维,经过PCA处理,训练集中每个人的脸样本特征向量由102 304维降维150维。

图1为原图和pca提取特征后的图片。

图1 原始图像与PCA特征提取后的图像对比

② 构建高斯径向基核函数的非线性支持向量机

在多类SVC训练阶段,每一对分类直接定义一个二类非线性支持向量机,一共有N*(N-1)/2个类别的非线性支持向量机组成一个多分类的非线性支持向量机。同时,指定每个类别的权重是它出现的频数的倒数。在分类阶段,通过投票确定其类别。

③ 网格搜索

通过网格搜索和交叉验证确定SVC最佳参数Gamma=0.005,C=10,对ORL测试集中的10个人的100幅图片进行分类,识别率为:Train_score:1.0,Test_Score:0.96。

在Wild数据集上做分类,识别率为:Train_Score:1.0,Test_Score:0.85。其中,训练分数为1.0,说明该分类器已达到在训练数据上百分百的分类准确率;测试分数为0.96,说明该分类器在用于验证系统模型数据集上的准确率为96%。

④ 本文所用的学习器和其他研究者所用的方法在WILD数据集上准确率和时间成本对比如表1所示。

表1 人脸识别方法效果比对

由表1可知,本文提出的PCA&SVC算法识别分类器与其他学者提出的PCA&SVM算法相比,对数据集的分类准确率有所提高,且节省了人工选取参数的时间成本;与另外一种常用的PCA&KNN分类器相比,虽然训练分类器所用时间稍显过久,但准确率有了质的飞跃,而单独的非线性支持向量机做人脸识别则准确率更为低下。

3.3 实验总结

本次实验提出基于PCA和SVC算法相结合的人脸识别算法,在应用小数据集的人脸识别上效果比单独的SVC分类器要好,在应用数据量大的数据集上效果略差。但总体来说,运算速度和精度都比单独的SVC分类器要有所提升。相比文献[2]提出的PCA和K近邻的学习器组合来说,本文提出的组合学习器效果更优,而相对于文献[1]提出的PCA和SVM的识别算法,本文节省了大量的时间成本。

4 结束语

随着科学技术的进步和智能化的发展,人脸识别的应用将愈来愈广泛,而对人脸识别的精度也将成为一个研究热点。本文针对其他方法的参数寻优时间过程提出了改进型SVC算法,经试验证明有良好的效果,而且准确度也得以保持。存在的不足是本文提出的算法准确度仍有可提升的空间,对本算法进行研究和改进将是接下来的实验目标。

猜你喜欢

特征提取人脸人脸识别
人脸识别 等
有特点的人脸
一起学画人脸
玻璃窗上的人脸
揭开人脸识别的神秘面纱
空间目标的ISAR成像及轮廓特征提取
基于Gazebo仿真环境的ORB特征提取与比对的研究
基于特征提取的绘本阅读机器人设计方案
人脸识别技术的基本原理与应用
人脸识别技术研究与应用进展概述