孔慧芳, 錢世超, 閆嘉鵬
(合肥工業(yè)大學 電氣與自動化工程學院,安徽 合肥 230009)
微表情是短而不自覺的面部表情,可以在不知不覺中反映出人的內(nèi)心情緒[1]。因為有助于理解內(nèi)心自發(fā)情緒,微表情研究已在刑偵和商務(wù)談判等領(lǐng)域中發(fā)揮重要作用。關(guān)于微表情的首次報道出現(xiàn)在1960年的心理學文獻中,后續(xù)研究逐漸增多[2-3]。文獻[4]開發(fā)了微表情訓練工具(Micro-Expression Training Tool,METT),它可以幫助人們檢測微表情。近年來,計算機視覺技術(shù)和機器學習算法開始應(yīng)用到這個領(lǐng)域,這些方法使用手工特征描述子,如局部二值模式 (Local Binary Pattern,LBP)[5]、方向梯度直方圖(Histogram of Oriented Gridients,HOG)[6]等來提取特征。文獻[7]提出一個識別自發(fā)面部微表情的框架,并利用三正交面局部二值模式(Local Binary Patterns from Three Orthogonal Planes, LBP-TOP)描述子來處理動態(tài)特征;文獻[8]使用六交點局部二值模式(Local Binary Patterns with Six Intersection Points,LBP-SIP);文獻[9]使用了時空完成局部量化模式(Spatiotemporal Completed Local Quantized Patterns,STCLQP),這些研究都極大促進了微表情研究,但是手工提取的特征表達能力有限,限制了采用手工特征的面部微表情識別系統(tǒng)的性能[10]。
深度卷積神經(jīng)網(wǎng)絡(luò)能夠自動提取層次特征的特性使其在許多機器學習應(yīng)用領(lǐng)域正變得越來越廣泛。訓練深度卷積神經(jīng)網(wǎng)絡(luò)時需要大量數(shù)據(jù),但由于微表情圖像采集難度大,導致微表情識別模型訓練數(shù)據(jù)不足,常采用遷移學習方法將已訓練好的模型參數(shù)遷移到新的模型來幫助新模型訓練[11]。另外目前對微表情識別的研究主要集中在“中性”、“幸?!?、“驚喜”、“恐懼”、“厭惡”、“悲傷”、“壓抑”等7個微表情,其中部分微表情區(qū)別不明顯,各類別的標注難度不一,造成了數(shù)據(jù)集的類別不均衡[12]。文獻[13]探索了深度學習在微表情識別任務(wù)中的應(yīng)用,并提出了一個特征選擇框架來區(qū)分提取的特征;文獻[14]提出一種通過學習具有表達狀態(tài)約束的時空特征表示來識別微表情的方法。
本文引入預(yù)訓練網(wǎng)絡(luò)人臉識別模型VGGFace[15]遷移先驗的人臉識別領(lǐng)域知識,即采用VGGFace作為特征提取器從原始圖像中提取初級特征,并結(jié)合遷移學習方法和數(shù)據(jù)增強技術(shù)在一定程度上減輕數(shù)據(jù)不足的影響。文獻[16]發(fā)現(xiàn)在訓練中情緒類別不平衡增加了模型預(yù)測較大比例類別的傾向;文獻[17]首次對微表情識別領(lǐng)域的類別不平衡問題作了研究。類別不平衡也是現(xiàn)有微表情數(shù)據(jù)集的常見缺陷,是影響微表情識別的不利因素。為此,本文引入聚焦損失函數(shù)(Focal Loss,FL)[18]作為目標函數(shù)來解決類別不均衡問題。
本文在CASME II微表情數(shù)據(jù)集[19]上進行的對比實驗表明,該方法在類別不平衡處理方面優(yōu)于傳統(tǒng)的微表情識別方法,準確率可達到45.06%,而F1值達到34.57%。
本文研究主要包括以下3點:① 使用端到端的深度卷積神經(jīng)網(wǎng)絡(luò)自動提取特征;② 將人臉識別領(lǐng)域的知識遷移到表情識別領(lǐng)域,以緩解數(shù)據(jù)不足問題;③ 引入FL作為目標函數(shù)來應(yīng)對類別不平衡問題。
本文提出的微表情識別模型總體結(jié)構(gòu)如圖1所示,模型由預(yù)處理、特征提取、分類3個部分組成。
圖1 微表情識別模型總體結(jié)構(gòu)
對人臉數(shù)據(jù)預(yù)處理就是在去除背景、頭發(fā)、衣服等干擾信息的同時,捕獲感興趣的人臉區(qū)域進行人臉歸一化。人臉歸一化包括人臉檢測、人臉裁剪、人臉對齊。
首先采用OpenCV[20]內(nèi)置Haar級聯(lián)檢測器[21]檢測和裁剪感興趣的面部區(qū)域;然后利用Dlib庫[22]提取用來定位和表示臉部區(qū)域的面部關(guān)鍵點[23],如眼睛、眉毛、鼻子、嘴巴、下頜線等?;谶@些面部關(guān)鍵點,可以確定基本特征點;最后通過計算人眼質(zhì)心之間的角度進行人臉比對,應(yīng)用仿射變換完成頭部姿態(tài)校正。
完成上述工作后,將所處理圖像裁剪為224×224像素,完成幾何歸一化;然后歸一化灰度,提高圖像的亮度,使圖像細節(jié)更清晰,減少光和強度的影響。
本文使用從大型人臉數(shù)據(jù)集訓練得到的人臉識別模型VGGFace作為原域,微表情識別作為目標域,考慮到兩者數(shù)據(jù)和任務(wù)的相關(guān)性,通過遷移學習將已經(jīng)學到的模型參數(shù)分享給新模型從而加快并優(yōu)化模型的學習效率[24]。人臉識別中提取的初級特征與面部表情識別提取的初級特征相似,利用VGGFace作為特征提取器與分類器相結(jié)合,通過對模型最后一層微調(diào)實現(xiàn)微表情分類。各層參數(shù)設(shè)置見表1所列。
表1 遷移結(jié)構(gòu)參數(shù)設(shè)置
模型由5個卷積塊組成,每個卷積塊包括2~3個卷積層、1個ReLU函數(shù)激活單元、1個池化層、3個全連接層及1個softmax層,對“幸?!?、“驚喜”、“厭惡”、“壓抑”、 “其他”等5種情緒進行分類,簡稱“5分類”。為抑制過擬合,在最后一個全連接層后引入Dropout層[25],比值設(shè)為0.3。另外,VGGFace的最后一個輸出層被替換為5分類的softmax分類層,并加上L2正則化,比率設(shè)置為0.01。訓練時凍結(jié)Input-1層至FC8層,設(shè)置學習率為0,模型需要擬合的所有參數(shù)都在最后兩層之間。測試時使用留一交叉驗證法,最后訓練得到26個不同模型。
本文引入FL提升模型的多類別分類性能。FL起源為二值分類的目標函數(shù)交叉熵 (cross-entropy,CE) 損失函數(shù),針對解決目標檢測場景下訓練集中前景類和背景類類別不均衡的問題,通過配置權(quán)重因子和調(diào)制參數(shù)取得了分類性能的有效提升,本文在處理微表情多分類時將FL從2類分類擴展到多類分類,緩解微表情識別中的類別不均衡問題。
多分類情況下,CE損失函數(shù)定義為:
CE(p,y)=
(1)
(2)
其中,α為當前樣本屬于類別i的權(quán)重因子,1-α為當前樣本不屬于類別i的權(quán)重因子;γ為調(diào)制參數(shù),用于分配對于易分和難分樣本的注意力。
CASME II數(shù)據(jù)集由中國科學院心理研究所在CASME數(shù)據(jù)集[26]基礎(chǔ)上改進得到,采樣率為200 幀/s,分辨率為280×340像素。數(shù)據(jù)集包含了從2 500多個面部表情中選出的247個自發(fā)的面部微表情,共分為以下5類微表情(括號中數(shù)字為樣本數(shù)):“幸?!?32)、“驚喜”(25)、“厭惡”(64)、“壓抑”(27)及“其他”(99)。實驗中去除樣本數(shù)過少的2個類別,即“恐懼”(2)和“悲傷”(7)。
數(shù)據(jù)集記錄了26位參與者的面部微表情,從微表情樣本數(shù)統(tǒng)計結(jié)果可以看出,“其他”的數(shù)量幾乎是整個數(shù)據(jù)庫統(tǒng)計中“驚喜”、“幸?!奔啊皦阂帧钡目偤汀?6個采集對象面部微表情組成分布如圖3所示。
從圖3可以看出,各采集對象含有的類別種類和數(shù)量差異較大,這樣的不均衡分布在留一交叉驗證時產(chǎn)生的不利影響尤為明顯。
圖2 CASME II數(shù)據(jù)集中26個采集對象面部微表情類別數(shù)量分布
實驗預(yù)處理部分使用OpenCV、Dlib庫及基于圖形處理單元(graphics processing unit,GPU)的框架Keras(使用Tensorflow[27]后端)完成。所有實驗都是使用AMD Ryzen 1700、Nvidia GTX 1070 CUDA及8 GiB的GPU。實驗環(huán)境為Linux Ubuntu 16.04 LTS、NVIDIA CUDA框架9.0及cuDNN 8.0庫。
原始圖像大小為224×224,將每個樣本均值預(yù)處理為0后送入模型,經(jīng)過卷積、池化、全連接層處理,最后對分類輸出層進行處理。初始學習率設(shè)為0.000 5,每批次包含32張圖片。為防止訓練集和測試集中含有同一個對象的數(shù)據(jù),本文采用留一交叉驗證法,即將每個對象分別作為測試集。對于CASME II數(shù)據(jù)集,共進行了26個訓練-測試過程。
衡量分類器對每個類別的性能時,通常使用F1值(F1-score)、準確率(P)及召回率(R)[26]。文獻[17]研究了微表情數(shù)據(jù)集的類別不平衡性,指出由于分類器很難從數(shù)量較少的類中較好地擬合參數(shù),準確性指標可能高度傾向于具有更多數(shù)量的類別,因此,F1值更能全面衡量分類器的性能。
F1值、P、R的定義分別為:
(3)
(4)
(5)
其中,tp、fp、fn分別為真陽性、假陽性、假陰性的個數(shù)。
分類器總體性能通過對所有類取平均值計算。另外,由混淆矩陣得到的預(yù)測精度也是衡量分類器性能的一個很好的指標。
使用留一交叉驗證法處理從視頻序列中提取的圖像幀,進行5種方法的對比實驗。
實驗1使用手工設(shè)置的LBP-TOP描述子提取特征,結(jié)合AdaBoost分類器[25]。
實驗2首先使用手工設(shè)置的LBP-TOP描述子提取特征,然后結(jié)合AdaBoost分類器和選擇遷移狀態(tài)機(Selective Transfer Machine, STM)[25]。
實驗3使用時域插值模型(temporal interpolation model, TIM)[25]提取時域特征,使用LBP-TOP提取空間特征,結(jié)合AdaBoost和STM。
實驗4在對VGGFace進行遷移的基礎(chǔ)上使用CE作為目標函數(shù)。
實驗5本文提出的基于端到端的方法,聯(lián)合應(yīng)用VGGFace與FL。
5種方法對比實驗結(jié)果見表2所列。實驗1、實驗2得到準確率和F1值的最佳結(jié)果分別為39.45%、26.09%,實驗3考慮時域特征后準確率和F1值分別為43.78%、33.37%;實驗4在不考慮時域特征的情況下遷移VGGFace的應(yīng)用使準確率和F1值比實驗1均提高了2%;實驗5中不考慮時域特征,遷移VGGFace和FL的聯(lián)合應(yīng)用使準確率和F1值比實驗1分別提高了6%、8%,比實驗3分別提高了2%、1%,獲得了更好的性能,并且端到端的方法相對于手工提取特征過程更簡潔。
表2 使用留一交叉驗證法的對比實驗結(jié)果 %
另外,實驗4只將準確率提升到了41.51%,而F1值的提升也不明顯,這是由于CE對所有類的權(quán)重是一樣的,造成數(shù)量較少的類不能很好地學習。而實驗5中VGGFace與FL的結(jié)合使用提高了準確率和F1值,這是由于FL對數(shù)量較少而難以區(qū)分的類別增加了更多的權(quán)重,使分類器可以更好地學習到較少的類別。
實驗4、實驗5的平均混淆矩陣分別見表3、表4所列。
表3 實驗4使用CE損失函數(shù)得到的混淆矩陣 %
表4 實驗5使用FL得到的混淆矩陣 %
在這2個實驗中,由于“其他”的樣本數(shù)較多,其獲得的預(yù)測精度較高,實驗5為63.56%,與實驗4的60.69%相比提升了近3%。由于“厭惡”、“壓抑”及“驚喜”的樣本數(shù)較少,在一定程度上更難區(qū)分,實驗5通過FL改善了預(yù)測精度;尤其是樣本數(shù)最少的類“驚喜”效果最好,在實驗5中的精度與實驗4的20.57%相比提高了9%。由此可以看出,在微表情識別中,FL可以在不平衡的數(shù)據(jù)集上獲得更好的性能。
本文以VGGFace作為特征提取器,利用端到端的深度卷積神經(jīng)網(wǎng)絡(luò)進行微表情識別,引入FL來解決微表情識別領(lǐng)域常見的類別不均衡問題;在CASME II數(shù)據(jù)集上進行了對比實驗,驗證了深度卷積神經(jīng)網(wǎng)絡(luò)自動提取特征的有效性。實驗結(jié)果表明,本文方法提高了微表情識別準確率和F1值,取得了分類性能的提升。