??? 摘? 要: 提出了利用小波變換和余弦變換與BP神經(jīng)網(wǎng)絡相結合的人臉識別方法。將人臉圖像歸一化后進行小波變換,再用余弦變換對低頻信號提取特征向量,達到降維和去除干擾的目的,并把特征向量送進BP神經(jīng)網(wǎng)絡訓練。識別時,對人臉圖像進行相同的變換后,送入神經(jīng)網(wǎng)絡進行辨別。實驗結果表明,該算法優(yōu)于傳統(tǒng)的人臉識別法。?
??? 關鍵詞: 小波變換;離散余弦變換;BP神經(jīng)網(wǎng)絡;人臉識別
?
??? 近年來,人臉識別的應用需求日益迫切,在刑偵破案、證件核對、保安監(jiān)視、醫(yī)學應用、人機交互系統(tǒng)等方面都有巨大的應用前景,計算機人臉識別技術受到了廣泛的重視。目前對復雜環(huán)境下的人臉識別提出了更高的要求。?
??? 人臉識別研究主要有兩個方向:一是基于整體的研究方法。該方法考慮了模式的整體性,包括特征臉法、基于SVD分解的方法、人臉等密度線分析匹配法、彈性匹配方法、隱馬爾可夫模型方法以及神經(jīng)網(wǎng)絡法等;二是基于特征分析的方法,也就是將人臉基準點的相對比例和其他描述人的臉部特征的形狀參數(shù)或類別參數(shù)一起構成識別特征向量。該方法通過提取出局部輪廓信息及灰度信息來設計具體識別算法。由于神經(jīng)網(wǎng)絡的輸入節(jié)點很龐大,因此實際訓練網(wǎng)絡時參數(shù)繁多,實現(xiàn)起來很困難,識別速度也相對較慢,但它的優(yōu)點是可以針對特定的問題進行子空間設計,如神經(jīng)網(wǎng)絡的方法可以用作性別識別等問題。本文提出基于小波變換和離散余弦變換與BP神經(jīng)網(wǎng)絡相結合的人臉識別方法。實驗表明,這種方法能快速有效地識別不同人臉,且識別率很高。?
1 小波變換?
??? 小波變換的概念是由法國從事石油信號處理的工程師J.Morlet在1974年首先提出的,1988年S.Mallat提出了小波多分辨率分析后,為圖像模式識別領域提供了一種有效的工具。它是一種信號的時間-頻譜分析方法,具有多分辨率分析的特點,而且在時頻兩域都具有表征局部信號特征的能力。?
??? 對尺寸為M×N的圖像f(x,y)的離散小波變換是:?
????
?
式中,j0是任意的開始尺度,
系數(shù)定義了在尺度j0的f(x,y)的近似。
附加了水平、垂直和對角方向的細節(jié)。?
??? 本文采用哈爾小波作為小波變換。哈爾基函數(shù)定義為:?
????
?
????
?
??? 對離散小波變換(DWT)采用Mallat人字形算法,即快速小波變換(FWT)[1],如圖1所示。?
?

?
??? 小波變換示意圖如圖2所示。一幅圖像經(jīng)過一次一維小波變換后,可以被劃分為4個子塊頻帶區(qū)域LL1、HL1、LH1和HH1,分別包含了相應頻帶的小波系數(shù)。LL1頻帶保持原圖像的內容信息,圖像的能量集中于此頻帶;HL1頻帶保持了原圖像的水平方向上的高頻邊緣信息,人像的眼睛和嘴巴的水平特征比垂直特征明顯,而人的豐富表情主要反映在眼睛和嘴巴上,所以HL1描述了人像的表情特征;LH1頻帶保持了原圖像的垂直方向上的高頻邊緣信息,描述了人像的姿勢;HH1頻帶保持了原圖像在對角線方向上的高頻信息,這部分對人臉表情變化的反應是最明顯的。若對低頻子帶圖像LL1再次進行二維小波變換,則又可以得到四個子塊頻帶區(qū)域LL2、LH2、HL2和HH2。?
?

?
??? 圖像的大部分信息集中在低頻部分LL2上,所得到的水平、垂直和對角方向的高頻信號則包含了大量的冗余信息和干擾,在人臉識別中,其作用是非常微小的。如圖2(d)直觀地表明,當直接對低頻分量提取特征時,圖像中的有用信息相對集中,因此能有效地降低圖像的維數(shù),去掉干擾,從而節(jié)省存儲空間,提高計算效率。?
2 離散余弦變換?
??? 離散余弦變換(DCT)是一種常用的圖像數(shù)據(jù)壓縮方法,其變換核為實數(shù)的余弦函數(shù),因而DCT的計算速度比較快。而且因為頻域變化因子u、v較大時,DCT系數(shù)的值g(u,v)比較小,而數(shù)值較大的g(u,v)主要分布在u、v較小的左上角區(qū)域,所以DCT具有很好的能量集中特性,變換后的圖像能量主要集中在變換系數(shù)的低頻分量上,這些低頻分量幅值較大,可以用來重建圖像。當用DCT系數(shù)重建圖像時,保留少數(shù)離散余弦變換的低頻分量,而舍去大部分高頻分量,利用逆變換仍可獲得與原始圖像相近的重建圖像,新圖像與原圖像存在一定誤差,但重要信息被保存下來。?
??? 對一幅M×N的數(shù)字圖像f(x,y),其離散余弦變換的定義為:?
????
?
式中,g(u,v)為離散余弦變換后的結果,即DCT系數(shù)。?
????
???
??? 圖3是人臉圖像的DCT變換和利用DCT系數(shù)重建原圖的過程。圖3(a)是128×128的原圖,圖3(b)是離散余弦變換后的結果,圖3(c)是利用所有DCT系數(shù)進行反變換的重構圖像,圖3(d)是利用32×32個DCT系數(shù)反變換的重構圖像,圖3(e)是8×8個DCT系數(shù)反變換的重構圖像。從中可以看出,與原圖全部128×128個灰度值相比,圖3(e)只用了64個DCT系數(shù),就已經(jīng)保留了原圖的重要臉部特征,很好地表現(xiàn)了原圖,這使得數(shù)據(jù)量龐大的人臉圖像可用它的部分離散余弦變換分量來表示,從而實現(xiàn)對高維信息的降維。而且圖3(e)把原圖人臉的表情和不利于識別的高頻噪聲信息濾除了,可以更有效地減少高頻干擾對特征的影響,更有利于人臉的識別。?
?

?
3 神經(jīng)網(wǎng)絡?
??? 人工神經(jīng)元網(wǎng)絡是一門交叉學科,在許多領域得到了越來越廣泛的應用。目前,在人工神經(jīng)網(wǎng)絡的實際應用中,大部分神經(jīng)網(wǎng)絡模型都是采用BP網(wǎng)絡及其變化形式,它是前向網(wǎng)絡的核心部分,也是人工神經(jīng)網(wǎng)絡最精華的部分。BP網(wǎng)絡主要用于:函數(shù)逼近、模式識別、數(shù)據(jù)壓縮等領域。BP網(wǎng)絡是一種前向網(wǎng)絡,一般包括輸入層、中間層(隱層)和輸出層,如圖4所示。中間層可以有一層甚至更多層以便于分析各因素間的相互作用,每一層由若干個神經(jīng)元組成,相鄰兩層的每一個神經(jīng)元之間均有一權值聯(lián)系,權值的大小反映了這兩個神經(jīng)元之間的連接強度,整個網(wǎng)絡的計算過程是由輸入層到中間層再到輸出層單向進行,所以稱為前向網(wǎng)絡。它利用實際輸出和期望輸出之差對網(wǎng)絡的多層連接權由后向前逐層進行校正,其訓練方法被稱為誤差反傳播算法。?
?

?
??? BP網(wǎng)絡能夠進行人臉識別的根源在于它能夠實現(xiàn)一種特殊的非線性映射,將輸入空間變換到由輸出所造成的空間,使得在輸出空間的分類問題變得簡單易行。在實際應用中,如何設計神經(jīng)網(wǎng)絡的結構,學術界有許多討論。一般來說,多個模式用一個網(wǎng)絡來識別分類,會引出隱層節(jié)點數(shù)非常龐大的問題。本方法由于引入小波分解和離散余弦變換,用了一個三層的BP網(wǎng)絡來識別分類,使得神經(jīng)網(wǎng)絡的輸入向量的維數(shù)大大降低。?
3.1? 輸入/輸出層的設計?
????由于本方法采用了小波變換和離散余弦變換進行圖像的數(shù)據(jù)壓縮,所以最終采用8×8像素大小的窗口。因此,將輸入層節(jié)點數(shù)設計為64個,分別對應于8×8像素圖像窗口中按Zig-Zag掃描方式展開的各個像素。而輸出層的數(shù)目即由輸入訓練樣本的類別數(shù)來決定。在訓練階段,如果輸入訓練樣本的類別標號是i,則訓練時的期望輸出假設第i個節(jié)點為1,而其余輸出節(jié)點均為0。在識別階段,當一個未知類別樣本作用到輸入端時,考察各輸出節(jié)點的輸出,并將該樣本類別判定為具有最大值的輸出節(jié)點對應的類別,如果具有最大值的輸出節(jié)點與其他輸出節(jié)點之間的距離較?。ㄐ∮谀硞€閾值),則作出拒絕判斷。?
3.2? 隱層節(jié)點數(shù)的選擇?
??? 隱層節(jié)點數(shù)的選擇是一個十分復雜的問題。如果數(shù)目過少,網(wǎng)絡將不能建立復雜的判斷界限,使網(wǎng)絡不能訓練出來,不能識別以前沒有看過的樣本,容錯性差;但如果數(shù)目過多,就會使學習時間過長,網(wǎng)絡的泛化能力降低,而且誤差也不一定最佳,因此存在一個最佳的隱層節(jié)點數(shù)??筛鶕?jù)經(jīng)驗公式:
和n1=log2n(n、m分別為輸入層和輸出層的節(jié)點數(shù),α為1~10之間的常數(shù))計算出隱含層的節(jié)點數(shù)范圍,再根據(jù)實驗結果改變節(jié)點數(shù)。?
3.3? 輸入預處理?
??? 由于本方法采用的激活函數(shù)是S型函數(shù),該函數(shù)對0附近的數(shù)字變化比較敏感,而本方法的DCT系數(shù)的值域范圍在0~255,由于數(shù)值較大,如果直接輸入數(shù)據(jù)勢必影響計算效率和訓練效果。所以有必要將輸入數(shù)據(jù)從0~255轉換為0~1之間,以便于后續(xù)神經(jīng)網(wǎng)絡權值與閾值的調節(jié)和運算。?
3.4? BP學習算法步驟?
??? BP學習算法步聚如下。??? ?
??? 第一步 設置變量和參量。
k=1,2,…,N為輸入向量,M為輸入特征的個數(shù),N為訓練樣本個數(shù),由Zig-Zag掃描方式展開的DCT系數(shù)組成。?
???
N為第n次迭代時網(wǎng)絡的實際輸出,P為要識別的樣品類別個數(shù)。?
???
N為期望輸出。當輸入樣品類別標號是i時,相應的dki=1,其他為0。?
??? WMI(n)和WIP(n)分別為第n次迭代時輸入層與隱含層之間、隱含層與輸出層之間的權值向量。?
??? 第二步 初始化,賦給WMI(0)、WIP(0)各一個較小的隨機非零值。?
??? 第三步 輸入樣本Xk, n=0。?
??? 第四步 對輸入樣本Xk,前向計算BP網(wǎng)絡每層神經(jīng)元的輸入信號u和輸出信號v。其中:?
????
?
??? 第五步 由期望輸出dk和上一步求得的實際輸出Yk(n)計算誤差E(n),判斷其是否滿足要求,若滿足則轉至第八步;不滿足則轉至第六步。?
??? 第六步 判斷n+1是否大于最大迭代次數(shù),若大于則轉至第八步;否則,對輸入樣本Xk,反向計算每層神經(jīng)元的局部梯度δ。其中:?
????
?
??? 第七步 按下式計算權值修正量Δw,并修正權值;n=n+1,轉至第四步。其中:?
????
?
式中,η為學習速率,n為迭代次數(shù)。?
??? 第八步 判斷是否學完所有的訓練樣本,若是則結束,否則轉至第三步。?
4 實驗步驟和結果分析?
??? 本文采用ORL人臉庫[2]進行訓練和測試。原始的ORL人臉庫包括40個人,每人10張圖,共400張人臉圖像,具備不同的光照、表情、發(fā)型和有無眼鏡等,并且人臉有一定的側轉角度,每幅圖像均為112×92的灰度圖像。為了方便程序讀入數(shù)據(jù),本文把ORL人臉庫的圖像大小改為128×128的灰度圖像。圖5為修改后的ORL人臉庫的部分人臉。訓練集由每個人的其中5張圖組成,測試集由另外5張組成。本文采用VC++作為實驗平臺[3]。?
?

?
??? 實驗步驟與結果如下:?
??? (1)讀入ORL人臉庫的人臉圖像,使圖像歸一化為128×128的灰度圖像,對這些圖像進行二層二維小波變換,就可得到32×32的人臉低頻圖像。具體算法如圖6所示。?
?

?
??? (2)將得到的32×32圖像進行離散余弦變換,其具體算法與FFT相同,都是采用蝶形算法實現(xiàn)。從圖像的左上角開始取8×8個(即64個)系數(shù)作為神經(jīng)網(wǎng)絡的輸入,這樣既可以達到壓縮特征維數(shù)的目的,又去除了表情和光照造成的干擾。?
??? (3)采用BP網(wǎng)絡對人臉進行識別。本文設計的神經(jīng)網(wǎng)絡輸入層節(jié)點數(shù)為64個;隱含層分別取20、25、30、35、40、45個節(jié)點進行試驗。結果發(fā)現(xiàn)隱含層取35個時效果最好;輸出層節(jié)點數(shù)則取40個。分別處理200張人臉圖,給每個人標上記號i,然后隨機輸入到神經(jīng)網(wǎng)絡進行訓練,最后得到所要求的BP網(wǎng)絡。采用VC實現(xiàn)的神經(jīng)網(wǎng)絡算法如圖7所示。?
?

?
??? 識別時把需要辨別的人臉圖像經(jīng)過二層二維小波變換和離散余弦變換后,取64個DCT系數(shù)輸入訓練完的神經(jīng)網(wǎng)絡,通過一次前向計算,看輸出向量的哪位最接近1,即可判斷是哪個人臉。本文對ORL人臉庫的200張圖像隨機輸入進行測試,其識別率達到97.5%,參考文獻[4]和參考文獻[5]同樣對ORL人臉庫進行實驗,結果其識別率分別為89.5%和95%,低于本文的識別率。本文采取了減少特征維數(shù)的方法,使訓練時間大大減少,而參考文獻[5]的輸入向量維數(shù)最少為986。所以隨著數(shù)據(jù)量的增多,本文的神經(jīng)網(wǎng)絡算法體現(xiàn)出它對大樣品分類的優(yōu)勢。本文實驗中對每張圖片的訓練時間為1.3秒。不同算法的人臉識別率如表1所示。?
?

?
??? 本文提出了一種結合小波變換和離散余弦變換的人臉識別方法。該方法利用小波變換提取圖像低頻信息的優(yōu)點,降低了人臉表情和側轉角度對識別效果的影響,并利用離散余弦變換進一步降低圖像的特征維數(shù),克服了神經(jīng)網(wǎng)絡訓練時間過長的缺點,提高了人臉識別的準確率。對ORL人臉庫的識別實驗表明,經(jīng)過小波變換和余弦變換的神經(jīng)網(wǎng)絡識別方法明顯優(yōu)于傳統(tǒng)的方法。?
參考文獻?
[1] RAFAEL C, GONZALE Z, RICHARD E W. Digital?image processing[M]. Second Edition. Publishing House of Electronics Industry,2003.?
[2] 甘俊英,張有為. 基于BP神經(jīng)網(wǎng)絡的人臉識別[J].系統(tǒng)工程與電子技術,2003,25(1):113-115.?
[3] 蘇彥華. 求是科技.Visual C++ 數(shù)字圖像識別技術典型案例[M]. 北京:人民郵電出版社,2004.?
[4]?陳榮元,蔣加伏,蔣衛(wèi)祥. 基于神經(jīng)網(wǎng)絡和層次SVM的多姿態(tài)人臉識別[J].計算機工程,2006,32(24):209-215.?
[5] 王洪波,武妍. 基于小波變換和BP神經(jīng)網(wǎng)絡的人臉識別方法[J]. 計算機工程與應用,2004,40(24):51-53.?
[6]?梁淑芬,甘俊英. 基于局部小波變換與DCT的人臉識別算法[J]. 微計算機信息,2006,22(1):213-216.?
