陳 樂,童 瑩,陳 瑞,曹雪虹
(1.南京郵電大學(xué) 通信與信息工程學(xué)院,南京 210003;2.南京工程學(xué)院 信息與通信工程學(xué)院,南京 211167)
表情是人類情緒的直觀反應(yīng),多指面部肌肉及五官形成的狀態(tài),表情識別作為人機交互重要的一環(huán)一直是計算機視覺的重要研究課題之一。隨著計算機技術(shù)的進步、大數(shù)據(jù)時代的到來以及 GPU 等電腦硬件的發(fā)展,表情識別在軟硬件上都得到了長足的發(fā)展,相應(yīng)的研究機構(gòu)與表情數(shù)據(jù)庫以及新的算法越來越多。
在傳統(tǒng)機器學(xué)習(xí)表情識別領(lǐng)域,特征提取是人臉表情識別中最核心的部分,從圖片中提取出人臉的有用信息能很大程度上影響最終表情識別的準確率。傳統(tǒng)的特征提取方法使用手工制作的特征,如局部二值模式(LBP)[1]、Gabor特征[1],用于表示圖像的離散余弦變換以及線性預(yù)測編碼系數(shù)(LPC)等[2]。影響表情識別率高低的另一關(guān)鍵是如何選取合適的分類器對特征進行分類。分類算法常見的有SVM分類算法[3]、K-NN分類算法[4]、Adaboost分類算法等[5]。以上傳統(tǒng)機器學(xué)習(xí)算法經(jīng)過不斷發(fā)展,目前已經(jīng)相對成熟。
近年來,深度學(xué)習(xí)憑借優(yōu)良的信息處理能力及在分類、識別、目標檢測等方面取得的重大突破,成為國內(nèi)外人工智能領(lǐng)域的研究熱點。在表情識別研究中,深度學(xué)習(xí)也表現(xiàn)出了出色的性能,不僅有更強的特征提取能力,而且對光照、姿態(tài)、遮擋物等干擾場景下的表情識別率更好。其中基于卷積神經(jīng)網(wǎng)絡(luò)(convolutional neural networks,CNN)的方法[6-8]在眾多計算機視覺任務(wù)中取得了突破,這些方法也成為表情識別中的入門解決方案。Moez Baccouche[9]第一個提出依賴深度卷積神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)特征來代替手工特征。Emoti W表情識別競賽15年的冠軍Anbang Yao[2]構(gòu)建了多個卷積網(wǎng)絡(luò)模型,闡明了人臉各個區(qū)域的表情特征與表情識別的相關(guān)性。基于卷積神經(jīng)網(wǎng)絡(luò)在單張圖片的表情識別上優(yōu)良的表現(xiàn),Pooya Khorrami[10]考慮使用深度學(xué)習(xí)對視頻進行情感識別。由于在連續(xù)的視頻數(shù)據(jù)上卷積神經(jīng)網(wǎng)絡(luò)無法提取視頻片段中的連續(xù)時間信息及運動特征,他們第一次提出了卷積神經(jīng)網(wǎng)絡(luò)與循環(huán)神經(jīng)網(wǎng)絡(luò)(recurrent neural network,RNN)相結(jié)合,取得了比單純CNN模型更好的效果。Huai-Qian Khor[11]提出了一種豐富長期循環(huán)卷積網(wǎng)絡(luò)(enriched long-term recurrent convolutional network,ELRCN)用于微表情識別,通過在空間和時間維度上堆疊輸入數(shù)據(jù)來增強對人臉特征的提取。
本文受ELRCN啟發(fā),結(jié)合深度學(xué)習(xí)中的卷積神經(jīng)網(wǎng)絡(luò)和長短期記憶網(wǎng)絡(luò)(long short-term memory,LSTM),在AFEW(acted facial expressionsinthewild)[12]數(shù)據(jù)集上對連續(xù)幀中人臉進行表情識別。由于ELRCN框架中CNN與LSTM模型獨立進行訓(xùn)練,最終的分類結(jié)果無法影響CNN模型的權(quán)重更新,于是使用keras深度學(xué)習(xí)庫復(fù)現(xiàn)了ELRCN論文中的框架,并在此基礎(chǔ)上提出了一種端到端特征增強的CNN-LSTM混合網(wǎng)絡(luò),最終在實驗分析后得到了更好的效果。
人類表情有明確的分類是在20世紀70年代,Ekman和Friesen[13]對現(xiàn)代人臉表情識別做了開創(chuàng)性的工作,他們研究了人類的6種基本表情(即高興、悲傷、驚訝、恐懼、憤怒、厭惡),確定識別對象的類別,并系統(tǒng)地建立了有上千幅不同表情的人臉表情圖像數(shù)據(jù)庫。隨后他們又在此基礎(chǔ)上通過大量研究,建立不同的臉部肌肉運動與相應(yīng)的面部表情映射關(guān)系,提出基于面部運動單元(44個運動單元)的面部表情編碼系統(tǒng)(facial action coding system,FACS)[14]。
本文使用數(shù)據(jù)集AFEW,它取材自從不同電影收集的剪輯視頻,其中包含自發(fā)的表情、各種頭部姿勢、遮擋和照明等各種現(xiàn)實場景,相對于實驗室控制的采集數(shù)據(jù)存在著許多挑戰(zhàn)性的問題。AFEW中每個視頻分配1個表情標簽(圖1),其表情種類除了6種基本表情外,還有一類中性無表情類(neutral)。該數(shù)據(jù)集有3個子集:訓(xùn)練集(773個視頻)、驗證集(371個視頻)和測試集(653個視頻),為保證互不相關(guān),3個集取材的電影和演員互斥。數(shù)據(jù)集還提供了每個視頻對應(yīng)的剪切人臉圖片、LBP特征信息和人臉面部關(guān)鍵點信息。SFEW(static facial expressionsinthe wild)[15]數(shù)據(jù)集是通過基于面部點聚類計算關(guān)鍵幀從AFEW數(shù)據(jù)集中提取靜態(tài)幀組成的,標簽和分集方式相同,必要時可以作為AFEW的輔助數(shù)據(jù)集。本文主要關(guān)注CNN-LSTM網(wǎng)絡(luò)框架的優(yōu)化,直接使用數(shù)據(jù)集自身提供的連續(xù)視頻幀的人臉剪輯圖片作為訓(xùn)練數(shù)據(jù),并未做進一步的圖像處理。圖1中,每行表示1種情緒。
卷積神經(jīng)網(wǎng)絡(luò)近年來在視覺識別任務(wù)上取得了巨大的成功,其中包括經(jīng)典的CNN包括AlexNet[6]、VGG[7]、GoogLeNet[16]和ResNet[17-19]。訓(xùn)練一個好的網(wǎng)絡(luò)模型需要大量的數(shù)據(jù),這些經(jīng)典網(wǎng)絡(luò)框架都有開源且在各種大數(shù)據(jù)訓(xùn)練集上訓(xùn)練好的模型權(quán)重,把預(yù)訓(xùn)練好的的模型權(quán)重作為后續(xù)研究者的初始模型參數(shù)大大節(jié)約了重新訓(xùn)練模型的時間。Yin Fan[18]在選擇表情識別CNN框架時,對已經(jīng)預(yù)訓(xùn)練的經(jīng)典框架(GoogLeNet、VGG-16、ResNet等)進行了實驗對比,發(fā)現(xiàn)在人臉數(shù)據(jù)集上預(yù)訓(xùn)練的VGG-16-Face模型有著最高的準確率。本文框架中的CNN部分也采用經(jīng)典的VGG-16-Face模型,如圖2所示。
圖1 AFEW數(shù)據(jù)集的7種情緒
圖2 端到端VGG-16部分模型
圖2中①處是對卷積層輸出進行池化、拉伸后連接輸出為4 096的全連接層;②處是輸出為4 096的全連接層。VGG-16模型由牛津大學(xué)VGG組提出,該網(wǎng)絡(luò)在2014年的 ILSVRC localization and classification 兩個問題上分別取得了第1名和第2名的網(wǎng)絡(luò)架構(gòu),證明了增加網(wǎng)絡(luò)的深度能一定程度地影響網(wǎng)絡(luò)的性能。VGG-16擁有5段卷積,每段內(nèi)有2~3個卷積層,同時每段尾部會連接1個最大池化層用來縮小圖片尺寸。每段內(nèi)的卷積核數(shù)量一樣,越靠后的段的卷積核數(shù)量越多。在有些卷積組中會出現(xiàn)連續(xù)的幾個卷積層堆疊,2個3×3的卷積層串聯(lián)相當于1個5×5的卷積層,即一個像素會跟周圍5×5的像素產(chǎn)生關(guān)聯(lián),感受野大小為5×5,既可以保證感受視野,又能減少卷積層的參數(shù)。由于數(shù)據(jù)量較少,為降低模型的過擬合問題,全連接層后面加入了丟失層(dropout),丟失率設(shè)為50%,使得模型中的神經(jīng)網(wǎng)絡(luò)單元在訓(xùn)練過程時按照一定概率暫時從網(wǎng)絡(luò)中丟棄。
CNN處理單幀圖片時十分有效,但面對視頻幀這種時序數(shù)據(jù),其中的幀間的時序關(guān)系、運動信息等時,循環(huán)神經(jīng)網(wǎng)絡(luò)(recurrent neural networks,RNN)則更加有效。RNN模型的循環(huán)特性使得它允許信息保留一段時間,但隨著序列的增長,前后幀間隔增大,梯度爆炸和梯度消失使得RNN無法捕獲這種長期依賴。
圖3 LSTM記憶單元
為了解決上述問題,研究人員提出了許多解決辦法,其中應(yīng)用最廣泛的是門限RNN(gated RNN),而LSTM就是門限RNN中最著名的一種。LSTM最早由Sepp Hochreiter和Jürgen Schmidhuber提出,它能夠處理長期依賴關(guān)系的問題。LSTM記憶的單元包含3個門:遺忘門、輸入門和輸出門,如圖3所示。LSTM通過這3個門實現(xiàn)信息的保護和控制。LSTM記憶單元的數(shù)學(xué)公式如下:
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)
記憶單元中的關(guān)鍵是細胞狀態(tài)Ct,首先遺忘門控制著細胞狀態(tài)中的信息選擇性遺忘,其次輸入門決定把哪些新的信息加入細胞狀態(tài),最后輸出門決定輸出的信息,并輸出信息ht和當前的細胞狀態(tài)ct傳送給下一個LSTM記憶單元。在本模型中連續(xù)的人臉特征序列順序輸入LSTM,記憶單元中的細胞狀態(tài)不斷更新記錄人臉特征序列中的有用信息,序列結(jié)束后輸出給下一層網(wǎng)絡(luò)。
圖4所示為端到端增強特征神經(jīng)網(wǎng)絡(luò)模型。根據(jù)LSTM的結(jié)構(gòu)特性要求輸入需為序列信息,同時要實現(xiàn)端到端的模型需要CNN模型部分提供不少于2個連續(xù)人臉特征。設(shè)計該模型每次輸入為n幀連續(xù)人臉圖像,每張人臉圖像共用相同的CNN權(quán)重進行特征提取。由于每次輸入多張人臉圖像增加了模型的復(fù)雜度和參數(shù)量,為避免訓(xùn)練時出現(xiàn)內(nèi)存溢出的問題,最終n設(shè)置為10,并且為擴增訓(xùn)練數(shù)據(jù)強化模型學(xué)習(xí),同一個視頻中的子視頻段與前后視頻段有5幀的重合。如圖2所示,CNN部分輸出為長度4 096的特征向量,則第1層LSTM輸入數(shù)據(jù)維度為(10,4 096)。
圖4 端到端增強特征神經(jīng)網(wǎng)絡(luò)模型
針對LSTM網(wǎng)絡(luò)部分,對單層和雙層LSTM進行實驗比對,發(fā)現(xiàn)在本數(shù)據(jù)集上雙層的效果更好。同時,對比了多組LSTM層的輸出長度,最終設(shè)定LSTM輸出長度為2 048。對于3層及以上的LSTM模型效果,由于本實驗室深度學(xué)習(xí)主機的硬件水平有限,故暫未驗證其有效性。
作為端到端模型,VGG-16連接雙層LSTM使得網(wǎng)絡(luò)加深,而神經(jīng)網(wǎng)絡(luò)的加深會導(dǎo)致信息的損耗等問題。著名的ResNet[21]網(wǎng)絡(luò)在神經(jīng)網(wǎng)絡(luò)中增加直連通道在一定程度上解決了信息損耗的問題。本文據(jù)此提出了增強特征的方法,把CNN模型提取的人臉特征再次傳輸?shù)降?層LSTM(如圖4所示),以保證人臉特征信息的完整性,與第1層LSTM的輸出融合再次通過LSTM層進行特征精煉。實驗結(jié)果證明了該方法的可行性。
實驗硬件設(shè)備為搭載2塊1080TiGPU的深度學(xué)習(xí)主機,Ubuntu 16.04 Linux系統(tǒng),CNN-LSTM模型使用基于Tensorflow的Keras平臺搭建訓(xùn)練。VGG-16模型預(yù)加載VGG-16-FACE權(quán)重。訓(xùn)練數(shù)據(jù)取自AFEW數(shù)據(jù)集提供的視頻幀人臉圖像,由于該數(shù)據(jù)集源自Emotiw競賽,其中的測試集視頻并沒有對應(yīng)的表情標簽,所以訓(xùn)練過程中把訓(xùn)練集按照8:2分為訓(xùn)練集和驗證集,把驗證集作為實驗的測試集。
圖5中展示了AFEW數(shù)據(jù)集的復(fù)雜性和多樣性。第1行是AFEW數(shù)據(jù)集中人物面部特征較為清晰連貫的人臉圖像,與CK+等拍攝自環(huán)境可控的實驗室的數(shù)據(jù)集樣本類似。但AFEW數(shù)據(jù)集取材自接近無約束現(xiàn)實場景的影視資源,視頻中的人臉存在著不同的旋轉(zhuǎn)角度、由運動造成的模糊、光照下的陰影或過曝、攝影手法產(chǎn)生的模糊、各種遮擋等,而且影視劇中人臉表情也更加自然多樣,如圖6中的第2~3行。復(fù)雜多樣的實驗樣本增加了提取人臉特征的難度,也使得模型的學(xué)習(xí)速度大大降低。同時,訓(xùn)練集包含了773個視頻片段,相對于深度網(wǎng)絡(luò)中的巨量參數(shù),訓(xùn)練模型時需要關(guān)注過擬合的問題。本模型中主要使用丟失層(dropout layer),加載預(yù)訓(xùn)練權(quán)重且只訓(xùn)練全連接層和LSTM層權(quán)重。
圖5 AFEW數(shù)據(jù)集的復(fù)雜性和多樣性
3.3.1評分標準
F1評分是分類問題的一個衡量標準,常用于多分類問題的競賽。它是精確率(precision)和召回率(recall)的調(diào)和平均數(shù),最大為1,最小為0。
(9)
(10)
(11)
其中:TP(true positive)為預(yù)測正確的個數(shù);FP(false positive)為把其他類錯誤預(yù)測為本類的個數(shù);FN(false negative)為本類預(yù)測錯誤的個數(shù)。
準確率(accuray)也是一種常用的分類評判標準:
(12)
其中TN(true negative)為其他類預(yù)測正確的個數(shù)。
3.3.2VGG-16與LSTM獨立訓(xùn)練
實驗中VGG-16與LSTM獨立訓(xùn)練。VGG-16獨立訓(xùn)練時,預(yù)加載VGG-16-FACE模型權(quán)重,在圖2模型尾部加上softmax層進行最后的分類,每一幀圖片的表情標簽與視頻的標簽相同。訓(xùn)練完成后,去除最后1層softmax層,以第2個全連接層輸出作為LSTM輸入,在LSTM模型中繼續(xù)訓(xùn)練??紤]到數(shù)據(jù)集樣本數(shù)量不大,訓(xùn)練LSTM模型時,每10幀作為一個小片段,即前文圖4中所說的n設(shè)為10,步長為5向后依次取10幀作為輸入。LSTM模塊訓(xùn)練完成后,按照訓(xùn)練時的順序,依次把驗證集數(shù)據(jù)送入VGG-16和LSTM模型,由LSTM給出測試結(jié)果。
表1為獨立訓(xùn)練時對LSTM調(diào)整的各個模型的測試結(jié)果,其中VGG-16未做調(diào)整,前2個模型為1層LSTM,且LSTM層輸出分別為長度3 000、2 048的特征向量。根據(jù)實驗結(jié)果,兩層LSTM層比單層效果更好,且在準確率相差不大的情況下,VGG-16-LSTM(2 048,2 048)模型效果最佳。此時,并沒有圖5中的增強特征部分。
表1 VGG與LSTM獨立訓(xùn)練最終結(jié)果
3.3.3端到端VGG-16-LSTM模型
如圖4所示,在獨立訓(xùn)練CNN-LSTM模型的基礎(chǔ)上先后搭建端到端和端到端增強特征的模型進行比對。訓(xùn)練時以10幀連續(xù)面部圖像為單位,固定LSTM模塊部分為2層LSTM(2 048,2 048)。
為了驗證端到端增強特征的有效性,將本文算法與ELRCN進行比較,實驗結(jié)果如表2所示。表2中,第1~2行為ELRCN在雙層模型上得到的2條最優(yōu)結(jié)果,第3行為端到端未加增強特征的結(jié)果,第4行為端到端增強特征模型的結(jié)果。由此可見,本文提出的端到端的模型效果明顯,準確率介于ELRCN模型2次最優(yōu)結(jié)果之間,但F1分數(shù)均高于ELRCN模型,端到端增強模型的F1分數(shù)高于ELRCN兩個模型,分別為0.02和0.069。對比表1中非端到端的最終結(jié)果,端到端和端到端增強特征也有著明顯的提升。最終預(yù)測結(jié)果的混淆矩陣如表3所示。
表2 端到端VGG-16-LSTM模型優(yōu)化結(jié)果
表3 增強端到端模型在測試集上的預(yù)測結(jié)果
本文提出一種視頻人臉表情識別的模型,將VGG-16和LSTM連接組合對AFEW數(shù)據(jù)集中連續(xù)視頻幀的人物進行表情識別,并嘗試多種組合方式提升識別準確率,比較其在測試集上的F1分數(shù)和準確率,證明了雙層LSTM和增強特征的可行性。由于本數(shù)據(jù)集不同于常用的實驗室采集的數(shù)據(jù)集,存在較多遮擋、光線、面部角度等因素干擾,甚至數(shù)據(jù)集提供的剪切人臉圖像存在部分誤剪(非人臉及臉部不完整),因此今后的工作將會在人臉識別和數(shù)據(jù)預(yù)處理的基礎(chǔ)上繼續(xù)優(yōu)化模型,以得到更好的視頻表情識別模型。