呂洪武
(長春工業(yè)大學 計算機科學與工程學院, 吉林 長春 130102)
人臉表情是表達人類情緒狀態(tài)最直接,也是最常見、最自然的信號之一。近年來,由于計算機視覺領域相關技術的飛速發(fā)展,人臉表情識別技術在醫(yī)療輔助診斷、刑事偵測、在線教學評價等多個領域具有廣泛的應用前景[1]。例如通過專注度表情識別,對學生課堂上課的專注度進行測評[2];應用于咽拭子采集機器人,對采集人進行表情識別,并進行情感交互[3];將表情識別嵌入駕校培訓系統(tǒng),根據(jù)學員的情緒狀態(tài)智能調(diào)整培訓程序,及時提供個性化學習方案[4]。
人臉表情識別主要分為圖片采集和預處理、特征提取和表情分類三個步驟,其中特征提取是決定人臉表情識別效果的關鍵性部分。特征提取一般分為傳統(tǒng)特征提取方法和基于深度學習的特征提取方法。
傳統(tǒng)的特征提取方法如局部二值模式(LBP)[5]和Gabor變換[6]等,也有使用光流法[7]和多層感知機[8]的方法來進行人臉表情識別,均存在魯棒性較弱和準確率較低等問題。因此,基于深度學習的人臉表情特征提取方法開始逐漸獲得研究人員的關注。郭昕剛等[9]運用跨層連接方法改進神經(jīng)網(wǎng)絡;殷柯欣等[10]對基于圖像重構和基于深度學習的預處理方法進行總結;An F等[11]提出一種結合長短期記憶網(wǎng)絡的多層面部表情識別方法,用來緩解梯度消失和梯度爆炸問題;而近年出現(xiàn)的局部二值卷積神經(jīng)網(wǎng)絡[12]和二值集成神經(jīng)網(wǎng)絡[13]均對參數(shù)量化的方式進行了創(chuàng)新;也有將生成對抗網(wǎng)絡[14-15]應用于人臉表情識別。但深度學習模型經(jīng)常存在過擬合以及訓練時間過長等問題。
針對上述問題,提出一種基于遷移學習和注意力機制的人臉表情識別網(wǎng)絡模型,將注意力機制嵌入VGG16模型,減少模型全連接層參數(shù)數(shù)量,并使用遷移學習方法初始化網(wǎng)絡權重,提高了模型訓練效率和人臉表情識別準確度。
文中網(wǎng)絡模型在VGG16最后一層卷積處添加了注意力機制,并將后續(xù)兩層全連接層的節(jié)點數(shù)量進行縮減,分別由4 096個節(jié)點減少為512和256個節(jié)點。具體網(wǎng)絡結構如圖1所示。
其中,64@3×3、128@3×3和512@3×3分別表示每一個對應的卷積層都是由64個、128個和512個大小為3×3的卷積核組成,池化層使用的池化方法為最大池化。
由于每一個通道特征圖均是由其對應的卷積核卷積而來,因此,不同通道學習到的特征對于最終表情分類的貢獻度是不同的,通過注意力機制可以對每一個通道施加不同的權重,使得網(wǎng)絡更加偏向于貢獻度大的通道。注意力機制模塊具體結構如圖2所示。

圖2 注意力機制
其中,MaxPool和AvgPool分別表示全局最大池化和全局平均池化,32和512表示兩個全連接層的節(jié)點數(shù)量,Relu表示激活函數(shù),1×1×512表示輸出權重向量的大小。注意力機制公式為
Mc(F)=σ(MLP(AvgPool(F))+
MLP(MaxPool(F))),
(1)
式中:F----輸入特征;
Mc(F)----輸入特征經(jīng)過注意力網(wǎng)絡后的權重向量;
AvgPool,MaxPool----分別表示全局平均池化和最大池化;
MLP----通過兩個參數(shù)共享的全連接層對池化后的特征進行提取;
σ----對經(jīng)過全連接層后的特征向量通過Sigmoid函數(shù)進行歸一化,具體公式為

(2)
式中:x----輸入的權重向量。
由于目前人臉表情識別模型過擬合現(xiàn)象較為突出,丟棄層(Dropout)可以使節(jié)點隨機失活,減少模型過擬合現(xiàn)象,因此在第一和第二個全連接層后添加丟棄層來增加模型的魯棒性,具體公式為

(3)

(4)
y(l+1)=f(z(l+1)),
(5)
式中:y(l),y(l+1)----分別表示第l層和第l+1層特征;
r(l)----根據(jù)第l層特征依據(jù)設置概率產(chǎn)生的隨機0,1向量;

w(l+1),b(l+1)----分別是第l+1層的權重參數(shù)和偏置項;
z(l+1)----未經(jīng)過激活函數(shù)的第l+1層特征;
f(z(l+1))----將特征經(jīng)過激活函數(shù)。
遷移學習是減少模型訓練時間,提高模型魯棒性的重要方法。其目的是讓模型在其他領域訓練以獲得一定的先驗知識(即獲得權重參數(shù))再來訓練。遷移學習需要保持特征提取模型的卷積層結構不變,載入預訓練的權重和參數(shù),設計適用于新任務的全連接層,與原來的卷積層組成新網(wǎng)絡模型,再用新數(shù)據(jù)集訓練模型[16]。遷移學習后的模型可以凍結固定層,只訓練沒有凍結的層,或者全部網(wǎng)絡均參加訓練,文中將所有層都進行了訓練。
為分析文中網(wǎng)絡性能,選用RAF-DB數(shù)據(jù)集進行測試,測試環(huán)境為Windows10,GPU為NVIDIA GeForce RTX 3090,使用深度學習框架為Pytorch1.10,python3.7。批處理大小設置為128,使用SGD優(yōu)化器,動量設置為0.9,學習率設置為0.01,每100輪變?yōu)樵瓉淼氖种弧?/p>
RAF-DB數(shù)據(jù)集為真實世界下的人臉表情數(shù)據(jù)集,標記為7種基本表情,分別為驚訝、害怕、厭惡、快樂、悲傷、憤怒、自然。數(shù)據(jù)集共有29 672張圖片,其中12 271張作為訓練集,3 068張作為測試集。為了加強網(wǎng)絡的魯棒性,對數(shù)據(jù)集進行一定的預處理,將圖片進行歸一化處理,大小修改為224×224,進行隨機水平翻轉和角度轉動,隨機對圖像進行部分擦除。
文中算法在RAF-DB數(shù)據(jù)集的準確率曲線如圖3所示。

圖3 準確率曲線
文中算法在RAF-DB數(shù)據(jù)集的損失函數(shù)曲線如圖4所示。

圖4 損失函數(shù)曲線
兩圖中,A表示訓練集曲線,B表示測試集曲線。從圖中可以看到,使用遷移學習后的模型在初始學習階段準確率上升較快,且初始準確率已經(jīng)較高,150輪左右已經(jīng)接近訓練完成,并在終段訓練中有較好的穩(wěn)定性,最終準確率可以達到86.05%。
文中算法在RAF-DB數(shù)據(jù)集測試集下的混淆矩陣如圖5所示。

圖5 混淆矩陣
從圖中可以看出,快樂表情識別準確率最高,可以達到94.7%,害怕和厭惡表情識別率最低,分別只有54.1%和55.0%,驚訝表情識別率為87.8%,悲傷表情識別率為84.7%,憤怒表情識別率為80.9%,自然表情識別率為83.1%。
文中算法與其他算法在RAF-DB數(shù)據(jù)集上的準確率對比見表1。

表1 準確率對比
可以看到,文中算法比VGG16網(wǎng)絡、ResNet18網(wǎng)絡、ResNet34網(wǎng)絡、Dens121網(wǎng)絡的準確率分別高3.98%、3.87%、3.81%、3.14%,參數(shù)數(shù)量雖然高于其他網(wǎng)絡結構,但遠低于改進前的主干網(wǎng)絡。
刪減全連接層節(jié)點數(shù),添加丟棄層并對數(shù)據(jù)集進行預處理,降低了模型的過擬合程度,添加了注意力機制,使得網(wǎng)絡更加關注有用的通道特征,使用遷移學習初始化訓練權重,縮減了網(wǎng)絡訓練時間。最終在RAF-DB數(shù)據(jù)集得到86.05%的準確率,證明了文中算法的有效性。