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

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

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

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

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

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

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

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

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