李冠杰 孫杰
(天津工業(yè)大學(xué) 天津市 300000)
人類的面部表情變化可以傳達出其內(nèi)心的情緒變化,表情是人類內(nèi)心世界的真實寫照[1]。上世紀70年代,美國著名心理學(xué)家保羅·艾克曼經(jīng)過大量實驗之后,將人類的基本表情定義為悲傷、害怕、厭惡、快樂、氣憤和驚訝六種[2]。現(xiàn)如今,面部表情識別主要使用計算機對人類面部表情進行分析識別,從而分析認得情緒變化,這在人機交互、社交網(wǎng)絡(luò)分析、遠程醫(yī)療以及刑偵監(jiān)測等方面都具有重要意義。本文在對近幾年有關(guān)人類面部表情識別方面的相關(guān)成果進行總結(jié)分析,并對國內(nèi)外表情識別算法進行研究,提出基于卷積神經(jīng)網(wǎng)絡(luò)的面部表情識別算法,最后通過試驗驗證該算法的準確性。
傳統(tǒng)的人類面部表情識別方法首先是進行特征提取,然后在此結(jié)果的基礎(chǔ)上進行特征分類。在這兩個步驟中,特征提取起到至關(guān)重要的作用,如果能夠提取到更好表達表情信息的特征值,就可以在很大程度上提高最終結(jié)果的準確率。BERRETTI[3]等人使用SIFT特征進行面部表情識別,取得了78.43%的準確率。W Zhang[4]等人結(jié)合了LBP和Gabor兩種特征,其對表情識別的結(jié)果達到了98%。在進行表情特征提取之后需要對這些特征進行分類,選用合適的分類器算法也尤為重要。目前主要的分類器算法有K-means分類器、貝葉斯分類器、支持向量機、隱式馬爾科夫模型[5]等。傳統(tǒng)的表情識別算法在數(shù)據(jù)樣本較小的時候效率和準確率較高,但是由于缺乏泛化功能,在復(fù)雜的環(huán)境和海量數(shù)據(jù)集中很難得到較好的結(jié)果。
隨著深度學(xué)習(xí)算法的不斷發(fā)展,眾多算法已經(jīng)被應(yīng)用到機器視覺領(lǐng)域中。其中,前饋神經(jīng)網(wǎng)絡(luò)(FNN)和卷積神經(jīng)網(wǎng)絡(luò)(CNN)都可以用作面部表情的特征提取,其中的卷積神經(jīng)網(wǎng)絡(luò)由于強大的特征學(xué)習(xí)能力被應(yīng)用于面部表情識別中,從而極大地提高了面部表情特征提取的效率。與此同時,卷積神經(jīng)網(wǎng)絡(luò)相比于傳統(tǒng)的面部表情識別方法在數(shù)據(jù)的預(yù)處理和數(shù)據(jù)格式上得到了很大程度的簡化,例如卷積神經(jīng)網(wǎng)絡(luò)不需要輸入歸一化和格式化的數(shù)據(jù)。基于以上優(yōu)點,卷積神經(jīng)網(wǎng)絡(luò)在人類面部表情識別這一領(lǐng)域中的表現(xiàn)要遠遠優(yōu)于其他傳統(tǒng)算法。但是,基于卷積神經(jīng)網(wǎng)絡(luò)的算法已存在兩個較為典型的問題:
(1)忽略圖像的二維特性;
(2)常規(guī)神經(jīng)網(wǎng)絡(luò)提取的表情特征魯棒性較差。
因此,本文以深度卷積神經(jīng)網(wǎng)絡(luò)進行人類面部表情的識別。
本文分別采用VGG19[6]和Resnet18[7]對面部表情進行識別和分類,將人類面部表情分類并融合到同一個end-to-end的網(wǎng)絡(luò)中。其中VGG19基本模塊由四部分組成:一個relu層,一個BatchNorm層,一個卷積層和一個平均池化層。Resnet18則是由兩個BatchNorm層和兩個卷積層組成,每個Reset模塊的輸入和輸出端還有特別設(shè)置的快捷鏈接。為了增加算法的魯棒性,本文在全連接層之前加入Dropout策略,同時也去掉了多個全連接層,從而直接對表情進行分類識別。
在算法的設(shè)計過程中,本文探索兩種損失函數(shù)的計算方法,分別是交叉熵損失函數(shù)和線性SVM(support vector machines)分類損失函數(shù)。其中交叉熵損失函數(shù)是由于模型在全連接層之后導(dǎo)出每一類面部表情的概率,但是并未對其進行歸一化,因此需要通過一個softmax層進行歸一化操作,方便后續(xù)的數(shù)據(jù)處理,其計算公式如下:

在softmax回歸過程中通過歸一化概率來解決一對多的分類情況,因此y可以取多個不同值。
支持向量機的分類損失函數(shù)可以抽象為hinge損失函數(shù),其表達式為:

表1:VGG19算法運行結(jié)果

表2: Resnet18算法運行結(jié)果

圖1:VGG19+dropout+10crop+softmax混淆矩陣

Softmax和SVM是當(dāng)下兩種最為常用的分類器,二者的效率和準確率均較高。其不同之處在于Softmax分類器是基于logistic分類器對多個分類的總體歸類,歸一化的概率展示更加直觀;SVM則是對每個分類均計算一個評分,最終使用分數(shù)最高的分類。
本文的實驗數(shù)據(jù)集使用了FER2013數(shù)據(jù)集。FER2013包含了35886張面部表情圖片,其中有28708張訓(xùn)練集表情圖片,驗證集和測試集分別有3589張圖片,其每張圖片都是48*48像素的灰度圖,總共包含7種面部表情:生氣(anger)、厭惡(disgust)、恐懼(fear)、快樂(happy)、中性(normal)、傷心(sad)和驚訝(surprise)。FER2013數(shù)據(jù)集被用于2013年Kaggle比賽,如今也經(jīng)常被用于圖像識別領(lǐng)域的研究。
在實驗過程中,會出現(xiàn)過擬合的情況,因此,在運行算法之前進行了數(shù)據(jù)增強操作,即將部分圖片進行了旋轉(zhuǎn)、切分以及反轉(zhuǎn)等操作。數(shù)據(jù)增強的作用還可以擴大數(shù)據(jù)庫的原始數(shù)據(jù)量,增強訓(xùn)練算法的魯棒性。本文設(shè)計的實驗數(shù)據(jù)是將原始數(shù)據(jù)集在訓(xùn)練階段使用44*44矩陣對圖片進行隨機切割,然后進行隨機抽樣和排序操作。在實驗測試階段,加個圖片的四個角和中心部分進行切割,然后做鏡像操作,由此擴大數(shù)據(jù)庫中的10倍數(shù)據(jù)量,最后將所有圖片作為模型的輸入。在得到的概率中計算平均值,得到的表情分類即最大輸出的分類,從而有效地提高了分類的準確率。本文的實驗結(jié)果如表1、表2。
由以上實驗結(jié)果可以看出,VGG19和Resnet18在FER數(shù)據(jù)集上都能取得較為不錯的表情分類結(jié)果,但是VGG19相比于Resnet18方法要更優(yōu)越。實驗中Dropout方法能夠有效解決過擬合的問題,從而提高最終結(jié)果的準確率。Dropout方法是在測試的時候?qū)χ坝?xùn)練過程中隨機閹割的鏈接進行了補充,相當(dāng)于是綜合考慮了多個數(shù)學(xué)模型進行表情分類預(yù)測,從而使準確率提高。對數(shù)據(jù)集進行10倍切分的方法也可以進一步提高分類結(jié)果的準確率,在數(shù)據(jù)的訓(xùn)練階段,10倍隨機切割的方式增加了數(shù)據(jù)集容量,等于是擴充了原始數(shù)據(jù)集,能夠起到減弱過擬合的作用,而在實驗的預(yù)測階段,擴充了10倍的數(shù)據(jù)集可以將最終的誤判結(jié)果大大降低,提高準確率。Softmax分類相對于支持向量機方法具有明顯優(yōu)勢,Softmax運行時綜合考慮所有的分類情況,其最終分類結(jié)果就是實驗最終分類的結(jié)果。支持向量機預(yù)算過程中每次分類均是二分法分類的,相對于Softmax分類,其最終結(jié)果會產(chǎn)生一定的偏差。
綜上結(jié)果可知,VGG19 + Dropout + 10 crop + Softmax方案達到了實驗準確率最高,在Public test set和Private test set上分別達到了71.496%和73.112%。
由圖1可以看出,實驗中對于驚訝和快樂兩種表情的識別率明顯高于其他表情,但是對于恐懼表情的準確率明顯較低。出現(xiàn)這種偏差的原因是由于數(shù)據(jù)集中的各種類型表情數(shù)量不盡相同,其中有7215張快樂的表情,厭惡的表情圖片卻只有436張,但是每一類表情的平均數(shù)為4101張。
本文針對傳統(tǒng)圖像識別算法進行人類面部表情識別過程中的缺陷,研究了卷積神經(jīng)網(wǎng)絡(luò)在計算機視覺中的應(yīng)用,采用了兩種算法(VGG19和Resnet18)在常用的數(shù)據(jù)集上進行實驗,獲得了較高的準確率。本文涉及的實驗就充分說明了卷積神經(jīng)網(wǎng)絡(luò)在人類面部表情識別過程中的可靠性。但是對于一些相似表情,例如恐懼表情和生氣表情、厭惡表情和悲傷表情還是較難區(qū)分。對于相似表情區(qū)分的相關(guān)研究工作將在日后進一步開展。