于 彬,沈永良
(黑龍江大學 電子工程學院,哈爾濱 150080)
大多數(shù)傳統(tǒng)的人臉識別算法計算速度慢,識別精度低。在人臉識別中,如何快速、準確地識別和顯示圖像是一個非常重要的問題。
有5種降維技術(shù)被認為是有效的,它們分別是鄰域保持嵌入(NPE)[1]、獨立成分分析(ICA)[2]、局部保持投影(LPP)[3]、線性判別分析(LDA)[4]和主成分分析(PCA)[5]。李歡歡[6]利用快速PCA進行人臉圖像特征提取和選擇,用所選擇的人臉特征向量訓練多個支持向量機(SVM),最后用訓練好的支持向量機(SVM)進行人臉識別的分類。雖然與傳統(tǒng)方法比較識別速度有所提高,但是沒有考慮到圖像之間行與列的相關(guān)性[7],使識別正確率有所下降。
姜興瓊等[8]利用PCA提取圖像的局部特征,然后利用歐氏距離最小的原則實現(xiàn)了民族服飾圖像的識別。李躍飛[9]利用人臉的紋理圖像特征結(jié)合PCA算法,增加了圖像的魯棒性。陳瀟[10]利用Fisher準則結(jié)合PCA來進行圖片特征的提取,然后通過計算歐氏距離的大小來實現(xiàn)圖像之間的匹配與識別。
由于一維圖像處理方法忽略了圖像的空間信息,許多基于二維矩陣的特征提取方法相繼出現(xiàn),如二維PCA(2DPCA)[11]、二維LDA(2DLDA)[12]、雙向MSD(2DMSD)[13]、二維LPP(2DLPP)[14]和二元二維主成分分析[15]。
高陽等[16]提出了一種熵值加權(quán)分塊2DPCA人臉識別方法,解決了完全依賴人臉庫的問題。王明霞等[17]首先利用小波變換算法對人臉庫進行圖像處理,然后利用2DPCA算法實現(xiàn)了人臉的檢測。韋寧燕等[18]提出一種多約束的稀疏分類(M-SRC)的人臉表情識別算法。該算法首先利用二維主成分分析(2DPCA)對人臉降維,并對提取的局部特征加權(quán),然后用獲取的特征來組成訓練樣本,最后使用多約束稀疏表示理論進行分類。李球球等[19]提出的一種人臉識別算法,利用2DPCA+2DLDA對訓練集中的每個圖像進行映射,保留空間信息和類標簽信息。該種方法在提高準確率的同時,特征提取過多,運算量大,使識別速度有所下降,實時性有所降低。
為了在準確性和實時性上滿足要求,本文提出了一種分塊式雙向壓縮2DPCA+PCA+SVM算法。該算法的特點是首先將圖像分割成許多大小相等的小塊,并且這些小塊互相不重疊,然后采用雙向2DPCA算法對每個小塊進行壓縮。在得到新的圖像后,采用PCA算法對其進行再壓縮,并與RBF作為核函數(shù)的支持向量機相結(jié)合,以達到最佳的壓縮和識別效果。
假設(shè)有一個樣本集,大小為H,全部由灰度圖組成[20],每個樣本大小為m×n,則它的樣本矩陣為
x=(x1x2…xH)T
(1)
其中,xi為由第i個圖像的每一列向量堆疊成一列的mn維列向量,即把矩陣向量化。然后計算圖片的平均臉:
(2)
計算每一張人臉與平均臉的差值:
di=xi-μi(i=1,2,…H)
(3)
構(gòu)建協(xié)方差矩陣:
(4)
其中A=(d1,d2,…,dH)。
要求解協(xié)方差矩陣C的特征值和特征向量,構(gòu)造特征臉空間,但是協(xié)方差矩陣C的維數(shù)為mn×mn,考慮其維數(shù)較大,計算量也較大,采用奇異值分解(Singular Value Decomposition,SVD)定理,通過求解ATA的特征值和特征向量來獲得的AAT特征值和特征向量。求解出ATA的特征值λ1λ2…λm,按照從大到小排序,并選出前k個特征值λ1λ2…λk和其對應(yīng)的特征向量α1α2…αk。
求出原協(xié)方差特征向量:
(5)
則構(gòu)建的特征臉空間為
w=(u1,u1,…,uk)
(6)
然后將每一幅人臉與平均臉的差值矢量投影到特征臉空間,即
Ωi=wTdi(i=1,2,…,H)
(7)
二維主成分分析算法直接對人臉圖像矩陣進行相關(guān)的運算,避開了由于PCA算法中用行列變換所產(chǎn)生的高維矩陣,減少了復(fù)雜的計算。2DPCA算法提取特征的原理和PCA算法大致類似,都是為了尋找最優(yōu)的投影特征子空間。2DPCA算法步驟如下:
(8)
(9)
樣本的差異臉為
(10)
定義圖像的總體散布矩陣,即協(xié)方差矩陣為
(11)
(12)
構(gòu)建最優(yōu)投影矩陣。利用協(xié)方差矩陣的前d個特征值λ1≥λ2≥…≥λd及其對應(yīng)的單位正交特征向量[X1,X2,…,Xd],構(gòu)建最優(yōu)的投影特征子空間矩陣:
X=[X1,X2,…,Xd]
(13)
將差值臉映射到投影特征子空間的特征人臉Ωi:
Ωi=JiX
(14)
首先,將一張隨機的圖片A先進行分快,將這個矩陣分成N=Dm×Dn份。其中Dm和Dn分別表示矩陣在豎直方向和水平方向上分割的數(shù)目。
(15)
傳統(tǒng)的2DPCA算法只考慮了行與行之間的關(guān)系,并沒有考慮行與列之間的關(guān)系。采用與式(12)類似的方式計算得到列向量的總體散布矩陣G′,記為
(16)
假設(shè)有一個列向量彼此正交的矩陣Z∈Rm×q(q≤m),將A向Z投影得到一個大小為q×n的矩陣Q,則
Q=ZTA
(17)
用每一個小塊Bi,j分別投影到通過式(13)和式(17)已經(jīng)獲得的行方向的矩陣X和列方向的矩陣Z,將會得到一個大小為q×d的矩陣C,則
C=ZTAX
(18)
其中,C為使用分塊式雙向壓縮2DPCA在圖像A上提取得到的特征矩陣。令C=Ti,則
(19)
其中,Ti為第i幅圖片的特征矩陣;Ci,j=ZTBi,jX代表每個小塊的特征矩陣。
為了追求更高的效率和更好的識別率,將新提取得到的分塊特征矩陣Ti,使用PCA的方法再一次壓縮,可以得到平均臉為
(20)
其中,H為樣本總數(shù)。進一步可得到每一張臉與平均臉的差值為
di=Ti-μi(i=1,2,…H)
(21)
然后通過式(7)得到新的投影空間,再與徑向基核函數(shù)的SVM相結(jié)合。RBF核函數(shù):
(22)
為了進一步提高以徑向基為核函數(shù)的支持向量機的性能,采用枚舉法來進行SVM參數(shù)尋優(yōu)。通過參數(shù)對比可知,當C(懲罰系數(shù))和gamma分別為C=4.326 75, gamma=2.07e-8時,識別率最好。為了驗證所得到的C和gamma參數(shù)為最優(yōu)參數(shù),10組隨機選取的參數(shù)和本文所得參數(shù)下的識別率見表1。
由表1可見,本文用枚舉法得到的參數(shù)均高于隨機選取的參數(shù),本文所選取C和gamma的參數(shù)為當前最優(yōu)參數(shù)。
表1 不同參數(shù)下的識別率
為了測試本文所提出的方法的性能,在ORL人臉數(shù)據(jù)庫和Yale人臉庫上做了大量的實驗。ORL人臉數(shù)據(jù)集包含40個類,每類均有10張人臉圖像,共400張圖片,且面部表情(睜眼或閉眼、微笑或不微笑)與面部細節(jié)(戴眼鏡或不戴)均不同,部分圖像在不同的時間采集,所有灰度圖大小為92×112個像素點。Yale人臉數(shù)據(jù)庫中包含15個人,每個人11張,共有165張照片,每類照片均采自不同的光照和表情條件,大小為100×100個像素點。部分圖像見圖1和圖2。
圖1 部分ORL人臉數(shù)據(jù)庫Fig.1 Some face images in ORL face database
圖2 部分Yale人臉數(shù)據(jù)庫Fig.2 Some face images in Yale face database
為了體現(xiàn)本文算法相比于傳統(tǒng)算法的優(yōu)越性,分別在ORL和Yale人臉數(shù)據(jù)集中,對PCA,2DPCA,雙向壓縮2DPCA及本文所提算法的識別時間及準確率進行對比。仿真實驗中所采用的的仿真環(huán)境為:Inter Core i7 8700 處理器,NVIDIA GeForce GTX 1070 Ti,內(nèi)存16 G,存儲空間2 TB,仿真工具采用PyCharm。得到的結(jié)果見表2,表3。
表2 在ORL人臉庫中的識別時間及識別率
表3 在Yale人臉庫中的識別時間及識別率
由表2和表3可見,在不同的人臉庫中,本文所提出的算法在識別時間和識別率上都比傳統(tǒng)算法效果好。仔細分析原因可知,本文所提出的算法,首先把圖像進行分塊操作,使局部圖片信息特征在接下來的操作中得以保存,然后把已經(jīng)劃分為小份的圖片依次進行雙向2DPCA的壓縮,剔除多余特征的同時,極大地保存了每一小份的圖片信息的完整性,最后又進行一次PCA操作,使圖片維數(shù)再一次降低。因此,極大地節(jié)省了算法的空間搜索時間,取得了更好的效率。
為了體現(xiàn)本文所提算法的應(yīng)用價值,又建立了新的小樣本人臉庫。將隨機的5個人,每個人3張不同姿態(tài)的圖片放入人臉庫,其中每個人的任意2張圖像作為訓練數(shù)據(jù)集,余下的1張圖像作為測試數(shù)據(jù)集。新建立的小樣本人臉庫見圖3。
圖3 新建立的小樣本人臉數(shù)據(jù)庫Fig.3 Newly established small sample face database
在新建立的人臉庫中,依次使用PCA,2DPCA,雙向壓縮2DPCA及本文所提算法。得到的識別時間與識別率結(jié)果見表4。
由表4可見,因為人臉庫中的樣本變小,人與人之間的區(qū)分度降低,導(dǎo)致各個算法的識別率都略有縮減,但本文所提算法識別率減少幅度不大,說明算法在小樣本數(shù)據(jù)中依舊適用。
表4 4種算法在新樣本庫的識別率
提出了一種新的人臉識別算法,把人臉圖像分成大小相等的非重疊子塊,使每個子塊包含重要信息。之后,每個子塊采用雙向壓縮2DPCA算法對圖像進行壓縮。這樣,在保留大部分信息的同時,圖像矩陣的大小也發(fā)生了變化,得到一個新的圖像矩陣。新的圖像矩陣采用PCA算法提取特征向量。這不僅減少了特征向量的數(shù)量,而且加快了算法的運算速度,也為與支持向量機的結(jié)合提供了幫助。
為了測試新算法的性能,在ORL,Yale和新建立的小樣本人臉數(shù)據(jù)集上分別對新算法進行了訓練,并與PCA,2DPCA和雙向壓縮2DPCA算法進行了比較。結(jié)果顯示,此種新方法在一定程度上均優(yōu)于傳統(tǒng)人臉識別方法,最高識別率達到98.3%。