涂 亮 , 劉本永
(1.貴州大學大數據與信息工程學院,貴州 貴陽550025;2.貴州大學智能信息處理研究所,貴州 貴陽 550025)
表情作為一種有效的非語言交流媒介,是傳播人類情感信息與協調人際關系的重要方式。近年來,人臉表情的研究范疇下又細化出了一個分支——微表情。與傳統的宏觀表情不同,微表情是一種非常短暫的、自發式的面部表情,持續時間僅為1/25~1/5 s[1]。 1966年,Haggard等[2]首次發現并提出了微表情概念。之后,Ekman等[3]在分析一段心理醫生與抑郁癥病人的對話視頻時偶然發現了微表情。微表情能夠揭示人們試圖抑制的真實情感,為情感分析和謊言檢測提供了重要線索,在國防、刑偵、醫學、教育和商業等多個領域具有廣闊的應用前景[4]。
早期對于微表情的研究多從心理層面入手,測量或訓練個體的識別能力[5],但這種依賴肉眼的甄別方式費時、費力且可靠性低。微表情具有持續時間短和運動微小的特點,識別困難。近年來,人工智能的快速發展使微表情的自動識別成為可能,許多學者在這方面取得了一定的研究成果。Polikovsky等[6]將人臉劃分為若干區域,使用3D梯度直方圖描述各個區域隨時間的運動特征,依靠聚類確定微表情起始、頂點和消逝三個階段。Shreve等[7-8]從時空應變的角度展現臉部微表情變化的程度。Pfister等[9]使用時間插值模型歸一化樣本,用時空局部紋理描述子表征微表情隨時間的變化。Wang等提出基于判別張量子空間分析的特征提取算法,在極端學習機中識別差異特征[10-11]。Peng等[12]提出一種稱為雙時間尺度卷積神經網絡(DTSCNN)的雙流模型,即應用不同的流用來適應微表情視頻剪輯的不同幀率,并采用光流豐富數據特征。
對于傳統人工特征方法,研究者很少關注人臉的精確對齊對微表情識別的影響。其中,要么假設所需的人臉已經精確對齊,要么比較依賴現有的人臉對齊算法,如主動形狀模型(Active Shape Models,ASM)算法[13]。此外,現有的大多數方法都利用紋理特征來識別微表情,如Gabor濾波和時空局部紋理描述子,但這些特征并不容易直觀地理解微表情。而基于深度學習的方法,雖然識別率上有所提高,但需要大量的樣本,且模型訓練比較復雜。
為了解決這些問題,Xu等[14]以光流場為描述微表情運動模式的基礎特征,進一步精簡表達形式,提出了面部動力譜特征(Facial Dynamics Map,FDM)。該算法能較好地捕捉細微的表情運動,為微表情提供直觀有效的理解。同時,FDM算法把光流場進一步分割成小的時空立方體,在每個時空立方體中使用一種迭代算法抽取其主方向。該算法雖然能相對精確地找出時空立方體主方向,但復雜度高。
本文主要針對FDM方法中上述迭代算法的復雜性問題,采用PCA算法進行改進。由于它無需考慮迭代次數和是否收斂,成倍提升了算法的執行效率。
如圖1所示,基于FDM的微表情識別的一般過程為:檢測人臉的關鍵點;通過粗略對齊,檢測并剪裁出人臉的區域;利用光流估計計算像素點運動;采用一維直方圖統計實現光流場的精細化對齊,并描述不同尺度下的FDM特征;利用FDM特征和分類器進行微表情識別。由于微表情具有持續時間短和運動微小的特點,臉部精細化對齊顯得尤為重要,而特征的描述也是準確識別的關鍵。

圖1 人臉動態識別過程流程
由于微表情涉及的面部肌肉較少,因此可以假設相鄰幀中大部分面部區域保持不動。為了實現精細化對齊,需要抽取相鄰兩幀間的稠密光流場 (Ut,Vt),去除面部共同平移造成的誤差[15]。具體地,定義誤差為:

其中Ut和Vt分別是第t幀圖像和第t+1幀圖像之間光流場的水平分量和垂直分量。Φ(X)表示矩陣X中零元素的個數,I是全1矩陣。即要尋找水平和垂直方向的修正量,使得修正后的光流場矩陣中的大多數元素的值為0,這是基于相鄰幀大部分面部區域保持不動的假設。為了解決這一優化問題,文獻[14]采用一維直方圖統計方法找到出現頻率最高的值,即為水平和垂直方向的修正量。
將光流場進行精細化對齊后,需要描述特征提取FDM特征。因為面部表情是通過面部肌肉的運動產生的,所以可以做出兩個合理假設:(1)當觀察區域足夠小時,面部表面在大致相同的空間方向上移動;(2)當觀察時間足夠短時,面部表面在大致相同的時間方向上移動。
考慮以上假設,當時空立方體相當小時,同一立方體中運動向量應大致處于相同方向。盡管光流估計會出現異常運動向量,但大部分被正確估計的運動向量具有相近的方向,從而可將光流場進一步分割成小的時空立方體,并使用迭代算法尋找主方向。用ωi,j表示立方體中i、j坐標處光流的運動向量,則主方向可由式(2)確定:

其中ωi,j取自τ個候選向量{ωti,j}τt=1,τ是時空立方體中的幀數。式(2)的目的是要找一個二維的方向向量ξ來描述時空立方體中最明顯的運動。當ξ的長度固定時,ξ與ωi,j方向越接近,內積越大。但是,上述目標方程需要遍歷所有的可能性,計算代價太大,因而采用迭代算法進行計算。
由于FDM中迭代算法復雜度高,在特征提取階段,本文針對迭代算法進行改進,以提升FDM算法的效率。
PCA是一種非監督學習算法,常被用來進行數據降維、有損數據壓縮、特征抽取和數據可視化[16]等。PCA的主要目的是通過分析發現數據的模式來縮減維度,以此去除冗余數據并降低計算復雜度。這個過程的原則是使信息損失最小化。簡單說,就是將數據從原始空間轉換到新的特征空間,尋找出使數據方差都盡可能大的坐標軸。
PCA可以從兩個等價視角進行解釋:最大方 差[17]和最小重構誤差[18]。這兩種視角都希望找到一組正交投影,把原始數據投影到低維的線性子空間。但是,最大方差視角是希望數據投影后在投影方向上有最大方差,而最小重構誤差視角是希望投影后的數據和原數據之間的均方差最小。
本文提出利用PCA算法對FDM算法進行改進,即用PCA算法替代FDM中的迭代算法,抽取時空立方體主方向。以光流場的一個時空立方體中數據為例,數據和PCA特征向量的關系如圖2所示。

圖2 時空立方體中數據和特征向量的關系
圖2中,ω表示時空立方體中一個像素點處光流的運動向量,u1是最大特征值對應的特征向量,u2是第二個特征值對應的特征向量。一般情況下,PCA用來對高維數據進行降維,但這里是要找時空立方體主方向,不需要對數據降維。也就是說,不需要將數據投影到新的特征空間,只需求出PCA的第一主成分,即最大特征值對應的特征向量,也就是時空立方體的主方向。
作為無監督學習算法,PCA完全無參數限制,計算過程不需要人為的設定參數或是根據經驗模型干預計算,最后結果只與數據相關,與用戶是獨立的。因此,在尋找主方向時,它不受其他參數的影響,只與數據本身有關。而迭代算法則與時間多樣性、迭代次數和主方向向量是否收斂等有關。
本實驗采用芬蘭Oulu大學2011年發布的數據庫SMIC[9]作為實驗樣本。該數據庫包含6個受試者的152段微表情連續的圖像序列,這些圖像序列是從通過短片誘發形式采集的視頻中抽取獲得的。用Si表示第i個受試者。SMIC數據庫中不同受試者在不同類別下的樣本數如表1所示。

表1 不同受試者在不同類別下的樣本數
先對圖像序列作粗對齊、剪裁等預處理。提取特征后,采用SVM作為分類器。核函數使用徑向基核函數,SVM分類器中的參數利用網格搜索方 法[19]進行估計。
由于數據庫中圖像序列的長度不一致,因此對每個圖像序列進行等間隔采樣,抽取10幀圖片進行實驗。根據文獻[14],將光流場按(n×m,τ)的結構劃分成小的時空立方體。其中,n×m表示光流場的空間劃分,即每幀光流劃分的區域數,取值為16×16;τ表示光流場的時間劃分,即時空立方體包含的光流幀數。實驗中算法的評價準則為識別率和計算時間。
本實驗采用留一樣本評估方法進行交叉驗證,即一個受試者作為測試樣本,剩余5個受試者作為訓練樣本。用T表示測試樣本,T=1代表用第一個受試者作為測試樣本。同時,采用libsvm[19]自帶的n-fold交叉檢驗模式作為參照。該模式隨機地將數據剖分為n個部分,并計算交叉檢驗的平均識別率,此處n取值為6。由表1可知,SMIC數據庫分為識別數據集和分類數據集。識別數據集包含微表情和非微表情,分類數據集包含積極表情和消極表情。在兩個數據集下,微表情識別率如表2和 表3所示。

表2 識別數據集下微表情的識別精度

表3 分類數據集下微表情的識別精度
表2、表3的結果表明,在識別數據集下,原算法的識別率要高于改進算法;而在分類數據集下,改進算法的識別率比原算法高。這說明在尋找主方向時,迭代算法要比PCA算法更精準。從表2中T=5、T=6與其他取值的對比可以看出,用測試樣本相對較少的受試者進行測試,即訓練樣本較多時,識別率越高。這說明訓練樣本越多,模型訓練越充分,分類器的泛化能力越強。但是,訓練樣本過多,會導致模型的訓練時間過長,不利于實時性要求。
算法的精確度需要犧牲算法的學習時間,兩者難以兼顧。雖然改進算法在識別率上比原算法低,但算法效率更優。以兩個數據集的前12個樣本為例,PCA算法和迭代算法在計算時間上的對比,如圖3和圖4所示。

圖3 識別數據集下主方向的計算時間

圖4 分類數據集下主方向的計算時間
從圖3、圖4可以看出,迭代算法的計算時間遠遠長于PCA算法,時間成本高。分析算法的復雜度可知,PCA算法的時間復雜度為O(p2N+p3),p為光流向量的維度,且p=2。因為p的值較小可忽略不計,故PCA算法的時間復雜度約為O(N),而迭代算法的時間復雜度為O(Nτ+1)。其中N為時空立方體中光流向量的個數,τ為光流場的時間劃分,最小取值為2,否則時空立方體就退化為單幀的光流,本實驗中τ取值為3。顯然,迭代算法的計算復雜度遠比PCA算法高。綜上所述,改進算法在識別率上與原算法相近,但效率顯著提高。
微表情識別是近幾年人工智能領域比較熱門的課題,由于微表情具有持續時間短和運動微小的特點,識別難度較大。本文從微表情的特征提取環節入手,針對現有尋找時空立方體主方向的基于光流特征的FDM算法時間成本高的缺陷,探討了基于PCA的改進算法。在相同的實驗條件下,改進算法與原算法識別率相近,但運行速度遠快于原算法。
FDM算法能很好地表達微表情的運動,易于可視化,便于深層次理解微表情。但是,除了尋找時空立方體主方向的計算時間長,稠密光流場的計算時間也較長,不適合作實時性的微表情識別。在后續微表情研究中,應考慮從提高識別率和降低時間成本兩方面入手,研究如何提升像素級運動的估計效率,實現實時性、大規模的微表情識別。