何 宏,陳叔達
1(上海理工大學 醫療器械與食品學院,上海 200093) 2(上海師范大學 信息與機電工程學院,上海 200234)
面部表情能夠很好的表達人類的心理活動[1],已經成為計算機領域重要的研究課題之一,其中面部特征提取常見的有局部二值模式(Local binary pattern,LBP)[2,3]、方向梯度直方圖(Histogram of Oriented Gradient,HOG)[4]、尺度不變特征變換(Scale-invariant feature transform,SIFT)[5]方法,來獲取圖片形狀和紋理上的特征,傳統的分類方法包括支持向量機(Support Vector Machine,SVM)[6]、K最近鄰(K-NearestNeighbor,KNN)[7]、隨機森林(Random Forest,RForest)[8]等.傳統機器學習方法,特征提取在一定程度的破壞原始圖像的完整性,缺乏整體圖像多樣性,此外提取特征比較復雜,有遮擋和陰影的情況下識別效果不如基于卷積神經網絡方法[9].
從2013年來深度學習方法開始應用于面部表情識別,Matsugu等人[10]采用卷積神經網絡(Convolutional Neural Networks,CNN)解決面部表情中的圖片的平移和旋轉不變性問題以及主觀獨立性問題.對抗神經網絡(Generative Adversarial Networks,GAN)于2014年由Goodfellow等人[11]首次引入,,采用不同的姿態和表情進行面部圖像合成擴充訓練集,提高了模型的準確度.深度學習方法大多是一種端到端的模型,主要是基于卷積神經網絡對圖像進行分類以及對抗神經網絡用于增強樣本多樣性.采用卷積神經網絡能取得較好的識別效果,構造更深更寬的網絡結構能有效提高模型的識別率,其中也存在超參數多,學習過程慢,數據容易丟失以及需要大樣本訓練等缺點[12].
為了克服深度神經網絡和傳統機器學習方法的缺點,近幾年提出一種基于決策樹集成方法多粒度級聯森林(multi-Grained Cascade Forest,gcForest)[8].深度神經網絡需要超調參多,依賴于大樣本,相比之下gcForest參數少,而且適用于小樣本學習[8],如手勢識別[13]、圖像分析[14]、基因序列分析[15,16].不僅如此作為一種基于樹的方法,gcForest在理論分析方面強于深度神經網絡,可解釋性強[8].但是gcForest也有自身的不足,多粒度掃描部分會產生大量子樣本非常占用內存,并且容易產生特征冗余.因此本文提出了一種深度卷積級聯森林的分類識別方法(Deep Convolution Cascade Forest,DCCF),該方法借鑒了深層神經網絡的表示學習,同時采用以隨機森林為基礎的結構識別特征,主要依賴于對原始特征的逐層處理來提高面部表情識別準確率.
本文通過綜述人臉表情識別的方法,首先闡述了深度卷積級聯森林方法的原理,然后針對3個面部表情公開數據集進行了分析,比較了5種特征提取方法、7種分類方法和本文提出的算法.最后總結了實驗結果和該領域未來的挑戰和機遇.
大多數基于卷積神經網絡的面部表情識別方法都使用softmax層目標來學習較低級別的參數[17,18].在本文中,使用級聯森林結構替代深層神經網絡中softmax層進行分類.采用隨機梯度下降和多分類交叉熵損失函數來訓練網絡,提取到的特征經過全連接層得到的特征向量輸入到級聯森林得到最終的結果.所以該方法分成兩部分,首先CNN提取面部表情特征,其次經過級聯森林的分類,整體框圖如圖1所示.

圖1 深度卷積級聯模型結構圖Fig.1 DCCF model structure

本文中的CNN結構結合Compact CNN[19]和Inception網絡[20]的思想,整體結構是5個卷積層、2個最大池化層何兩個全連接層.首先第一個卷積層為1*1的卷積核32個濾波器,采用1*1的卷積核主要是用于降維,加入非線性的操作和增加網絡深度.其次在全連接層1024個輸出神經元,dropout設為0.5,有助于解決過擬合的問題.該模型由兩個卷積塊和兩個池化層組成,然后是兩個全連接層.使用PReLU作為激活函數,由于PReLU只增加了極少量的參數,降低了計算量和過擬合的危險性,CNN具體結構如表1所示.

表1 CNN網絡結構表Table 1 CNN network structure
該模型中輸入圖片首先經過卷積層公式如下:
(1)

(2)
其次經過池化層由下面公式給出:
(3)

2.2.1 CART決策樹
CART(Classification and Regression Tree)決策樹算法[21]使用基尼系數來代替信息增益比,基尼系數代表了模型的不純度,基尼系數越小,不純度越低,特征越好.這和信息增益(比)相反.假定當前樣本集合D中第K類樣本所占的比例為Pk(k=1,2,…,|y|),則數據集D的純度可用基尼值來度量:
(4)
從數據集D中隨機選擇不同的兩個測試樣本,其中樣本標簽不同的概率稱為Gini(D),所以Gini(D)越小表示數據集純度越高.
設離散屬性a為{a1,a2,…,aV},v表示用離散屬性a對數據集進行劃分產生的分支節點,DV表示第v個分支節點中離散屬性值為aV的樣本.則屬性a的基尼指數定義為:
(5)
選擇劃分后Gini_index(D,a)最小的作為最優劃分屬性,其中A表示候選屬性集合,如公式(6)所示.
(6)
2.2.2 級聯森林
級聯森林結構(Cascade forest)如圖1所示,設級聯森林為i層,每一層由兩種森林組成,分別為2個完全隨機森林(Forest A)和2個普通隨機森林(Forest B).由CNN提取的初始特征為fx,經過第i層級聯森林得到特征向量,如公式(7)所示.
(7)


由于級聯森林是由隨機森林組成,然而隨機森林又是以決策樹為最小單元構建而成.對于K類面部情緒識別,每個樣本都會根據一定的路徑在每棵樹中找到自己對應的葉節點,然后計算產生的類向量的平均值和最大值得到最終的預測類別標簽Final(P).
(8)
(9)
(10)
為了驗證實驗,本文選用3個面部表情公開數據集.日本女性面部表情數據集(The Japanese Female Facial Expression,JAFFE),這個表情庫有213幅表情圖像,表情庫中包含7種表情一共取自10名日本女性,分別是憤怒、厭惡、恐懼、高興、悲傷、驚訝和自然[22].
Cohn Kanade(CK+)[23]數據庫是用于評價FER系統的最廣泛的實驗室控制數據庫.CK+包含來自123名受試者的593個視頻序列.序列變化持續時間從10幀-60幀,并顯示從中性面部表情到峰值表情的轉變.基于面部行動分為憤怒、蔑視、厭惡、恐懼、高興、悲傷和驚訝.
Kaggle面部表情識別挑戰賽的數據庫Fer2013[24]共有35887張人臉圖像,28709張圖像用作訓練,3589張圖像作驗證集,3589張圖像作測試集,每張人臉的像素大小為48×48的圖像.包括憤怒、厭惡、恐懼、高興、悲傷、驚訝以及自然7種面部表情,數據集詳細說明如表2所示.
面部表情分類的驗證指標采用精確率、靈敏度、特指度、負性預測值和準確率5個指標來衡量分類結果,首先True Positives(TP,正類判定為正類),False Positives(FP,負類判定為正類),False Negatives(FN,正類判定為負類),True Negatives(TN,負類判定為負類).
1)準確率(Accuracy):所有預測正確的占總的比重.
(11)
2)精確率(Precision/TPR):所有被預測為正的樣本中實際為正的樣本的概率.
(12)
3)召回率(Recall):正確預測為正的樣本數的占全部實際為正的樣本數的比值.
(13)
4)F1值(F1-score):為算數平均數除以幾何平均數,且越大越好,當F1值較小的時候,True Positive相對增加,而False相對減少,Recall相對增加.
(14)
為了全面比較的方法采用分類方法比較和提取表情特征比較,分類方法有決策樹(DTree)[25]、K最近鄰(KNN)、貝葉斯(Bayes)[26]、隨機森林(RForest)、支持向量機(SVM)[27]、級聯森林(CForest)和Softmax.特征提取方法采用了傳統的特征提取有LBP、HOG、SIFT和深度提取特征方法多粒度掃描(Mg_scanning)和CNN提取特征(CNN_feature),比較特征提取特征和分類中最適合進行面部表情識別的方法,最后比較gcForest和CNN方法.
實驗設備主要采用的是I7處理器,RXT2060,運行內存6G,采用python3.5軟件平臺.首先從3個數據集進行分析,JAFFE,CK+和Fer2013 3個數據集規模依次遞增,JAFFE有213張圖片,CK+有981張圖片,Fer2013有35886張圖片.分別從傳統機器學習方法和深度神經網絡方法,傳統特征提取和深度特征提取兩方面去分析面部表情問題.
JAFFE數據集中一共213個樣本,測試樣本取70個樣本,其中7種表情各10張測試集.如圖2所示,一共4個評價指標(a,b,c,d),一共7種分類方法和5種特征.首先明確的看出CNN_Feature提取特征均優于其它方法,其中準確率最高的是CNN_Feature和CForest分類達到91.43%,其次召回率、精確率和F1-score最高分別為80.94% 、80.04%和80.2%.

圖2 JAFFE數據集實驗結果Fig.2 JAFFE dataset experimental results
CK+由于沒有提供指定的訓練、驗證和測試集,在這個數據庫上評估的算法是不一致的.對于基于靜態的方法,最常見的數據選擇方法是提取最后1-3幀的峰值形成和第1幀.選取45% (442張圖片)作為測試集.實驗結果如圖3所示,CK+數據集的4個評價指標最高的為CNN_Feature和CForest分類達到了準確率98.77%、精確率87.28%、召回率87.15和F1-score為87.22%.

圖3 CK+數據集實驗結果Fig.3 CK+ dataset experimental results

圖4 Fer2013數據集實驗結果Fig.4 Fer2013 dataset experimental results
Fer2013數據集已經給出了測試集和訓練集,FER2013包含28709張訓練集,3589張測試集,實驗結果如圖4所示,在整體識別率下降的情況下,CNN_Feature提取特征和CForest分類仍有不錯的結果,4個指標分別準確率為71.45%、精確率為68.43%、召回率為66.25%和F1-score為67.86%.

圖5 特征提取方法實驗結果Fig.5 Feature extraction method experimental results
為了進一步分析特征提取和分類方法,綜合3個公開數據集的面部表情特征提取方法如圖5所示,7種分類方法一定的情況下,采用5種特征提取方法求得的平均值.比較明顯的看出CNN_Feature具有非常大的優勢,其中在CK+數據集中,平均準確率達到了最高的97.32%,其余3個指標均為最高.分類方法的比較如圖6 所示,5種特征提取方法一定的前提下,7種分類方法的平均指標.其中級聯森林(CForest)的平均準確率在3個數據集上均取得了最高的平均準確率為84.46%,96.66%,42.35%,其它3個指標均達到最高.

圖6 分類方法實驗結果Fig.6 Classification methods experimental results
gcForest、CNN和DCCF方法在分類指標和運行時間上進行對比,實驗數據如表3所示.DCCF在3個公開數據集上準確率是最高的,分別為 91.4%,98.7%,71.6%,比gcForest和CNN平均高10%和8.5%.運行時間上DCCF深度明顯比gcForest運行時間快,平均為gcForest運行時間的36%.但是類比CNN比較慢,主要級聯森林結構相較于CNN的Softmax層存在一定的冗余.
本文提出了一種新的深度卷積級聯森林方法用于人臉面部表情識別,在3個公開面部表情數據集上實驗識別結果達到了 91.4%,98.7%,71.6%的準確率,結果顯示DCCF不僅比傳統方法分類效果好,而且比gcForest和CNN準確率要高.為進一步分析DCCF的面部表情識別性能,對提取的5種特征和7種分類方法進行了比較,相較于傳統的特征提取和多粒度掃描提取特征,CNN在圖片特征提取(CNN_Feature)的平均值為83%,遠高于其它特征提取方法.在分類方法中級聯森林(CForest)的平均值為82%,也高于其它分類方法.此外,DCCF運行速度相比較于gcForest算法有大幅度的提升,未來可以采用優化方法繼續精簡級聯層數,減少冗余,提高識別效率.

表3 gcForest、CNN和 DCCF方法方法比較Table 3 Comparison of gcForest, CNN and DCCF methods