基于PCA算法的人臉識(shí)別研究
1 人臉識(shí)別的發(fā)展及現(xiàn)狀
人臉識(shí)別的研究已經(jīng)有很長(zhǎng)的歷史,在19世紀(jì),法國(guó)人Galton就曾對(duì)此問(wèn)題進(jìn)行了研究,他用一組數(shù)字代表不同的人臉側(cè)面特征來(lái)實(shí)現(xiàn)對(duì)人臉側(cè)面圖像的識(shí)別。國(guó)內(nèi)外對(duì)于人臉識(shí)別的研究發(fā)展,分別經(jīng)歷了三個(gè)階段:傳統(tǒng)的人機(jī)交互式階段、機(jī)器自動(dòng)識(shí)別初級(jí)階段、機(jī)器自動(dòng)識(shí)別高級(jí)階段。
1.1 傳統(tǒng)的人機(jī)交互式階段
第一階段是以Bertilion為代表,主要研究人臉識(shí)別所需要的面部特征,該階段的識(shí)別依賴(lài)于人的操作。這些人臉識(shí)別方法都需要利用操作員的某些先驗(yàn)知識(shí),仍然擺脫不了人的干預(yù)。
1.2 自動(dòng)識(shí)別初級(jí)階段
第二階段主要是采用機(jī)器自動(dòng)識(shí)別的手段進(jìn)行識(shí)別,20世紀(jì)90年代以來(lái),隨著高速度高性能計(jì)算機(jī)的出現(xiàn),人臉識(shí)別方法有了重大突破,進(jìn)入了真正的機(jī)器自動(dòng)識(shí)別階段,人臉識(shí)別研究也得到了前所未有的重視。
1.3 機(jī)器自動(dòng)識(shí)別高級(jí)階段
第三階段是真正利用機(jī)器進(jìn)行對(duì)人臉的自動(dòng)識(shí)別,隨著計(jì)算機(jī)的大型化、高速化和人臉識(shí)別的方法的發(fā)展,提出了許多人臉自動(dòng)識(shí)別的系統(tǒng)。
2 PCA算法的原理
PCA(主成分分析)算法是人臉識(shí)別中比較新的一種算法,該算法的優(yōu)點(diǎn)是識(shí)別率高,識(shí)別速度快。
2.1 PCA算法介紹
2.1.1 PCA原理
令x為表示環(huán)境的m維隨機(jī)向量。假設(shè)x均值為零,即:
E[x]=O.
令w表示為m維單位向量,x在其上投影。這個(gè)投影被定義為向量x和w的內(nèi)積,表示為:
而主成分分析的目的就是尋找一個(gè)權(quán)值向量w使得表達(dá)式E[y2]的值最大化:
根據(jù)線性代數(shù)的理論,可以知道滿(mǎn)足式子值最大化的訓(xùn)應(yīng)該滿(mǎn)足下式:
即使得上述式子最大化的w是矩陣Cx的最大特征值所對(duì)應(yīng)的特征向量。
2.1.2 主成分的求解步驟
在PCA中主要的是要求出使得方差最大的轉(zhuǎn)化方向,其具體的求解步驟如下:
(1)構(gòu)建關(guān)聯(lián)矩陣:Cx=E[x*xT],Cx∈Pn*n.
在實(shí)際應(yīng)用中,由于原始數(shù)據(jù)的數(shù)學(xué)期望不容易求解,我們可以利用下式來(lái)近似構(gòu)造關(guān)聯(lián)矩陣:
(其中x1,x2,…,xN,是各個(gè)原始灰度圖像所有象素點(diǎn)對(duì)應(yīng)的向量,N是原始圖像的個(gè)數(shù))
(2)先計(jì)算出Cx的各個(gè)特征值
(3)把特征值按大小排序
(4)計(jì)算出前m個(gè)特征值對(duì)應(yīng)正交的特征向量構(gòu)成w。
(5)將原始數(shù)據(jù)在特征向量w上進(jìn)行投影,即可獲得原始圖像的主特征數(shù)據(jù)。[!--empirenews.page--]
2.1.3 主成分的求解方法
通過(guò)上面的分析我們可以知道,對(duì)于主成分分析的問(wèn)題最后轉(zhuǎn)化為求解協(xié)方差矩陣的特征值和特征向量的問(wèn)題,主成分的正交化分解的算法或求XXT特征值問(wèn)題的算法常用的有雅可比方法和NIPALS方法。
2.2 Eigenface算法
在利用PCA進(jìn)行特征提取的算法中,特征臉?lè)椒?Eigenface)是其中的一個(gè)經(jīng)典算法。特征臉?lè)椒ㄊ菑闹鞒煞址治鰧?dǎo)出的一種人臉識(shí)別和描述技術(shù)。特征臉?lè)椒ň褪菍四樀膱D像區(qū)域看作是一種隨機(jī)向量,因此可以采用K-L變換獲得其正交K-L基底。對(duì)應(yīng)其中較大特征值的基底具有與人臉相似的形狀,因此又稱(chēng)為特征臉。利用這些基底的線性組合可以描述、表達(dá)和逼近人臉圖像,因此可以進(jìn)行人臉識(shí)別與合成。識(shí)別過(guò)程就是將人臉圖像映射到由特征臉構(gòu)成的子空間上,比較其與己知人臉在特征空間中的位置,具體步驟如下:
(1)初始化,獲得人臉圖像的訓(xùn)練集并計(jì)算特征臉,定義為人臉空間,存儲(chǔ)在模板庫(kù)中,以便系統(tǒng)進(jìn)行識(shí)別;
(2)輸入新的人臉圖像,將其映射到特征臉空間,得到一組關(guān)于該人臉的特征數(shù)據(jù);
(3)通過(guò)檢查圖像與人臉空間的距離判斷它是否是人臉;
(4)若為人臉,根據(jù)權(quán)值模式判斷它是否為數(shù)據(jù)庫(kù)中的某個(gè)人,并做出具體的操作。
2.2.1 計(jì)算特征臉
設(shè)人臉圖像I(x,y)為二維N*N灰度圖像,用N維向量R表示。人臉圖像訓(xùn)練集為{Ri|i=1,…,M},其中M為訓(xùn)練集中圖像總數(shù),這M幅圖像的平均向量為:
每個(gè)人臉Ri與平均人臉ψ的差值向量是:
訓(xùn)練圖像的協(xié)方差矩陣可表示為:
C=AAT.
其中,A=[φ1,…φM].
特征臉有協(xié)方差矩陣C的正交特征向量組成。對(duì)于N*N人臉圖像,協(xié)方差矩陣C的大小為N2*N2,對(duì)它求解特征值和特征向量是很困難的。一種取而代之的方法是令L=ATA.
即協(xié)方差矩陣的轉(zhuǎn)置陣,則可以知道此矩陣是M*M(M是訓(xùn)練人臉的數(shù)量)的一個(gè)較小的矩陣。首先計(jì)算M*M矩陣L的特征向量vi(l=l,…,M),則矩陣C的特征向量ui(l=1,…,M)由差值圖像φi(i=1,…,M)與vi(l=l,…,M)線性組合得到:U=[u1,…,uM]=[[ψ1,…,ψM]T][v1.…,vM]。實(shí)際上,m(m<M)個(gè)特征值足夠用于人臉識(shí)別。因此,僅取L的前m個(gè)最大特征值的特征向量計(jì)算特征臉。
3 PCA算法在人臉識(shí)別中的應(yīng)用
基于特征臉的人臉識(shí)別過(guò)程由訓(xùn)練階段和識(shí)別階段兩個(gè)階段組成。在訓(xùn)練階段,每個(gè)已知人臉Ri映射到由特征臉構(gòu)成的子空間上,得到m維向量
在識(shí)別階段,首先把待識(shí)別的圖像R映射到特征臉空間。得到向量:
[!--empirenews.page--]
為了區(qū)分人臉和非人臉,還需計(jì)算原始圖像R與其由特征空間重建的圖像Rf之間的距離ε:
采用最小距離法對(duì)人臉進(jìn)行分類(lèi),分類(lèi)規(guī)則如下:
(1)若ε≥θc,則輸入圖像不是人臉圖像;
(2)若則輸入圖像包含未知人臉;
(3)若則輸入圖像為庫(kù)中第k個(gè)人的人臉。
4 實(shí)驗(yàn)結(jié)果
實(shí)驗(yàn)在兩個(gè)圖庫(kù)上測(cè)試,首先是一個(gè)ORL人臉庫(kù),該庫(kù)包含40個(gè)不同人物,每人有l(wèi)O張圖片,共400幅。用訓(xùn)練樣本進(jìn)行測(cè)試,識(shí)別率為95%。一個(gè)是自建人臉庫(kù),該庫(kù)包含20個(gè)不同人物,每人有5張不同表情和姿態(tài)下的圖片,總共100幅。隨著訓(xùn)練樣本的增加,識(shí)別率會(huì)有所提升,但是并不是越多越好,當(dāng)超過(guò)一定的訓(xùn)練樣本數(shù)目時(shí),識(shí)別率反而有所下降。
5 人臉識(shí)別未來(lái)的發(fā)展
人臉識(shí)別是一個(gè)跨學(xué)科富挑戰(zhàn)性的前沿課題,人臉圖像中姿態(tài)、光照、表情、飾物、背景、時(shí)間跨度等因素的變化對(duì)人臉識(shí)別算法的魯棒性都有著負(fù)面的影響,單一的PCA方法識(shí)別率不高,今后的發(fā)展方向可以與其他方法(如:支持向量機(jī)、小波變化等)相結(jié)合來(lái)彌補(bǔ)單一方法的不足,讓身份識(shí)別更準(zhǔn)確。