您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 国内外标准规范 > PCA人脸识别理论基础(附源码)
12n1201PCA与人脸识别及其理论基础1.1问题描述[1]对于一幅图像可以看作一个由像素值组成的矩阵,也可以扩展开,看成一个矢量,如一幅N*N象素的图像可以视为长度为N2的矢量,这样就认为这幅图像是位于N2维空间中的一个点,这种图像的矢量表示就是原始的图像空间,但是这个空间仅是可以表示或者检测图像的许多个空间中的一个。不管子空间的具体形式如何,这种方法用于图像识别的基本思想都是一样的,首先选择一个合适的子空间,图像将被投影到这个子空间上,然后利用对图像的这种投影间的某种度量来确定图像间的相似度,最常见的就是各种距离度量。1.1.1K-L变换[1]PCA方法是由Turk和Pentlad提出来的,它的基础就是Karhunen-Loeve变换(简称KL变换),是一种常用的正交变换。下面我们首先对K-L变换作一个简单介绍:假设X为n维的随机变量,X可以用n个基向量的加权和来表示:nX=∑αiφii=1式中:αi是加权系数,φi是基向量,此式还可以用矩阵的形式表示:X=(φ,φ,,φ)(α,α,,α)T=Φα取基向量为正交向量,即T⎧1i=jT则系数向量为:ΦΦj=⎨⎩i≠j⇒ΦΦj=Iα=ΦTX综上所述,K-L展开式的系数可用下列步骤求出:步骤一求随即向量X的自相关矩阵R=E⎡⎣XTX⎤⎦,由于没有类别信息的样本集的µ均值向量,常常没有意义,所以也可以把数据的协方差矩阵∑K_L坐标系的产生矩阵,这里µ是总体均值向量。=E⎡⎣(x−µ)(x−µ)T⎤⎦作为步骤二求出自相关矩阵或协方差矩阵R的本征值λi和本征向量φi,Φ=(φ1,φi,,φn)步骤三展开式系数即为α=ΦTXK_L变换的实质是建立了一个新的坐标系,将一个物体主轴沿特征矢量对齐的旋转变换,这个变换解除了原有数据向量的各个分量之间相关性,从而有可能去掉那些带有较少信息的坐标系以达到降低特征空间维数的目的。Tixi1.1.2利用PCA进行人脸识别完整的PCA人脸识别的应用包括几个步骤:人脸图像预处理;读入人脸库,训练形成特征子空间;把训练图像和测试图像投影到上一步骤中得到的子空间上;选择一定的距离函数进行识别。下面详细描述整个过程(源码见’faceRec.m’)。1.读入人脸库归一化人脸库后,将库中的每人选择一定数量的图像构成训练集,其余构成测试集。设归一化后的图像是n*m,按列相连就构成N=n*m维矢量,可视为N维空间中的一个点,可以通过K-L变换用一个低维子空间描述这个图像。2.计算K-L变换的生成矩阵所有训练样本的协方差矩阵为(以下三个等价):⎧⎪1.⎪CA=(M∑k=1xkixk)/M−mximx⎪2.C=(AiAT)/M(1)⎪⎡M⎤⎪3.C⎪⎩A=⎢∑⎣i=1(x−m)(x−m)T⎥⎦A={φ1,φ2,...,φM},φi=xi−mx,mx是平均人脸,M训练人脸数,协方差矩阵CA是一个N*N的矩阵,N是xi的维数。为了方便计算特征值和特征向量,一般选用第2个公式。根据K-L变换原理,我们所求的新坐标系即由矩阵AiAT的非零特征值所对应的特征向量组成。直接求N*N大小矩阵C的特征值和正交归一特征向量是很困难的,根据奇异值分解原理(见段落1.2.5和1.2.6),可以通过求解ATiA的特征值和特征向量来获得ATiA的特征值和特征向量,。在计算得到CA的所有非零特征值[λ0,λ1,,λr−1](从大到小排序,1≤rM)及其对应的单位正交特征向量[u0,u1,,ur−1]后,可以得到特征空间U=[u0,u1,,ur−1]∈ℜ,从而可以计算一张图片X在特征空间上的投影系数(也可以理解为X在空间U中的坐标):3.识别Y=UT*X∈ℜr*1(2)利用公式(2),首先把所有训练图片进行投影,然后对于测试图片也进行同样的投影,采用判别函数对投影系数进行识别。1.2PCA的理论基础1.2.1投影[2]设d维样本x1,x2,,xn,以及一个d维基w,那么标量:iy=wTx是相当于xi在基上的坐标值。如果w=1,yi就是把xi向方向为w的直线进行投影的结果,可以从图1看到。推广之,如果有一组基(m个)组成的空间W=[w1,w2,,wm],那么可Tm*1以得到xi在空间W上的坐标为:Y=Wx∈ℜ。x证明:wTx=w又∵θyw⋅x⋅cosθx⋅cosθ=y,w=1⇒wTx=y图1投影图进一步,表达式w=m+ae表示w是一条通过点m,方向为e的直线。1.2.2PCA的作用及其统计特性[3]采用PCA对原始数据的处理,通常有三个方面的作用—降维、相关性去除、概率估计。下面分别进行介绍:ƒ去除原始数据相关性从统计学上讲,E{[X−E(X)][Y−E(Y)]}称为随机变量X与Y协方差,记为Cov(X,Y)。令ρXY=Cov(X,Y),称为随机变量X与Y的相关系数。ρXY=1则X与D(X)D(Y)Y是相关的,ρXY=0,则X与Y是不相关的。AAT命题1对于矩阵A来说,如果是一个对角阵,那么A中的向量是非相关的。由PCA处理的人脸库数据的非相关性可以从两点进行说明。(1)基底的非相关性特征空间基U=[u0,u1,,ur−1]是非相关的,即UU=I。(2)投影系数的非相关性由SVD可知A={φ1,φ2,...,φM}=UΛV,其中φi=xi−mx,mx是平均人脸。根据公式(2)可以把A映射到特征空间上,得到:关的,可由下面得到证明:B=UT*A,其中B是非相Y的协方差矩阵为:C=1BBT=1UTAATU=1Λ2(3)BMMM由命题1可知,B是非相关的。ƒ统计参数(均值及方差)均值即mx--平均人脸。命题2随机变量方差越大,包含的信息越多,当一个变量方差为0时,该变量为常数,不含任何信息。用PCA计算主分量,就是寻找一组向量,使得原始数据A={φ1,φ2,...,φM}在这组向量上的投影值的方差尽可能大。最大方差对应的向量就是第一主成份,以后递推就是第二主成份,第三主成份……。用PCA计算主分量就是求原始数据A={φ1,φ2,...,φM}(其中φi=xi−mx)协方差矩阵的特征向量U=[u0,u1,,ur−1],由公式(3)可知,P=uiA=(p1,p2,,pm)是A在ui上的投影值,其中P的方差就是ui对应的特征值λi,可以理解为:命题3所有原始数据在主分量ui上的投影值方差为λi。ƒ降维如果在原始空间表示一幅n*m大小的图片X,那么需要一个N=n*m维矢量,但是当用公式(2)把它映射到特征空间后,只需要一个r*1维的向量就可。另外,由命题2可知,可以根据方差的大小来判断特征向量的重要性。由ORL图片库的200个人脸计算得到的特征值呈图2分布,可知特征向量重要性呈指数下降,据此可以只选用前面几个重要的特征向量来构建特征空间。通过计算,前71个特征值占了90.17%,因此r可以取71而非200,从而达到进一步降维的作用。图2特征值的分布1.2.3特征脸U=[u0,u1,,ur−1]中的每一个单位向量都构成一个特征脸,如图3所示。由这些特征脸所张成的空间称为特征脸子空间,需要注意对于正交基的选择的不同考虑,对应较大特征值的特征向量(正交基)也称主分量,用于表示人脸的大体形状,而对应于较小特征值的特征向量则用于描述人脸的具体细节,或者从频域来看,主分量表示了人脸的低频部分,而此分量则描述了人脸的高频部分(源码见’EigenFace.m’)。12105070average图3特征脸,分别是第1,2,10,50,70分量,最后一张是平均脸。1.2.4图片重建要进行图片X的重建,首先对X投影到特征空间上,得到系数Y=UT(X−m),然后选用一部分系数与特征向量进行原始图片的重建:X'=mX+U(1:t)*Y(1:t),其中1:t表示取前t个元素。(见’reconstruct.m’)在图4中,其中前两张图片来自训练样本,第3张来自测试样本,可以看到对于训练样本,PCA系数可以对图片实现很好重建,而对于训练样本以外的图片重建效果很差。Original1550100150199图4人脸图像重建。第列张图片是输入原始图,其它列图片是重建结果,数字表示t的数目。1.2.5奇异值分解(SVD)[1]设A是秩为r的m*n(mn)维矩阵,则存在两个正交矩阵和一个对角阵:A=[a1,a2,,ar]=UΛV其中U=[u0,u1,,ur−1],V=[v0,v1,,vr−1],Λ=diag(λ0,λ1,,λr−1),且UU=I,VVT=I,iiii2Tm*mTn*nTTλi呈降序排列。其中λi为AA∈ℜ和AA∈ℜ的非零特征值,ui和vi分别是AA和AA对应于λ2的特征向量。可得一个推论:U=AVΛ−1可以计算ATA的特征值λ2及相应的正交归一特征向量v后,可由推论知AAT的正交归一特ii征向量u=1iAvi注意,协方差矩阵CA=(AiAT)/M的特征值为:λ2/M。1.2.6利用小矩阵计算大矩阵特征向量高阶矩阵的特征向量可以转化为求低阶矩阵的特征向量:设:A是秩为r的m*n(mn)维矩阵,CX=AAT∈ℜm*m,是一个矩阵,现在要求C的特征值及特征向量,可通过先求小矩阵ATA∈ℜn*n的特征向量[v,v,,v]和特征值01r−1[λ0,λ1,,λr−1],两者之间有以下关系:ATA⋅v=λ⋅v⎯左⎯乘⎯A→AAT(A⋅v)=λ(A⋅v)显然,C=AAT的特征向量是A⋅v(注意没有单位化),[λ,λ,,λ]亦为其特征值。Xi01r−1结论:1.2.5与1.2.6的方法计算协方差矩阵的特征向量,特征值的结果是一致的,只是要注意1.2.5中的特征值要除以M,1.2.6中的特征向量要单位化。1.2.7图片归一化图片标准化通常是一个整体概念,要求把图片归一到均值为0,方差为1下情况下。这个概念类似于一般正态分布向标准正态分布的转化:命题4若X∼N(µ,σ2),则Z=X−µ∼N(0,1)σ所以要对一组图片中的一张Xi进行归一化(标准化),只需要减去均值,除以方差就可以了。M均值mX=∑XiiM,方差为D=E⎡⎣(X−mX)(X−mX)⎤⎦1.3参考文献[1]邓楠,基于主成份分析的人脸识别,西北大学硕士学位论文,2006.06[2]R.O.Duda,P.E.Hart,andD.G.Stork,PatternClassification,seconded.JohnWiley&Sons,2001.[3]SamiRomdhani.FaceImageAnalysisusingaMultipleFeatureFittingStrategy.PhDThesis,UniversityofBasel,Switzerland,January2005.[4]SamiRomdhani.FACERECOGNITIONUSINGPRINCIPALCOMPONENTSANALYSIS.1.4附录—matlab源码1.4.1人脸识别%FaceRec.m%PCA人脸识别修订版,识别率88%%calcxmean,sigmaanditseigendecompositionallsamples=[];%所有训练图像fori=1:40forj=1:5a=imread(strcat('e:\ORL\s',num2str(i),'\',num2str(j),'.jpg'));%imshow(a);b=a(1:112*92);%b是行矢量1×N,其中N=10304,提取顺序是先列后行,即从上到下,从左到右b=double(b);allsamples=[allsamples;b];%allsamples是一个M*N矩阵,allsamples中每一行数据代表一张图片,其中M=200endendsamplemean=mean(allsamples);%平均图片,1×Nfori=1:200xmean(i,:)=allsamples(i,:)-samplemean;%xmean是一个M×N矩阵,xmean每一行保存的数据是“每个图片数据-平均图片”end;%获取特征值及特征向量sigma=xmean*xmean';%M*M阶矩阵[vd]=eig(sigma);d1=diag(d)
本文标题:PCA人脸识别理论基础(附源码)
链接地址:https://www.777doc.com/doc-1996730 .html