徐瑋,鄭豪,楊種學
(1.廣西師范大學 計算機科學與工程學院/軟件學院,廣西 桂林 541004;2.南京曉莊學院 信息工程學院,江蘇南京 211171)
微表情是人們試圖隱藏真實情感時不由自主泄露出的面部表情,是人類經過長期進化遺傳而繼承下來的。其作為人內在情緒的真實表現,能夠揭示一個人的真實情緒,具有持續時間短、強度低、難以誘導[1]等特征,因此它成為精神心理學和情感分析領域最可靠的生理特征之一。
微表情識別算法主要有特征描述算法、特征轉換算法、光流算法、頻域算法、深度學習算法等。特征描述算法[2-4]通過描述微表情的面部肌肉運動特性、紋理特性等實現對微表情的特征表示,在局部二值模式的基礎上,減少噪聲、光照等因素的影響,提升特征描述的準確性。特征轉換算法[5-6]將微表情序列看作張量,對其進行矩陣變換去除冗余信息,增加顏色、空間和時間等信息。光流算法[7-9]主要分析光流場中微表情序列的變化,從像素的角度提取相鄰兩幀像素的相對運動,捕捉面部的細微變化,降低頭部運動和光線變化對特征的影響。頻域算法[10-12]將微表情序列看作一個時域信號,通過傅里葉變換、Gabor變換等轉換到頻域上,提取振幅、相位信息等特征,能夠有效提取面部輪廓的角點和邊緣信息等局部特征?;谏疃葘W習的微表情識別算法利用神經網絡自主學習的特征,得到高層的語義信息。Patel 等[13]探索深度學習用于微表情識別任務,提出一種選擇性的深層特征進行微表情識別,去除不相關的深層特征。Peng 等[14]提出了雙時域尺度卷積神經網絡(dual temporal scale convolutional neural network,DTSCNN),采用不同的網絡流來適應不同幀率的微表情視頻序列,避免了過擬合問題的出現。同時,將光流序列加到淺層網絡,使得網絡可以得到高層次特征。Verma 等[15]提出了LEARNet(lateral accretive hybrid network)捕捉面部表情的微觀特征,在網絡中加入AL (accretion layers)細化表達特征。目前的工作多采用微表情視頻序列進行研究,該方法不僅計算復雜、耗時長,而且實際應用場景中通常也難以獲得完整的微表情視頻序列用以分類,具有一定的局限性。針對這一情況,本文提出了基于雙注意力模型和遷移學習的Apex 幀微表情識別方法,主要貢獻有3 點:
1)借鑒CBAM[16]的設計理論,并針對微表情的特性,在ResNet18[17]網絡的基礎上集成空間注意力模塊、通道注意力模塊,提升神經網絡對Apex 幀微表情特征的提取性能;
2)采用Focal Loss[18]函數,解決微表情樣本比例嚴重失衡的問題;
3)使用遷移學習的方式,從宏表情識別領域遷移到微表情識別領域,緩解微表情數據集樣本嚴重不足的情況。
本文所提出的微表情識別算法主要包括微表情視頻序列預處理和深度學習分類兩部分,其整體流程如圖1 所示。

圖1 本文算法整體流程Fig.1 Proposed overall flow of the algorithm
大多數微表情識別算法都將微表情作為一個視頻序列進行處理。視頻序列一般包含起始幀(Onset frame)、峰值幀(Apex frame)和終止幀(Offset frame)。其中,Apex 幀是微表情面部肌肉運動變化最為明顯的一幀,最具有代表性。Liong 等[19-20]認為高幀率下的微表情視頻序列并不是每一幀都是有效的,相反會造成計算冗余現象的發生。他們提出了只使用起始幀和峰值幀的特征提取方法Bi-WOOF 和OFF-ApexNet,識別效果非常顯著。為了減少計算量,更加高效、快捷地將微表情進行分類,本文選取微表情視頻序列中已標注的Apex 幀進行處理。
在圖像預處理過程中,使用OpenCV 和Dlib庫實現人臉68 個關鍵特征點檢測并進行標注。由于攝像頭采集的人臉圖像存在姿態多樣、角度多樣等問題,通過人臉對齊使之更符合微表情識別的需求。在已標注的特征關鍵點中選取左內眼角坐標(x1,y1) 和右內眼角坐標 (x2,y2),人臉水平夾角 θ 和人眼距離dist 計算公式如式(1)所示:

將人臉眼距的中點作為旋轉中心(x0,y0),則旋轉后的坐標計算公式如式(2)所示:

深度學習的框架設計部分將分別介紹空間注意力機制、通道注意力機制、殘差學習單元集成雙注意力模型的方法、損失函數的選擇、遷移學習的運用方式。
空間注意力機制專注于特征圖中的重要空間信息部分,本文使用的空間注意力模塊(spatial attention module)如圖2 所示。將特征圖作為空間注意力模塊的輸入,分別在最大池化操作和平均池化操作后進行拼接,接著采用核為7×7 的卷積提取感受野,最后通過Sigmoid 激活函數生成空間注意力特征圖??臻g注意力模塊定義為


圖2 空間注意力模塊Fig.2 Spatial attention module
通道注意力機制關注不同特征通道的權重分布,本文使用的通道注意力模塊(channel attention module)如圖3 所示。假設輸入特征圖F∈RC×H×W,C、H和W分別代表特征圖的通道數、高和寬,分別經過最大池化和平均池化后得到特征圖Fm∈RC×1×1和Fa∈RC×1×1,接著將Fm和Fa分別依次進行核為1×1 的卷積、ReLU 激活函數、核為1×1 的卷積,然后對這兩個輸出向量按元素求和,得到尺度為[C×1×1] 的向量,最后該向量通過Sigmoid 激活函數得到通道權重結果。通道注意力模塊定義為


圖3 通道注意力模塊Fig.3 Channel attention module
本文將空間注意力模塊、通道注意力模塊集成到ResNet18 網絡的殘差學習單元中,如圖4 所示。具體流程為輸入特征圖F∈RC×H×W,與S∈R1×H×W元素相乘得到F′,F′再與C∈RC×1×1相乘得到F′′,最后F′′與F元素相加得到最終輸出的特征圖F′′′。相比CBAM 的設計保留了更多原始特征圖的細節信息,同時降低了整體網絡的復雜度,更加適用于具有持續時間短、強度低的微表情。其定義為


圖4 集成雙注意力模塊的殘差學習單元Fig.4 Residual learning unit integrated with a dual attention module
由于微表情持續時間短、區別度低、采集難度高,微表情數據集中常常出現樣本分布不平衡的現象。為了解決這一問題,本文使用Focal Loss 函數。該損失函數是交叉熵損失函數的改進版本,一個二分類交叉熵損失函數可以表示為

式中p表示模型預測屬于類別y=1 的概率。為了方便標記,定義為

即交叉熵CE 為

Focal Loss 在交叉熵損失的基礎上添加一個調制系數 (1?pt)γ,其中 γ≥0,定義為

其作用在于通過賦予易分類樣本較小的權重,賦予難分類樣本較大的權重,使模型在訓練時更專注于難分類的樣本,在一定程度上解決樣本分布不平衡的問題。在多分類任務下,Focal Loss則定義為

式中 α 表示類別i的權重因子。
傳統的深度學習中,模型充分預估結果需要數據集樣本數量足夠、訓練數據和測試數據滿足同分布。由于微表情數據集的規模都非常小,直接應用于神經網絡的訓練可能會引發過擬合、準確率低等問題,而遷移學習可以從大型數據集中學習先驗知識,將模型參數遷移至待訓練的網絡模型中,從而提高模型的訓練效率。
宏表情識別與微表情識別之間具有一定的共同之處,比如都有高興、驚奇、沮喪、恐懼、厭惡等表情標簽,都能夠反映人的情緒。但微表情一般是一段視頻,而宏表情則是根據單張圖片進行分類。因為本文選取微表情視頻序列的Apex 幀進行識別,即和宏表情識別的神經網絡輸入方式一樣,所以遷移學習能夠更好地應用。本文將宏表情識別作為輔助域,微表情識別作為目標域,通過遷移學習共享模型參數提高識別準確率。
實驗使用中國科學院心理研究所傅小蘭課題組提供的CASME II 微表情數據集[21],包括255 個微表情視頻樣本,采樣率為200 f/s,分辨率為280 像素×340 像素,26 位采集對象均來自亞洲,平均年齡22.03 歲。微表情分類為厭惡(63 個樣本)、高興(32 個樣本)、驚奇(28 個樣本)、壓抑(27 個樣本)、沮喪(4 個樣本)、恐懼(2 個樣本)和其他(99)共7 種。由于沮喪和恐懼兩種類型的樣本數量過少,因此本實驗僅使用其余5 類共249個樣本進行實驗,其組成分布如圖5 所示??梢钥吹?,“其他”的樣本數量占據了很大一部分。

圖5 CASME II 數據集樣本分布Fig.5 Sample distribution of CASME II database
遷移學習采用來自卡耐基梅隆大學的The Extended Cohn-Kanade Dataset (CK+)[22]數據集,該數據集包含123 位錄制者的593 組表情序列,其中有327 組被標注為憤怒、厭惡、恐懼、高興、沮喪、驚奇和蔑視,共7 種表情類別。與CASME II 微表情數據集中每個表情序列包含起始幀至終止幀不同,該宏表情序列包含表情的中性狀態至表情的最大表達狀態。本文從帶標簽的表情序列中選取表現比較強烈的共981 張圖片作為實驗數據。
本實驗在Windows 10 系統環境下,預處理部分使用OpenCV、Dlib 庫,神經網絡基于PyTorch深度學習框架進行搭建,同時使用NVDIA CUDA框架10.1 和cuDNN 8.0.3 庫。實驗硬件平臺中央處理器為Intel Core i9-9900X,內存為64 GB,顯卡型號為NVDIA GeForce RTX 2080TI×2,硬盤為SAMSUNG 970 EVO PLUS 1TB。
本文使用留一交叉驗證法(leave-one-subjectout cross-validation,LOSOCV),即將每位采集對象分別作為測試集,對CASME II 微表情數據集一共進行26 個訓練測試過程。目前的研究工作中多采用此驗證方法,優點在于每次迭代中都使用了最大可能數目的樣本來訓練,充分利用數據,采樣具有確定性,而且由于微表情數據集樣本數較少,不會造成很大的計算開銷。另外,每位采集對象的微表情之間具有一定的差異性,將單獨一位采集對象的所有微表情樣本作為測試集,能夠更好地反應方法的泛化能力。該數據集中已經標注了Apex 幀的位置,直接采用數據集中標注的峰值幀作為實驗所用的Apex 幀。由于數據集中每位采集對象包含的微表情類別及樣本數量差異較大,所以使用留一交叉驗證法是個極大的挑戰。在留一交叉驗證的過程中,所有的微表情樣本都會被分類器運算一次,本文采用對數據集整體準確率判定的方式評價模型的性能,其準確率計算公式為

為了研究Focal Loss 函數在微表情識別方面的有效性,本文在原生ResNet18 的基礎上對比使用Cross Entropy Loss 函數,進行了2 組實驗。將原始圖片均處理為224 像素×224 像素大小輸入網絡,初始學習率設為0.001,每批次包含249 張圖片,在實驗中使用兩張顯卡并行計算。實驗結果如表1 所示,在使用Focal Loss 函數后,其識別準確率提升了1.21%,證明使用Focal Loss 函數在微表情樣本不平衡的情況下對于微表情識別有著更好的性能。

表1 各損失函數實驗結果對比Table 1 Comparison of experimental results of various loss functions
為了研究空間注意力模塊、通道注意力模塊和混合注意力模塊對于微表情識別是否有效,本文在使用Focal Loss 函數的基礎上進行了4 組對比實驗,分別是原生ResNet18 模型、融合空間注意力模塊的ResNet18 模型、融合通道注意力模塊的ResNet18 模型和融合雙注意力模塊的ResNet18模型,識別準確率如表2 所示??梢钥吹?,3 種融合注意力模塊的方法在識別準確率方面,相比較原生ResNet18 分別提升了4.02%、2.41%和4.82%,證明該雙注意力機制有助于微表情識別。

表2 各神經網絡實驗結果對比Table 2 Comparison of experimental results of various neural networks
結合Focal Loss 和雙注意力模塊的識別算法在CASME II 數據上實驗,得到最終準確率為43.37%。將該算法應用于CK+數據集,按照8∶2 劃分訓練集和測試集,多次訓練后選取測試集準確率最高為94.38% 的模型進行遷移學習。在模型預訓練后,微表情識別準確率提升至44.97%。為了進一步全面衡量分類器的性能,在實驗中增加另外一個評價標準F1值(F1-score),其定義為

式中:TP 表示真陽性(true positive)的個數;FP 表示假陽性(false positive)的個數;FN 表示假陰性(false negative)的個數;P代表準確率;R代表召回率。表3 給出了各種方法在CASME II 數據集上的實驗結果,本文算法在準確率方面相比其他微表情識別方法有一定的提升,在F1值方面也優于大多數算法。

表3 CASME II 數據集實驗結果對比Table 3 Comparison of experimental results on CASME II database
本文使用集成空間、通道雙注意力機制的ResNet18 網絡,更加關注微表情的細節特征,同時引入Focal Loss 函數緩解微表情數據集樣本類別不平衡的狀況。在CK+宏表情數據集上預訓練后,遷移模型參數至CASME II 微表情數據集再進行訓練測試,取得了不錯的識別效果。考慮到本文算法僅使用微表情視頻序列中的Apex 幀,相比現有的一些算法有著更為廣泛的適用場景。后續研究將進一步關注于微表情數據集中樣本的平衡性問題,同時更深地挖掘宏表情與微表情之間的關聯,提高微表情識別的精度。