彭榮杰,彭亞雄,陸安江
(貴州大學 大數據與信息工程學院,貴州 貴陽 550025)
人臉識別技術起源于21世紀,該技術與傳統的指紋識別、虹膜識別、掌紋掃描、身份識別相比,有較好的隱蔽性,安全性高,操作便捷[1],是計算機領域和機器學習領域研究的熱點之一,有著廣闊的前景。近年來人臉識別技術已滲入到日常生活中,例如支付寶付款、人臉識別解手機密碼鎖及刷臉乘車等方面,使人們的生活更加便利。文獻[2]最早將主成分分析(Principal Component Analysis,PCA)算法應用于人臉識別,用于特征臉的提取。該方法效果良好,很快在人臉識別技術中得到應用。但在人臉圖像中,除了線性部分,還有非線性部分,且提取的人臉特征向量是高維的,因此只能提取人臉線性部分的PCA算法的應用范圍及效果較為有限。為了更好地提取人臉圖像信息,解決人臉圖像的非線性問題,研究人員提出了核主成分分析(Kernel Principal Component Analysis,KPCA)算法。該算法將高維空間中的特征向量變化到低維空間中,使原始空間的數據信息降到最小值,以便更好、更快地提取人臉圖像的有用信息。在人臉識別方面,分類器的選取很重要。分類器種類包括最近鄰算法分類器[3]、K近鄰算法分類器、支持向量機(Support Vector Machines,SVM)分類器以及基于貝葉斯識別模型的分類器[4]等。SVM分類器在處理小樣本數據集和非線性問題及高維模式方面具有優勢,所以本研究結合SVM分類器對人臉圖像進行分類識別[5-6]。
在人臉特征提取前,需要對人臉圖像進行預處理,去除光照過強或過弱對人臉識別帶來的不利影響。本文使用Gamma校正法對人臉圖像進行對比度增強處理,基本原理如下。
本文將原人臉圖像設為I1,將定義的標準圖像設為I2,通過調節參數λ將需要校正的原人臉圖像校正到定義的標準圖像。首先,對輸入圖像像素值歸一化,歸一化后像素值在[0,1]之間。然后,調節參數λ對像素值做非線性映射,非線性映射計算式為[7]
(1)
式中,f(I1)為輸出非線性映射的值;λ是調節參數。當λ<1時,人臉圖像灰度值變大,整體亮度增大。當λ>1時,人臉圖像灰度值變小,整體亮度變暗。最后用反歸一化對所得像素值進行處理,再將處理后的像素值擴展到[0,255]。使用Gamma校正法得到的效果如圖1所示。

(a)
PCA是一種分析統計的有效方法,該方法用特征向量對樣本數據進行分析,將高維特征向量通過特征向量矩陣轉換后得到低維向量[8],并略去次要信息,保存主要信息。通過K-L變換(Karhunen-Loeve Transform)提取圖像的主要成分,構成低維特征空間。識別時,將測試圖像投影到低維特征空間,得到一組投影系數,通過與各個圖像比較進行識別[9]。
假設有n個訓練樣本,每個訓練樣本由其灰度像素構成,并用x表示向量。向量x的維數用樣本圖像像素m表示。樣本圖像像素m等于行像素數與列像素數的乘積,得樣本訓練集{x1,x2,x3,…,xn},計算樣本的平均向量為式(2)。
(2)
平均向量又稱訓練圖片的平均臉,每個訓練樣本與平均臉的差值用d表示。
di=xi-φ,i=1,2,3,…,n
(3)
樣本集的協方差矩陣用C表示
(4)
即
(5)
使用式(4)中協方差矩陣C的特征向量ei和特征值γi來構造特征空間,需要對特征值進行分解。但因其維數較大,故采用奇異值分解(Singular Value Decomposition,SVD)定理,通過求解ATA的特征值和特征向量來求AAT的特征值和特征向量。最后,得到ATA的特征值λi和正交歸一化特征向量vi[10]。
選取前p個最大的特征向量和其對應的特征值作為主要信息提取,特征值的貢獻率為δ,選取特征值與所有特征值的和的比值表示,為ω。
(6)
為更好地對圖像進行表達,貢獻率δ=0.99。協方差矩陣C的特征向量為
(7)
得到特征空間?為式(8)。
?=(e1,e2,e3,…,ep)
(8)
假設平面上有兩類數據,分別用空心圓圈和實心圓圈表示。如圖2所示,尋找一個超平面能正確劃分平面上的所有數據,此分割線可能有多條。如果找到一個平面,該平面內全部樣本數據點距離分割線最近,且距離最大,那么找到的這個平面就是超平面[11],該超平面也是最佳超平面。超平面之間的H分類分別為H1和H2,它們之間的距離稱為分類間隔。

圖2 SVM算法分類圖Figure 2.SVM algorithm classification map
該超平面H的方程表達為:wTx+b=0;樣本點p(x1,x2,x3,…,xn)到此超平面的距離用d表示,計算式如下所示。

(9)
訓練集D={(xi,yi)|xi∈RN,yi∈{-1,1}}。訓練集中xi為樣本集,yi是xi對應的標簽,yi=1為正樣本集標簽,yi=-1為負樣本集標簽。此超平面H將不同的樣本集分離,其對應的判別式為[11]
w×xi+b≥1,yi=1
(10)
w×xi+b≤1,yi=-1
(11)
聯合式(10)、式(11)得式(12)。
yi(w×xi+b)-1≥0
(12)
上述優化問題的目標函數轉換成
(13)
為解目標函數,使用拉格朗日優化理論,即
(14)
最終優化形式為式(15)。
(15)
由于數據集不統一,存在噪點,所以引入松弛變量ξ,并允許少量不能正確劃分的數據存在[11]。重新調整目標函數,新目標函數為
(16)
新約束條件為式(17)。
yj(w×xi+b)≥1-ξi,i=1,2,3,…,n
(17)
PCA算法是線性算法,不能很好地描述人臉圖像的內在結構及內在紋理特征,所以本文對PCA算法進行核改進,提出KPCA算法[12-13]。KPCA算法運用其自身產生的核函數來提取人臉圖像的非線性結構特征。KPCA算法的主要思想是通過一個非線性核映射φ(x),將訓練集的數據從低維的特征空間X投射到高維的特征空間F中[14],在高維的特征空間F中重新構造一個最優分類面[15-16],實現數據的分類。該方法可解決數據線性不可分的分析及提取等問題,又因其維數不會超過訓練樣本的總數,故能避免在高維空間中進行大量運算。將輸入的人臉數據經過非線性核映射后得到樣本組,對樣本組做中心化處理,即
(18)
式中,N表示訓練樣本的個數;φ(xk)是對訓練樣本的映射函數。C是映射后的協方差矩陣[17],C表示為
(19)
用下式來求解特征方程,可得主分量
λV=CV
(20)
式中,V為特征向量,可用φ(x1),φ(x2),…,φ(xn)的線性組合來表示。
核函數的表示有很多種,本文采用高斯核函數,高斯核函數表達式為
K(xi,x)=exp(-q‖x-xi‖2)
(21)
假設用K來表示N×N的核矩陣
Kij=φ(xi)Tφ(xj)
(22)
把表達式(19)、式(21)和式(22)帶入表達式(20)可得
Kα=Nλα
(23)
由式(22)可以得到核矩陣K。K具有正定性和對稱性,并且各特征值為非負值。
求解式(23)能得到
λi(αi,αj)=1
(24)
假設測試樣本X,該樣本在Vj方向的投影可用下式表示。

(25)


(a)
本文先對訓練集和測試集中的圖像進行預處理,再對PCA算法進行核改進,得到KPCA算法,最后結合SVM分類器,采用“一對一”分類策略將SVM推廣到多類問題的分類過程,完成多分類的變換。具體算法步驟如下:
步驟1在人臉圖像庫中選擇樣本集P,將P分成訓練樣本集和測試樣本集。訓練樣本集由前M個人臉圖像組成,測試樣本集由剩下的(P-M)個人臉圖像組成;
步驟2對訓練集和測試集中的圖像用Gamma校正法進行預處理;
步驟3對預處理后的圖像以矢量的形式排列,形成特征集;

步驟5結合SVM多分類器進行分類識別。
本文在MATLAB 2014b上進行實驗,同時在MATLAB 2014b上搭建人臉識別系統并對系統進行仿真。本文使用劍橋大學AT&T實驗室創建的ORL人臉數據庫以及Yale人臉數據庫。ORL人臉數據庫里有40個人,每人有10張圖片,其分辨率為112×92,灰度級是256。Yale人臉數據庫里有15個人,每人有11張拍攝角度不同、表情不一致的人臉圖像[18-19]。本實驗選取前10張圖片,其人臉圖像分辨率為100×100,灰度級是256。分別對PCA、PCA+SVM、KPCA+SVM算法進行比較,KPCA+SVM算法在ORL人臉庫上識別率是95.16%,在Yale人臉庫上識別率是95.10%,表明KPCA+SVM算法優于PCA算法和PCA+SVM算法。將KPCA+SVM算法用于人臉識別系統,并用GUI界面仿真,系統的流程框圖如圖4所示。

圖4 系統的流程框圖Figure 4.System flow diagram
本文實驗取每個人10張人臉圖片,訓練集用前5張人臉圖片,測試集用后5張人臉圖片。對訓練集和測試集中的圖像用Gamma校正法進行預處理,取調節參數λ=0.6。如表1和表2所示,PCA算法將高維的人臉圖像投影到低維的特征空間,得到特征臉后進行人臉識別。由于人臉圖像易受光照、表情等因素的影響及存在非線性特征,故PCA算法識別率較低。SVM在處理小樣本數據分類方面具有一定的優勢。結合SVM的PCA+SVM方法在ORL人臉庫和Yale人臉庫中的識別率相對于PCA算法分別提高了7%和9.1%。本文對人臉圖像進行預處理,減少光照的影響,再對PCA算法進行核改進,提出KPCA算法。KPCA利用其內部非線性核函數作用,能較好地提取人臉的輪廓,有效處理非線性特征數據,降低數據維數,減少特征數據存儲所需要的空間,提高運算能力。將KPCA結合SVM分類器進行分類識別。如表1所示,本文所提的KPCA+SVM算法在ORL人臉庫上識別率是95.16%,比傳統PCA算法提高了18.16%,比PCA+SVM提高了11.16%。將KPCA+SVM算法在人臉識別系統中運行5次,其平均運行時間為3.95 s,少于PCA算法及PCA+SVM算法的平均運行時間。如表2所示,本文所提KPCA+SVM算法在Yale人臉庫上識別率是95.10%,比傳統PCA算法提高21.1%,比PCA+SVM提高12%。KPCA+SVM算法運行5次,平均運行時間為5.12 s,比傳統PCA算法、PCA+SVM算法的平均運行時間要少。實驗結果表明,本文改進后的KPCA+SVM算法具有較好的識別效果,提高了平均運算速度。

表1 在ORL人臉庫上的實驗結果Table 1. Experimental results on ORL face database

表2 在Yale人臉庫上的實驗結果Table 2. Experimental results on Yale face database
基于改進后的KPCA+SVM算法,在MATLAB平臺上搭建人臉識別系統并進行仿真,以GUI呈現。點擊開始訓練按鈕,調用函數對前5張圖片進行訓練并保存數據。點擊開始測試按鈕,調用函數對后5張圖片進行測試,對測試集200個人臉樣本,識別率為95.16%。點擊打開圖片按鈕,選擇ORL人臉庫中第9個人第6張圖片作為待識別人臉圖像,點擊識別人臉,系統讀入訓練參數進行特征匹配并輸出識別結果。該系統能正確識別出人臉圖像,GUI界面輸出結果如圖5所示。

圖5 基于KPCA+SVM的人臉識別系統Figure 5.Face recognition system based on KPCA+SVM
調節參數框中的C是懲罰因子,C值越高,系統容易出現過擬合現象;C值越低,系統容易出現欠擬合現象。C值過大或過小都會使系統的泛化能力變差。gamma是單個訓練樣本的影響因子,可以看作支持向量樣本的影響半徑的倒數。基于改進后的KPCA+SVM算法在懲罰因子C=2,gamma=0.01時,在ORL人臉庫和Yale人臉庫上的識別率均在95%以上,運行時間均在6 s以下,達到系統識別率的要求。該結果表明基于KPCA+SVM的人臉識別系統的研究是可行的,對實際研究有一定的參考應用價值。
本文所提的KPCA+SVM算法首先使用Gamma校正方法對人臉圖像進行預處理,減少光照過強或者過弱對圖像帶來的不利影響;再用KPCA算法對提取的圖像進行人臉特征提取,減少了光照干擾和小樣本問題,較好地提取了人臉圖像的非線性特征;最后用SVM分類識別器對人臉圖像進行分類識別。KPCA+SVM算法的識別率相比于PCA、PCA+SVM算法均有所提高。近年來,由于深度學習被廣泛應用于模式識別中來提取人臉的深層特征,因此下一步工作將結合深度學習進行人臉識別。