何 剛 袁秀娟張 偉 閻 石
(1.蘭州大學信息科學與工程學院 蘭州 730000)(2.西北民族大學電氣工程學院 蘭州 730000)
由于人臉識別在安全,監控和人機交互方面的廣泛應用,目前已成為模式識別和人工智能領域的一個研究熱點[1~4]。然而,迄今為止,由于人臉識別面臨諸多問題,如人臉圖像在光照,姿勢,外貌、表情、膚色等方面的不同,具有模式可變性,始終缺乏高效的算法可以應對這些挑戰。子空間分析方法(SAM)是當前人臉識別領域最流行的方法之一。SAM旨在尋找一組投影基向量,并通過將人臉圖像投影到由這些基向量構成的子空間上提取特征[5]。PCA和FLDA均為基于特征子空間的經典算法[6]。
主成成分分析(PCA)試圖在最小均方誤差的基礎上找到一組最優正交基來提取臉部特征[7]。這種方法可以有效地找出數據中最“主要”的元素和結構,將原有的復雜數據降維。Kirby和Sirovich[7]首先將PCA應用于人臉識別,隨后,Turk和Pentland[8]提出了知名的特征臉法 Eigenface。從此,PCA被廣泛研究,并且開發了許多基于PCA的改進算法[9],但PCA是無監督的,它所做的只是將高維數據整體映射到低維空間上并將有用信息的損失降低到最低,投影時沒有利用任何數據內部的類別信息,單純的提取主要的判別特征丟棄其他非主要的特征。所以PCA雖然可以實現較好的重建,但對于分類來說并不是最佳的,因此在分類與識別的效果上并不出色[10]。
為此,研究者提出了 FLDA[11~12]算法,它是以對樣本進行更好的分類為目的,充分利用訓練樣本的類別信息,尋找到最有助于分類的投影方向子空間。FLDA不僅可以實現將高維數據降低到低維,而且可以盡可能地分離不同類的樣本特征,并盡可能壓縮相同的類樣本特征。通過將其應用于臉部識別,Belhumeur[11]提出了的 Fisherface算法,即首先采用PCA將高維數據降維,然后運用FLDA提取面部判別特征,相關研究表明基于FLDA算法在實現分類與識別時效果將大大超過PCA算法[13]。
使用FLDA進行特征提取很大程度上取決于由訓練樣本獲得的類內和類間散布矩陣。然而,在許多應用中,如執法駕駛執照查詢,護照鑒定,身份證件核定,每個人只有一張照片,即每類對象僅有一個訓練樣本[14]。在這種情況下,由于類內散布矩陣為零,FLDA算法將無法應用。但由于單訓練樣本對客觀現實應用的重要性,這個具有挑戰性的問題已經迅速成為人臉識別中一個熱門子領域。高[15]提出使用奇異值分解SVD的方法,通過SVD將原始的圖像分解成多個基圖像,將對應于3個最大奇異值的基圖像用于重建,即可近似將原始圖像分解成平滑圖和差別圖,用平滑圖像計算類間散布矩陣,而差別圖像作為平滑圖像的補充,用其計算類內散布矩陣。陳[16]則是將每個訓練樣本進行分塊,得到多個子塊,然后利用FLDA方法進行特征提取。但這些方法通常都比較復雜,運算復雜度較高,并且魯棒性差。
本文我們提出了一種基于鏡像臉的FLDA方法來解決每類單訓練樣本的問題。首先通過使用鏡像的方法獲得原始單訓練樣本的鏡像樣本。鏡像人臉樣本不僅可以反映相同類人臉圖像的位置變化,而且,當同一對象的原始臉圖像和鏡像臉圖像以矩陣的形式描述的話,在相同位置上的數據是完全不同的。那么,原始臉和鏡像臉就可以看成是同一個人完全不同的兩張照片。整合原始訓練樣本和其鏡像樣本作為每一類最終的訓練樣本,不僅解決了FLDA在每類單樣本情況下類內散布矩陣無法計算的問題,同時也增加了訓練樣本信息總量。用原始臉和鏡像臉計算類間散布矩陣和類內散布矩陣。然后,利用FLDA算法提取判別特征進行分類識別,仿真數據表明此方法能夠大幅度提高識別精度,獲得更好的魯棒性。
在本章節中,我們將詳細介紹基于鏡像臉實現FLDA單樣本人臉識別算法的原理。
FLDA是一種運用廣泛的基于特征提取的人臉識別方法。它旨在找到一組投影向量,盡可能地壓縮相同的類特征,而分離不同類特征。這樣的優點是能夠實現更好的分類。
在1D-FLDA的基礎上,研究者進一步提出了2D-FLDA思想[17],它直接通過二維圖像計算類內和類間散布矩陣,而無需將人臉圖像先轉換成一維向量。下面我們就以2D-FLDA介紹算法思想。
假設現有c類共k個訓練樣本,第i類訓練樣本ci包含ki個樣本,并有ki=k。我們以 Aˉ表示由所有訓練樣本獲得的平均臉,Aˉi表示由第i類訓練樣本獲得的平均臉。2D-FLDA是通過最大化準則(1)獲取一組最佳判別向量wj(j=1,...,d),從而構建一個轉換矩陣(即投影矩陣)W=[w1w2,...,wd]提取特征以實現正確分類。

其中,Sb表示類間散布矩陣,Sw表示類內散布矩陣。并有

最大化準則(1)相當于解決廣義特征值問題:

其中Λ是以特征值為元素的對角矩陣。在獲得 W后,就可基于FLDA算法思想實現特征提取,選擇合適的分類器最終實現正確分類。雖然FLDA已被廣泛應用于臉部識別,但當每類訓練對象只有一個訓練樣本時無法使用,因為此時類內散布矩陣為零矩陣。下面將以基于鏡像臉的方法解決這個問題。
假設原始訓練樣本共有c類,每類訓練對象僅有一個訓練樣本 Ak∈RP×Q(k=1,...,c),由原始訓練樣本獲取其鏡像樣本。設原始人臉圖像矩陣具有P行和Q列,則可得鏡像臉:Bk(p ,q)=Ak(p ,Q-q+1)(p=1,…,P,q=1,…,Q)。在獲取鏡像臉之后,整合原始人臉圖像和相應的鏡像圖像作為最終訓練樣本集Θ= { Ak∈RP×Q,Bk∈RP×Q,k=1,2,…,c} ,計算類內散布矩陣Sw和類間散布矩陣Sb,從而解決了FLDA單樣本下無法計算內類散布矩陣的問題。

結合式(4)、(5)、(6)求得在新的訓練樣本集 Θ下的最佳投矩陣W,然后利用W從Ak提取判別特征Zk:

輸入一個測試樣本A*,將其投影到W上得到判別特征Z*,然后利用最近鄰分類器將測試樣本A*分類:

實驗中,我們使用三個著名的人臉數據庫來測試所提出的方法的有效性:YALE,FERET和ORL。
YALE數據庫包含來自15個人的圖像,每個提供11個不同的樣本。圖像的變化有照明條件(左光,中心光,右光),面部表情(正常,快樂,悲傷,困倦,驚訝和眨眼)等。圖1是一些來自YALE數據庫樣本及其鏡像。
FERET臉部數據庫由1010人的3280個灰度正面面部圖像組成。在實驗中,我們從200人中挑選400張圖片進行測試。每個人都有兩張不同的圖像(fa和fb)。它們包含了不同的光照和面部表情。圖2是一些來自FERET人臉庫的樣本及其鏡像。

圖1 YALE數據庫樣本及其鏡像

圖2 FERET人臉庫的樣本及其鏡像
ORL數據庫包含來自40個人的樣本,每個提供10張照片。這些照片是在不同時間下拍攝得到,包含著豐富的面部表情(開放或閉合的眼睛,微笑或非微笑),拍攝的圖像具有傾斜和旋轉的差別,幅度變化高達10%。圖3為來自ORL人臉庫的樣本。

圖3 ORL人臉庫的樣本及鏡像
在實驗中,分別采用近鄰分類算法NN和稀疏分類算法SRC[18]結合FLDA測試所提方法(PA)的效果。先用PCA算法將樣本其降維到合適的維數以獲得最佳識別結果。在采用ORL和YALE數據庫的實驗中,我們選擇每個人的第一張人臉圖像鏡像處理后獲得鏡像臉,并將原始臉和鏡像臉一起作為訓練集用于訓練,剩余圖像作為測試樣本進行測試。在FERET fafb數據庫中,我們使用fa圖像獲取鏡像臉和進行訓練,fb圖像進行測試。同時,為驗證所提方法(PA)的優勢,一些用于解決FLDA單訓練樣本問題的方法被用作比較算法。分別是奇異值分解法 SVD[15],離散余弦變換 DCT[15],圖像分塊法[16],投影法[19],奇異值擾動法[20]。在上述五比較種方案中,都是利用FLDA提取判別特征,然后用最近鄰分類器實現對測試圖像進行分類。表1顯示了各種算法分別在ORL,YALE和FERETfafb數據庫的最佳識別精度。
通過表1實驗結果我們發現,鏡像臉的引入,不僅解決了FLDA在每類單樣本情況下類內散布矩陣無法計算的問題,同時,由于原始臉和鏡像臉還反映了同一訓練對象在位置上的變化,當兩者以矩陣的形式描述的話,在相同位置上的數據是完全不同的。那么,就可以把原始臉和鏡像臉就可以看成是同一個人完全不同的兩張照片。這樣,整合原始訓練樣本和其鏡像樣本作為每一類最終的訓練樣本,將大大增加訓練樣本的信息總量。在新的訓練樣本集下計算類間散布矩陣和類內散布矩陣。然后,利用FLDA算法提取判別特征進行分類識別,仿真數據表明此方法能夠大幅度提高識別精度,并對光照、姿勢、面部表情變化具有更好的魯棒性。

表1 各算法最佳識別精度
本文提出了一種簡單而有效的方法解決Fisher線性判別分析(FLDA)在應對每類單訓練樣本無法計算類內散布矩陣的問題。通過使用對原始單訓練樣本鏡像的方法,可以獲得每一類訓練樣本的鏡像樣本,用其擴充原始訓練樣本集,既解決單樣本的問題又增加了不同的訓練樣本的信息。再用FLDA算法進行實驗,結果驗證了所提出的方法不僅可行,而且可以實現更好的識別性能與魯棒性。