曾 坤,姜志俠
(長春理工大學(xué) 理學(xué)院,吉林 長春 130000)
隨著時代的進步,科技的不斷發(fā)展,在許多領(lǐng)域出現(xiàn)了新興技術(shù)。這些技術(shù)的出現(xiàn)也不斷地推動著其他領(lǐng)域的發(fā)展,同時一些新的需求也不斷體現(xiàn)出來。而人臉識別技術(shù)正是在這樣的背景下應(yīng)運而生的。人臉識別的應(yīng)用十分廣泛,例如門禁系統(tǒng)[1]、銀行業(yè)務(wù)[2]、公安犯罪嫌疑人偵查[3]等。近幾十年,人臉識別技術(shù)發(fā)展迅猛,吸引了各個領(lǐng)域的學(xué)者參與研究[4-5],應(yīng)用前景廣泛,具有重要的現(xiàn)實意義。
人臉識別是一種基于人的臉部特征信息進行身份識別的生物識別技術(shù)[6]。人臉識別一般主要分為三個步驟:一是人臉圖像獲取,二是人臉特征提取,三是人臉識別。學(xué)者們也提出不少相關(guān)算法。1901年統(tǒng)計學(xué)家Karl Pearson[7]提出了PCA(principal components analysis)算法,PCA算法將高維的數(shù)據(jù)映射到低維空間,并保留了原數(shù)據(jù)的一些特征.該算法廣泛用于數(shù)據(jù)降維、數(shù)據(jù)壓縮等。Herault等人[8-9]針對盲源信號的分離提出了ICA(independent component analysis)算法并加以發(fā)展.其中1997年Hyvarinen[10]提出的FastICA算法,具有收斂速度快、分離效果好的優(yōu)點。近年來,一些學(xué)者[11-12]將ICA算法用于模式識別,并且取得了較好的效果。1986年Rumelhart等人[13]提出了按誤差逆向傳播訓(xùn)練的BP神經(jīng)網(wǎng)絡(luò)算法,廣泛用于模式識別、目標(biāo)分類等。
該文提出了一種基于多遺傳算法優(yōu)化BP神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)和權(quán)值閾值的人臉識別方法。對人臉圖像的預(yù)處理采用了PCA和FastICA算法,更大程度上提取人臉圖像的特征,有利于后續(xù)的識別工作。首先用PCA算法對人臉圖像進行降維,用FastICA算法提取降維后的人臉圖像特征。針對BP神經(jīng)網(wǎng)絡(luò)易陷入局部最優(yōu)、收斂速度慢等缺點,主要采用遺傳算對BP神經(jīng)網(wǎng)絡(luò)的訓(xùn)練函數(shù)、訓(xùn)練次數(shù)、隱藏層的層數(shù)、隱藏層的神經(jīng)元個數(shù)和權(quán)值閾值進行優(yōu)化處理。仿真實驗結(jié)果顯示,識別率有了一定程度的提高。
該文采用ORL人臉數(shù)據(jù)庫進行仿真,ORL人臉數(shù)據(jù)庫共由40個人臉樣本組成,每個人臉樣本各10張,共計400張人臉圖像。每張人臉圖像尺寸均為92*112,包含不同性別、年齡以及種族等。其中部分人臉有不同的面部表情,微笑、張嘴以及是否戴眼鏡等。各張人臉之間存在的一定差異,對識別的算法具有較高的檢測能力。在人臉庫中隨機選取5張人臉組成訓(xùn)練集T,每一個人中剩余的5張人臉組成測試集Y。對訓(xùn)練集進行數(shù)字化處理,將每一張的人臉的灰度值按列連接成10 304×1維的列向量,從而將訓(xùn)練集200張人臉圖像處理為10 304×200維的矩陣。對于測試集做同樣的處理。
PCA算法是一種較為常用的降維算法,PCA算法的主要思想是截取較高貢獻(xiàn)率的特征值對應(yīng)的特征向量,從而構(gòu)成比原數(shù)據(jù)維度較低的變換矩陣,通過線性變換將高維數(shù)據(jù)沿著方差最大的方向投影到低維空間。對于人臉訓(xùn)練集T=(t1,t2,…,tn),共有n張人臉樣本,每張人臉用向量表示為ti=(t1i,t2i,…,tmi)T,計算n張人臉的均值,平均臉為:
計算每一張人臉與平均臉的差值:
平均臉和去均值人臉如圖1所示。
圖1 平均臉(左)和去均值人臉(右)
令P=(p1,p2,…,pn),構(gòu)建人臉的協(xié)方差矩陣:
C=PPT
傳統(tǒng)的主成分分析算法是通過樣本的協(xié)方差矩陣特征值分解進行的。但是對于高維數(shù)據(jù),即樣本的維度m很大的時候,協(xié)方差矩陣為m×m維,導(dǎo)致計算量非常大。為了避免上述問題,通常對樣本采用SVD(singular value decomposition)的思想進行處理,構(gòu)造矩陣:
P=UΣVT
特征值數(shù)量與特征值貢獻(xiàn)率的關(guān)系如圖2所示。
圖2 特征值貢獻(xiàn)率
由圖2可以看出,較大的特征值貢獻(xiàn)較多的能量。選取前k個貢獻(xiàn)率較多的特征值對應(yīng)的特征向量,從而計算得到投影矩陣U=(u1,u2,…,uk)T,使得投影后的數(shù)據(jù)維數(shù)比原數(shù)據(jù)維數(shù)低。將投影矩陣還原為人臉像素則可得到特征臉,其特征臉如圖3所示。
圖3 特征臉
FastICA算法處理的數(shù)據(jù)要求各個分量之間是統(tǒng)計獨立或者盡可能獨立[14],因此在1.2中對人臉圖像用PCA算法進行了預(yù)處理,消除變量之間的相關(guān)性。FastICA算法是ICA算法的改進,由于收斂速度快、效果好而得到廣泛應(yīng)用。本節(jié)采用FastICA算法對人臉圖像進行特征提取。設(shè)觀測樣本數(shù)據(jù)X為m×n階的矩陣,共有n個數(shù)據(jù),每個數(shù)據(jù)為m維。
獨立信號源為:
即有混合矩陣A,使得X=AS,從而尋找一個恢復(fù)矩陣W,使得B=WX,讓B逼近于S。Hyvarinen等人[15]改進了FastICA算法,用負(fù)熵來度量非高斯性,最大化負(fù)熵使得非高斯性最大。采用較為經(jīng)典的負(fù)熵近似公式[16]作為目標(biāo)函數(shù):
J(y)=[E{g(y)}-E{g(yGauss)}]2
其中,J(y)為隨機變量y的負(fù)熵,E{·}表示均值,g為非線性函數(shù),取為:
導(dǎo)函數(shù)為g'(y)=tanh(a1y)。經(jīng)過化簡后得到FastICA的迭代公式為:
對迭代后的恢復(fù)矩陣進行歸一化處理:
若W未滿足收斂條件,則重復(fù)上述過程直到收斂。計算投影矩陣B:
B=WX
訓(xùn)練集T在投影矩陣B下的投影為TB=BTT,測試集Y在投影矩陣B下的投影為YB=BTY。其獨立成分人臉圖像如圖4所示,對比圖3可以看出,經(jīng)過FastICA算法處理后,人臉特征更加明顯。
圖4 FastICA算法處理后的人臉
遺傳算法作為啟發(fā)式算法的一種,通過概率的方式進行選擇、交叉、變異。在多次迭代的子代種群中選擇優(yōu)良的個體,能夠有效地尋找全局最優(yōu)解。而BP神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)往往依靠經(jīng)驗選取,對于訓(xùn)練函數(shù)、訓(xùn)練次數(shù)、隱藏層層數(shù)及每一個隱藏層的神經(jīng)元個數(shù)較為敏感。本節(jié)采用遺傳算法對上述結(jié)構(gòu)進行優(yōu)化,在一定程度上避免了BP神經(jīng)網(wǎng)絡(luò)陷入局部最優(yōu)、收斂速度慢等問題。
染色體的設(shè)置:在一般的遺傳算法中,染色體為等長的染色體,但是文中由于BP神經(jīng)網(wǎng)絡(luò)隱藏層層數(shù)的變化,染色體的長度可能不一樣,因此設(shè)計染色體為變長的染色體。編碼方式為正整數(shù)編碼,每一個基因位的意義表示為:第一個基因位為BP神經(jīng)網(wǎng)絡(luò)的訓(xùn)練函數(shù);第二個基因位為BP神經(jīng)網(wǎng)絡(luò)的訓(xùn)練次數(shù);第三個基因位為BP神經(jīng)網(wǎng)絡(luò)隱藏層的層數(shù);第四到第六個基因位為BP神經(jīng)網(wǎng)絡(luò)隱藏層每一層的神經(jīng)元個數(shù)。其中第三個基因位的值決定了剩下基因的位數(shù),染色體的格式為X=[x1,x2,x3…],每一個基因的取值范圍為:
初始種群:采用隨機化的方法初始種群,在保證每個基因的值滿足其對應(yīng)的約束情況下隨機生成染色體。例如染色體X1=[2,5 230,2,41,36],則X1表示選用的訓(xùn)練函數(shù)為第二個函數(shù),BP神經(jīng)網(wǎng)絡(luò)的訓(xùn)練次數(shù)為5 230,BP神經(jīng)網(wǎng)絡(luò)的隱藏層層數(shù)為2層,第一個隱藏層的神經(jīng)元個數(shù)為41,第二個隱藏層的神經(jīng)元個數(shù)為36。
適應(yīng)度值計算及選擇操作:本節(jié)遺傳算法主要優(yōu)化BP神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu),以此提高人臉圖像的識別率,因此將識別率作為適應(yīng)度值。選擇操作采用輪盤賭方法,每個個體被選中的概率為:
其中,fi是第i個個體的適應(yīng)度值,N是種群大小。
交叉:由于染色體是變長的,染色體的交叉采用基于隨機交叉點的混合交叉方式。交叉點為隨機生成的正整數(shù),最大值為較短染色體長度。當(dāng)隨機交叉點的值為[1,3]時,采用單點交叉,以隨機交叉點為基準(zhǔn)互換兩條染色體配對部分。當(dāng)隨機交叉點的值為[4,6]時,即為隱藏層的神經(jīng)元個數(shù)基因位時,采用兩點交叉,在染色體中隨機選擇兩個交叉點。其中兩個交叉點值均大于3,但是小于等于較短染色體的長度,然后兩條染色體互換交叉點內(nèi)的基因。
對于交叉概率的設(shè)置,常規(guī)的遺傳算法采用固定的交叉概率,使得較小和較大適應(yīng)度值的個體具有相同的交叉概率。對于較大適應(yīng)度值的個體可能被破壞,應(yīng)需要較小的交叉概率,盡可能地保留較好的個體。對于較小適應(yīng)度值的個體,應(yīng)需要較大的交叉概率,通過交叉的方式獲得更好的基因,因此采用自適應(yīng)的交叉概率,對于較大適度值的個體自動調(diào)整交叉概率,獲得較小的交叉概率,較小適應(yīng)度值的個體則獲得較大的交叉概率。其自適應(yīng)交叉概率[17]如下:
其中,fmax為種群中的最大適應(yīng)度值,fc為待交叉?zhèn)€體適應(yīng)度值,favg為種群中的平均適應(yīng)度值,k1,k2為常數(shù)。
變異:變異采用單點變異的方法。當(dāng)變異點的基因位不為3的時候,則隨機生成一個對應(yīng)基因值域范圍內(nèi)的值進行變異。當(dāng)變異點的基因位為3時,即BP神經(jīng)網(wǎng)絡(luò)的隱藏層層數(shù)發(fā)生變異,則隨機生成一個層數(shù)值域范圍內(nèi)的變異值,若變異值小于隱藏層層數(shù),則隱藏層的基因位相應(yīng)減少,若大于隱藏層層數(shù),則隱藏層的基因位相應(yīng)增加。對于變異概率同交叉概率一樣,采用自適應(yīng)的變異概率[17],其公式如下:
其中,fmax為種群中的最大適應(yīng)度值,fm為待變異個體的適應(yīng)度值,favg為種群中的平均適應(yīng)度值,k3,k4為常數(shù)。
BP神經(jīng)網(wǎng)絡(luò)是基于誤差減小反向更新權(quán)值閾值的,對初始權(quán)值閾值較為敏感[18],若按照傳統(tǒng)方式隨機選取網(wǎng)絡(luò)的初始權(quán)值閾值,則有可能在BP神經(jīng)網(wǎng)絡(luò)訓(xùn)練過程中陷入局部最優(yōu)等問題,因此采用遺傳算法對BP神經(jīng)網(wǎng)絡(luò)的權(quán)值閾值進行優(yōu)化。
染色體設(shè)置:該網(wǎng)絡(luò)中權(quán)值閾值數(shù)量多,若采用單染色體,則每條染色體長度十分大,在交叉變異中不利于個體進化。因此改進單染色體為多染色體并行執(zhí)行,使得每一層的權(quán)值閾值都得到有效優(yōu)化。對于2.1中得到的BP神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu),例如:一個輸入層,一個隱藏層,一個輸出層,則會有兩組權(quán)值,輸入層到隱藏層權(quán)值,隱藏層到輸出層權(quán)值,兩組閾值,輸入層到隱藏層閾值,隱藏層到輸出層閾值。一共有四條染色體,分別記為W1,W2,B1,B2。每組染色體初始化為-0.5~0.5之間的隨機值,共四組對應(yīng)子種群。設(shè)種群為:pop=[popW1,popW2,popB1,popB2]。
適應(yīng)度值計算:將初始化的染色體傳入BP神經(jīng)網(wǎng)絡(luò),通過2.1確定BP神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu),對BP神經(jīng)網(wǎng)絡(luò)進行訓(xùn)練。用訓(xùn)練好的BP神經(jīng)網(wǎng)絡(luò)計算人臉測試集的識別率,把識別率作為適應(yīng)度值。
選擇運算:采用父子競爭[19]的選擇方法。遺傳算法在交叉運算時會選擇兩組父染色體,進行交叉操作后產(chǎn)生兩組子代,一共四組染色體。計算這四組染色體的個體適應(yīng)度值,選取適應(yīng)度值較大的兩組染色體進入變異環(huán)節(jié)。在變異操作中,每組染色體經(jīng)過變異后又會產(chǎn)生一組子代.計算子代和父代的適應(yīng)度值,將適應(yīng)度值較大的個體保留到下一代。在迭代完成后選擇種群中適應(yīng)度值最大的個體作為最優(yōu)個體輸出。
交叉:從種群中選擇對應(yīng)兩組父染色體進行交叉,采用單點交叉,隨機選擇交叉點位置,將交叉點后面部分的基因進行相互交換。由于個體適應(yīng)度值變化不是特別大,因此采用固定交叉概率,交叉概率為0.8。
變異:在該遺傳算法中,染色體較長(基因數(shù)可能為1 000左右),因此選取多個基因進行變異。根據(jù)經(jīng)驗值選取變異的基因個數(shù)為基因總數(shù)的5%(取整),然后隨機選擇變異基因的位置進行變異,變異概率為0.1。
BP神經(jīng)網(wǎng)絡(luò)模擬生物神經(jīng)網(wǎng)絡(luò)的信號傳遞,將模型的信息存儲在神經(jīng)元、權(quán)值和閾值中,通過誤差反向傳播來訓(xùn)練網(wǎng)絡(luò)。多遺傳算法優(yōu)化BP神經(jīng)網(wǎng)絡(luò)步驟如下:
步驟1:對人臉圖像進行降維特征提取。
步驟2:用遺傳算法對BP神經(jīng)網(wǎng)絡(luò)的訓(xùn)練函數(shù)、訓(xùn)練次數(shù)、隱藏層層數(shù)和隱藏層神經(jīng)元個數(shù)進行優(yōu)化。為了結(jié)果的有效性,采用控制變量法,對構(gòu)建的BP神經(jīng)網(wǎng)絡(luò)的權(quán)值閾值初始化相同的值。
步驟3:用步驟2得到BP神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)參數(shù),構(gòu)建BP神經(jīng)網(wǎng)絡(luò)。用遺傳算法對BP神經(jīng)網(wǎng)絡(luò)權(quán)值閾值進行優(yōu)化。以BP神經(jīng)網(wǎng)絡(luò)的識別率作為遺傳算法的適應(yīng)度值,當(dāng)BP神經(jīng)網(wǎng)絡(luò)的權(quán)值閾值最優(yōu)時,BP神經(jīng)網(wǎng)絡(luò)的識別率達(dá)到最大。
步驟4:保存步驟3得到的最優(yōu)識別率和對應(yīng)的BP神經(jīng)網(wǎng)絡(luò),輸出最優(yōu)識別率,整個算法流程如圖5所示。
圖5 算法流程
參數(shù)選取,兩層遺傳算法種群均為50,迭代次數(shù)均為10次,BP神經(jīng)網(wǎng)絡(luò)目標(biāo)誤差為0.001,默認(rèn)學(xué)習(xí)率0.05。
用PCA算法選取前35個特征值對應(yīng)的特征向量對人臉圖像進行降維,然后用FastICA算法進行特征提取,對BP神經(jīng)網(wǎng)絡(luò)優(yōu)化處理后,用BP神經(jīng)網(wǎng)絡(luò)對測試集進行識別。經(jīng)過15次重復(fù)實驗,平均識別率為0.972 7,最高識別率可達(dá)0.985。其多次實驗的識別率以及平均識別率如圖6所示。
在文獻(xiàn)[20]中,作者利用PCA算法提取人臉圖像中的主要特征,采用最近鄰分類器進行分類,其識別率為0.925。在文獻(xiàn)[21]中,作者采用主成分分析對人臉圖像進行特征提取,利用BP神經(jīng)網(wǎng)絡(luò)預(yù)測人臉識別率,其識別率為0.941。在文獻(xiàn)[22-23]中,作者用PCA和FastICA兩種技術(shù)對人臉特征進行提取,其識別正確率最高為0.950。文中采用多遺傳算法優(yōu)化BP神經(jīng)網(wǎng)絡(luò)進行人臉圖像識別,其多次實驗平均識別率為0.972 7,說明該算法具有良好的性能,識別率較高。文中算法與其他算法對比如表1所示。
圖6 多次重復(fù)實驗結(jié)果
表1 算法對比
BP神經(jīng)網(wǎng)絡(luò)在各個領(lǐng)域中的應(yīng)用十分廣泛,特別是對于一些沒有明確模型的復(fù)雜問題,BP神經(jīng)網(wǎng)絡(luò)能夠很好地解決。但是目前來說對于BP神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)和權(quán)值閾值的選取沒有一套完整確定的理論,一般都是憑借人們的經(jīng)驗去選擇。而遺傳算法可以在一定程度上彌補BP神經(jīng)網(wǎng)絡(luò)的不足。文中先利用PCA和ICA算法對人臉圖形進行降維和特征提取,然后采用多遺傳算法優(yōu)化BP神經(jīng)網(wǎng)絡(luò),這樣避免了BP神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)及權(quán)值閾值選取的隨機性,在一定程度上提升BP神經(jīng)網(wǎng)絡(luò)的性能。最后用優(yōu)化訓(xùn)練好的BP神經(jīng)網(wǎng)絡(luò)在測試集上進行人臉識別,其實驗仿真結(jié)果顯示該算法性能良好。在重復(fù)實驗過程中,多次出現(xiàn)識別率為0.975,即測試集中有5個樣本不能被正確識別,猜測數(shù)據(jù)集中可能有兩張人臉為雙胞胎或高度相似,因此識別雙胞胎或高度相似人臉將是未來的研究方向之一。