最近简单的研究了人脸识别,主要从数学上系统地阐述了特征脸,PCA算法,LDA算法及SRDA算法的性质,并重点研究了LDA和最近提出的SRDA算法,研究了它们的原理、性质、特点、算法理论依据、算法步骤和算法复杂度;对PCA,LDA和SRDA算法从理论上做出了比较。最后通过MATLAB仿真了一些结果。谱回归判别分析算法研究1.特征脸和PCA算法特征脸算法是基于KL变换,选择使所有样本的散布距离最大的方向进行线性投影[1][2]作降维的特征提取。下面从数学上对算法进行分析。假设输入有m个样本人脸图像:{mxxx,....,,21},他们属于c个类别,每个图像都处于l维的特征空间。定义总体散布矩阵tS:miTiitxxS1))((,(1)是所有样本的平均值;定义总体类内散布矩阵wS:,)))(((11)()()()(ckmiTkkikkiwkxxS(2))(k是第k类样本的平均值,)(kix是第k类的第i个样本。wS表示各样本点围绕它的均值分布情况。定义总体类间散布矩阵bS:),()()(1)(kckkkbmS(3))(km是第k类的样本的数目。bS表示各类间的距离分布情况,它取决于样本类别属性和划分。总体散布矩阵与总体类间散布矩阵与总体类内散布矩阵存在关系:bwtSSS;总体散布矩阵与样本划分及属性无关。现有一线性变换使图像从原始的l维映射到h维特征空间,且lh。设有正交矩阵hnA,通过线性变换:kTkxAy,mk,,2,1得到新的特征向量集:hky。经过线性变换后,特征向量集},,{2,1myyy的散布矩阵为ASAtT。对于PCA算法,A选为使所有样本投射的总体散布矩阵为最大值的理想值:optA,即],,,[||maxarg21htToptaaaASAA(4)其中],,,[21haaa为tS从大到小递减的特征值对应的l维的特征向量。因为这些特征向量具有和原始数据一样的维度,所以它们也被称为特征图(Eigenpicture),或特征脸(Eigenfaces)[3]。图1为特征脸获取流程图;图2为PCA算法的流程图。输入人脸图像建立图像数据矩阵计算矩阵的协方差计算矩阵的特征向量和特征值特征脸特征向量排序与选择数据矩阵正规化图1特征脸获取过程输入人脸图像建立图像数据矩阵计算矩阵的协方差计算矩阵的特征向量和特征值特征脸特征向量排序与选择数据矩阵正规化利用特征脸进行重构获取新的图像输出人脸图像图2PCA算法流程从图2可以看出,PCA算法的过程其实就是在特征脸获取后,利用特征脸和获取新的人脸图像进行图像重构,得到降维了的输出图像。从另一个角度说,PCA的基本思想就是寻找一组最优的单位正交向量,通过线性变换,将原始数据重建,并使重建后的数据和原始数据的误差最小,以实现最好的识别。基于特征脸的PCA算法的弊端是它不仅使样本的类间距离变大,而且使样本的类内距离变大。使样本的类内距离增大对人脸分类没有好处。而且在连续人脸图像序列中,前一幅人脸图像与后一幅人脸图像的不同在于光照的区别[24],因此如果人脸图像序列呈现在变化的光照下,PCA变换得到的optA中的不同的特征向量将含有因为光照变化的成分,导致后续分类处理时产生错误。有人建议把optA前面的几个特征向量舍弃,降低因为光照变化带来的影响,但是optA前面的几个特征向量的差异不可能都是因为光照变化引起的,盲目的舍弃特征向量会使有用的信息丢失。2.LDA算法研究LDA算法介绍LDA算法的目的就是寻找A使bS/wS的比值最大化。当wS为非奇异矩阵,optA就是:],,[||||maxarg2,1hwTbToptaaaASAASAA(5)],,[2,1haaa就是使bS/wS最大的特征向量集,它们对应于递减的特征值],,,[21h使满足等式:iwiibaSaS,hi,2,1(6)显然h的值不大于c,即类别数目。在人脸识别过程中,经常遇到的困难是wS是奇异矩阵。这是因为wS的秩必须小于cm,但是通常每个图像的像素比训练集中图像的数目(m)要大得多,因此|wS|的值为零。解决这个问题方法是先把人脸图像投射到低维空间,先降维,使wS非奇异。一种常用的方法是先将图像通过PCA降维至cm,然后用(5)式进行再将图像降维至1c。这种方法称为Fisherface算法,它其实就是先用PCA算法进行降维,然后在用LDA算法再做一次降维[4]。这样有pcaldaoptAAA(7)其中,||||maxarg||maxargAASAAAASAAAASAApcawTpcaTpcabTpcaTldatTpca计算pcaA时,将最小的c个主成分舍弃,以降到cm维。下面讨论下基于SVD+LDA的特征提取算法。(5)式中的LDA的目标函数等价于:||||maxargASAASAAtTbTopt,(8)当有h个投影函数,即A=],...,[21haaa,LDA的目标函数为:,)()(maxarg*ASAtrASAtrAwTbT(9)()tr是矩阵的迹,即矩阵对角元素之和。令iixx为各样本的中心距,令},...,,{)()(2)(1)(kmkkkkxxxX为第k类样本的中心距。则:ckTkkkbmS1)()())((Tmikikckkimikkkkxmxmm))(1)()(1(1)(1)(1ckmimiTkikikkkxxm111))((1ckTkkkXWX1)()()()((10)其中,)(kW为kkmm的矩阵,它的所有元素等于km1。令],,,[)()2()1(cXXXX为样本的中心距,定义一mm的矩阵W:)()2()1(000000c(11)则(10)式变为:TckTkkkbXWXXWXS1)()()()((12)因为TtXXS,所以可得:XLXXWIXSSSbtw)((13)令W为图各边缘的权值矩阵,ijW为边缘i和j的连接权值,当边缘i和j无连接时,0ijW。WIL被称为拉普拉斯图[26]。又有:),1min()()()(nmXrankXXrankSrankTttS为nn的矩阵,当特征个数n大于样本数m时,tS为奇异矩阵,此时式(6)没有稳定的特征解。利用奇异值分解算法解决这个问题。不妨设rXrank)(,X的奇异值分解为:X=TVU(14)其中),...,(1rdiag,0....21r。rmruuuU],...,,[21,)1(riui为左奇异向量;rmrvvvV],....,,[21,)1(rivi为右奇异向量。令TTVXUX~,AUBT,则:AUWVVUAAXWXAASATTTTbT=BXWXBT~~同理,AUVVUAAXXAASATTTTTtT~~=BXXBTT~~所以(5)式中LDA的目标函数可以改写为:)~~()~~(maxarg*BXXBtrBXWXBtrBTTTT,其中,*B的每一列为等式:bXXbXWXTT~~~~(15)的特征值。又因为2)(~~TTTTVVXX,非零,所以上式可以得到稳定的特征解。得到*B后,*A可由下式求得:**UBA(16)因为X的均值为零,所以通过SVD算法实现的降维,与通过PCA算法实现的降维的效果是一样的(通过PCA降维,X的均值也为零)。Fisherface的方法最多只能保持经过PCA算法处理后的数据的cm维,从而导致一些有用信息的丢失。通过对LDA算法进行改进可以保持所有PCA算法中的非零特征向量,避免有用信息的丢失。通过对矩阵*A的变换,可以得到如下定理:定理1:令矩阵A为式(16)中的变换矩阵,原始的特征向量X通过矩阵A变换为:XAYT,Tiy为Y的第i个特征向量(在Y的第i行),iTiaXy。对于任意ji,iy和jy不相关。证明:令iTiiaymeanv)(,e为全一矩阵,)()(jjTiievyevy)(,0~~)()()()(jibXXbaXXaaXaXaeaXaeaXjTTijTTijTTiTjTjTTiTiTib是式(15)中的特征向量。这种SVD+LDA的方法称为不相关的LDA(UncorrelatedLDA,ULDA)。最近,Howland[5]利用广义奇异值分解方法(GeneralizedSingularValueDecomposition,GSVD)解决了LDA的奇异值问题。他把LDA的目标函数等价为:))()((maxarg*1ASAASAtrAbTtT上式可以利用GSVD方法求解。这种方法的缺点是计算量十分庞大,特别当样本的维数很大的时候。还有人提出了规范化判别分析算法(RegularizedDiscriminantAnalysis,RDA)[6][7],利用规范化的思想来解决wS的奇异问题。把wS的对角元素加上一个限制条件,即把wS变为ISw,使wS非奇异。这种方法的缺点同样是计算量是十分庞大。上面两种运用LDA的方法都是使用奇异值分解算法(SingularValueDecomposition,SVD)来降维。LDA的计算复杂度由(6)(12)(13)式可得,LDA的目标方程可写为:),2,1(,hiaXXaXWXiTiT(17)结合式(14)得:iiTiTTiTTTiTiTTiTiTbWVbVaUUUaUWVVUUaUUaUWVVUhiaXXaXWX)()(),2,1(,11其中iTiaUb,rmV是X的右奇异矩阵。上述的LDA表达式可以表示为以下三个步骤:(1)求解X的SVD分解,得到U,V和。(2)计算WVVT的特征向量:),2,1(,hibi。(3)计算iibUa1。因为LDA至多有1c个投影函数,可以通过下述步骤减少计算量:令V的第i行特征向量为iz,令klikikkzhv1)()(1,cdccvhvhvhH],,,[)()2(2)1(1,则:TckTkkkhihiTkikickkTHHvvhzzhWVVkk1)()(11)()(1)())((1(18)可以得到X的左奇异向量,即U的行向量,是TXX的特征向量;而X的右奇异向量,即V的行向量,是XXT的特征向量[8]。当U或V给定时,可以从式子:UVX和TVXU得出另一个值。特别地,当nm,已知TXX的特征向量U可以求得V;当nm时,由已知XXT的特征向量V,可以求得U。因为H的秩为rc,c为分类的数量,r为X的秩。通常r接近),min(nm,而远远大于c。所以先求解HHT的特征向量再由此推出THH的特征解,比直接求解THH的特征解可以减少很多计算量。求解的过程可以参看关于ULDA文献[9]。用flam表示一次加法和一次乘法的计算量,当nm时,计算TXX需要221mnflam,计算TXX的特征值需要329nflam,通过特征向量U求得V需要2mnflam;计算THH的c个特征向量需要2322921nccncflam,最后,从向量ib计算向量ia需要2ncflam。当nm,有类似的分析。所以LDA的计算复杂度为:ctctctmnt232329232923其中),min(nmt,当tc,LDA的计算复杂度为)(292323tOtmnt。同时计算时需要存储U,V,X和ia的值,需要存储单元:cnmtntmn;由此可知,当m和n都很大时,LDA算法计算量会很大,使用LDA算法会很耗时。3.谱回归判别分析算法研究理论准备为了使式(17)成功求解,先给出以下定理:定理2:设y为yyW(19)的特征向量,为特征值。若有yaXT,则a为式