基于PCA和FLD的人脸识别方法

2012-04-29 13:18张良
电脑知识与技术 2012年34期
关键词:模式识别人脸识别

摘要:该文介绍了2种人脸模式识别领域常用的方法:“PCA(PrincipalComponentAnalysis)主成分分析法”以及“FLD(FisherLinearDiscriminant)fisher线性判别法”,并且在后面给出了2个具体的实现方案。一个基于PCA的人脸识别,一个基于PCA+FLD的更加优化的识别方案,最后综合比较了两种方案的优缺点。

关键词:模式识别;人脸识别;PCA;FLD

中图分类号:TP18 文献标识码:A 文章编号:1009-3044(2012)34-8259-04

通常的人脸识别一般包含几大步骤:图片预处理、特征提取和特征选择和人脸检测。在这其中最为重要,通常也决定了一个识别系统的效率的,便是最终的人脸检测方法。优秀的检测方法能够利用为数不多的特征得到较低的计算量和不错的识别率;相反,如果方法不当,可能会使得系统必须在维数极高的空间中处理数据,这样便导致后续的工作异常复杂甚至不可完成。在该文的设计中,即使是在采用传统的线性判别方法时,也在方案之中考虑了不必要计算的剔除。这不仅体现在特征提取后的根据阈值抛弃无用特征上,还体现在FLD方法中对协方差矩阵的选择上:在不影响识别率的条件下尽可能的减小识别所带来的代价。

1PCA方法简介

1.1PCA(PrincipalComponentAnalysis)简介

主成分分析(PrincipalComponentAnalysis)是一种统计分析方法,它关注事物主要矛盾,并将多元事物中的主影响因子解析出,起到揭示本质、简化问题的目的。计算主成分的目的是将高维数据投影到较低维空间。给定[n]个变量的[m]个观察值,形成一个[n×m]的数据矩阵,[n]通常比较大。人们难以认识这样的一个多变量描述的复杂事物,因此,如何抓住事物主要方面重点分析成为了一个研究的热点。

研究人员比较希望事物的主要方面只表现在几个主要变量上,从而可以通过分离这些变量详细分析来抓住事物的特征。但一般情况下,并不容易找到这样的关键变量。这时,如何将原有变量进行一定的线性组合来代表事物主要方面的特征就成为了一类重要的研究方法,而主成分分析(PCA)就是这类方法中极具代表性的一种。

主成分分析法具体实施是寻找[r(r

1.2Eigenface(特征脸)方法简介

Eigenface(特征脸)方法是一个从PCA方法引申出的一种人脸识别描述技术的算法。它将整个样本图像看作随机向量而进行K-L变换。K-L变换后可以获得一系列基底,其中特征值较大的基底与目标人脸形状相似,故称特征脸。将这些基底按照一定的算法组合,可以无限接近待识别的人脸目标图像,从而达到识别的目的。

具体识别过程是:首先获取目标特征脸元素,通过K-L变化得到基底,再由这些基底构成子空间,最后将将人脸图像映射到这些子空间上,比较其与己知人脸在特征空间中的位置,具体步骤如下:

1)样本采集或者从数据库提取实验所需人脸图像样本,训练并算出其Eigenface值,将其定义为人脸空间。

2)输入待识别的目标图像,采样并映射到前面所得到的空间中,得出一组关于目标的特征数据。

3)检查目标人脸与空间的距离,作为判断该目标是否可能是人脸的判据。

4)若判断出是人脸,则利用其权值进一步判断其是否属于已有样本集,并找出样本集中与其相似度最高的人脸图像。

该文后面介绍的人脸识别系统中的方法1便是基于特征脸的识别方案,在后面可以看到基于特征脸的识别方案在特定环境下可以达到非常高的识别率,而且算法的代价并不大。

2FLD简介

2.1fisher线性判别原理简介

简单来说,fisher线性判别的基本原理就是:假设将d维空间上的样本投影到一条直线上,样本的特征将混在一起而难以区分,于是我们希望找到一个方向,使得在这个方向的直线上,样本集合最容易区分。

换言之,希望找到投影矩阵W,使得在投影之后,属于不同类别的样本尽可能分的开些,各类样本均值离得越远越好,即:类间散度越大越好,类内散度越小越好。

2.2Fisher线性判别计算过程

首先对一些基本参量下定义。

2.2.1样本在d维特征空间的一些描述量。

1)各类样本均值向量[mi]

[mi=1Nix∈xixi=1,2]

2)样本类内离散度矩阵[Si]与总类内离散度矩阵[Sw]

[Si=i=12xi-mixi-miT]

[Sw=S1+S2]

3)样本类间离散度矩阵[Sb]

[Sb=m1-m2m1-m2T]

类内离散矩阵Si在形式上与协方差矩阵很相似,但协方差矩阵是一种期望值,而类内离散矩阵只是表示有限个样本在空间分布的离散程度。

2.2.2在一维Y空间

1)各类样本均值[mi]:

[mi=1Niy∈yiy,i=1,2]

2)样本类内离散度[Si]和总类内离散度[Sw]

[S2i=y-mi2,i=1,2]

[Sw=S21+S22]

1)和2)可以用于描述空间样本点到某一向量投影的离散度,也就是该向量对[W]的投影在[W]上的分布。[S2i]的定义与随机变量方差相类似。

下面给出Fisher准则具体的实现。Fisher选择[W]的依据是:尽量使原样本向量在该方向上的投影满足类间分布尽可能分开、类内样本投影尽可能密集的要求,根据该原则,定义评价投影方向[W]的函数为:

于是问题便化简为求的一个合适的值,使得上述J函数获得极大值,采用拉格朗日乘子法可以求解出满足就是我们所求,最终通过解出这一所求矩阵,即可得到最后我们需要的fisher法则最佳投影方向。

3基于PCA的人脸识别算法

后面附上的人脸识别系统中包含2套人脸识别方法,而第一套便是基于PCA中的特征脸算法写成的人脸识别程序,介绍具体算法之前先说明一些算法前的处理,而这个处理是后面的方法2也共用的,在此一并介绍,具体出现的代码均为MATLAB7中的语言。

首先,将已有的图片库(代码中的traindatabase)中的所有图片读取到MATLAB中,并用rgb2gray获得图片的灰度信息。

其次,通过reshape函数将所有图片从MxN的2D矩阵压缩为一维列向量,其长度为M*N。

最后,将代表所有图片(共计P张)的一维向量组成一个2D矩阵T,其大小为M*NxP,每一列均代表了图片库里的一张原图像。

经过以上处理了以后,下面进行基于特征脸(Eigenface)的人脸识别:

1)获取总样本矩阵T的均值m=mean(T,2)

2)计算代表每张原图片的向量与样本均值m的背离程度double(T(:,i))-m

3)将上述P个背离程度向量组成矩阵A,然后利用A构造协方差矩阵L=

4)求取上述协方差矩阵L的特征值和特征向量[VD]=eig(L)

5)在上一步求出来的特征向量中选择大于既定阈值的向量组成筛选后的特征向量L_eig_vec

6)将背离程度与特征向量结合求得最终的特征脸向量Eigenfaces=A*L_eig_vec

到这里,我们便获得了训练图片库里面的所有图片的特征脸向量,下面再利用欧式距离对其进行甄选,以获得识别结果。

首先,将待测图片压缩成同样的一维列向量,与样本均值做差,得到背离程度。

其次,通过背离程度与特征脸向量相乘得到待测图片的投影。

最后,利用原待测图像的投影与图片库里每张已有图片求得欧氏距离,找出距离最小的一幅图,即为识别结果。

4基于FLD的人脸识别算法

第二套算法的前置处理程序与第一套相同,其实它可以算作是在第一套算法基础上的一个改进,因为他用到了第一套算法在特征脸向量求取之前的所有代码,不同的是,第一套算法是直接根据特征脸向量对待测图片做投影了以后求取欧式距离,而第二套算法在其基础上,做出了降维,即进一步将向量投影到fisher空间中进行求取欧式距离。

方法可以简述为:

首先,通过PCA的方法将MxN的图片投影到一个(P-C)的空间,称其为PCA子空间。

其次,再利用fisher法则求取合适的投影向量,将图片进一步投影到一个(C-1)的子空间,我们称其为fisher线性空间,以达到降维以及fisher分类的目的。

最后在fisher子空间中,通过求取欧氏距离来在已有图片库中找到待测图片匹配的目标。

具体来说,则是:

1)……前面若干步骤,与方法1相同,求得特征向量L_eig_vec,不过这里没用作阈值筛选,而是直接用L_eig_vec与背离程度矩阵A相乘,得到将图片投影到PCA空间中的传递矩阵V_PCA=A*L_eig_vec,大小为M*Nx(P-C)。

2)然后利用V_PCA将图像投影到PCA子空间

3)进一步,构造fisher判别中的类内离散度矩阵和类间离散度矩阵,以及投影后的总样本均值m,求取使得fisher判别函数J取得极大值的W,获得理想投影方向。

4)将图片进一步投影到fisher子空间中,求取与图片库中的每张图片的欧氏距离,选取其中的最小值,作为识别结果输出。

5结论

本实验最终采用MATLAB7.8编程,并利用标准数据库face94Essexfacedatabase中的人脸库进行了试验,实验结果表明,两套方法均有较好的识别率,不同在于,方法一得到的是在高维空间里面求取的欧氏距离代表的背离程度,而方法二由于采用了fisher法则降维,得到的欧氏距离大大小于方法一中的结果,可以在图1中看出:

背离程度表示了训练库(traindatabase)中的20幅图片与待测图片直接的差别大小,试验取差别最小,即在曲线上的值最靠近X轴的一副图片作为识别结果,可以看出,方法一在数量级上比方法二高出了太多,在大型人脸识别系统中,必将带来代价的提高。

而在笔者多次试验中,发现方法二在降低计算量的同时,也带来了一些问题,具体来说就是在库中的第三张图片无法识别,当然,除此之外,其他图片均识别成功,如图2:

在重新对FLD从原理上分析了过后,同时参阅了一些分析FLD的缺陷的文献,发现传统的FLD只是希望通过投影将不同的类放置得比较远,而将相同的类放在一起,而从样本类间散度及其矩阵的定义来看,这样做只是使得总体样本的均值和某个背离程度较大的类的均值相差较大,而不能阻止其他类的均值相互靠近。更严重的是,除了那个背离程度最大的类离得较远外,其他的类甚至还存在重叠的现象,假如把背离程度最大的那个类称为边缘类,而传统的FLD则是只能将边缘类从总样本中分离出去,却不能保证在这个投影方向上算法能够很好的分辨其他类,因为在投影的过程中,边缘类主导了这个投影方向,从而导致了后面识别错误的产生。

综上分析,可以得出结论,传统的PCA算法跟PCA+FLD的算法在人脸识别的过程中均有不俗的表现,传统的PCA算法虽然在高维空间处理问题,带来了高计算量的代价,然而不得不说其识别率却是非常的高。而加入FLD算法了以后,由于投影处理,成功的达到降维的目的,大大减小了系统成本的损失,但同时也暴露出了FLD的另外一些问题,当然,已经有不少学者提出了改进的FLD算法,相信在不断的试验下,FLD的优秀性必将随着问题的解决而越发体现出来。

参考文献:

[1]王映辉.人脸识别-原理、方法与技术[M].北京:科学出版社,2010:26-28.

[2]范立南.图像处理与模式识别[M].北京:科学出版社.2007:57-62.

[3]程星晶,傅家祥.对人脸识别中Fisher线性判别的改进方法[J].电脑知识与技术,2008(27):2054-2055.

[4]RoberstonG,CrawI.Testingfacerecognitionsystems[J].ImageandVisionComputing.1994,12(9):609-614.

[5]李华胜,杨桦,袁保宗.人脸识别系统中的特征提取[J].北方交通大学学报,2001,25(2):18-21.

猜你喜欢
模式识别人脸识别
人脸识别 等
揭开人脸识别的神秘面纱
浅谈模式识别在图像识别中的应用
第四届亚洲模式识别会议
基于类独立核稀疏表示的鲁棒人脸识别
第3届亚洲模式识别会议
电气设备的故障诊断与模式识别
基于K-L变换和平均近邻法的人脸识别