摘 要:本文介紹了一種BP神經(jīng)網(wǎng)絡的人臉識別系統(tǒng)的設計方法。該設計利用前向多層神經(jīng)網(wǎng)絡的反向傳播算法,即BP算法,采用MATLAB軟件建立了用于人臉識別的BP神經(jīng)網(wǎng)絡,并利用大量的人臉特征數(shù)據(jù)訓練神經(jīng)網(wǎng)絡,使神經(jīng)網(wǎng)絡能分辨出不同的人臉特征。實驗結(jié)果表明,用這種方法進行人臉識別有較好的效果。
關鍵詞:BP神經(jīng)網(wǎng)絡;人臉識別;MATLAB
中圖分類號:TP391
隨著科技的發(fā)展,對人臉識別技術的發(fā)展要求越來越迫切,如(1)在企業(yè)、住宅安全和管理方面,要求實現(xiàn)人臉識別門禁考勤系統(tǒng),人臉識別防盜門等。(2)在公安、司法和刑偵方面,利用人臉識別,在全國范圍內(nèi)搜捕逃犯。(3)在銀行的自動提款機中,如果應用人臉識別就會避免由于用戶卡片和密碼被盜。(4)在電子商務交易過程中,如果使用人臉識別實現(xiàn)當事人在網(wǎng)上的數(shù)字身份和真實身份統(tǒng)一,便增加了電子商務的可靠性。而人臉識別的軟件系統(tǒng)開發(fā),是聯(lián)系理論和實踐的最重要的環(huán)節(jié),因此實現(xiàn)人臉識別系統(tǒng)的開發(fā)應用越來越重要。
1 BP網(wǎng)絡的概述
1.1 BP神經(jīng)網(wǎng)絡的定義。前饋多層神經(jīng)網(wǎng)絡廣泛的應用于模式識別與分類、控制、預測、圖像處理等問題,是當今社會應用最廣、發(fā)展最快的人工神經(jīng)網(wǎng)絡之一。由于此神經(jīng)網(wǎng)絡的網(wǎng)絡權值閾值的確定常采用誤差反向傳播算法(Back Propagation,簡稱作BP算法),所以通常稱這種前饋網(wǎng)絡為BP網(wǎng)絡。典型的BP網(wǎng)絡是三層網(wǎng)絡,包括輸入層、隱含層和輸出層。各層之間實行全連接,而其中隱含層可以是一層,也可以是多層(如圖1)。
圖1 單隱含層的BP網(wǎng)絡結(jié)構(gòu)
BP網(wǎng)絡的學習由四個過程組成,即:(1)輸入模式:輸入層經(jīng)隱含層向輸出層的“模式順傳播”過程;(2)網(wǎng)絡的理論輸出與網(wǎng)絡實際輸出之差的誤差信號:由輸出層經(jīng)隱含層向輸入層逐層修正連接權的“誤差逆?zhèn)鞑ァ边^程;(3)由“模式順傳播”與“誤差逆?zhèn)鞑ァ钡姆磸徒惶孢M行的網(wǎng)絡“記憶訓練”過程;(4)網(wǎng)絡趨向收斂即網(wǎng)絡的全局誤差趨向極小值的“學習收斂”過程。簡言之,就是由“模式順傳播”→“誤差逆?zhèn)鞑ァ薄坝洃浻柧殹薄皩W習收斂”的過程。傳遞函數(shù)一般為(0,1)S型函數(shù) 。BP網(wǎng)絡隱層中的神經(jīng)元均采用S型交換函數(shù),輸出層則采用純線性變換函數(shù)。
1.2 BP網(wǎng)絡的算法。BP算法可描述為大致五步:(1)初始化各權值為較小的隨機值;(2)選取訓練集;(3)根據(jù)輸入計算理論輸出;(4)調(diào)節(jié)輸出層和隱含層的連接權值;(5)返回第二步反復訓練網(wǎng)絡直至誤差理想為止。
其流程圖如圖2:
圖2 神經(jīng)網(wǎng)絡算法流程圖
2 BP神經(jīng)網(wǎng)絡實現(xiàn)人臉識別
2.1 設計思路。本設計采用50幅圖像(10個人每人5幅)作為訓練圖像,應用主成分分析對訓練圖像進行二階相關和降維,提取訓練圖像的獨立基成分構(gòu)造人臉子空間,并將訓練集中的人臉圖像向獨立基上投影得到的系數(shù)輸入改進的BP神經(jīng)網(wǎng)絡進行訓練。然后將待識別的人臉圖像向獨立基上投影得到投影系數(shù),再將其輸入已訓練過的BP神經(jīng)網(wǎng)絡進行識別。設計結(jié)構(gòu)如圖3。
圖3 人臉識別系統(tǒng)結(jié)構(gòu)
2.2 BP網(wǎng)絡的創(chuàng)建和初始化。因網(wǎng)絡的輸入矢量與輸出矢量相差較大,為了減少網(wǎng)絡的訓練誤差,在建立網(wǎng)絡之前要對輸入矢量進行歸一化。這里我們利用premnmx函數(shù)把輸入初始化在[-1,1]之間。程序代碼如下:
p=premnmx(p')';
t=[1000;1000;1000;1000;1000;0100;0100;0100;0100;0100;
0010;0010;0010;0010;0010;0001;0001;0001;0001;0001]'
2.3 訓練神經(jīng)網(wǎng)絡。本設計的方法如下:
%設計神經(jīng)網(wǎng)路
[prow pcol]=size(p);
num=prow*pcol;%提取p中元素個數(shù)作為神經(jīng)網(wǎng)絡的輸入層神經(jīng)元個數(shù)
net=newff(minmax(p),[num,10,4],{'tansig','tansig','purelin'},'traingda');%隱層神經(jīng)元個數(shù)為10,輸出層神經(jīng)元個數(shù)為4,4表示識別出人
net.trainParam.show=200;%顯示速率為200
net.trainParam.lr=0.01;%學習率為0.01
net.trainParam.epochs=5000;%迭代次數(shù)不超5000
net.trainParam.goal=0.001;%訓練誤差為0.001
[net,tr]=train(net,p,t);
網(wǎng)絡的訓練函數(shù)有很多種,如trainlm,其中traingd學習算法是一般的剃度下降法;traingdx學習算法是剃度下降動量法,學習速率是自適應的。Trainlm的學習算法為Levenberg-Marquadt反傳算法,該訓練函數(shù)的優(yōu)點在于收斂速度很快。本設計選用的訓練函數(shù)為traingdx,在網(wǎng)絡達到起訓練誤差要求時會自動停止,節(jié)省訓練時間。訓練過程中為了得到較小的誤差,可以增加訓練次數(shù)。
2.4 系統(tǒng)的性能評估。為了測試設計的網(wǎng)絡模式識別系統(tǒng)的可靠性,這里用50幅圖像輸入樣本,來觀察其輸出結(jié)果。通過程序演示,基本可以識別出不同的人臉特征。如果要提高精度,可以延長網(wǎng)絡的訓練時間,或者是將網(wǎng)絡隱含層的神經(jīng)元數(shù)目增多。為了測試系統(tǒng),可提取幾取幾幅人臉圖片數(shù)據(jù),然后把它們輸入到網(wǎng)絡中,觀察其得到的輸出,并進行誤差分析。
3 結(jié)束語
本設計是利用BP算法,以MATLAB軟件作為工具手段,建立人臉識別的BP神經(jīng)網(wǎng)絡,且利用50副人臉圖像數(shù)據(jù)訓練網(wǎng)絡,使神經(jīng)網(wǎng)絡能辨別出人臉信息。結(jié)果說明,本設計在人臉識別方面有比較好的優(yōu)勢。
在本設計中,使用了不人臉圖像數(shù)據(jù)作為輸入來訓練網(wǎng)絡,提高了整個網(wǎng)絡容錯的能力,這樣更適合在實際環(huán)境中使用。
參考文獻:
[1]藺廣逢,繁引娣,張媛.主成分分析與BP神經(jīng)網(wǎng)絡的人臉識別方法研究[J].現(xiàn)代電子技術,2007(02).
[2]MartinT.Hag,Howard B.Demuth. Neural Network Design Original[M].PSW publishing company.
[3]張威.MATLAB基礎與編程入門[M].西安:西安電子科技大學出版社,2004.
[4]叢爽.面向MATLAB工具箱的神經(jīng)網(wǎng)絡理論與應用[M].合肥:中國科學技術大學出版社,2003.
作者簡介:馮玉涵(1985-),女,河南信陽人,學士學位,助教,研究方向:電子信息。
作者單位:信陽農(nóng)林學院 計算機科學系,河南信陽 464000