馮 楊,劉 蓉,魯 甜
(華中師范大學(xué)物理科學(xué)與技術(shù)學(xué)院,武漢 430079)
在人際交往過程中,人們通常根據(jù)對方面部表情變化來判斷其情緒,以更好地進(jìn)行交流。隨著人工智能和機(jī)器學(xué)習(xí)的興起,人臉表情識別技術(shù)得到深入發(fā)展,其應(yīng)用日益廣泛。通過增強(qiáng)人機(jī)界面,機(jī)器能更好地感知用戶情緒,在行為科學(xué)和臨床實(shí)踐中捕捉并分析罪犯與患者的微觀表情可了解其潛意識,基于人臉表情識別的情感分類器能幫助情感交互存在障礙的人群增進(jìn)情感交流。此外,人臉表情自動識別技術(shù)還應(yīng)用于人體異常行為檢測、計(jì)算機(jī)接口、自動駕駛以及健康管理等多個領(lǐng)域。
關(guān)于人臉表情識別的研究最早始于1978 年,SUWA 等人[1]跟蹤臉部視頻動畫獲取每幀圖像關(guān)鍵點(diǎn)的運(yùn)動規(guī)律,并將其與原始圖像關(guān)鍵點(diǎn)模型對比后得到識別結(jié)果。1991 年,MAS 等人[2]采用光流方法跟蹤肌肉運(yùn)動走向,獲取局部空間光流值組成表情特征向量構(gòu)建人臉表情識別系統(tǒng)。傳統(tǒng)的人臉表情識別主要采用局部二值模式[3]、非負(fù)矩陣因子分解[4]和稀疏學(xué)習(xí)[5]等機(jī)器學(xué)習(xí)方法來提取淺層特征。
從2013 年開始,深度學(xué)習(xí)方法逐漸應(yīng)用于面部情感識別的研究。文獻(xiàn)[6]采用卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network,CNN)解決了面部表情的主觀獨(dú)立性問題以及圖像平移、旋轉(zhuǎn)和尺度不變等問題。文獻(xiàn)[7]利用區(qū)域卷積神經(jīng)網(wǎng)絡(luò)(Region Convolutional Neural Network,R-CNN)學(xué)習(xí)人臉表情特征。隨著深度學(xué)習(xí)技術(shù)的不斷發(fā)展,研究人員基于CNN 設(shè)置輔助網(wǎng)絡(luò)模塊、網(wǎng)絡(luò)層結(jié)構(gòu)和網(wǎng)絡(luò)集成來增強(qiáng)表情識別能力。文獻(xiàn)[8]在AlexNet 卷積神經(jīng)網(wǎng)絡(luò)中引入特征選擇機(jī)制設(shè)計(jì)特征選擇網(wǎng)絡(luò)FSN。文獻(xiàn)[9]在特征層中增加島嶼損失層,結(jié)合決策層的Softmax 損失函數(shù)共同監(jiān)督CNN 訓(xùn)練。文獻(xiàn)[10]提出一種3 級混合結(jié)構(gòu)網(wǎng)絡(luò),通過決策層集成實(shí)現(xiàn)決策多樣性,其在FER2013 數(shù)據(jù)集上識別率達(dá)到70.86%。文獻(xiàn)[11]采用改進(jìn)的深度殘差網(wǎng)絡(luò)增加網(wǎng)絡(luò)深度,引入遷移學(xué)習(xí)方法解決數(shù)據(jù)集較小的問題,改進(jìn)網(wǎng)絡(luò)在CK+數(shù)據(jù)集上識別率達(dá)到91.33%。上述研究表明,采用卷積神經(jīng)網(wǎng)絡(luò)可得到較好的識別效果,在此基礎(chǔ)上加深和加寬網(wǎng)絡(luò)能有效提高識別率,但網(wǎng)絡(luò)參數(shù)過多也造成計(jì)算復(fù)雜度大幅增加,從而導(dǎo)致模型計(jì)算性能下降。
為進(jìn)一步提升表情識別效果,解決網(wǎng)絡(luò)結(jié)構(gòu)復(fù)雜與數(shù)據(jù)計(jì)算量大等問題,本文提出一種應(yīng)用于人臉表情識別的小尺度核卷積方法。結(jié)合小尺度核卷積層、批標(biāo)準(zhǔn)化層和Leaky-ReLU 激活函數(shù)形成組合塊提取圖像特征,在不增加網(wǎng)絡(luò)參數(shù)的基礎(chǔ)上加深網(wǎng)絡(luò),以減少靜默神經(jīng)元的影響,保障神經(jīng)元充分學(xué)習(xí),并使用Adam 優(yōu)化器更新網(wǎng)絡(luò)參數(shù)加速網(wǎng)絡(luò)訓(xùn)練。
卷積神經(jīng)網(wǎng)絡(luò)主要由卷積層、池化層(也稱為采樣層)和全連接(Fully connected)層構(gòu)成,其結(jié)構(gòu)如圖1 所示。其中,卷積層用于局部感知和實(shí)現(xiàn)參數(shù)共享,池化層用于特征降維與壓縮參數(shù)量,全連接層用于整合局部特征信息。感受野[12]是卷積神經(jīng)網(wǎng)絡(luò)中最重要的概念之一,其定義為卷積神經(jīng)網(wǎng)絡(luò)每一層輸出特征圖的像素點(diǎn)在輸入圖像上映射區(qū)域的大小。每個卷積核均對應(yīng)一個感受野,卷積核越大,則神經(jīng)元感受野的值越大,卷積核能接觸到的原始圖像范圍越大,可提取到更全面、語義層次更高的特征,但會造成網(wǎng)絡(luò)參數(shù)量增大和計(jì)算復(fù)雜度大幅增加。因此,本文用多個小卷積核代替大卷積核,以在獲取相同大小感受野的同時減少參數(shù)量。
圖1 卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)Fig.1 Structure of convolutional neural network
在早期的研究中,為獲取更大感受野,研究人員主要采用卷積核尺寸為11×11、7×7 和5×5 的卷積神經(jīng)網(wǎng)絡(luò)。隨著計(jì)算性能不斷提升,研究人員開始嘗試使用更深和更寬的卷積神經(jīng)網(wǎng)絡(luò)。2012 年,KRJIZHEVSKY 等人[13]使用AlexNet 卷積神經(jīng)網(wǎng)絡(luò)提取特征得到良好的識別效果。AlexNet 包括5 個卷積層和3 個全連接層,每個卷積層中卷積核大小分別為11×11、5×5、3×3、3×3 和3×3。2014 年,SIMONYAN 等人[14]提出一種VGG16 網(wǎng)絡(luò),采用2 個3×3 卷積核組合替代1 個5×5 卷積核,得到的感受野大小與5×5 卷積核相同。2 個3×3 卷積核的參數(shù)量為19,1 個5×5 卷積核的參數(shù)量為26,由此可見在相同感受野下,采用小尺度卷積核所需參數(shù)量更少。
本文在VGG16 網(wǎng)絡(luò)模型的基礎(chǔ)上設(shè)計(jì)小尺度核卷積塊(Conv-block),其結(jié)構(gòu)如圖2 所示。每個小尺度核卷積塊包含2 個卷積塊,每個卷積塊由1 個卷積層、1 個批標(biāo)準(zhǔn)化(Batch Normalization,BN)層和1 個激活層組成。卷積層均采用3×3 卷積核,每個卷積層后加入BN 層處理,以加大搜索補(bǔ)償并加快收斂。為使網(wǎng)絡(luò)具有非線性,在BN 層后引入激活層。小尺度核卷積塊選擇小尺度卷積核代替大尺度卷積核,并通過增加網(wǎng)絡(luò)層數(shù)保持圖像性質(zhì),避免圖像特征丟失,確保提取特征時有足夠的感受野,在減少參數(shù)量的同時提升網(wǎng)絡(luò)性能。
圖2 小尺度核卷積塊結(jié)構(gòu)Fig.2 Structure of small-scale kernel convolution block
卷積層采用內(nèi)核大小為m×m的濾波器與輸入圖像進(jìn)行卷積運(yùn)算。每個卷積層的網(wǎng)絡(luò)神經(jīng)元與輸入圖像局部區(qū)域有m×m個連接,計(jì)算公式如下:
其中,x為輸入圖像中進(jìn)行卷積運(yùn)算的局部感受野像素值,y為輸出特征圖的像素值,w為卷積核的權(quán)重值,b為偏置值,f(·)為Leaky-ReLU 激活函數(shù)[15]。
f(·)是ReLU 激活函數(shù)的變體,其計(jì)算公式如下:
其中,斜率α∈(0,1),本文中設(shè)置α=0.01。由于導(dǎo)數(shù)不為零,因此激活函數(shù)使負(fù)軸信息不會完全丟失,從而減少靜默神經(jīng)元,可有效解決ReLU 函數(shù)在負(fù)區(qū)間時神經(jīng)元不學(xué)習(xí)的問題。
批標(biāo)準(zhǔn)化操作采用單位高斯分布規(guī)范網(wǎng)絡(luò)中的激活函數(shù)以避免輸入初始化,從而使每層輸入達(dá)到穩(wěn)定分布,以幫助網(wǎng)絡(luò)訓(xùn)練并避免出現(xiàn)過擬合現(xiàn)象。
本文基于小尺度核卷積的人臉表情識別模型結(jié)構(gòu)如圖3 所示。該模型由5 個采用3×3 卷積的小尺度核卷積塊、5 個最大池化(Max pooling)層、1 個全連接(Fully connected)層和1 個輸出層組成。5 個小尺度核卷積塊的卷積核個數(shù)分別為64、128、256、512和512,步長和填充均為1。模型輸入為44 像素×44 像素的灰度圖,經(jīng)過第1 個小尺度核卷積塊處理后,輸出64 張44 像素×44 像素的特征圖,與原輸入圖像大小相同。最大池化層進(jìn)行下采樣,得到64 張大小為22 像素×22 像素的特征圖,每張?zhí)卣鲌D大小均為原輸入圖像的一半。經(jīng)過第2 個小尺度核卷積塊處理后,輸出128 張大小為22 像素×22 像素的特征圖。最大池化層進(jìn)行下采樣,得到128 張大小為11 像素×11 像素的特征圖。再經(jīng)過3 次相同的“小尺度核卷積塊+池化”操作后,得到512張大小為2像素×2像素的特征圖,輸入含有512 個神經(jīng)元的全連接層,輸出1 個512 維向量,最終通過Softmax 分類器獲得7 種表情的分類結(jié)果,人臉表情識別模型的各層具體參數(shù)如表1 所示(“—”表示該參數(shù)值不存在)。
圖3 人臉表情識別模型Fig.3 Facial expression recognition model
表1 人臉表情識別模型參數(shù)Table 1 Parameters of facial expression recognition model
在上述模型中,池化層對輸入層的空間維度執(zhí)行下采樣操作,通過降低特征維度來減小輸入圖像的特征圖大小并采用最大池化操作。完全連接層具有與輸入中每個權(quán)重相連的神經(jīng)元,最終輸出結(jié)果為1 個向量,其維度大小為卷積核個數(shù)。
Softmax 分類器將輸入值壓縮為0~1 輸出直觀的歸一化類概率,計(jì)算公式為:
其中,N為總類別數(shù),S(x)j為Softmax 分類器將輸入x分類為j的概率。
交叉熵?fù)p失函數(shù)的表達(dá)式如下:
其中,g(xi) 為模型輸出預(yù)測值,yi為真實(shí)值,N為樣本數(shù)。
模型計(jì)算復(fù)雜度通常采用參數(shù)量衡量,參數(shù)量的計(jì)算公式如下:
其中,S為模型整體參數(shù)量,K為卷積核尺寸,I為輸入圖像通道數(shù),O為輸出圖像通道數(shù)。本文模型參數(shù)量較傳統(tǒng)AlexNet 網(wǎng)絡(luò)和VGG16 網(wǎng)絡(luò)大幅減少,并少于改進(jìn)AlexNet[16]網(wǎng)絡(luò),表明采用小尺度核卷積塊的模型結(jié)構(gòu)可有效減少參數(shù)量,在一定程度上降低計(jì)算復(fù)雜度。
本文實(shí)驗(yàn)采用GPU 版本的pytorch 框架,硬件平臺為Ubuntu 16.04.2,雙核Intel 2.2 GHz CPU,Tesla K80 GPU,1 TB 硬盤內(nèi)存,11 GB 運(yùn)行內(nèi)存。在全連接層上應(yīng)用Dropout 算法,丟失率設(shè)置為0.6,以避免出現(xiàn)過擬合現(xiàn)象。采用參數(shù)β1=0.600 和β2=0.999 的Adam 優(yōu)化器來更新網(wǎng)絡(luò)模型參數(shù)。
本文采用FER2013 數(shù)據(jù)集[17]和CK+數(shù)據(jù)集進(jìn)行訓(xùn)練與測試。FER2013 數(shù)據(jù)集是常用的人臉表情公開數(shù)據(jù)集,共有35 888 張面部表情圖像,包含不同光照情況、姿勢角度和面部比例的人臉。該數(shù)據(jù)集由28 709張訓(xùn)練圖像、3 589 張公開測試圖像和3 589 張私有測試圖像組成,圖像均為48 像素×48 像素的灰度圖。其中,每張圖像的類別標(biāo)記如下:0=憤怒,1=厭惡,2=恐懼,3=快樂,4=悲傷,5=驚喜,6=中立,7 種表情示例如圖4 所示。
圖4 FER2013 數(shù)據(jù)集中7 種表情示例Fig.4 Example of seven kinds of expressions in FER2013 dataset
CK+數(shù)據(jù)集[18]是人臉表情識別的代表性數(shù)據(jù)集之一,其包括123 個人共593 組圖像序列,展示人臉從表情平靜到表情變化達(dá)到峰值的過程。該數(shù)據(jù)集中帶標(biāo)簽的表情序列有327 個,包含中性、憤怒,蔑視、厭惡、恐懼、高興、悲傷和驚訝8 種表情。本文實(shí)驗(yàn)選取除中性表情之外的其他7 種表情圖像,7 種表情示例如圖5所示。從每組圖像序列中提取最后3幀圖像,共981張。所有圖像經(jīng)過預(yù)處理大小均為48 像素×48 像素。
圖5 CK+數(shù)據(jù)集中7 種表情示例Fig.5 Example of seven kinds of expressions in CK+dataset
為解決數(shù)據(jù)樣本小造成模型泛化能力差的問題,本文實(shí)驗(yàn)對數(shù)據(jù)進(jìn)行增強(qiáng)處理。在訓(xùn)練階段,對原始圖像進(jìn)行隨機(jī)剪裁,得到大小為44 像素×44 像素的圖像,再進(jìn)行隨機(jī)鏡像處理以弱化過擬合作用。在測試階段,分別在每張圖像的左上角、右上角、左下角、右下角和中心處進(jìn)行切割,并通過水平鏡像處理使數(shù)據(jù)集擴(kuò)大10 倍,將其輸入人臉表情識別模型得到相應(yīng)的概率,概率取平均值后的輸出類別即為最終的表情類別。
在FER2013 數(shù)據(jù)集實(shí)驗(yàn)中,在模型訓(xùn)練階段將28709張圖像作為訓(xùn)練集。實(shí)驗(yàn)共迭代250 輪,批大小設(shè)置為128。初始化學(xué)習(xí)率設(shè)置為0.01,前80 輪迭代學(xué)習(xí)率保持不變,當(dāng)?shù)啍?shù)超過80 后,學(xué)習(xí)率開始衰減,每迭代5 輪衰減1 次,學(xué)習(xí)率減少1/10。在測試階段,用3 589 張公開測試圖像得到識別率,并通過反向傳播進(jìn)一步優(yōu)化網(wǎng)絡(luò)。然后用3 589 張測試圖像驗(yàn)證模型,對每輪迭代的識別率取平均值得到最終識別效果,以此來評估算法性能。
本文生成的FER2013 測試集表情分類混淆矩陣如圖6 所示,其反映了人臉圖像在7 種表情上的識別率??梢钥闯?,快樂最易區(qū)分,其識別率達(dá)到92%,明顯高于其他表情。驚訝、厭惡和中性的識別率也較高,分別為85%、78%和74%,這4 種表情也是人類日常生活中常見的面部表情。憤怒、恐懼和悲傷的識別率相對較低,分別為64%、56%和61%,其原因?yàn)椋?)數(shù)據(jù)集中這3 種表情圖像數(shù)量較少造成訓(xùn)練不足,導(dǎo)致分類出現(xiàn)誤差;2)這3種表情具有一定相似性,容易混淆難以區(qū)分。
圖6 FER2013 數(shù)據(jù)集表情分類混淆矩陣Fig.6 Confusion matrix of expression classification in FER2013 dataset
在CK+數(shù)據(jù)集實(shí)驗(yàn)中,將數(shù)據(jù)集按9∶1 的圖像數(shù)量比例分為訓(xùn)練集和測試集,得到882 張訓(xùn)練圖像和99 張測試圖像。實(shí)驗(yàn)共迭代60 輪,批大小設(shè)置為128。初始化學(xué)習(xí)率設(shè)置為0.01,前20 輪迭代學(xué)習(xí)率保持不變,當(dāng)?shù)啍?shù)超過20 后,學(xué)習(xí)率開始衰減,每迭代1 輪衰減1 次,學(xué)習(xí)率減少1/5,采用十折交叉驗(yàn)證法得到CK+測試集表情分類混淆矩陣,如圖7所示。與FER2013 測試集實(shí)驗(yàn)類似,由于恐懼、悲傷和蔑視3 類表情的圖像數(shù)量相對較少且表情不易區(qū)分,因此其識別率低于憤怒、厭惡、高興和驚訝。
圖7 CK+數(shù)據(jù)集表情分類混淆矩陣Fig.7 Confusion matrix of expression classification in CK+dataset
為驗(yàn)證本文方法的有效性,分別在FER2013數(shù)據(jù)集和CK+數(shù)據(jù)集上,將本文方法與FER2013 record[19]、DNNRL[10]和CPC[20]、FsNet+TcNet[21]、MSSD+KCF[22]、FRR-CNN[23]、多特征融合[24]以及改進(jìn)殘差網(wǎng)絡(luò)[11]等其他表情識別方法的識別率進(jìn)行比較。其中,F(xiàn)ER2013 record、DNNRL 和CPC 是人臉表情識別的經(jīng)典方法,F(xiàn)ER2013 record 具有Kaggle2013 比賽識別率排行榜最高的記錄,DNNRL 提出3 級混合結(jié)構(gòu)并采用決策層集成獲取決策多樣性,CPC 將數(shù)據(jù)集進(jìn)行復(fù)雜感知分類,可解決環(huán)境和表情類別的不一致問題。FsNet+TcNet和MSSD+KCF 為近年來提出的方法,F(xiàn)sNet+TcNet 對圖像進(jìn)行人臉分割處理,通過分割出與表情識別關(guān)聯(lián)度最大的人臉區(qū)域來提升網(wǎng)絡(luò)識別精度,MSSD+KCF采用多尺度核特征卷積,以通道數(shù)合并的特征融合方式提高表情識別精度。上述方法在FER2013 數(shù)據(jù)集和CK+數(shù)據(jù)集中的比較結(jié)果如表2 所示。
表2 不同表情識別方法在2 個數(shù)據(jù)集中的識別率Table 2 Recognition rate of different expression recognition methods in two datasets %
由表2 可以看出,對于FER2013 數(shù)據(jù)集和CK+數(shù)據(jù)集,本文方法優(yōu)于減少特征冗余的卷積神經(jīng)網(wǎng)絡(luò)FRR-CNN、多特征融合方法和改進(jìn)殘差網(wǎng)絡(luò)的方法。本文方法保留了圖像特征的完整性,在原始圖像基礎(chǔ)上進(jìn)行數(shù)據(jù)增強(qiáng)處理,并采用多層小尺度核卷積減少網(wǎng)絡(luò)參數(shù)量,在一定程度上降低了算法復(fù)雜度,因而其識別效果更好。
本文提出一種利用小尺度核卷積的人臉表情識別方法,采用小尺度核卷積塊與池化層相結(jié)合的網(wǎng)絡(luò)結(jié)構(gòu)提取人臉表情特征,在相同感受野下加深網(wǎng)絡(luò)并精簡網(wǎng)絡(luò)結(jié)構(gòu),利用Softmax 分類器獲取表情分類結(jié)果,同時在模型訓(xùn)練和測試階段對數(shù)據(jù)進(jìn)行增強(qiáng)處理,提升網(wǎng)絡(luò)泛化能力以減少識別誤差。實(shí)驗(yàn)結(jié)果表明,與FER2013 record、DNNRL 等方法相比,該方法的人臉表情識別率更高。后續(xù)將去除人臉圖像中與表情無關(guān)的冗余部分,以更精確地提取表情特征。