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