1. 引言
PCA [1] 是一种经典的多元统计方法,是由Hotelling于1933年首先提出的,多元统计分析处理的是多变量(多指标)问题,由于变量较多,增加了分析问题的复杂性。但在实际问题中,变量之间可能存在一定的相关性,因此,多变量中可能存在信息的重叠。人们自然希望通过克服相关性、重叠性,用较少的变量来代替原来较多的变量,而这种代替可以反映原来多个变量的大部分信息,这实际上是一种“降维”的思想。
在20世纪90年代Vapnik等提出了一种新的机器学习方法——支持向量机 [2] (Support Vector Machine, SVM)。支持向量机(SVM)是一种基于统计学习理论的采用结构风险最小化原则的机器学习方法,它通过构建最优分类超平面,将未知样本的分类误差降低到最小,并表现出很高的泛化能力。相比于传统的机器学习方法,它能够很好地克服非线性、小样本、过拟合等问题。SVM被广泛应用于机器学习中的分类和回归问题如模式识别 [3]、信号处理 [4]、函数拟合、预测分析 [5]、故障分类等领域。SVM还被应用于计量生物学 [6],生物信息学 [7] 和化学信息学 [8] 等学科中。
随着人工智能技术的发展,人脸识别技术也得到了前所未有的关注。目前,人脸识别技术已经广泛应用于安防、金融、数码相机、门禁系统、身份识别、网络应用等场景中 [9]。人脸识别技术包括基于几何特征的方法(Geometrical Features Based, GFB)、局部特征分析方法(Local Face Analysis, LFA)、基于动态链接模型的方法(Dynamic Link Architecture, DLA)、卷积神经网络算法(Convolutional Neural Networks, CNN)和主成分分析(Principal Component Analysis, PCA)算法。
本文基于ORL人脸数据集,将数据集分为训练集和测试集,首先使用PCA对训练数据降维,将降维后的数据进行归一化处理,输入使用高斯核函数(RBF)的SVM训练,在PCA降维的过程中,我们可以得到用于降维的若干个特征向量,我们将这些特征向量称为特征脸,使用这些特征脸将测试数据映射到低维空间,将得到的数据归一化处理,输入到训练好的模型进行预测,从而实现人脸识别功能。
2. 主成分分析
PCA本质是找出一组投影空间,使得在投影空间的数据能最大限度地代表原始数据。PCA法能够降低数据的维数,减少图像中冗余的信息和噪声并且使降维后的数据不能失真。其中,冗余信息指数据中与其他数据线性相关的数据,这些数据被其他数据线性表示;噪声代表矩阵较小的特征根对应的特征向量,常见的噪声包括光照、阴影等。而通常的方法是通过保留数据的低阶主成分,去除高阶主成分,从而能够保留数据中的核心部分去除冗余和噪声。
2.1. PCA的算法原理
主成分分析的数学模型是,设p个变量构成的p维随机向量为
,假定其存在二阶矩,设X的均值向量和协方差阵分别为
。对X作正交变换,令
,其中T为正交阵,要求Y的各分量是不相关的,并且Y的第一个分量的方差是最大的,第二个分量的方差次之,……,等等。为了保持信息不丢失,Y的各分量方差和与X的各分量方差和相等。
为了防止大数吃小数的问题,我们首先将输入数据作去中心化处理,在本文中,假设数据集的每张人脸图可以表示为
,均值为
,则去中心化后的人脸为
,图1展示了这一过程。将去中心化的人脸作为PCA的输入,即上文中的X是去中心化后的结果。
考虑如下的线性变换:
用矩阵表示为
,其中
,
。
我们希望寻找一组新的变量
,这组新的变量要求充分地反映原变量
的信息,而且相互独立。这里我们应该注意到,对于
有
,
,
这样,我们所要解决的问题就转化为,在新的变量
相互独立的条件下,求
使得
,
,达到最大。
首先应该注意到,使得
达到最大的线性组合,显然用常数乘以
后,
也随之增大,为了消除这种不确定性,不妨假设
满足
或者
。那么,问题可以更加明确。
第一主成分为,满足
,使得
达到最大的
。
第二主成分为,满足
,且
,使得
达到最大的
。
一般情形,第k主成分为,满足
,且
,使得
达到最大的
。
第一主成分的目标函数为
对
求导,可得
,
。
由于X的协方差阵
为非负定的,其特征根均大于零,不妨设
,那么,
的最大方差值为
,其相应的单位化特征向量为
。
针对一般情形,第k主成分应该是在
且
或
的条件下,使得
达到最大的
。这样我们构造目标函数为
对目标函数
求导有:
用
左乘上式有
即有
,那么,
。从而
,
因此
的最大方差值为第k大特征根
,其相应的单位化的特征向量为
。
综上所述,设
的协方差阵为
,其特征根为
,相应的单位化的特征向量为
。那么,由此所确定的主成分为
,
,
,
,其方差分别为
的特征根。
主成分分析把p个原始变量
的总方差
分解成了p个相互独立的变量
的方差之和
。主成分分析的目的是减少变量的个数,所以一般不会使用所有p个主成分的,忽略一些带有较小方差的主成分将不会给总方差带来太大的影响。这里我们称
为第k个主成分
的贡献率。第一主成分的贡献率最大,这表明
综合原始变量
的能力最强,而
的综合能力依次递减。若只取
个主成分,则称
为主成分
的累计贡献率,累计贡献率表明
综合
的能力。通常取m,使得累计贡献率达到一个较高的百分数(如85%以上)。
2.2. 奇异值分解
在2.1中,我们通过计算样本(去中心化后)的协方差矩阵
的特征值和特征向量来求解主成分,然而,在人脸识别的研究中,
的维数p很大,导致协方差矩阵
的维数也很大,那么在求特征值和特征向量时会消耗大量的时间。为此,我们通过奇异值分解的方法来简化这一过程。
假设有m张人脸图片,我们将每张照片拉直成一个列向量,并且去中心化后得到
,
是p维的(
)。现在,我们要求解
,其中
的特征值和特征向量,等价于求
的特征值和特征向量。
根据高等代数中奇异值分解的理论,
的正特征值和
的正特征值相同。设
的正特征值为
,
对应的特征向量为
,那么
的特征值
对应的特征向量为
这样,我们通过求解一个阶数较小的矩阵
的特征值和特征向量,得到了原本阶数很大的矩阵
的特征值和特征向量,这一求解方法其实是在奇异值分解过程中产生的推论。
我们将上述问题中得到的
称为特征脸(如图2所示),在本文中,我们取前20个主成分,即
,此时,每张人脸看成一个20维的向量,与未处理前每张人脸数万维的规模相比,大大降低了数据的复杂度,并且节省存储空间,同时,极大的降低了支持向量机的运算量。
3. 支持向量机
支持向量机(SVM)是在统计学习理论和结构风险最小原理基础上建立的,根据有限的样本信息在模型的复杂性(即对特定训练样本的学习精度)和学习能力(即无错误地识别任意样本的能力)之间寻求平衡,来获得最好的推广能力。SVM是应用最广泛的分类器。
SVM本身只能解决二分类问题,要将SVM应用到人脸识别实现多分类的功能,原始的SVM已经不能满足我们的要求,于是我们引入一对一(OVO)的SVM。
所谓一对一(OVO)的SVM,就是在任意两类样本之间设计一个SVM,因此N个类别的样本就需要设计
个SVM。当对一个未知样本进行分类时,得票最多的类别即为该未知样本的类别,如图3所示。
4. 实验
本文选择ORL人脸数据库作为实验数据,该数据库是英国剑桥的Olivetti研究实验室1992年4月至1994年4月期间创建,包含40个人的人脸照片,每人10张,共400张,像素均为112 × 92。我们将这400张照片分为训练集和测试集,取每个人的前八张照片,共320张作为训练集,取每人的后两张,共80张照片作为测试集。
本文的实验是在Windows 10环境下,使用MATLAB 2020a完成的。因为MATLAB自带的svm实现函数是svmtrain和svmclassify函数,且仅支持二分类问题,所以在训练OVO模型时,用到了libsvm工具包,libsvm是台湾大学林智仁(Lin Chih-Jen)教授等开发设计的MATLAB工具包。实验前需要下载libsvm工具包安装到MATLAB中,并使用Visual C++进行编译,完成了这两项工作之后就可以在MATLAB中调用libsvm中的OVO分类函数。
4.1. PCA降维
将数据集的每张照片拉伸为一个112 × 92维的列向量。首先求训练集中320个列向量的均值,然后对每个训练样本去中心化后得到
,计算去中心化后样本的协方差矩阵
,通过奇异值分解(SVD)求解
的特征值和特征向量,在本实验中,我们取前20个主成分,因此,经过PCA后,训练集中的每个人脸向量的维数从112 × 92维降到了20维,再将降维后的数据进行归一化处理,表1给出第一个人的前五张照片的一部分数据。
Table 1. Results of data dimensionality reduction
表1. 数据降维的结果
PCA降维后,我们还可以得到
的二十个最大特征值对应的特征向量,我们将之称为特征脸,如图3所示。最后,对测试集中数据去中心化,应用特征脸将去中心化的测试集映射到低维空间。
至此,我们应用PCA算法完成了人脸识别前非常重要的准备工作。
4.2. OVO人脸识别
通常人脸数据都是非线性可分的,选取使用高斯核函数(RBF)的SVM对不同的人脸分类。高斯核函数的表达式为:
称参数
为核参数,
值的选取会影响SVM的分类效果,此外,影响分类结果的还有(10)中的惩罚参数C。本文的参数组合
时依靠经验选取的,我们取
。
将
作为OVO模型的参数,降维后的训练数据、测试数据以及训练集标签、测试集标签作为OVO模型的输入,进行人脸识别。40个人的标签分别为1~40,用测试集标签和模型的预测结果比较,计算出OVO模型的准确率,预测结果如表2所示。
Table 2. Comparison of predicted labels and true labels
表2. 预测标签和真实标签对比
模型的预测准确率为96.25%,从表2可以看出第10人的第10张,第19人的第9张和第28人的第9张预测错误,在图4中标出这几人的照片。
5. 结论
本文阐述了PCA降维原理、SVD奇异值分解、线性可分和非线性可分数据SVM的数学原理以及SVM在多分类问题中的使用方法。基于ORL人脸数据库对400张人脸图片进行数据降维,降维后的人脸向量作为多分类SVM模型OVO的样本,将样本分成训练集和测试集,并用训练集训练OVO模型,该OVO模型在测试集的精度为96.25%,具有较高的识别率。