岳 也,王川龍
(太原師范學(xué)院 數(shù)學(xué)系,山西 晉中 030619))
人臉識(shí)別在身份識(shí)別、經(jīng)濟(jì)領(lǐng)域等相關(guān)科學(xué)領(lǐng)域中是一個(gè)熱門的話題[1,2].PCA方法是由Turk和Pentlad提出來的[3,4],是以K-L(Karhunen-Loeve 的縮寫)正交變化為基礎(chǔ),將數(shù)據(jù)從高維空間投影到低維空間,從而達(dá)到降維數(shù)據(jù)維數(shù)的目的[5].
李榮建等[6]提出改進(jìn)PCA人臉識(shí)別算法,增大每幅圖片的亮度和對(duì)比度,有效地減少光照對(duì)人臉識(shí)別的影響.徐肖亮等[7]利用矩陣范數(shù)對(duì)協(xié)方差矩陣進(jìn)行約簡(jiǎn),一定程度上降低了計(jì)算量.李康順[8]等結(jié)合一種新的權(quán)值調(diào)整方法改進(jìn)BP算法并進(jìn)行圖像分類識(shí)別.柳長(zhǎng)源等[9]在進(jìn)行人臉圖像識(shí)別之前先利用小波分解和PCA 算法進(jìn)行圖像消噪預(yù)處理,傳統(tǒng)的K-L 變換在圖像的特征降維過程中存在運(yùn)算量較大的問題.此外,更多的學(xué)者則是針對(duì)人臉識(shí)別過程中的圖像數(shù)據(jù)降維及識(shí)別算法做了大量的研究,徐竟?jié)蒣10]等利用PCA消除圖像特征間的相關(guān)性,用基于SVM 的LDA算法進(jìn)行數(shù)據(jù)降維的人臉識(shí)別方法.廖周宇[11]等提出一種基于粒子群優(yōu)化的支持向量機(jī)人臉識(shí)別方法,以上幾種方法在人臉識(shí)別率方面都有不錯(cuò)的效果.
本文針對(duì)傳統(tǒng)PCA算法在對(duì)協(xié)方差矩陣進(jìn)行特征提取時(shí)計(jì)算量大且易受光照等因素影響的問題,提出一種改進(jìn)的快速PCA 算法,選用ORL人臉圖像數(shù)據(jù)庫,利用BP神經(jīng)網(wǎng)絡(luò)進(jìn)行訓(xùn)練與測(cè)試,并驗(yàn)證了該算法的有效性.
本章主要介紹了PCA算法及BP神經(jīng)網(wǎng)絡(luò)算法.
主成分分析 (Principal Component Analysis,PCA)是一種常用于處理數(shù)據(jù)的方法[12].由于傳統(tǒng)的 PCA降維對(duì)樣本的協(xié)方差矩陣進(jìn)行特征值和特征向量的求解計(jì)算量較大,需要耗費(fèi)較多的時(shí)間,為了提高人臉識(shí)別率,本文提出一種改進(jìn)的快速 PCA 算法.
1.1.1 PCA人臉圖像特征提取
人臉識(shí)別一般包括四個(gè)步驟:人臉圖像采集、人臉圖像預(yù)處理、人臉圖像特征提取、特征匹配與識(shí)別[13].首先采集人臉圖像進(jìn)行預(yù)處理,形成一個(gè)人臉數(shù)據(jù)庫,然后將采集到的樣本分為訓(xùn)練集和測(cè)試集,最后用不同的方法學(xué)習(xí)訓(xùn)練集樣本,進(jìn)行分類測(cè)試識(shí)別.因?yàn)槿四槇D像在采集、傳輸、處理過程中有光照陰影,噪聲污染,設(shè)備質(zhì)量問題等因素干擾,會(huì)從一定程度影響識(shí)別效果.
1.1.2 PCA算法要點(diǎn)
1.1.2.1 協(xié)方差矩陣
特征Xi與特征Xj的協(xié)方差(Covariance):
(1)
1.1.2.2 特征向量與特征值
對(duì)于矩陣A,若滿足Aζ=λζ,則稱ζ是矩陣A的特征向量,而λ則是矩陣A的特征值.
算法1(傳統(tǒng)PCA算法)
第0步:給定M張人臉組成原始圖片集X=[x1,x2,…,xM],低維空間維數(shù)d;
第2步:計(jì)算樣本的協(xié)方差矩陣φ=XXT;
第3步:通過SVD分解求出該協(xié)方差矩陣φ的特征值λ=(λ1,λ2,…,λM)和特征向量V=(v1,v2,…,vM);
第4步:對(duì)求出的特征值用降序方式排列φ=λ·V;
第5步:計(jì)算協(xié)方差矩陣特征值的累計(jì)貢獻(xiàn)率,取前r個(gè)較大的特征值所對(duì)應(yīng)的特征向量V=(v1,v2,…,vr)作為降維后的子空間;
第6步:輸出降維后的數(shù)據(jù)集V.
1.1.3 PCA降維
A為圖像樣本矩陣,Zn×m為A中的每個(gè)樣本減去樣本均值后得到的矩陣,其中n為樣本數(shù)量,m為樣本維數(shù).假設(shè)n維列向量ν是矩陣(ZZT)的特征向量,則有:
(ZZT)ν=λν
(2)
將式(2)兩邊同時(shí)乘以ZT得到:
(ZTZ)ZTν=λZTν.
(3)
圖1 三層BP神經(jīng)網(wǎng)絡(luò)
從以上的計(jì)算過程可以看出,在進(jìn)行人臉圖像的特征降維時(shí),可以通過計(jì)算低維度矩陣(ZZT)的特征向量ν,對(duì)其左乘ZT,得到協(xié)方差矩陣的特征向量.
BP(Back Propagation)神經(jīng)網(wǎng)絡(luò)是一種按誤差逆?zhèn)鞑ニ惴ㄓ?xùn)練的多層前饋網(wǎng)絡(luò),其識(shí)別率比傳統(tǒng)算法及人工特征提取方法的識(shí)別率高[14].
1.2.1 BP神經(jīng)網(wǎng)絡(luò)架構(gòu)及其思想
BP的拓?fù)浣Y(jié)構(gòu)如圖1:輸入層(input)的節(jié)點(diǎn)數(shù)是數(shù)據(jù)樣本經(jīng)矩陣分割以后所得的特征向量的維數(shù),輸出層(output)的節(jié)點(diǎn)數(shù)為人臉數(shù)據(jù)庫的類別數(shù),隱含層(hide layer)的節(jié)點(diǎn)數(shù)通常由經(jīng)驗(yàn)公式確定大致范圍,再通過實(shí)驗(yàn)選取具體合適的數(shù)值作為參數(shù)[14].
為了驗(yàn)證本文提出的基于快速PCA人臉識(shí)別改進(jìn)算法的效果,在Matlab2013a環(huán)境下實(shí)現(xiàn)編程,操作系統(tǒng)為Windows7.
實(shí)驗(yàn)的人臉圖像來源于ORL人臉圖像數(shù)據(jù)庫,該數(shù)據(jù)庫共400幅灰度圖像,每個(gè)人10張圖像,由各種角度、表情拍攝而成.其中部分圖像如圖2所示.
圖2 ORL部分人臉圖像
基于BP神經(jīng)網(wǎng)絡(luò)的改進(jìn)PCA算法的人臉識(shí)別方法的具體步驟為:
1)將原始ORL人臉圖像轉(zhuǎn)化為灰度矩陣,再對(duì)灰度矩陣進(jìn)行矩陣分割,本文實(shí)驗(yàn)分割成16,24,80個(gè)小矩陣,對(duì)每一個(gè)小矩陣中心化代替原矩陣,求出每一個(gè)矩陣的協(xié)方差矩陣,再對(duì)每一個(gè)小矩陣進(jìn)行特征值提取,選擇每一個(gè)矩陣最大的特征值所對(duì)應(yīng)的特征向量組成圖片的特征矩陣.
2)將數(shù)據(jù)集的均值歸零,即只取數(shù)據(jù)的偏差部分,對(duì)處理得到的特征矩陣進(jìn)行劃分,將其劃分為訓(xùn)練集train_data和測(cè)試集test_data,用以訓(xùn)練和測(cè)試.
3)從每個(gè)人的文件夾中選出構(gòu)造訓(xùn)練集的圖片數(shù)目,該值必須大于0,小于10.本文選擇每人5張圖片作為訓(xùn)練,剩余5張作為測(cè)試,建立測(cè)試目標(biāo)集,并對(duì)訓(xùn)練集和測(cè)試集進(jìn)行歸一化處理.
4)構(gòu)建BP神經(jīng)網(wǎng)絡(luò).輸入BP神經(jīng)網(wǎng)絡(luò)所需的隱含層神經(jīng)元個(gè)數(shù),輸入層與隱含層之間的傳遞函數(shù)tansig,隱含層與輸出層之間的傳遞函數(shù)purelin,BP訓(xùn)練函數(shù)trainrp,輸入訓(xùn)練目標(biāo),訓(xùn)練次數(shù)以及學(xué)習(xí)速率.
5)訓(xùn)練BP神經(jīng)網(wǎng)絡(luò).得到訓(xùn)練后的神經(jīng)網(wǎng)絡(luò)以及訓(xùn)練過程記錄.
6)用訓(xùn)練好的BP神經(jīng)網(wǎng)絡(luò)進(jìn)行識(shí)別,得到分類正確的測(cè)試集數(shù)目和分類正確的訓(xùn)練集數(shù)目以及總識(shí)別率.
為了進(jìn)一步驗(yàn)證人臉識(shí)別效果,將本文所提出的改進(jìn)人臉識(shí)別算法記為GPCA算法,并將改進(jìn)的地方應(yīng)用在傳統(tǒng)的PCA算法上進(jìn)行比較.
改進(jìn)PCA特征提取算法(GPCA算法):
算法2(GPCA算法)
第0步:M張人臉組成原始圖片集X=[x1,x2,…,xM],特征維數(shù)數(shù)目(16,24,80);
第1步:對(duì)圖片數(shù)據(jù)集進(jìn)行預(yù)處理轉(zhuǎn)化為灰度矩陣,將灰度矩陣劃分成(16,24,80)個(gè)小矩陣Z=[x1,x2,…,xM];
第3步:計(jì)算每一個(gè)小矩陣的協(xié)方差矩陣φ=XXT;
第4步:對(duì)每一個(gè)協(xié)方差矩陣做特征值分解;
第5步:取每一個(gè)小矩陣最大的特征值λ以及所對(duì)應(yīng)的特征向量v;
第7步:輸出降維后的特征矩陣V.
這樣提取出的特征值更加具有代表性,經(jīng)實(shí)驗(yàn)驗(yàn)證,本文算法正確識(shí)別的訓(xùn)練集數(shù)目和測(cè)試集數(shù)目比傳統(tǒng)提取特征值的PCA 算法識(shí)別出的正確數(shù)目要多,識(shí)別率也比傳統(tǒng)PCA算法的識(shí)別率高.
本文實(shí)驗(yàn)從ORL人臉數(shù)據(jù)庫中每個(gè)人選出5張用于訓(xùn)練,剩余5 張用于測(cè)試.用訓(xùn)練好的BP神經(jīng)網(wǎng)絡(luò)進(jìn)行識(shí)別,得到分類正確的測(cè)試集數(shù)目和分類正確的訓(xùn)練集數(shù)目.表1、表2、 表3即為兩種算法基于輸入層不同的情況,在ORL數(shù)據(jù)集上的訓(xùn)練正確數(shù)目和測(cè)試正確數(shù)目的結(jié)果對(duì)比.
表1 輸入層為16的ORL人臉圖像實(shí)驗(yàn)結(jié)果
表2 輸入層為48的ORL人臉圖像實(shí)驗(yàn)結(jié)果
表3 輸入層為80的ORL人臉圖像實(shí)驗(yàn)結(jié)果
經(jīng)過大量的實(shí)驗(yàn)選擇BP神經(jīng)網(wǎng)絡(luò)的參數(shù),如圖3所示,網(wǎng)絡(luò)訓(xùn)練方法為按比例縮小的共軛梯度法.圖3、圖4、圖5、圖6 是ORL人臉數(shù)據(jù)庫在BP網(wǎng)絡(luò)訓(xùn)練過程.
圖3 BP網(wǎng)絡(luò)的參數(shù)訓(xùn)練圖4 BP網(wǎng)絡(luò)性能圖
圖5 BP網(wǎng)絡(luò)的參數(shù)變化圖6 BP網(wǎng)絡(luò)曲線的擬合
表4、表5、表6為兩種算法基于輸入層和隱層不同的情況,BP神經(jīng)網(wǎng)絡(luò)的識(shí)別結(jié)果對(duì)比.
表4 輸入層為16的人臉圖像實(shí)驗(yàn)結(jié)果
表5 輸入層為48的人臉圖像實(shí)驗(yàn)結(jié)果
表6 輸入層為80的人臉圖像實(shí)驗(yàn)結(jié)果
本文所選取的人臉圖像數(shù)據(jù)集為ORL數(shù)據(jù)庫,共400張圖片,前200張用作訓(xùn)練集,后200張用作測(cè)試集.從表1、表2、表3可以看出,本文算法相比于算法1在正確識(shí)別總訓(xùn)練圖片數(shù)和總測(cè)試圖片數(shù)上有所改進(jìn),正確率變高.
從圖6可以看出BP神經(jīng)網(wǎng)絡(luò)訓(xùn)練未出現(xiàn)過擬合或者不擬合現(xiàn)象.
從表4、表5、表6可以看出,當(dāng)隱含層數(shù)很小時(shí),傳統(tǒng)PCA算法的識(shí)別率非常低,而GPCA算法的識(shí)別率明顯提高;當(dāng)隱層,訓(xùn)練目標(biāo)和學(xué)習(xí)速率均相同時(shí),不論是傳統(tǒng)PCA算法還是GPCA算法,迭代次數(shù)選擇5 000次均比1 000 次的總識(shí)別率要高;選擇劃分為16 個(gè)小矩陣時(shí),即輸入層為16時(shí),當(dāng)隱層數(shù)大于等于120時(shí),傳統(tǒng)PCA算法的識(shí)別率均不超過90%,而GPCA 算法的識(shí)別率均超過了90%;當(dāng)劃分的小矩陣為48個(gè)時(shí),傳統(tǒng)PCA算法在隱層數(shù)為120,迭代次數(shù)為5 000,訓(xùn)練目標(biāo)為1e-6,學(xué)習(xí)速率為0.01 時(shí),總識(shí)別率達(dá)到最高,為92.5%,而GPCA算法在同樣的參數(shù)變量下,總識(shí)別率達(dá)到了100%.
本文實(shí)驗(yàn)還存在一些不足之處:
1)本文在計(jì)算特征值與特征向量的過程中,分割矩陣維數(shù)有限,不是任意維數(shù)均可.
2)分類識(shí)別方法只選用了BP神經(jīng)網(wǎng)絡(luò)進(jìn)行,今后還需要再進(jìn)行研究,看看是否可以在分類識(shí)別算法上進(jìn)行改進(jìn),在實(shí)現(xiàn)識(shí)別率高的情況下,運(yùn)行時(shí)間也縮短.