王曉潔
(新鄉(xiāng)學(xué)院計算機與信息工程學(xué)院,河南新鄉(xiāng)453003)
基于PCA和LDA算法的人臉識別系統(tǒng)
王曉潔
(新鄉(xiāng)學(xué)院計算機與信息工程學(xué)院,河南新鄉(xiāng)453003)
針對傳統(tǒng)的主成分分析的人臉識別技術(shù)只考慮人臉的整體分布而沒有充分利用人臉類別的標(biāo)簽信息的缺點,設(shè)計了一種基于PCA+LDA算法的人臉識別系統(tǒng)。首先采用人臉識別中常用的主成分分析算法壓縮人臉特征空間維數(shù);然后再利用線性判別分析算法尋找最優(yōu)投影向量,實現(xiàn)人臉數(shù)據(jù)的進(jìn)一步壓縮并抽取分類信息;最后采用K近鄰分類器實現(xiàn)人臉分類。在MATLAB環(huán)境下實現(xiàn)了人臉識別系統(tǒng),驗證了該方法可以對人臉進(jìn)行有效識別。
人臉識別;主成分分析;線性判別分析;K近鄰分類器
人臉識別技術(shù)是模式識別研究領(lǐng)域的一個研究熱點[1],它是通過分析人臉圖像并從中提取面部特征(幾何特征或者數(shù)學(xué)特征)來實現(xiàn)身份鑒別的一種技術(shù)。
近些年,基于數(shù)學(xué)統(tǒng)計的PCA算法和LDA算法在人臉識別中廣為流行。本文在此基礎(chǔ)上提出使用PCA和LDA算法進(jìn)行人臉特征的提取和降維,并在MATLAB2014a工作平臺上利用KNN算法實現(xiàn)了人臉分類識別。
PCA主成分分析是人臉識別技術(shù)中一種常用的特征抽取方法[2]。它的主要作用是將高維數(shù)據(jù)進(jìn)行降維,即首先將用像素描述的二維人臉數(shù)據(jù)進(jìn)行向量化,然后將所有的樣本向量組成矩陣,再在某個數(shù)據(jù)空間中找出一組向量,將人臉數(shù)據(jù)從原來的H維降到L維(H>>L),降維后的人臉數(shù)據(jù)只保存識別需要的主要信息。
1.1 人臉圖像預(yù)處理
訓(xùn)練樣本圖像預(yù)處理過程是:先讀取人臉圖像,然后按照從上到下、從左到右的順序?qū)⒚糠四槇D像中所有像素的灰度值串成一個高維向量,最后將所有圖像的高維向量連接起來構(gòu)成矩陣。具體做法如下:先通過“img=imread(facepath)”讀取大小為92×112像素的圖片,然后通過“temp=reshape(img',imgrow*imgcol,1);”將該人臉數(shù)據(jù)進(jìn)行行首尾連接,得到一個大小為10 304×1的列向量,再將得到的一維向量使用“data=[data temp];”添加到人臉數(shù)據(jù)中,最后使用“data= data'”進(jìn)行轉(zhuǎn)置。得到的data就是經(jīng)過預(yù)處理后的訓(xùn)練樣本集合,它是個訓(xùn)練樣本數(shù)×10 304的人臉高維空間,其每行都是一個人臉樣本。使用相同的方法可生成測試樣本數(shù)×10 304的測試樣本集合。
1.2 PCA降維后的人臉特征子空間
經(jīng)過圖像預(yù)處理后的每幅圖像的維數(shù)均為10 304,因此需通過PCA算法對該高維向量進(jìn)行降維[2]。
先假設(shè)有40個不同的人,每人有10幅圖像和5幅訓(xùn)練樣本,人臉圖像的樣本集合traindata中有圖像40×5=200幅,訓(xùn)練樣本的平均值為“sampleMean= mean(traindata)”。然后進(jìn)行樣本矩陣中心化,即每一行(一個人臉樣本)減去平均值,得到一個新的樣本矩陣。用此樣本矩陣乘以它的轉(zhuǎn)置矩陣,在得到一個200×200的可逆矩陣之后,就可使用MATLAB工具中的eigs函數(shù)計算出特征值及對應(yīng)的特征向量,并將它們從大到小排序。在MATLAB工具中已經(jīng)封裝好了PCA算法,可直接使用princomp函數(shù)來實現(xiàn)以上功能。最后,選擇累積貢獻(xiàn)率在90%以上的前71維特征值所對應(yīng)的特征向量組成投影空間,把訓(xùn)練樣本數(shù)據(jù)集合和測試樣本數(shù)據(jù)集合投影到該空間中得到人臉子空間。
1.3 PCA算法的不足與改進(jìn)
PCA算法只考慮了人臉的整體分布,沒有充分利用人臉類別的標(biāo)簽信息,而圖像矩陣中所有像素的地位又相同,故人臉圖像的光照、角度和尺度等的變化,都會大幅度降低人臉識別率。因此,雖然算法可以表示人臉信息,但卻不能有效鑒別和區(qū)分人臉[3]。
2.1 LDA算法
線性判別分析(LDA)的目的是從高維特征空間里提取出最具有判別能力的低維特征。LDA變換需要找到適合于區(qū)別不同類的方向[3],也就是說要找到這樣一個空間:在原高維向量向這個空間投影后,不同類的樣本能盡量地分開,增大類間差異性;同一個類的所有樣本能盡量地聚集在一起,減少類內(nèi)差異性[4-5]。
在LDA算法中存在訓(xùn)練樣本數(shù)(200)比圖像向量的維數(shù)(10 304)要小很多的問題,即人臉小樣本問題,因此類內(nèi)離散度Sw總為奇異矩陣。這使得使用LDA方法求解變得很困難。為此,我們利用PCA算法將10 304維的人臉圖像壓縮為71維,就可避免出現(xiàn)小樣本問題。降維后再采用LDA算法利用人臉的類標(biāo)簽信息,就可提取出最具有判別能力的低維特征子空間。
2.2 用MATLAB實現(xiàn)LDA算法
在MATLAB中,樣本集中所有人臉樣本的均值向量為
第i類人臉的均值為
人臉樣本類間離散度矩陣Sb從宏觀上描述了所有類和總體之間的離散冗余程度,它包含著各個樣本根據(jù)自己所屬的類計算出的樣本與總體的協(xié)方差矩陣的總和。算法如下:
人臉樣本類內(nèi)離散度矩陣Sw描述的是類內(nèi)各個樣本與類之間離散度,即類內(nèi)各個樣本和所屬類之間的協(xié)方差矩陣之和。算法如下:
由于對樣本先使用了PCA算法進(jìn)行降維,消除了樣本的冗余度,故能夠保證Sw為非奇異矩陣。利用奇異值分解(SVD)定理,求解一般矩陣Sw-1Sb特征值問題,即可求出最優(yōu)的投影矩陣[6]。這樣可用MATLAB中的eigs函數(shù)求解矩陣(在MATLAB中用右除“SwSb”來表示)的特征值和特征向量。實現(xiàn)方法如下:
在程序中,k是最優(yōu)投影軸的個數(shù),可以在1~樣本個數(shù)-1之間尋找當(dāng)前條件下的最優(yōu)投影軸的個數(shù)。由于最優(yōu)投影軸的個數(shù)≤樣本個數(shù)-1,故在本例中,最多取39個最大特征值所對應(yīng)的特征向量組成最佳投影矩陣。
經(jīng)過以上處理,訓(xùn)練樣本集合和測試樣本集合經(jīng)過投影矩陣都被投影到維數(shù)更低但具有最佳分類的人臉子空間中。
KNN即K近鄰分類器,它是一種用來分類未知數(shù)據(jù)的最直接的方法。其核心思想是計算待分類數(shù)據(jù)到每個樣本數(shù)據(jù)的距離,即選擇待分類數(shù)據(jù)在特征空間中的K個最相鄰的樣本數(shù)據(jù),這K個樣本數(shù)據(jù)中哪個類別的樣本數(shù)據(jù)占多數(shù),待分類數(shù)據(jù)就屬于哪個類別[7]。用MATLAB實現(xiàn)算法的過程如下。
先計算測試樣本集合中每個點(每一個人臉樣本在它的特征空間里是一個點)與訓(xùn)練樣本集合中每個點之間的歐氏距離。其MATLAB程序如下:
程序中的N是測試樣本數(shù)據(jù)集合的個數(shù),L是訓(xùn)練樣本數(shù)據(jù)集合的個數(shù),M是測試樣本數(shù)據(jù)集合的維數(shù),R是訓(xùn)練樣本數(shù)據(jù)集合,Q是測試樣本數(shù)據(jù)集合,k是測試樣本的順序。
經(jīng)過上面的計算,得到每個測試樣本到所有訓(xùn)練樣本的距離。排序后,分別選擇與每個測試樣本最近鄰的K個訓(xùn)練樣本。程序如下:
之后,統(tǒng)計最鄰近K個訓(xùn)練樣本中對應(yīng)類別出現(xiàn)的頻率,并返回出現(xiàn)頻率最高的類別,以此作為當(dāng)前點的預(yù)測分類。程序如下:
程序中的I代表類別個數(shù)最大的類別,也就是待分類樣本的預(yù)測分類。
實驗平臺采用Matlab2014a。圖片使用了英國劍橋大學(xué)Olivetti研究所制作的ORI(Olivetti Research Laboratory)人臉數(shù)據(jù)庫中的pgm格式圖片。ORI數(shù)據(jù)庫中有40個人的人臉圖像,每人10幅,共400幅。圖像是在不同時間、光線有輕微變化條件下拍攝的,其中包括姿態(tài)、光照和表情的差別,分辨率為92×112像素,且已經(jīng)過處理,不需要進(jìn)行歸一化和校準(zhǔn)等工作。數(shù)據(jù)庫中s2即第2個人的10張人臉圖像如圖1所示。
圖1 ORL人臉數(shù)據(jù)庫中第2個人的10幅圖像
實驗過程如下:先用PCA降維,再利用LDA尋找最優(yōu)投影向量,最后利用KNN基于歐氏距離為測度的分類器實現(xiàn)人臉分類。實驗研究不同訓(xùn)練樣本大小對識別率的影響(在本實驗中K選擇為3),并選擇累積貢獻(xiàn)率在90%以上的前71維特征值對應(yīng)的特征向量組成投影空間。實驗結(jié)果如表1所示。
表1 PCA和PCA+LDA在不同訓(xùn)練樣本數(shù)目上的比較
從表1可以看出,PCA對原有的10 304維人臉圖像進(jìn)行了大幅度的降維,降維后的維數(shù)都小于樣本數(shù),同時LDA也使得維數(shù)進(jìn)一步壓縮。在相同的訓(xùn)練樣本個數(shù)條件下,PCA+LDA的算法要比PCA算法的人臉識別率高,隨著每類訓(xùn)練樣本數(shù)目的增加,人臉識別率逐步提高,但程序運行時間也相應(yīng)增加。
本文介紹了PCA算法與LDA算法的優(yōu)缺點,并使用MATLAB工具,實現(xiàn)了基于PCA+LDA算法的人臉識別系統(tǒng)。實驗首先經(jīng)過PCA算法將具有高維數(shù)據(jù)的原始圖像進(jìn)行壓縮,得到特征人臉子空間;然后在此基礎(chǔ)上計算LDA算法的特征子空間,找到最佳分類投影方向;最后利用KNN算法進(jìn)行人臉分類。
對人臉識別,還有很多內(nèi)容有待研究,例如,如何更有效地將PCA算法的特征子空間與LDA算法特征子空間進(jìn)行融合,如何更有效地選擇特征空間的維數(shù),以及如何選擇更好的分類器等。
[1]陳綿書,陳賀新,桑愛軍.計算機人臉識別技術(shù)綜述[J].吉林大學(xué)學(xué)報(信息科學(xué)版),2003(21):101-109.
[2]任金霞,周慧娟.基于PCA·LDA與蟻群優(yōu)化BP網(wǎng)絡(luò)的人臉識別算法[J].軟件導(dǎo)刊,2013(11):70-73.
[3]李武軍,崇駿,張煒,等.人臉識別研究綜述[J].模式識別與人工智能,2006(19):58-66.
[4]章萬鋒.基于PCA與LDA的說話人識別研究[D].杭州:浙江大學(xué),2004.
[5]章毓晉.基于子空間的人臉識別[M].北京:清華大學(xué)出版社,2013:76-90.
[6]謝永林.LDA算法及其在人臉識別中的應(yīng)用[J].計算機工程與應(yīng)用,2010(46):189-192.
[7]楊淑平.人臉特征提取與識別算法研究[D].長沙:中南大學(xué),2013.
【責(zé)任編輯 梅欣麗】Realization of Face Recognition Based on LDA and PCA Algorithm
WANG Xiaojie
(College of Computer andInformation Engineering,Xinxiang University,Xinxiang,453003,China)
The paper proposed a face recognition system based on PCA and LDA algorithm,for the traditional principal component analysis of face recognition could only consider the overall distribution of the face,instead of making full use of human face label information.Firstly,the study compressed the face feature space dimension by using the principal component analysis algorithm;secondly,it used linear discriminant analysis algorithm to find the optimal projection vector to achieve further compression of face data and to extract classification information;finally,it used the K-nearest neighbor classifier to realize the face recognition system,especially in MATLAB environment.The system was proved to be effective and have a good application value.
face recognition;principal component analysis;linear discriminant analysis;K-nearest neighbor classifier
TP311.56
A
2095-7726(2015)12-0037-03
2015-07-01
王曉潔(1979-),女,河南新鄉(xiāng)人,講師,碩士,研究方向:模式識別。