李召峰 , 朱 明
(1. 中國科學院 長春光學精密機械與物理研究所,吉林 長春 130033;2. 中國科學院大學,北京 100049)
面部表情是重要的非語言性情緒表達,日常生活中最常見和熟知的類型是宏觀表情,還存在一種不同于宏觀表情的人臉表情稱作微表情,微表情既不能隱瞞也不能主觀壓制,能揭示人所潛藏的感情表達和心理活動,可以作為人類主觀感受的重要依據[1]。通常情況下,微表情的持續時間為 1/25~1/5 s[1-2]。微表情分析在臨床診斷、國家安全和刑事偵查等領域有很大的應用潛力[3-5]。作為一個新領域,因為不同微表情序列之間較大的歧義性,直接分析存在很大的挑戰[6]。
微表情因其快速和細微的臉部自發運動使其難以被觀察到,即使是專業人士也難以準確識別微表情。早期的一些工作提出了一些輔助性的工具,比如微表情訓練工具(METT)[7],但因其成本過高和較低的人工識別率,使得這些方法很難在實際中應用。近些年,微表情數據庫的建立和發布[8-10]使微表情的識別和應用取得了很大進展?;诠_的數據集,研究者們提出了大量實驗方法來自動識別微表情。Liu等提出的光學流動(MDMO)方法[11]利用時域中像素的變化和相關性在視頻幀之間挖掘對應關系,通過定位主要的面部運動方向來計算平均光流臉塊,從而識別微表情。有研究利用已經成熟的圖像預處理技術,如人臉特征點檢測[12-13]來通過感興趣區域的選擇對特定面部區域進行分析[14]。這類基于紋理和基于運動的方法在一定程度上解決了微表情識別問題,但這些手工方法得到的特征需要人工去設計,具有一定的復雜度。
近些年,深度學習在表情分類、人臉檢測等視覺領域發揮了巨大的優勢。已經有許多基于深度學習的方法被用于微表情識別,這些方法避免了繁瑣的手工特征設計,可以自動捕捉微表情的細微變化。Kim等采用兩步模型CNN-LSTM來識別微表情[15],先利用卷積神經網絡(CNN)來提取空間幀的特征,然后將特征放入長短期記憶網絡(LSTM)中學習微表情的時間信息。Wang等提出了 3D-FCNN提取深度時空特征來識別微表情[16]。Khor等使用光流來學習臉部區域空間關系,再利用 VGG-16 和預訓練的 VGGFace模型來增加輸入通道和深度特征的堆疊[17]。Lei等使用了一個圖時間卷積網絡(Graph-TCN),使用遷移學習將基于學習的視頻運動放大應用于放大微表情并提取形狀信息,旨在解決臉部肌肉運動強度低的問題[18]。 Liu等結合 EVM 和光流來提取和放大細微的運動變化以獲得更準確的結果[19]。
受這些工作的啟發,本文提出了一種基于視頻動作放大和雙分支網絡的微表情識別框架。已有工作展示了光流在微表情識別中的有效性,臉部運動信息可以被光流所捕獲,光流特征包含微表情動態的特征細節,然后將它們輸入到卷積神經網絡,可以構建和選擇更多通過監督學習的重要臉部運動特征。本文進一步探索了光流信息的組合應用,使用雙分支網絡結構對預處理之后的圖像特征圖進行識別分類,在該網絡中融合了改進的ResNet-18中的殘差模塊,最后使用全連接層預測微表情的類別。
本文所提出的微表情識別算法主要由3部分組成。視頻預處理部分,將最新的人臉關鍵點檢測及人臉對齊技術應用于微表情序列,旨在獲取主要肌肉運動的人臉區域,然后采用歐拉視頻放大技術對視頻序列進行微表情中微弱運動的放大,同時在視頻序列中提取出對應的初始Oneset幀和強度最大的Apex幀;光流特征處理部分,獲取Apex幀的光流特征,進而獲得光流強度和光流應變,將其作為對應視頻序列的特征;雙分支分類網絡部分,用于表情的識別和分類,其中融合了改進的ResNet殘差模塊。本文的實驗算法流程如圖1所示。

圖1 本文算法流程Fig.1 Algorithm flow chart of this paper
人臉的一些部位是不包含微表情信息的。為了避免模型訓練中過大的類間差異,進行數據預處理是非常有必要的,有助于減小臉部大小和臉部形狀的差異,可以使要識別的人臉進行空間的歸一化,使后續模型提取到的人臉特征與五官的位置無關。視頻預處理分為空間和時序兩個方面:空間上完成從原始數據到裁剪后的人臉圖像序列;時序上對視頻幀進行了歐拉視頻放大,有助于突顯和放大微表情的臉部動作,處理步驟如圖2所示。

圖2 視頻預處理Fig.2 Video image preprocessing
本文采用了文獻[20]中的2D人臉對齊網絡(2D-FAN)來生成68個人臉關鍵點以及完成人臉對齊。2D-FAN是目前已知最強的2D/3D的人臉對齊網絡,在超過220 000張圖像上做了驗證,是結合了已有最優人臉關鍵點檢測的網絡結構。它的網絡結構基于Hour-Glass[21]網絡并采取堆疊的方式。Hour-Glass網絡采用瓶頸塊(Bottleneck block)作為主要的構建模塊,2D-FAN中則更進一步使用最新提出的分級并行和多尺度的網絡塊對瓶頸塊進行提升,在大規模的綜合2D人臉關鍵點數據集上進行了訓練。本文采用2D-FAN直接檢測和提取二維面部關鍵點,利用該先進的殘差網絡架構,在整個面部范圍內,將整個面部區域的圖像塊作為回歸CNN的輸入,面部的2D坐標向量作為輸出。裁剪人臉的過程是依據人臉關鍵點中眼睛的位置而確定的矩形,以圖像序列中Oneset幀為參考裁剪圖像。
用于人臉對齊的傳統度量是兩眼距離歸一化之后,點對點的歐幾里得距離,但如文獻[22]所指出,對于雙眼間距很小的輪廓人臉,該誤差度量是有偏差的。本文通過邊界框大小進行歸一化,使用公式(1)中的平均誤差定義作為人臉對齊的誤差評測。其中x表示給定人臉的真實特征點;y是對應的預測特征點;d由公式(2)得到,是真實邊界框高(h)和寬(w)乘積的平方根。
(1)
(2)
微表情最大的挑戰是臉部運動的幅度過小而難以區分。對齊的臉部區域在時序上的變化細節依然很難被人眼所觀察到,也很難被機器學習技術捕捉到這些微小變化。
為了增大不同微表情之間的區別,采用歐拉視頻放大方法[23]對微小的臉部運動進行放大處理,使得在時序上有明顯的肌肉運動變化。運動放大步驟如下:視頻幀分解為不同的拉普拉斯金字塔頻帶,然后用巴特沃斯濾波器提取感興趣的頻帶,最后不同的帶通信號乘以放大系數α添加到原始圖像。
基于運動的時序放大可由式(3)得到,I(x,t)是圖像在x位置和t時間的強度值,f(x)是視頻起始時刻在x位置的強度值,圖像中的區域塊經歷了平移運動,δ(t) 作為位移函數的觀測強度。假設一階泰勒展開中只考慮放大后的最強擾動,式(3)可以簡化為式(4),表明空間分布局部圖像f(x)在時間t的位置δ(t)已被放大到(1 + α)的量級。
(3)
I(x,t)≈f(x)+(1+α)δ(t),
(4)
(5)
文獻[23]中視頻放大包含動作放大和顏色放大兩種類型,本文采用動作放大,參數α是控制運動放大程度的參數,若太大會引入較大的臉部錯位和噪聲。根據公式(5)將放大系數固定在一個固定區間范圍內,空間波長λ取值為16,選取α值為20,選擇無限脈沖響應 (IIR) 濾波器作為時序濾波器。
本文采用微表情強度最強的Apex幀和初始Oneset幀來代表對應的微表情序列[24]。CASME Ⅱ數據庫[10]提供了Apex幀的序號,SMIC數據庫[8]未提供Apex幀序號,采用Liong的方法[13]來自動獲取對應的Apex幀。本文應用FlowNet 2.0來生成圖像對的光流特征,FlowNet 2.0的結果有著更清晰的物體邊緣,對運動偽影也具有較高的魯棒性[25],在許多視覺任務中得到了廣泛的應用。從Oneset幀和Apex幀獲得的光流場中提取出水平和垂直方向的信息,分別用u和v表示。再用u和v分別計算出光流強度和光流應變的大小,公式(6)中采用了L2距離計算光流強度m。
(6)
光流應變能計算面部的微小變化,能表達出運動變形的相對量[26],假設進行了很小的運動,光流應變強度可由公式(7)中的海森矩陣計算得到。
(7)
可將其簡化為
(8)
其中u為二維位移向量,u=[u+v]T,(εxx,εyy)是法向應變分量,(εxy,εyx)是切向應變分量。光流應變強度推導最終可由公式(9)得到:
(9)
深度殘差網絡[27]在圖像分類、語義分割等領域的應用中具有先進的性能,在不增加網絡復雜性的情況下,殘差網絡通過堆疊殘差模塊的方式來構建網絡,經典的殘差塊如圖3所示,以兩個3×3的卷積層為主,外加BN層和ReLu層,通過1×1卷積跨層直接連接,使得輸入x無損失地傳遞到更深層的網絡當中,將上一層或多層之前的輸出與本層的計算輸出相加,解決了傳統神經網絡中梯度彌散和網絡性能退化的問題。

圖3 ResNet殘差模塊Fig.3 Residual module
為了適應不同任務的特性,ResNet的結構也可以進行調整[28],本文對ResNet殘差模塊進行改進,融入了CBAM[29]的空間注意模塊,如圖4所示,來讓網絡從空間尺度學習目標“在哪里”。因卷積運算是通過跨通道和空間信息來提取特征的,為了計算空間注意特性,沿著殘差模塊的通道軸應用平均池化和最大池化操作,連接生成有效的特征描述符。再沿通道軸應用池化的操作能突出有效的信息區域[30]。該空間注意模塊可由式(10)計算,Sigmoid為Sigmoid激活函數。
C(x)=Sigmoid(Conv(avgPool(x),
maxPool(x)).
(10)

圖4 改進的ResNet殘差模塊Fig.4 Improved residual module
有不少研究[31-32]顯示了在淺層網絡一定條件下小數據集和不平衡的類別上的分類性能,與手工特征相比,顯示出很大的優越性,且減少網絡深度可以減少可學習的參數。受文獻[33]的啟發,本文選取兩個獨立的分支網絡Na和Nb,每個分支N由16個改進的ResNet殘差模塊c串行疊加組成,即
N={c1,c2,...,c16}.
(11)
通過訓練,這樣的網絡能夠關注到臉部的微表情區域。將以下兩組的光流特征組合圖各送入網絡Na和Nb中:水平光流場、垂直光流場和光流強度的組合(u,v,m),水平光流場、垂直光流場和和光流應變的組合(u,v,ε)。兩分支網絡輸出后的合并采用公式(12)的特征圖映射加法,來對時間-空間特征進行融合,網絡輸出之后連接的是全連接層和歸一化層。
C=Cna⊕Cnb.
(12)
自發微表情數據庫SMIC是最常見的基準數據庫[8],使用高速攝像機以100 fps拍攝,最短的視頻序列只有11幀長(持續時間約為0.11 s),平均幀長為 29幀(約0.30 s),SMIC數據集包含16 名參與者,共164個視頻,包含“負面”(70個),“正面”(51個)和“驚喜”(43個)3類。CASME Ⅱ[10]是一個綜合性自發微表情數據庫,包含 247個視頻樣本,包含來自亞洲的26名參與者。所有視頻均以200 fps拍攝,分辨率為 640×480,該數據庫中的視頻包含厭惡、壓抑、驚訝、高興、其他、害怕和悲傷7類微表情,因最后兩種表情樣本過少,本文只對前5種表情進行評測。
本文在公開的微表情數據庫SMIC和CASME Ⅱ上評測了所提出的識別算法,采用留一法交叉驗證。本文的實驗部分在NVIDIA GeForce RTX 2080Ti上進行,顯存為11 G。采用PyTorch深度學習框架和Adam優化器(β1=0.9,β2=0.999,ε=1e-8),最初始的學習率設置為1e-4,使用大小為16的batch size,共訓練了30個epochs。由于微表情數據集樣本量小且不平衡,在訓練中還進行了數據增強,包括水平翻轉和高斯模糊(5×5)?;煜仃嚱Y果如圖5和圖6所示。

圖5 SMIC的混淆矩陣Fig.5 Confusion matrix of SMIC

圖6 CASME Ⅱ的混淆矩陣圖6 Confusion matrix of CASME Ⅱ
表1是已有研究工作與本文算法的對比,包含了經典的傳統算法LBP-TOP和手工提取特征算法,以及最新的深度學習算法。除最常使用的準確率以外,還增加了同時考慮查準率和查全率的F1指數對算法進行評價。基于SMIC和CASME Ⅱ兩個數據集,本文方法的準確率和F1指數均優于大多數算法。

表1 不同算法識別準確率和F1指數比較Tab.1 Comparison of recognition accuracy and F1-score of different algorithms
為了探索本文模型在“看哪里”及如何進行識別分類的,本文應用梯度加權類激活映射Grad-CAM技術[38]對雙分支網絡最后卷積層合并后的激活強度進行可視化顯示,模型映射后以熱圖的方式展現,熱圖有助于直觀地解釋和分析網絡所激活的臉部位置以及網絡的運行機制,圖7是CASME Ⅱ所激發的與具體的表情類別相關的面部區域,通過最后雙分支各自的激活值相加得到。表明本文模型是能夠從表情密切對應的區域學習特征的。根據Ekman于1978年開發的面部動作編碼系統[39],可以看到熱圖的臉部運動單元(action unit, AU)與表情面部動作編碼是對應和一致的,見表2。特別能看到在壓抑表情中,嘴唇兩側的凹陷具有很強的網絡激活;在厭惡表情中,眉毛的小幅度提升運動也被本文識別算法檢測到。

圖7 雙分支網絡激活圖可視化Fig.7 Visualization of two-branch network activations

表2 表情類別與對應的AU組合
本文提出了一種微表情的識別方法,利用先進的人臉對齊網絡和歐拉視頻放大技術對視頻序列進行預處理,之后抽取Oneset幀和Apex幀得到對應視頻的光流特征,相同結構的分支網絡對光流特征圖的輸入進行進一步的特征提取之后,輸出表情的分類標簽。所提出算法在公開數據庫中的性能優于大多數現有的方法,最后激活熱力圖提供了定性驗證,也表明所提出網絡架構的合理性。已有數據庫的情緒標注是自我評估所產生的,與真實表情標簽有一定的誤差性。本文下一步工作可以在已有模型基礎上驗證標簽誤差對性能的影響,此外,數據庫中不同的微表情可能共享相同的一組臉部運動單元,其如何定性決定表情類別需進行進一步的研究。最后,微表情數據集的大小影響分類性能,可以在本文數據增強的基礎上進行更有效的數據增廣。