陳 樂,童 瑩,陳 瑞,曹雪虹
(1.南京郵電大學 通信與信息工程學院,南京 210003;2.南京工程學院 信息與通信工程學院,南京 211167)
表情是人類情緒的直觀反應,多指面部肌肉及五官形成的狀態,表情識別作為人機交互重要的一環一直是計算機視覺的重要研究課題之一。隨著計算機技術的進步、大數據時代的到來以及 GPU 等電腦硬件的發展,表情識別在軟硬件上都得到了長足的發展,相應的研究機構與表情數據庫以及新的算法越來越多。
在傳統機器學習表情識別領域,特征提取是人臉表情識別中最核心的部分,從圖片中提取出人臉的有用信息能很大程度上影響最終表情識別的準確率。傳統的特征提取方法使用手工制作的特征,如局部二值模式(LBP)[1]、Gabor特征[1],用于表示圖像的離散余弦變換以及線性預測編碼系數(LPC)等[2]。影響表情識別率高低的另一關鍵是如何選取合適的分類器對特征進行分類。分類算法常見的有SVM分類算法[3]、K-NN分類算法[4]、Adaboost分類算法等[5]。以上傳統機器學習算法經過不斷發展,目前已經相對成熟。
近年來,深度學習憑借優良的信息處理能力及在分類、識別、目標檢測等方面取得的重大突破,成為國內外人工智能領域的研究熱點。在表情識別研究中,深度學習也表現出了出色的性能,不僅有更強的特征提取能力,而且對光照、姿態、遮擋物等干擾場景下的表情識別率更好。其中基于卷積神經網絡(convolutional neural networks,CNN)的方法[6-8]在眾多計算機視覺任務中取得了突破,這些方法也成為表情識別中的入門解決方案。Moez Baccouche[9]第一個提出依賴深度卷積神經網絡學習特征來代替手工特征。Emoti W表情識別競賽15年的冠軍Anbang Yao[2]構建了多個卷積網絡模型,闡明了人臉各個區域的表情特征與表情識別的相關性。基于卷積神經網絡在單張圖片的表情識別上優良的表現,Pooya Khorrami[10]考慮使用深度學習對視頻進行情感識別。由于在連續的視頻數據上卷積神經網絡無法提取視頻片段中的連續時間信息及運動特征,他們第一次提出了卷積神經網絡與循環神經網絡(recurrent neural network,RNN)相結合,取得了比單純CNN模型更好的效果。Huai-Qian Khor[11]提出了一種豐富長期循環卷積網絡(enriched long-term recurrent convolutional network,ELRCN)用于微表情識別,通過在空間和時間維度上堆疊輸入數據來增強對人臉特征的提取。
本文受ELRCN啟發,結合深度學習中的卷積神經網絡和長短期記憶網絡(long short-term memory,LSTM),在AFEW(acted facial expressionsinthewild)[12]數據集上對連續幀中人臉進行表情識別。由于ELRCN框架中CNN與LSTM模型獨立進行訓練,最終的分類結果無法影響CNN模型的權重更新,于是使用keras深度學習庫復現了ELRCN論文中的框架,并在此基礎上提出了一種端到端特征增強的CNN-LSTM混合網絡,最終在實驗分析后得到了更好的效果。
人類表情有明確的分類是在20世紀70年代,Ekman和Friesen[13]對現代人臉表情識別做了開創性的工作,他們研究了人類的6種基本表情(即高興、悲傷、驚訝、恐懼、憤怒、厭惡),確定識別對象的類別,并系統地建立了有上千幅不同表情的人臉表情圖像數據庫。隨后他們又在此基礎上通過大量研究,建立不同的臉部肌肉運動與相應的面部表情映射關系,提出基于面部運動單元(44個運動單元)的面部表情編碼系統(facial action coding system,FACS)[14]。
本文使用數據集AFEW,它取材自從不同電影收集的剪輯視頻,其中包含自發的表情、各種頭部姿勢、遮擋和照明等各種現實場景,相對于實驗室控制的采集數據存在著許多挑戰性的問題。AFEW中每個視頻分配1個表情標簽(圖1),其表情種類除了6種基本表情外,還有一類中性無表情類(neutral)。該數據集有3個子集:訓練集(773個視頻)、驗證集(371個視頻)和測試集(653個視頻),為保證互不相關,3個集取材的電影和演員互斥。數據集還提供了每個視頻對應的剪切人臉圖片、LBP特征信息和人臉面部關鍵點信息。SFEW(static facial expressionsinthe wild)[15]數據集是通過基于面部點聚類計算關鍵幀從AFEW數據集中提取靜態幀組成的,標簽和分集方式相同,必要時可以作為AFEW的輔助數據集。本文主要關注CNN-LSTM網絡框架的優化,直接使用數據集自身提供的連續視頻幀的人臉剪輯圖片作為訓練數據,并未做進一步的圖像處理。圖1中,每行表示1種情緒。
卷積神經網絡近年來在視覺識別任務上取得了巨大的成功,其中包括經典的CNN包括AlexNet[6]、VGG[7]、GoogLeNet[16]和ResNet[17-19]。訓練一個好的網絡模型需要大量的數據,這些經典網絡框架都有開源且在各種大數據訓練集上訓練好的模型權重,把預訓練好的的模型權重作為后續研究者的初始模型參數大大節約了重新訓練模型的時間。Yin Fan[18]在選擇表情識別CNN框架時,對已經預訓練的經典框架(GoogLeNet、VGG-16、ResNet等)進行了實驗對比,發現在人臉數據集上預訓練的VGG-16-Face模型有著最高的準確率。本文框架中的CNN部分也采用經典的VGG-16-Face模型,如圖2所示。

圖1 AFEW數據集的7種情緒

圖2 端到端VGG-16部分模型
圖2中①處是對卷積層輸出進行池化、拉伸后連接輸出為4 096的全連接層;②處是輸出為4 096的全連接層。VGG-16模型由牛津大學VGG組提出,該網絡在2014年的 ILSVRC localization and classification 兩個問題上分別取得了第1名和第2名的網絡架構,證明了增加網絡的深度能一定程度地影響網絡的性能。VGG-16擁有5段卷積,每段內有2~3個卷積層,同時每段尾部會連接1個最大池化層用來縮小圖片尺寸。每段內的卷積核數量一樣,越靠后的段的卷積核數量越多。在有些卷積組中會出現連續的幾個卷積層堆疊,2個3×3的卷積層串聯相當于1個5×5的卷積層,即一個像素會跟周圍5×5的像素產生關聯,感受野大小為5×5,既可以保證感受視野,又能減少卷積層的參數。由于數據量較少,為降低模型的過擬合問題,全連接層后面加入了丟失層(dropout),丟失率設為50%,使得模型中的神經網絡單元在訓練過程時按照一定概率暫時從網絡中丟棄。
CNN處理單幀圖片時十分有效,但面對視頻幀這種時序數據,其中的幀間的時序關系、運動信息等時,循環神經網絡(recurrent neural networks,RNN)則更加有效。RNN模型的循環特性使得它允許信息保留一段時間,但隨著序列的增長,前后幀間隔增大,梯度爆炸和梯度消失使得RNN無法捕獲這種長期依賴。

圖3 LSTM記憶單元
為了解決上述問題,研究人員提出了許多解決辦法,其中應用最廣泛的是門限RNN(gated RNN),而LSTM就是門限RNN中最著名的一種。LSTM最早由Sepp Hochreiter和Jürgen Schmidhuber提出,它能夠處理長期依賴關系的問題。LSTM記憶的單元包含3個門:遺忘門、輸入門和輸出門,如圖3所示。LSTM通過這3個門實現信息的保護和控制。LSTM記憶單元的數學公式如下:
it=σ(Wxi+Whiht-1+bi)
(1)
ft=σ(Wxfxt+Whfht-1+bf)
(2)
ot=σ(Wxoxt+Whht-1+bo)
(3)
gt=tanh(Wxcxt+Whcht-1+bc)
(4)
ct=ft⊙ct-1+it⊙gt
(5)
hto=ttan h⊙(ct)
(6)
其中:
σ(x)=(1+e-x)-1
(7)
(8)
記憶單元中的關鍵是細胞狀態Ct,首先遺忘門控制著細胞狀態中的信息選擇性遺忘,其次輸入門決定把哪些新的信息加入細胞狀態,最后輸出門決定輸出的信息,并輸出信息ht和當前的細胞狀態ct傳送給下一個LSTM記憶單元。在本模型中連續的人臉特征序列順序輸入LSTM,記憶單元中的細胞狀態不斷更新記錄人臉特征序列中的有用信息,序列結束后輸出給下一層網絡。
圖4所示為端到端增強特征神經網絡模型。根據LSTM的結構特性要求輸入需為序列信息,同時要實現端到端的模型需要CNN模型部分提供不少于2個連續人臉特征。設計該模型每次輸入為n幀連續人臉圖像,每張人臉圖像共用相同的CNN權重進行特征提取。由于每次輸入多張人臉圖像增加了模型的復雜度和參數量,為避免訓練時出現內存溢出的問題,最終n設置為10,并且為擴增訓練數據強化模型學習,同一個視頻中的子視頻段與前后視頻段有5幀的重合。如圖2所示,CNN部分輸出為長度4 096的特征向量,則第1層LSTM輸入數據維度為(10,4 096)。

圖4 端到端增強特征神經網絡模型
針對LSTM網絡部分,對單層和雙層LSTM進行實驗比對,發現在本數據集上雙層的效果更好。同時,對比了多組LSTM層的輸出長度,最終設定LSTM輸出長度為2 048。對于3層及以上的LSTM模型效果,由于本實驗室深度學習主機的硬件水平有限,故暫未驗證其有效性。
作為端到端模型,VGG-16連接雙層LSTM使得網絡加深,而神經網絡的加深會導致信息的損耗等問題。著名的ResNet[21]網絡在神經網絡中增加直連通道在一定程度上解決了信息損耗的問題。本文據此提出了增強特征的方法,把CNN模型提取的人臉特征再次傳輸到第2層LSTM(如圖4所示),以保證人臉特征信息的完整性,與第1層LSTM的輸出融合再次通過LSTM層進行特征精煉。實驗結果證明了該方法的可行性。
實驗硬件設備為搭載2塊1080TiGPU的深度學習主機,Ubuntu 16.04 Linux系統,CNN-LSTM模型使用基于Tensorflow的Keras平臺搭建訓練。VGG-16模型預加載VGG-16-FACE權重。訓練數據取自AFEW數據集提供的視頻幀人臉圖像,由于該數據集源自Emotiw競賽,其中的測試集視頻并沒有對應的表情標簽,所以訓練過程中把訓練集按照8:2分為訓練集和驗證集,把驗證集作為實驗的測試集。
圖5中展示了AFEW數據集的復雜性和多樣性。第1行是AFEW數據集中人物面部特征較為清晰連貫的人臉圖像,與CK+等拍攝自環境可控的實驗室的數據集樣本類似。但AFEW數據集取材自接近無約束現實場景的影視資源,視頻中的人臉存在著不同的旋轉角度、由運動造成的模糊、光照下的陰影或過曝、攝影手法產生的模糊、各種遮擋等,而且影視劇中人臉表情也更加自然多樣,如圖6中的第2~3行。復雜多樣的實驗樣本增加了提取人臉特征的難度,也使得模型的學習速度大大降低。同時,訓練集包含了773個視頻片段,相對于深度網絡中的巨量參數,訓練模型時需要關注過擬合的問題。本模型中主要使用丟失層(dropout layer),加載預訓練權重且只訓練全連接層和LSTM層權重。

圖5 AFEW數據集的復雜性和多樣性
3.3.1評分標準
F1評分是分類問題的一個衡量標準,常用于多分類問題的競賽。它是精確率(precision)和召回率(recall)的調和平均數,最大為1,最小為0。
(9)
(10)
(11)
其中:TP(true positive)為預測正確的個數;FP(false positive)為把其他類錯誤預測為本類的個數;FN(false negative)為本類預測錯誤的個數。
準確率(accuray)也是一種常用的分類評判標準:
(12)
其中TN(true negative)為其他類預測正確的個數。
3.3.2VGG-16與LSTM獨立訓練
實驗中VGG-16與LSTM獨立訓練。VGG-16獨立訓練時,預加載VGG-16-FACE模型權重,在圖2模型尾部加上softmax層進行最后的分類,每一幀圖片的表情標簽與視頻的標簽相同。訓練完成后,去除最后1層softmax層,以第2個全連接層輸出作為LSTM輸入,在LSTM模型中繼續訓練。考慮到數據集樣本數量不大,訓練LSTM模型時,每10幀作為一個小片段,即前文圖4中所說的n設為10,步長為5向后依次取10幀作為輸入。LSTM模塊訓練完成后,按照訓練時的順序,依次把驗證集數據送入VGG-16和LSTM模型,由LSTM給出測試結果。
表1為獨立訓練時對LSTM調整的各個模型的測試結果,其中VGG-16未做調整,前2個模型為1層LSTM,且LSTM層輸出分別為長度3 000、2 048的特征向量。根據實驗結果,兩層LSTM層比單層效果更好,且在準確率相差不大的情況下,VGG-16-LSTM(2 048,2 048)模型效果最佳。此時,并沒有圖5中的增強特征部分。

表1 VGG與LSTM獨立訓練最終結果
3.3.3端到端VGG-16-LSTM模型
如圖4所示,在獨立訓練CNN-LSTM模型的基礎上先后搭建端到端和端到端增強特征的模型進行比對。訓練時以10幀連續面部圖像為單位,固定LSTM模塊部分為2層LSTM(2 048,2 048)。
為了驗證端到端增強特征的有效性,將本文算法與ELRCN進行比較,實驗結果如表2所示。表2中,第1~2行為ELRCN在雙層模型上得到的2條最優結果,第3行為端到端未加增強特征的結果,第4行為端到端增強特征模型的結果。由此可見,本文提出的端到端的模型效果明顯,準確率介于ELRCN模型2次最優結果之間,但F1分數均高于ELRCN模型,端到端增強模型的F1分數高于ELRCN兩個模型,分別為0.02和0.069。對比表1中非端到端的最終結果,端到端和端到端增強特征也有著明顯的提升。最終預測結果的混淆矩陣如表3所示。

表2 端到端VGG-16-LSTM模型優化結果

表3 增強端到端模型在測試集上的預測結果
本文提出一種視頻人臉表情識別的模型,將VGG-16和LSTM連接組合對AFEW數據集中連續視頻幀的人物進行表情識別,并嘗試多種組合方式提升識別準確率,比較其在測試集上的F1分數和準確率,證明了雙層LSTM和增強特征的可行性。由于本數據集不同于常用的實驗室采集的數據集,存在較多遮擋、光線、面部角度等因素干擾,甚至數據集提供的剪切人臉圖像存在部分誤剪(非人臉及臉部不完整),因此今后的工作將會在人臉識別和數據預處理的基礎上繼續優化模型,以得到更好的視頻表情識別模型。