趙遠東 ,劉振宇 ,柯 麗 ,陳香敏
(1.沈陽工業(yè)大學(xué) 信息科學(xué)與工程學(xué)院,遼寧 沈陽 110870;2.沈陽工業(yè)大學(xué) 電氣工程學(xué)院,遼寧 沈陽 110870)
人臉識別作為一種生物特征識別技術(shù)具有遼闊的應(yīng)用[1],尤其集中體現(xiàn)在身份認證、安防監(jiān)控和人機交互等方面。
常見的人臉識別算法包括基于特征臉(PCA)的方法[2]、基于線性分析(LDA)的方法[3]、基于局部二值模式(LBP)的方法[4]、基于神經(jīng)網(wǎng)絡(luò)(NN)[5]的方法等等。其中卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network, CNN)模型中,其超參數(shù)通過傳統(tǒng)的梯度下降法和自帶的網(wǎng)絡(luò)模型進行學(xué)習(xí)。AlexNet[6]網(wǎng)絡(luò)主要突出在圖像的分類上;R-CNN(Regions with CNN)[7]成功獲得對目標檢測區(qū)域的特征提取。圖像的端到端語義分割在全卷積網(wǎng)絡(luò)(Fully Convolutional Network,F(xiàn)CN)[8]上得到了廣泛的應(yīng)用,提高了傳統(tǒng)的語義分割算法的準確性。AlexNet網(wǎng)絡(luò)有8層,其中,conv層有5個,F(xiàn)C層有3個,F(xiàn)C8層也稱為分類層,參數(shù)量大于60 M。分類層的輸出具備1 000個輸出的歸一化指數(shù)函數(shù)回歸模型。
本文設(shè)計了一種7層卷積神經(jīng)網(wǎng)絡(luò)模型結(jié)構(gòu),應(yīng)用于ORL人臉數(shù)據(jù)庫的人臉識別。7層卷積神經(jīng)網(wǎng)絡(luò)采用整流線性單元激活函數(shù)(以下稱為ReLU)和固定學(xué)習(xí)速率。
Alexnet網(wǎng)絡(luò)利用ReLU激活功能作用于每個卷積層和完全連接層,并且局部響應(yīng)歸一化層連接在第一個卷積層和第二個卷積層之后。卷積1層,卷積2層和卷積5層的輸出上均與最大池化層相連接。AlexNet(后文稱為原網(wǎng)絡(luò))的基本架構(gòu)如圖1所示。
圖1 AlexNet結(jié)構(gòu)圖
本設(shè)計使用ORL人臉數(shù)據(jù)庫的新卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)模型進行訓(xùn)練;對于訓(xùn)練過程中發(fā)生的過擬合問題,Hinton提出了“Dropout”方法,即在網(wǎng)絡(luò)學(xué)習(xí)的時候以固定的(概率p(0≤p≤1),通常設(shè)置為0.5,再把輸入層或者隱藏層的神經(jīng)元輸出設(shè)置為0,這個神經(jīng)元沒法連續(xù)正向傳播和誤差反向傳播,但在測試時,p乘以輸入層或者隱層的神經(jīng)元輸出作為該層的輸出。由于網(wǎng)絡(luò)中每個輸入圖像神經(jīng)元被隨機設(shè)置為0,因此需要要求圖像中最基本的特征是由隱藏層神經(jīng)元提取,采用“Dropout”解決過擬合問題。
本文網(wǎng)絡(luò)的模型結(jié)構(gòu)如圖2所示。
圖2 本文網(wǎng)絡(luò)的結(jié)構(gòu)圖
(1)用 7×7 和 5×5 的兩個小卷積核替代原來的11×11的大卷積核,為了保證原結(jié)構(gòu)maxpool1(第一最大池化層)的輸出不發(fā)生變化,Conv1-1(第一卷積層的第一卷積核)、Conv1-2(第一卷積層的第二卷積核)個數(shù)保持不變,并對其進行補充操作。后面的模型結(jié)構(gòu)圖和原網(wǎng)絡(luò)相同,原來的FC8層變?yōu)镕C7層,具體參數(shù)如表1所示。
表 1 Conv1-1 和 Conv1-2 具體參數(shù)
(2)在激活函數(shù)與池化層之間刪除 LRN 層。
(3)本文網(wǎng)絡(luò)模型減少了1層(FC7層),第一層變?yōu)閮蓚€小卷積模塊形式。其中改進層具體參數(shù)變化如表2所示。
表2 原網(wǎng)絡(luò)和本文網(wǎng)絡(luò)參數(shù)對比
人臉原圖片的尺寸是112×92,標準化變?yōu)?56×256的人臉,就可以隨機在標準化后的圖片上裁剪一個227×227的圖像來訓(xùn)練,并橫向的進行翻轉(zhuǎn)、平移等一系列的操作來拓展數(shù)據(jù)集大小。ORL人臉數(shù)據(jù)庫的樣例如圖3所示。
圖3 ORL人臉數(shù)據(jù)庫的樣例
對ORL數(shù)據(jù)庫做以下處理:
(1)將數(shù)據(jù)庫中的訓(xùn)練集、驗證集、測試集的比例設(shè)置為3:1:1,然后再把ORL中圖片標準化大小,如圖4所示,經(jīng)cvResize函數(shù)將原圖112×92標準化 256×256。
圖4 人臉標準化過程
(2)將訓(xùn)練集、驗證集、測試集的40個人分別分為40類制作標簽,放到40個編號0~39的文件夾內(nèi)。
(3)制作標簽txt文件。
(4)轉(zhuǎn)換lmdb格式的數(shù)據(jù)集。
(5)訓(xùn)練集均值文件。
至此,人臉圖像的預(yù)處理結(jié)束。
本文利用批量隨機梯度下降的方式,準確率提升得更快。對于ORL人臉數(shù)據(jù)庫原網(wǎng)絡(luò)和本文網(wǎng)絡(luò)的網(wǎng)絡(luò)訓(xùn)練,最大迭代次數(shù)均為10 000,批處理圖片大小分別為4個和8個,動量均為0.9,常數(shù)因子均為0.1(本實驗由于最大迭代次數(shù)和步長設(shè)置相同,所以此參數(shù)可以忽略),初始權(quán)值均為0.000 5,步長均為10 000,初始學(xué)習(xí)速率均為0.000 1,均為訓(xùn)練1次測試一次,訓(xùn)練1 000次存儲一個模型。每次訓(xùn)練網(wǎng)絡(luò),更新的參數(shù)都會遍歷它的批處理量。更新公式為:
其中:wi表示更新前的權(quán)值,wi+1表示更新后的權(quán)值,ξ表示動量,η表示初始學(xué)習(xí)速率,L表示步長,表示第i批圖像Di的誤差對wi偏導(dǎo)的平均值。
AlexNet網(wǎng)絡(luò)和本文網(wǎng)絡(luò)通過迭代次數(shù)找到最適合ORL人臉數(shù)據(jù)庫的網(wǎng)絡(luò)模型。本設(shè)計的測試集的識別率只是通過網(wǎng)絡(luò)模型測試人臉數(shù)據(jù)的優(yōu)劣性,最終的識別率是全部樣本的識別率。同時通過比較各個集合的損失值得出網(wǎng)絡(luò)模型在保留盡可能多的人臉信息的前提下保證其識別率的準確性。
AlexNet網(wǎng)絡(luò)的迭代次數(shù)取為1 000~10 000),本文網(wǎng)絡(luò)的迭代次數(shù)取為(1 000~10 000)用這些模型進行人臉識別的測試來比較它們的損失值和識別率。
圖5表示出對應(yīng)于ORL中的原網(wǎng)絡(luò)和本文網(wǎng)絡(luò)的迭代次數(shù)的訓(xùn)練集成本函數(shù)損失。
圖5 原網(wǎng)絡(luò)和本文網(wǎng)絡(luò)訓(xùn)練集損失曲線
由圖5可以看出本文網(wǎng)絡(luò)只有在迭代2 000、3 000、3 500、4 000、4 500、4 800、9 400、9 600次的時候訓(xùn)練集損失的值要比改進前的網(wǎng)絡(luò)高,其余的時候遠遠低于原網(wǎng)絡(luò),最后趨于零達到平穩(wěn)。
圖6顯示于ORL中原網(wǎng)絡(luò)和本文網(wǎng)絡(luò)的迭代次數(shù)的驗證集成本函數(shù)損失。
圖6 原網(wǎng)絡(luò)和本文網(wǎng)絡(luò)驗證集損失曲線
由圖6可以看出驗證集本文網(wǎng)絡(luò)在迭代1 000次、2 200次、9 500次、9 700次的時候損失值比原網(wǎng)絡(luò)損失值高,其余的時候均比原網(wǎng)絡(luò)損失值低,最后趨于零達到平穩(wěn)。
圖7顯示了對應(yīng)于ORL中原網(wǎng)絡(luò)和本文網(wǎng)絡(luò)的迭代次數(shù)的測試集成本函數(shù)損失。
圖7 原網(wǎng)絡(luò)和本文網(wǎng)絡(luò)測試集損失曲線
由圖7可以看出本文網(wǎng)絡(luò)下降的速度比原網(wǎng)絡(luò)下降的快,在迭代5 000次之后,基本趨于穩(wěn)定,雖然在迭代8 000~9 500次的時候損失值略高于原網(wǎng)絡(luò),但是原網(wǎng)絡(luò)的損失值一直在上下震蕩,最后本文網(wǎng)絡(luò)的損失值收斂在0.1附近。
圖8顯示了ORL中原網(wǎng)絡(luò)和本文網(wǎng)絡(luò)的迭代次數(shù)樣本集成本函數(shù)損失。
圖8 原網(wǎng)絡(luò)和本文網(wǎng)絡(luò)樣本集損失曲線
圖8 和圖7的曲線類似,不同的是圖8的樣本集損失值一直處在原網(wǎng)絡(luò)的下方,最后樣本集的損失值也收斂在0.1附近。
圖9顯示了ORL人臉數(shù)據(jù)庫中原網(wǎng)絡(luò)和本文網(wǎng)絡(luò)迭代次數(shù)訓(xùn)練集的準確率。
圖9 原網(wǎng)絡(luò)和本文網(wǎng)絡(luò)驗證集對訓(xùn)練集測試的準確率曲線
由圖9可以看出本文網(wǎng)絡(luò)驗證集對訓(xùn)練集的準確率的上升速度比原網(wǎng)絡(luò)快,并且在迭代6 000次之前都是穩(wěn)步上升的,而迭代6 000次之后原網(wǎng)絡(luò)上下強烈震蕩,本文網(wǎng)絡(luò)減小了震蕩,在97.5%的時候趨于平穩(wěn)。
圖10顯示了ORL人臉數(shù)據(jù)庫原網(wǎng)絡(luò)和本文網(wǎng)絡(luò)迭代次數(shù)中每次迭代的測試集識別率。
圖10 原網(wǎng)絡(luò)和本文網(wǎng)絡(luò)測試集識別率曲線
由圖10可以看出在迭代6 000次之前,原網(wǎng)絡(luò)和本文網(wǎng)絡(luò)對測試集的識別率均穩(wěn)步上升,其中原網(wǎng)絡(luò)識別率最高為97.5%,而本文網(wǎng)絡(luò)識別率最高為98.75%。但在迭代6 000次之后原網(wǎng)絡(luò)發(fā)生強烈震蕩,本文網(wǎng)絡(luò)也略微下降,在迭代8 000~9 200次的時候略低于原網(wǎng)絡(luò)測試集的識別率,本文網(wǎng)絡(luò)隨后繼續(xù)上升直到識別率為96.25%的時候趨于穩(wěn)定。
圖11顯示了ORL原網(wǎng)絡(luò)和本文網(wǎng)絡(luò)迭代次數(shù)的樣本集識別率。
圖11 原網(wǎng)絡(luò)和本文網(wǎng)絡(luò)樣本集識別率曲線
圖11 和圖10基本相似,不同的本文網(wǎng)絡(luò)的樣本集識別率幾乎一直在原網(wǎng)絡(luò)樣本集識別率之上(除了迭代9 000~10 000次)。其中,原網(wǎng)絡(luò)對樣本集的最高識別率為98.75%,本文網(wǎng)絡(luò)對樣本集的最高識別率為99%。原網(wǎng)絡(luò)和本文網(wǎng)絡(luò)對全部樣本的識別率分別在98.5%和98.75%達到平穩(wěn)。
綜上所述,本文網(wǎng)絡(luò)損失曲線和識別率曲線要比原網(wǎng)絡(luò)損失曲線和識別率曲線震蕩減小趨于平穩(wěn),達到的實踐效果更好。
測量對于相應(yīng)的人臉數(shù)據(jù)庫訓(xùn)練集和測試集的每個模型的正確識別率,結(jié)果如表3、表4所示。
由上述表格的數(shù)據(jù)得到,原網(wǎng)絡(luò)最佳的網(wǎng)絡(luò)模型AlexNet網(wǎng)絡(luò)的_iter_9000;本文最佳的網(wǎng)絡(luò)模型本文網(wǎng)絡(luò)的_iter_6000;本文人臉的識別率是以測試集的識別率為準,本文網(wǎng)絡(luò)的人臉識別率比原網(wǎng)絡(luò)高1.25%,在一定程度內(nèi)能提高識別率的收斂速度。
表3 AlexNet網(wǎng)絡(luò)ORL人臉數(shù)據(jù)庫的正確識別率 (%)
表4 本文網(wǎng)絡(luò)ORL人臉數(shù)據(jù)庫的正確識別率 (%)
傳統(tǒng)人臉識別算法的識別率如表5所示。
表5 傳統(tǒng)算法ORL人臉數(shù)據(jù)庫的正確識別率(%)
表6 AlexNet網(wǎng)絡(luò)和本文網(wǎng)絡(luò)與用于ORL庫的其他算法的比較
AlexNet網(wǎng)絡(luò)結(jié)構(gòu)模型對ORL人臉數(shù)據(jù)庫的識別率是97.5%,樣本識別率是98.75%。而本文網(wǎng)絡(luò)結(jié)構(gòu)模型對ORL人臉數(shù)據(jù)庫的識別率達到98.75%,樣本識別率是99%。表6是本文設(shè)計的網(wǎng)絡(luò)與傳統(tǒng)算法在ORL人臉數(shù)據(jù)庫識別率的對比。從中可以得出結(jié)論,本文所設(shè)計的網(wǎng)絡(luò)對ORL人臉數(shù)據(jù)庫中的識別率提高1.25%,樣本識別率提升0.25%。
本文提出了一個7層網(wǎng)絡(luò)應(yīng)用于ORL人臉數(shù)據(jù)庫的人臉識別,提高了AlexNet網(wǎng)絡(luò)中的超參數(shù)的批處理量,在迭代次數(shù)很小的時候就達到飽和程度,發(fā)現(xiàn)訓(xùn)練的收斂程度更快,驗證的準確率更高。從訓(xùn)練集、驗證集、測試集的損失曲線可以看出本文網(wǎng)絡(luò)損失更少,并且訓(xùn)練出的模型測試人臉的識別率為98.75%(比原網(wǎng)絡(luò)提高1.25%),所有樣本的識別率可以達到99%(比原網(wǎng)絡(luò)提高0.25%),人臉識別的準確率相對有所加強。同時對人臉數(shù)據(jù)的損失值和識別率曲線的振蕩問題進行了改進,結(jié)果趨于穩(wěn)定。
隨著深度學(xué)習(xí)的熱潮和人工智能的推進,人臉識別的應(yīng)用已經(jīng)進入各行各業(yè),而對人臉識別的準確性也將成為一個探究的課題。本文針對AlexNet網(wǎng)絡(luò)方法的參數(shù)訓(xùn)練過程提出了新型網(wǎng)絡(luò)算法,經(jīng)試驗證明有優(yōu)良的性能,它逐層的準確度匹配程度也得以逐漸加快,從而達到識別結(jié)果精確。