彭榮杰,彭亞雄,陸安江
(貴州大學(xué) 大數(shù)據(jù)與信息工程學(xué)院,貴州 貴陽 550025)
人臉識別技術(shù)起源于21世紀,該技術(shù)與傳統(tǒng)的指紋識別、虹膜識別、掌紋掃描、身份識別相比,有較好的隱蔽性,安全性高,操作便捷[1],是計算機領(lǐng)域和機器學(xué)習(xí)領(lǐng)域研究的熱點之一,有著廣闊的前景。近年來人臉識別技術(shù)已滲入到日常生活中,例如支付寶付款、人臉識別解手機密碼鎖及刷臉乘車等方面,使人們的生活更加便利。文獻[2]最早將主成分分析(Principal Component Analysis,PCA)算法應(yīng)用于人臉識別,用于特征臉的提取。該方法效果良好,很快在人臉識別技術(shù)中得到應(yīng)用。但在人臉圖像中,除了線性部分,還有非線性部分,且提取的人臉特征向量是高維的,因此只能提取人臉線性部分的PCA算法的應(yīng)用范圍及效果較為有限。為了更好地提取人臉圖像信息,解決人臉圖像的非線性問題,研究人員提出了核主成分分析(Kernel Principal Component Analysis,KPCA)算法。該算法將高維空間中的特征向量變化到低維空間中,使原始空間的數(shù)據(jù)信息降到最小值,以便更好、更快地提取人臉圖像的有用信息。在人臉識別方面,分類器的選取很重要。分類器種類包括最近鄰算法分類器[3]、K近鄰算法分類器、支持向量機(Support Vector Machines,SVM)分類器以及基于貝葉斯識別模型的分類器[4]等。SVM分類器在處理小樣本數(shù)據(jù)集和非線性問題及高維模式方面具有優(yōu)勢,所以本研究結(jié)合SVM分類器對人臉圖像進行分類識別[5-6]。
在人臉特征提取前,需要對人臉圖像進行預(yù)處理,去除光照過強或過弱對人臉識別帶來的不利影響。本文使用Gamma校正法對人臉圖像進行對比度增強處理,基本原理如下。
本文將原人臉圖像設(shè)為I1,將定義的標準圖像設(shè)為I2,通過調(diào)節(jié)參數(shù)λ將需要校正的原人臉圖像校正到定義的標準圖像。首先,對輸入圖像像素值歸一化,歸一化后像素值在[0,1]之間。然后,調(diào)節(jié)參數(shù)λ對像素值做非線性映射,非線性映射計算式為[7]
(1)
式中,f(I1)為輸出非線性映射的值;λ是調(diào)節(jié)參數(shù)。當(dāng)λ<1時,人臉圖像灰度值變大,整體亮度增大。當(dāng)λ>1時,人臉圖像灰度值變小,整體亮度變暗。最后用反歸一化對所得像素值進行處理,再將處理后的像素值擴展到[0,255]。使用Gamma校正法得到的效果如圖1所示。
(a)
PCA是一種分析統(tǒng)計的有效方法,該方法用特征向量對樣本數(shù)據(jù)進行分析,將高維特征向量通過特征向量矩陣轉(zhuǎn)換后得到低維向量[8],并略去次要信息,保存主要信息。通過K-L變換(Karhunen-Loeve Transform)提取圖像的主要成分,構(gòu)成低維特征空間。識別時,將測試圖像投影到低維特征空間,得到一組投影系數(shù),通過與各個圖像比較進行識別[9]。
假設(shè)有n個訓(xùn)練樣本,每個訓(xùn)練樣本由其灰度像素構(gòu)成,并用x表示向量。向量x的維數(shù)用樣本圖像像素m表示。樣本圖像像素m等于行像素數(shù)與列像素數(shù)的乘積,得樣本訓(xùn)練集{x1,x2,x3,…,xn},計算樣本的平均向量為式(2)。
(2)
平均向量又稱訓(xùn)練圖片的平均臉,每個訓(xùn)練樣本與平均臉的差值用d表示。
di=xi-φ,i=1,2,3,…,n
(3)
樣本集的協(xié)方差矩陣用C表示
(4)
即
(5)
使用式(4)中協(xié)方差矩陣C的特征向量ei和特征值γi來構(gòu)造特征空間,需要對特征值進行分解。但因其維數(shù)較大,故采用奇異值分解(Singular Value Decomposition,SVD)定理,通過求解ATA的特征值和特征向量來求AAT的特征值和特征向量。最后,得到ATA的特征值λi和正交歸一化特征向量vi[10]。
選取前p個最大的特征向量和其對應(yīng)的特征值作為主要信息提取,特征值的貢獻率為δ,選取特征值與所有特征值的和的比值表示,為ω。
(6)
為更好地對圖像進行表達,貢獻率δ=0.99。協(xié)方差矩陣C的特征向量為
(7)
得到特征空間?為式(8)。
?=(e1,e2,e3,…,ep)
(8)
假設(shè)平面上有兩類數(shù)據(jù),分別用空心圓圈和實心圓圈表示。如圖2所示,尋找一個超平面能正確劃分平面上的所有數(shù)據(jù),此分割線可能有多條。如果找到一個平面,該平面內(nèi)全部樣本數(shù)據(jù)點距離分割線最近,且距離最大,那么找到的這個平面就是超平面[11],該超平面也是最佳超平面。超平面之間的H分類分別為H1和H2,它們之間的距離稱為分類間隔。
圖2 SVM算法分類圖Figure 2.SVM algorithm classification map
該超平面H的方程表達為:wTx+b=0;樣本點p(x1,x2,x3,…,xn)到此超平面的距離用d表示,計算式如下所示。
(9)
訓(xùn)練集D={(xi,yi)|xi∈RN,yi∈{-1,1}}。訓(xùn)練集中xi為樣本集,yi是xi對應(yīng)的標簽,yi=1為正樣本集標簽,yi=-1為負樣本集標簽。此超平面H將不同的樣本集分離,其對應(yīng)的判別式為[11]
w×xi+b≥1,yi=1
(10)
w×xi+b≤1,yi=-1
(11)
聯(lián)合式(10)、式(11)得式(12)。
yi(w×xi+b)-1≥0
(12)
上述優(yōu)化問題的目標函數(shù)轉(zhuǎn)換成
(13)
為解目標函數(shù),使用拉格朗日優(yōu)化理論,即
(14)
最終優(yōu)化形式為式(15)。
(15)
由于數(shù)據(jù)集不統(tǒng)一,存在噪點,所以引入松弛變量ξ,并允許少量不能正確劃分的數(shù)據(jù)存在[11]。重新調(diào)整目標函數(shù),新目標函數(shù)為
(16)
新約束條件為式(17)。
yj(w×xi+b)≥1-ξi,i=1,2,3,…,n
(17)
PCA算法是線性算法,不能很好地描述人臉圖像的內(nèi)在結(jié)構(gòu)及內(nèi)在紋理特征,所以本文對PCA算法進行核改進,提出KPCA算法[12-13]。KPCA算法運用其自身產(chǎn)生的核函數(shù)來提取人臉圖像的非線性結(jié)構(gòu)特征。KPCA算法的主要思想是通過一個非線性核映射φ(x),將訓(xùn)練集的數(shù)據(jù)從低維的特征空間X投射到高維的特征空間F中[14],在高維的特征空間F中重新構(gòu)造一個最優(yōu)分類面[15-16],實現(xiàn)數(shù)據(jù)的分類。該方法可解決數(shù)據(jù)線性不可分的分析及提取等問題,又因其維數(shù)不會超過訓(xùn)練樣本的總數(shù),故能避免在高維空間中進行大量運算。將輸入的人臉數(shù)據(jù)經(jīng)過非線性核映射后得到樣本組,對樣本組做中心化處理,即
(18)
式中,N表示訓(xùn)練樣本的個數(shù);φ(xk)是對訓(xùn)練樣本的映射函數(shù)。C是映射后的協(xié)方差矩陣[17],C表示為
(19)
用下式來求解特征方程,可得主分量
λV=CV
(20)
式中,V為特征向量,可用φ(x1),φ(x2),…,φ(xn)的線性組合來表示。
核函數(shù)的表示有很多種,本文采用高斯核函數(shù),高斯核函數(shù)表達式為
K(xi,x)=exp(-q‖x-xi‖2)
(21)
假設(shè)用K來表示N×N的核矩陣
Kij=φ(xi)Tφ(xj)
(22)
把表達式(19)、式(21)和式(22)帶入表達式(20)可得
Kα=Nλα
(23)
由式(22)可以得到核矩陣K。K具有正定性和對稱性,并且各特征值為非負值。
求解式(23)能得到
λi(αi,αj)=1
(24)
假設(shè)測試樣本X,該樣本在Vj方向的投影可用下式表示。
(25)
(a)
本文先對訓(xùn)練集和測試集中的圖像進行預(yù)處理,再對PCA算法進行核改進,得到KPCA算法,最后結(jié)合SVM分類器,采用“一對一”分類策略將SVM推廣到多類問題的分類過程,完成多分類的變換。具體算法步驟如下:
步驟1在人臉圖像庫中選擇樣本集P,將P分成訓(xùn)練樣本集和測試樣本集。訓(xùn)練樣本集由前M個人臉圖像組成,測試樣本集由剩下的(P-M)個人臉圖像組成;
步驟2對訓(xùn)練集和測試集中的圖像用Gamma校正法進行預(yù)處理;
步驟3對預(yù)處理后的圖像以矢量的形式排列,形成特征集;
步驟5結(jié)合SVM多分類器進行分類識別。
本文在MATLAB 2014b上進行實驗,同時在MATLAB 2014b上搭建人臉識別系統(tǒng)并對系統(tǒng)進行仿真。本文使用劍橋大學(xué)AT&T實驗室創(chuàng)建的ORL人臉數(shù)據(jù)庫以及Yale人臉數(shù)據(jù)庫。ORL人臉數(shù)據(jù)庫里有40個人,每人有10張圖片,其分辨率為112×92,灰度級是256。Yale人臉數(shù)據(jù)庫里有15個人,每人有11張拍攝角度不同、表情不一致的人臉圖像[18-19]。本實驗選取前10張圖片,其人臉圖像分辨率為100×100,灰度級是256。分別對PCA、PCA+SVM、KPCA+SVM算法進行比較,KPCA+SVM算法在ORL人臉庫上識別率是95.16%,在Yale人臉庫上識別率是95.10%,表明KPCA+SVM算法優(yōu)于PCA算法和PCA+SVM算法。將KPCA+SVM算法用于人臉識別系統(tǒng),并用GUI界面仿真,系統(tǒng)的流程框圖如圖4所示。
圖4 系統(tǒng)的流程框圖Figure 4.System flow diagram
本文實驗取每個人10張人臉圖片,訓(xùn)練集用前5張人臉圖片,測試集用后5張人臉圖片。對訓(xùn)練集和測試集中的圖像用Gamma校正法進行預(yù)處理,取調(diào)節(jié)參數(shù)λ=0.6。如表1和表2所示,PCA算法將高維的人臉圖像投影到低維的特征空間,得到特征臉后進行人臉識別。由于人臉圖像易受光照、表情等因素的影響及存在非線性特征,故PCA算法識別率較低。SVM在處理小樣本數(shù)據(jù)分類方面具有一定的優(yōu)勢。結(jié)合SVM的PCA+SVM方法在ORL人臉庫和Yale人臉庫中的識別率相對于PCA算法分別提高了7%和9.1%。本文對人臉圖像進行預(yù)處理,減少光照的影響,再對PCA算法進行核改進,提出KPCA算法。KPCA利用其內(nèi)部非線性核函數(shù)作用,能較好地提取人臉的輪廓,有效處理非線性特征數(shù)據(jù),降低數(shù)據(jù)維數(shù),減少特征數(shù)據(jù)存儲所需要的空間,提高運算能力。將KPCA結(jié)合SVM分類器進行分類識別。如表1所示,本文所提的KPCA+SVM算法在ORL人臉庫上識別率是95.16%,比傳統(tǒng)PCA算法提高了18.16%,比PCA+SVM提高了11.16%。將KPCA+SVM算法在人臉識別系統(tǒng)中運行5次,其平均運行時間為3.95 s,少于PCA算法及PCA+SVM算法的平均運行時間。如表2所示,本文所提KPCA+SVM算法在Yale人臉庫上識別率是95.10%,比傳統(tǒng)PCA算法提高21.1%,比PCA+SVM提高12%。KPCA+SVM算法運行5次,平均運行時間為5.12 s,比傳統(tǒng)PCA算法、PCA+SVM算法的平均運行時間要少。實驗結(jié)果表明,本文改進后的KPCA+SVM算法具有較好的識別效果,提高了平均運算速度。
表1 在ORL人臉庫上的實驗結(jié)果Table 1. Experimental results on ORL face database
表2 在Yale人臉庫上的實驗結(jié)果Table 2. Experimental results on Yale face database
基于改進后的KPCA+SVM算法,在MATLAB平臺上搭建人臉識別系統(tǒng)并進行仿真,以GUI呈現(xiàn)。點擊開始訓(xùn)練按鈕,調(diào)用函數(shù)對前5張圖片進行訓(xùn)練并保存數(shù)據(jù)。點擊開始測試按鈕,調(diào)用函數(shù)對后5張圖片進行測試,對測試集200個人臉樣本,識別率為95.16%。點擊打開圖片按鈕,選擇ORL人臉庫中第9個人第6張圖片作為待識別人臉圖像,點擊識別人臉,系統(tǒng)讀入訓(xùn)練參數(shù)進行特征匹配并輸出識別結(jié)果。該系統(tǒng)能正確識別出人臉圖像,GUI界面輸出結(jié)果如圖5所示。
圖5 基于KPCA+SVM的人臉識別系統(tǒng)Figure 5.Face recognition system based on KPCA+SVM
調(diào)節(jié)參數(shù)框中的C是懲罰因子,C值越高,系統(tǒng)容易出現(xiàn)過擬合現(xiàn)象;C值越低,系統(tǒng)容易出現(xiàn)欠擬合現(xiàn)象。C值過大或過小都會使系統(tǒng)的泛化能力變差。gamma是單個訓(xùn)練樣本的影響因子,可以看作支持向量樣本的影響半徑的倒數(shù)。基于改進后的KPCA+SVM算法在懲罰因子C=2,gamma=0.01時,在ORL人臉庫和Yale人臉庫上的識別率均在95%以上,運行時間均在6 s以下,達到系統(tǒng)識別率的要求。該結(jié)果表明基于KPCA+SVM的人臉識別系統(tǒng)的研究是可行的,對實際研究有一定的參考應(yīng)用價值。
本文所提的KPCA+SVM算法首先使用Gamma校正方法對人臉圖像進行預(yù)處理,減少光照過強或者過弱對圖像帶來的不利影響;再用KPCA算法對提取的圖像進行人臉特征提取,減少了光照干擾和小樣本問題,較好地提取了人臉圖像的非線性特征;最后用SVM分類識別器對人臉圖像進行分類識別。KPCA+SVM算法的識別率相比于PCA、PCA+SVM算法均有所提高。近年來,由于深度學(xué)習(xí)被廣泛應(yīng)用于模式識別中來提取人臉的深層特征,因此下一步工作將結(jié)合深度學(xué)習(xí)進行人臉識別。