丁冠祺,劉宇涵,楊皓博
(國際關系學院 北京 100091)
人臉識別作為生物識別的重要途徑之一很早就被人們所重視而且已廣泛應用于眾多領域。卷積神經網絡作為深度學習的一個重要分支大大提高了計算機對圖像內容識別的能力,因此本文將卷積神經網絡應用于人臉識別技術以提高技術性能。
卷積神經網絡是近些年逐漸興起的一種非全連接的多層人工神經網絡結構,一般由卷積層、下采樣層和全連接層組成,由于使用卷積神經網絡進行圖片識別可以得到較優秀的測試結果,并且得益于文本可以通過詞矢量來轉化成二維結構的數據,這種技術在圖像識別和自然語言處理方向上得到了廣泛的傳播和應用。
我們整個人臉識別系統總共分為三個部分:圖像預處理、神經網絡搭建和訓練和實現人臉識別。
在神經網絡對圖像進行識別之前,我們將彩色圖像轉換為灰度圖像并提高圖像的亮度和對比度,一方面為了使圖像線條更加清晰,減少其他因素的干擾,更方便神經網絡對人臉部特征的提取,另一方面為了減小圖像數據量的大小,減少了計算時間,提升了計算效率。除此之外還要截取固定像素大小的人臉圖像。在本系統中為了方便,我們設置為57*47。
我們構建的神經網絡中采用了兩層卷積層,兩層下采樣層以及兩層全連接層。
在經過參數的調試和優化之后我們在convolution 1層設置了32個5*5的filter,并且設置stride為1經過一次卷積之后得到output高為57寬度為47深度為32。在一次卷積之后再進行了第一次下采樣操作即subsampling 1層。該層采用了2*2的filter并設置stride為2。在下采樣后output高變為29,寬變為24,深度依然為32。在此之后進行第二次卷積。Convolution 2層采用Convolution 1層同樣的結構。在第二次卷積之后output高依然為29,寬依然為24,深度變為64。緊接著第二次下采樣subsampling 2層與subsampling 1層完全相同。
在完成了卷積和下采樣之后,我們將其提取出來的圖像特征信息展開為一個長度為15*12*64=1024的一維數組輸入到全連接層中進行分類識別。其中fully connected 1層神經元的激活函數均為relu函數。由于考慮到這是一個分類問題,full connected 2層即為輸出層由40個神經元采用softmax函數進行分類。
由于人臉識別是一個多分類問題,我們增加了對輸出結果的softmax值與真實的label值進行交叉熵計算作為損失函數進行梯度下降的訓練。為了提高訓練的效率并且防止局部最優解的問題我們采用了mini-Batch Gradient Descent的訓練方法。除此之外為了避免過擬合,我們使用了dropout的訓練方法。
將訓練好的神經網絡進行保存,當需要對人臉圖像進行識別時,只需將人臉圖像進行預處理,然后將其輸入到訓練好的卷積神經網絡中,神經網絡就會根據輸入的數據進行計算并輸出最終判斷的結果。
我們采用了olivettifaces人臉數據庫。Olivetti Faces是紐約大學的一個比較小的人臉庫,由40個人的400張圖片構成,即每個人的人臉圖片為10張。每張圖片的灰度級為8位,每個像素的灰度大小位于0~255之間,每張圖片大小為64×64。因此我們選取每個人的前八張人臉圖像作為訓練集,第九張作為驗證集,第十張作為測試集。其中每張圖片的label用one-hot向量表示。
我們使用Python中的TensorFlow工具包對所設計的卷積神經網絡進行了編程實現。
我們對卷積神經網絡的參數進行了調整并對準確度進行了驗證結果如表1所示。

表1 實驗結果
從結果來分析可以發現學習率對準確率的影響并不明顯。當神經元被dropout的概率越低時準確度越高??紤]到人臉識別訓練的過程就是對人臉信息的擬合過程,神經網絡學習的程度越深,即對人臉的擬合度越高分類的準確度越高。因為并不需要預測,因此過擬合的問題并不明顯。至于filter size,其越大時準確度越高。
綜上所述我們能選擇了learning rate=10e-2,filter size=5*5,dropout rate=1的參數組合來構造和訓練卷積神經。
基于卷積神經網絡的人臉識別算法已經具有了較高的識別準確率,能夠在較少的數據樣本和較少的網絡層數的基礎上達到較高的準確率。但是依然存在個別識別錯誤的情況和訓練時間長,效率低的問題有待改進。