王忠民 緱田田 衡 霞
(1.西安郵電大學計算機學院 西安 710121)(2.西安郵電大學陜西省網絡數據分析與智能處理重點實驗室 西安 710121)
人類的情感通常通過其面部表情、聲音、手勢和姿勢等信息表現出來。而面部表情蘊含了人類豐富且細微的情感變化,分析和研究人的面部表情[1~2]對情感識別[3~5]、人機交互等方面有很大的應用價值。如今,面部表情識別已經引起了廣泛的研究,同時提出了多種解決方案。而提取面部有效特征[6~9]成為了面部表情識別中的關鍵步驟,經典的提特征算法包括獨立分量分析法[10](ICA)、主成分分析法[11](PCA)、局部二值模型[12](LBP)。雖然ICA等特征提取算法在處理高維數據等方面具有良好的特性,但同時也存在特征提取率低、提取不全面,或是依賴硬件,消耗內存大的等問題[13]。
近幾年來,利用神經網絡[14]來解決圖像識別[15]問題有了很大的突破,它能讓機器自主地從樣本數據中學習到表示這些面部表情的本質特征[16~17],而且更具有一般性。利用3D CNN更能有效地提取有用的特征信息。采用BLSTM進行分類[18~19],它能夠充分地利用數據的上下文信息[20],在對序列的識別任務中表現突出[21],綜上所述,本文提出一種融合[22]3D CNN和BLSTM的面部表情識別方法。面部表情的處理過程如圖1所示。
圖1 面部表情識別過程圖
面部表情識別過程主要分為訓練和測試兩個階段。在訓練階段,首先對圖像進行預處理,然后將預處理之后的圖像輸入深度卷積神經網絡,進而用BLSTM進行分類。在訓練階段,使用已經處理好的訓練集通過訓練,獲得我們所需要的模型;在測試階段,通過測試集來驗證我們模型的性能。如圖2所示為面部表情識別系統(tǒng)流程圖。
圖2 面部表情識別系統(tǒng)流程圖
在輸入網絡之前,需要對圖像進行預處理,使得在之后的模型訓練時,得到較為精準的特征,我們采用Adaboost算法對圖片中的人臉部位進行精準定位。其核心思想就是針對同一個訓練集訓練不同的分類器,然后把這些弱分類器集合起來,構成一個最終的分類器。在試驗過程中,通過迭代30次主循環(huán),每次循環(huán)根據當前的權重分布對樣本進行調整,通過學習得到一個弱分類器。而最終的分類器是是多個弱分類器的加權平均。面部檢測過程如圖3所示。
圖3 面部檢測過程
本文對經典的卷積神經網絡(Convolutional Neural Network,CNN)進行了改進。利用3D CNN網絡在時間維度上的優(yōu)勢和BLSTM在長時間特征依賴關系的優(yōu)勢,提出了新型融合多種卷積神經網絡的模型。在該模型種,采用10層結構的卷積神經網絡來對面部表情進行識別,包括兩個卷積層、兩個池化層、4個BLSTM網絡層、1個全連接層、1個分類層。如圖4所示為面部表情識別流程框架圖。
圖4 面部表情識別框架
2.2.1 特征提取
在本文中,通過3D CNN來提取空間和時間維度的特征,從而捕獲在多個連續(xù)幀中編碼的運動信息。3D CNN模型相比于2D CNN,它的性能遠遠優(yōu)于2D CNN模型,它能更好地捕獲圖像序列中的時間和空間的特征信息。因為卷積在3D CNN中具有時空特性,因此它保留了時間信息。
實驗中,將連續(xù)50張大小為64*64的圖片幀作為輸入,構建了兩個卷積層(C1,C2),兩個池化層(S1,S2),1個全連接層(FC1)組成的卷積神經網絡結構。卷積核(C1,C2)的大小分別為7*7*3,7*7*3,特征圖的大小分別為(50-3+1)*(64-7+1)*(64-7+1)=48*58*58和(16-3+1)*(20-7+1)*(20-7+1)=14*14*14,變量總量分別為6*48*58*58=968832和12*14*14*14=32928。池化層的降采樣核大小均為3×3,并且全部采用的是最大采樣,最終輸出的變量規(guī)模為12*5*5*5=1500。每一個池化層都在對應的卷積層之后。如表1所示為網絡各層的信息描述。
表1 網絡各層的信息描述
2.2.2 分類技術
ht長短時記憶(LSTM)模型解決了傳統(tǒng)RNN在處理長序列數據時存在的梯度消失問題。它的基本思想是用LSTM對幀的CNN最后一層的激活在時間軸上進行整合。一方面,它可以對CNN特征進行更長時間的融合,不對處理的幀數加以上限,從而能對更長時長的視頻進行表達;另一方面,不用考慮同一次進網絡的幀的前后順序。LSTM的隱藏層的輸出的具體計算過程如式(1)~式(6)所示:
其中,w表示連接兩層的權重矩陣,b表示偏置向量,c表示記憶單元的狀態(tài),σ和tanh表示兩種不同的神經元激活函數,i,f和o分別表示輸入門、遺忘門和輸出門。然而LSTM只捕獲了圖片的上文信息,而對下文信息卻一無所知,而提出的BLSTM可以同時考慮到數據信息的上下文信息。如圖5所示,為BLSTM的網絡架構圖。
圖5 BLSTM網絡架構
本文提出通過BLSTM來學習不同人臉表情在時域上的關聯特征。我們構建了多個BLSTM層,以及一個全連接層和一個softmax層。用已訓練好的CNN模型來提取面部表情,在兩層卷積降維之后的輸出作為提取的特征。隨后依次輸入到BLSTM網絡中去,只有t時刻,BLSTM才會輸出它的特征到全連接層,最終送入到softmax層得到分類結果。
軟件環(huán)境:Windows 10下的TensorFlow平臺;硬件環(huán)境:處理器:Intel(R)Core(TM)i7-7700 CPU@3.60GHz;內存:32.0GB。
3.1.1 JAFFE數據集
JAFFE(The Japanses Female Facial Expression Database)數據庫表情標定標準,廣泛用于面部表情識別驗證中,其中包含了213幅日本女性的臉相,每幅圖像都有原始的表情定義。表情庫中共有10個人,每個人有中性、高興、悲傷、驚奇、憤怒、厭惡、恐懼7種表情。
圖6 JAFFE數據庫中面部表情示例
3.1.2 CK+數據集
這個數據庫是在Cohn-Kanade Dataset的基礎上擴展來的,發(fā)布于2010年。包含表情的label和Action Units的label。這個數據庫包括123個subjects,593個image sequence,每個image sequence的最后一張Frame都有action units的label,而在這593個image sequence中,有327個sequence有emotion的lable。如圖7所示為CK+數據集的部分圖片示例。
圖7 CK+數據庫中面部表情示例
3.1.3 數據集的融合
由于每種數據集都有數據量、條件等多方面限制,提出利用JAFFE數據集和CK+數據集融合的混合數據集。利用這兩個數據集選取連續(xù)多幀圖像并通過反轉、裁剪等手段對數據集大小進行擴充,同時每次實驗隨機按比例選取數據集中部分圖像作為測試數據,而其他的圖像作為訓練數據。實驗重復5次,最后對實驗結果取平均值得到總識別率。
對新的數據集進行整理和制作emotion的lables。并將它們按照比例無順序拆分成訓練樣本和測試樣本,具體分布如表2所示。
表2 不同表情的樣本數
將整理好的數據集作為實驗數據輸入至3D CNN網絡中進行訓練,獲得特征數據之后輸入至BLSTM網絡中,并用softmax分類器進行分類得到分類結果。
在實驗過程中,使用多種模型對三種數據集中圖像進行表情識別。用到的模型主要有PCA、LBP、CNN、3D CNN和改進的CNN。如表3~5所示,為在三種數據集下,多種傳統(tǒng)的模型的面部表情識別結果。
表3 利用JAFFE數據集識別準確率對比
表4 利用CK+數據集識別準確率對比
表5 利用融合新的數據集識別準確率對比
為了進一步證明本文采用的網絡模型的有效性,我們在多種數據集測試數據集上依次重復測試5次求其平均值作為最終測試結果,使得最終的結果具有可信性。如表6~8所示。
表6 JAFFE下新模型表情識別準確率
表7 CK+下新模型表情識別準確率
表8 融合數據集下新模型表情識別準確率
由表6~8可知,無論在哪種數據集的情況下,3D CNN+BLSTM模型都表現出了良好的識別效果,這表明該模型具有較強的穩(wěn)定性和識別性能。使用融合模型在多種數據集的面部表情識別率如圖8所示。
圖8 新模型下各種數據集對比
如表9所示為新模型與傳統(tǒng)模型識別率的對比。
表9 新模型和傳統(tǒng)模型識別率對比
由表9可知,與傳統(tǒng)模型相比,新型融合模型在三種數據集下都表現出了良好的識別率。與PCA模型相比,總體識別率提高了50.3%,與LBP模型相比,總體識別率提高了38%,與CNN模型相比,總體識別率提高了25.7%,與CNN模型相比,總體識別率提高了8.5%。
本文提出采用融合卷積神經網絡和遞歸神經網絡的方法來對人的面部表情進行識別。該方法通過采用3D CNN對連續(xù)的多張圖片中的特征進行提取,進而采用BLSTM遞歸神經網絡得到這些特征在時域上的信息,進而對這些信息進行分類。實驗數據表明,該方法的識別結果確實優(yōu)于傳統(tǒng)方法。但當數據量越大,網絡層次較深的情況下,由于硬件設備的限制,模型的訓練時間就會增長。在提高準確率的情況下,模型訓練的時效性是進一步研究的重點。