王凱,何宏,殷靜
(1.湖南工程學(xué)院,湖南 湘潭 411104;2.南通大學(xué),江蘇 南通 226000)
微表情概念最早由心理學(xué)家提出,即使人主動控制自己面部表情隱藏內(nèi)心真實情感,心理學(xué)家也可通過觀察面部肌肉下意識的細微運動并結(jié)合面部編碼系統(tǒng)判斷其真實情感。因此,微表情被認為是人刻意隱藏和壓抑自己真情實感時出現(xiàn)的時間短暫、動作快速且幅度微小的無意識表情。由于微表情持續(xù)時間短、表情幅度小、不易于觀察等特點,即使是經(jīng)過針對性訓(xùn)練的心理學(xué)從業(yè)人員對于微表情的識別和判斷也處于較低水平。
本文將LeNet卷積神經(jīng)網(wǎng)絡(luò)應(yīng)用于微表情識別中,提出了一種改進型的LeNet卷積神經(jīng)網(wǎng)絡(luò)算法,在傳統(tǒng)的神經(jīng)網(wǎng)絡(luò)算法中的卷積層與池化層中加入全連接層與輸出層,直接計算誤差函數(shù),更新算法權(quán)值,使用Relu函數(shù)來代替sigmod函數(shù)作為激活函數(shù),并且在神經(jīng)網(wǎng)絡(luò)中引入隨機失活法(Dropout),消除過擬合現(xiàn)象,提升神經(jīng)網(wǎng)絡(luò)算法精度。
LeNet-5卷積神經(jīng)網(wǎng)絡(luò)作為基網(wǎng)來提取表情特征,其結(jié)構(gòu)包含有3個卷積層、2個池化層和2個全連接層。除輸入層以外,基網(wǎng)的每層都包含不同數(shù)量的訓(xùn)練參數(shù),數(shù)據(jù)先經(jīng)過兩次卷積層到池化層,再經(jīng)過全連接層。
LeNet網(wǎng)絡(luò)結(jié)構(gòu)中,C1,C3和C5層為卷積層,S2和S4為池化層,其中C1中包含6張28×28大小的特征圖,C3中包含6張10×10大小的特征圖,C5中包含120張1×1大小的特征圖;S2和S4中各包含6張14×14與16張5×5大小的特征圖;F6為全連接層,包含84個神經(jīng)元。
卷積層是深度卷積神經(jīng)網(wǎng)絡(luò)的重要部分,通過卷積層的運算,提取出圖片中包含的許多不同特征值,進而通過神經(jīng)網(wǎng)絡(luò)中的多層卷積來進一步學(xué)習(xí)特征,主要負責進行圖像特征的提取,卷積的計算公式:
池化層的作用是將卷積層中提取的特征進行降維,使用特定的濾波器和步長對卷積出的像素值進行切割獲取,減小特征矩陣的大小,降低運算時間。池化有最大池化和均值池化兩種方法,最大池化是將卷積圖像區(qū)域的像素值取最大值,均值池化則是將卷積圖像區(qū)域的像素取均值。
池化的計算公式:
神經(jīng)網(wǎng)絡(luò)解決多分類問題時一般設(shè)置n個輸出,其中輸出的數(shù)量個數(shù)即為模型的種類,每對應(yīng)一個輸入,模型都會相較應(yīng)的給出一個n維的數(shù)組,數(shù)組的每個維度就是模型的每個類別。
Softmax公式如下所示
在公式(3)中,i表示類別索引,Zj則為分類器前層輸出單元的輸出,n代表了總的類別個數(shù)。
本文研究傳統(tǒng)的Lenet-5神經(jīng)網(wǎng)絡(luò),根據(jù)傳統(tǒng)的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)做出改進,在卷積層后添加一個臨時全連接層,得到臨時輸出層,與真實標簽進行比較,計算得到誤差函數(shù),進行回調(diào)到輸入層間的權(quán)值。
當圖片輸入時,通過改進的神經(jīng)網(wǎng)絡(luò),在數(shù)據(jù)量較小的情況下,因為在卷積層加入了全連接層與輸出層,相較傳統(tǒng)的神經(jīng)網(wǎng)絡(luò),能夠得到更多次的誤差函數(shù),再通過更多次的權(quán)值調(diào)整,使得誤差率能夠更快的收斂,各層間的權(quán)值可以更快的穩(wěn)定。
原Lenet-5神經(jīng)網(wǎng)絡(luò)選用的激活函數(shù)是sigmod,而sigmod函數(shù)具有缺少通用性的問題,所以對卷積層中的激活函數(shù)進行了改進,選擇Relu函數(shù)作為激活函數(shù),它能阻止負信號通過,將所有小于0的值使用0代替,使得激活函數(shù)的導(dǎo)數(shù)的正數(shù)部分為1。相對于Sigmoid 的冪運算需要大量的計算,Relu函數(shù)只有線性關(guān)系,可以提升收斂速度可以都很大程度提升計算速度。Relu公式如下:
在神經(jīng)網(wǎng)絡(luò)中引入隨機失活法(Dropout)。在訓(xùn)練神經(jīng)網(wǎng)絡(luò)的時候經(jīng)常會遇到過擬合的問題,過擬合具體表現(xiàn)在:模型在訓(xùn)練數(shù)據(jù)上損失函數(shù)較小,預(yù)測準確率較高;但是,在測試數(shù)據(jù)上損失函數(shù)比較大,預(yù)測準確率較低,與預(yù)期結(jié)果產(chǎn)生較大偏差。使用隨機失活法,在深度神經(jīng)網(wǎng)絡(luò)的訓(xùn)練過程中,對于神經(jīng)網(wǎng)絡(luò)中的單元,按照一定的概率將其暫時從網(wǎng)絡(luò)中丟棄,減少隱層節(jié)點間的相互作用,方便參數(shù)的更新,來達到消除過擬合的現(xiàn)象。
本文的實驗環(huán)境的具體配置為:GPU為GTX-1080Ti,16GB內(nèi)存,Python3.7編程語言,操作系統(tǒng)是windows10,以及TensorFlow深度學(xué)習(xí)平臺。
本文所采用的數(shù)據(jù)集為Fer2013數(shù)據(jù)集。Fer2013數(shù)據(jù)集中包含了28709張訓(xùn)練圖,3589張公開測試圖和3589張私有測試圖。所有的數(shù)據(jù)圖都是12×12的灰度圖。其數(shù)據(jù)集中一共包含生氣、厭惡、恐懼、開心、傷心、驚訝和自然這7種人臉面部微表情,涉及了大多數(shù)情況下出現(xiàn)的微表情,數(shù)據(jù)泛用性高。
本文為了對比改進后神經(jīng)網(wǎng)絡(luò)與傳統(tǒng)神經(jīng)網(wǎng)絡(luò)之間的差別,所使用的訓(xùn)練集和測試集均為Fer2013數(shù)據(jù)集,優(yōu)化函數(shù)為AdaBound算法,學(xué)習(xí)率設(shè)置為0.1,動量為0.9,β1設(shè)為0.9,β2設(shè)為0.999。
根據(jù)圖1與圖2的數(shù)據(jù)顯示,傳統(tǒng)的LeNet-5神經(jīng)網(wǎng)絡(luò)和改進后的LeNet-5神經(jīng)網(wǎng)絡(luò)在經(jīng)歷了700個訓(xùn)練周期后,損失函數(shù)值都有了較大的降低,準確率也有了明顯的提升。由于改進后的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)較傳統(tǒng)神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)變得復(fù)雜,所以在訓(xùn)練的初期,改進后的神經(jīng)網(wǎng)絡(luò)的損失值比傳統(tǒng)神經(jīng)網(wǎng)絡(luò)的損失值大,但當訓(xùn)練周期達到150后,兩者的損失值都相互接近。而在準確率方面,改進后的LeNet-5神經(jīng)網(wǎng)絡(luò)不管訓(xùn)練周期的多少都相較于傳統(tǒng)神經(jīng)網(wǎng)絡(luò)有了較大的提升。
圖1 傳統(tǒng)網(wǎng)絡(luò)與改進后網(wǎng)絡(luò)的準確率
圖2 傳統(tǒng)網(wǎng)絡(luò)與改進后網(wǎng)絡(luò)的損失值
本文選取一位測試人員的100張表情圖片進行測試,截取統(tǒng)計出測試人員出現(xiàn)的所有微表情,如圖3所示。
圖3 微表情種類
從圖3的檢測結(jié)果可以看出,本文提出的改進的LeNet-5神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)能較為準確地檢測出視頻中出現(xiàn)的微表情的類型,其中微表情顯示為生氣的有17張,厭惡的有12張,恐懼的有9張,開心的有16張,驚訝的有22張,自然的有24張,擁有較為滿意的檢測結(jié)果。
本文提出了一種改進的LeNet-5卷積神經(jīng)網(wǎng)絡(luò),在傳統(tǒng)的神經(jīng)網(wǎng)絡(luò)算法中的卷積層與池化層中加入臨時的全連接層與輸出層,優(yōu)化了激活函數(shù),使用Relu函數(shù)來代替sigmod函數(shù)作為激活函數(shù),并且在卷積神經(jīng)網(wǎng)絡(luò)中引入隨機失活法(Dropout),消除過擬合現(xiàn)象,提升神經(jīng)網(wǎng)絡(luò)算法精度。從實驗結(jié)果來看,改進后的模型在微表情識別精度方面擁有較大的提升,但是,也存在一些不足,后續(xù)我們將進一步研究提升其運行速率。