喬桂芳,侯守明*,劉彥彥
(1.河南理工大學(xué)計算機科學(xué)與技術(shù)學(xué)院,河南焦作 454003;2.杭州師范大學(xué)阿里巴巴商學(xué)院,杭州 311121)
面部表情作為人臉識別和情感信息傳遞的重要門戶,在人機交互領(lǐng)域正經(jīng)歷著空前未有的發(fā)展。面部表情識別主要利用計算機提取給定的靜態(tài)人臉圖像或動態(tài)人臉序列的表情特征,使其以人的思維對檢測到的表情進(jìn)行理解和分類,滿足人們在不同應(yīng)用場景下的需求,進(jìn)而建立良好的人機智能交互環(huán)境。面部表情識別技術(shù)在疲勞駕駛、互聯(lián)網(wǎng)教學(xué)、刑事案件偵測、醫(yī)學(xué)診斷、安防監(jiān)控、心理咨詢等領(lǐng)域有著非常廣泛的應(yīng)用。
面部表情識別的五個過程包括表情圖像獲取、輸入數(shù)據(jù)預(yù)處理、提取層次特征、表情分類和所屬類別,其核心是提取層次特征,高效快速地抽取表情圖像中的有利信息是提升表情識別準(zhǔn)確率的重要前提。傳統(tǒng)的表情識別方法主要通過人工提取特征,如Gabor 小波變換、方向梯度直方圖(Histograms of Oriented Gradients,HOG)、主成分分析(Principal Components Analysis,PCA)等,再結(jié)合支持向量機(Support Vector Machine,SVM)進(jìn)行分類。傳統(tǒng)方法設(shè)計特征需要借助一定的專家知識,人為干擾因素較大,且易丟失原有樣本的特征信息,進(jìn)而影響表情識別準(zhǔn)確率。然而卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network,CNN)可將原始數(shù)據(jù)直接傳送至模型,依據(jù)端到端的圖形拓?fù)浣Y(jié)構(gòu)自動提取輸入數(shù)據(jù)的抽象特征,有效縮短人工預(yù)處理的過程。1989年,LeCun 等發(fā)明CNN,并于1998 年采用LeNet-5 模型成功提高手寫字符識別率。Krizhevsky 等在2012 年創(chuàng)造了深層CNN AlexNet,首次實現(xiàn)Top 5 最低誤差率,是CNN 崛起的轉(zhuǎn)折點。Simonyan 等于2014 年提出VGGNet,通過疊加小尺寸卷積核不斷加深網(wǎng)絡(luò)層次,取得不錯的分類精度。為了更有效地改善表情識別的準(zhǔn)確性,眾多研究者開始改進(jìn)CNN與其他特征方法結(jié)合使用,Li 等提出改進(jìn)CNN 與注意力機制相融合的方法,將全局圖像特征與多個無遮擋的面部感興趣區(qū)域特征集合起來,從而提高無遮擋區(qū)域特征的表現(xiàn)能力;Xie 等采用空間注意力+多路連接的方法對CNN 進(jìn)行針對性的改進(jìn),先微調(diào)預(yù)訓(xùn)練的模型得到特征圖,加入空間注意力機制,突顯表情區(qū)域,再對具有明顯區(qū)分性的特征向量進(jìn)行全連接和分類;Xia 等設(shè)計多個損失函數(shù)加權(quán)組合,通過網(wǎng)格搜索方法提升含遮擋人臉表情的識別效果;王忠民等借助改進(jìn)的CNN 模型作為特征提取器,抽取更深層次的復(fù)雜特征,融合SVM 進(jìn)行表情識別,最終識別精度高于傳統(tǒng)方法。上述研究表明,CNN 的確能夠進(jìn)一步提升表情識別準(zhǔn)確率,但隨著各種網(wǎng)絡(luò)模型及其變體的提出,導(dǎo)致網(wǎng)絡(luò)結(jié)構(gòu)越來越復(fù)雜,參數(shù)量增多且識別效果不夠理想。
為此,本文提出一種基于改進(jìn)卷積神經(jīng)網(wǎng)絡(luò)與非線性支持向量機相結(jié)合的面部表情識別算法。首先,在感受野大小不變的前提下,多個結(jié)構(gòu)簡單的小尺寸卷積核以串并聯(lián)融合的方式代替大尺寸卷積核,在增強模型特征學(xué)習(xí)能力的同時擁有更少的網(wǎng)絡(luò)參數(shù),且獲得的特征分類性更強;其次,采用全局平均池化(Global Average Pooling,GAP)層取代全連接層,簡化卷積結(jié)構(gòu),同時省略大量訓(xùn)練調(diào)優(yōu)的參數(shù);最后,送入SVM 分類器進(jìn)行表情分類,以提升模型的泛化能力。
典型的CNN由卷積層、池化層、全連接層和Softmax 分類函數(shù)組成,圖1 為其基本結(jié)構(gòu)。CNN 具有強大的表征學(xué)習(xí)能力,其隱含層內(nèi)引入的參數(shù)共享和層間連接稀疏性機制,能極大地減少模型參數(shù)量,具備辨識面部表情微小變化的潛力。
圖1 CNN基本結(jié)構(gòu)Fig.1 Basic structure of CNN
圖1 中的卷積層用于提取圖像細(xì)節(jié)和抽象信息,實現(xiàn)參數(shù)共享;池化層能縮減特征圖尺寸,起到降維效果;全連接層執(zhí)行最終分類任務(wù)。經(jīng)大量研究發(fā)現(xiàn),傳統(tǒng)CNN 算法用于表情識別需關(guān)注以下三個問題:
1)面部表情識別的關(guān)鍵在于快速覺察人臉五官微妙變化的特征,傳統(tǒng)CNN 直接應(yīng)用于面部表情識別領(lǐng)域,識別效果不佳;
2)傳統(tǒng)CNN 模型中2~3 層的全連接層產(chǎn)生的參數(shù)量過大,占據(jù)CNN 總參數(shù)的80%以上,參數(shù)過多導(dǎo)致計算量增加,還易引起過擬合,不利于面部表情的快速分類;
3)傳統(tǒng)CNN 模型中的Softmax 分類函數(shù)只是使輸出結(jié)果符合概率分布,并未對識別性能產(chǎn)生幫助,在小樣本和多分類任務(wù)中,性能不優(yōu)越,難以進(jìn)一步提升最終識別精度。
w
×h
×d
,將平均池化的窗口大小動態(tài)設(shè)置成特征圖大小w
×h
,經(jīng)GAP 變換后,每一層w
×h
會被平均化成一個值進(jìn)行展平和全連接操作,即輸出值為1×1×d
,特征圖結(jié)構(gòu)可表示為N
×1×1×d
,N
表示特征圖的數(shù)量,最后將得到的二維數(shù)據(jù)N
×d
送入SVM 分類器。m
類,先構(gòu)造m
-1 個SVM 子分類器,轉(zhuǎn)換為處理二分類問題,第i
個分類器將類別為T
的樣本標(biāo)記為+1,剩余類別全標(biāo)記為-1,SVM 多分類算法過程如圖2 所示。圖2 SVM多分類算法過程Fig.2 SVM multi-classification algorithm process
圖3 為所提優(yōu)化算法的基本識別流程。
圖3 基于改進(jìn)CNN+SVM的面部表情識別算法流程Fig.3 Flow of facial expression recognition algorithm based on improved CNN+SVM
本文算法的步驟如下:
1)輸入層對原始表情數(shù)據(jù)進(jìn)行預(yù)處理;
2)特征提取層對預(yù)處理后的表情灰度圖進(jìn)行深度提?。?/p>
3)計算修正線性單元(Rectified Linear Unit,ReLU)激活函數(shù)值:
4)用最大值池化方式進(jìn)行降維減參:
MP
表示最大池化后的輸出特征圖;X
(K
)表示輸出特征圖的第K
個像素值。5)對最后卷積層輸出的特征圖進(jìn)行GAP 變換:
W
和偏置b
:η
表示學(xué)習(xí)率;E
表示誤差函數(shù)。7)將GAP 層的稀疏特征數(shù)據(jù)送入SVM 分類器,計算高維特征空間最大分離超平面:
x
表示任意一個樣本點;x
表示中心坐標(biāo)值;σ
表示函數(shù)的寬度參數(shù),σ
<0。圖4 為算法總體改進(jìn)策略。根據(jù)深度模型VGG16連續(xù)卷積的思想設(shè)計網(wǎng)絡(luò)模型,本文構(gòu)建的基于改進(jìn)CNN+SVM 算法的面部表情識別模型如圖5 所示。圖5 中標(biāo)注了每層的命名、卷積核大小和通道數(shù),“@”符號后面的數(shù)字為卷積層通道數(shù)。此模型由一個輸入層、三個卷積模塊層、一個GAP 層和一個SVM 分類器構(gòu)成。三個卷積模塊層結(jié)構(gòu)相同,由含兩個3×3 卷積核的卷積層串聯(lián),隨后緊跟池化層及隨機丟棄層(Dropout)組成,另外,模型中加入ReLU 激活函數(shù)防止梯度彌散。改進(jìn)模型先通過卷積模塊中的卷積層提取表情圖像特征,之后將提取到的深層次特征通過下采樣層進(jìn)行降維處理,并融入Dropout 機制預(yù)防過擬合,GAP 層將最后得到的特征圖送入SVM 分類器,執(zhí)行分類任務(wù)。
圖4 本文算法總體改進(jìn)策略Fig.4 Overall improvement strategy of proposed algorithm
圖5 基于改進(jìn)CNN+SVM算法的面部表情識別模型結(jié)構(gòu)Fig.5 Structure of facial expression recognition model based on improved CNN+SVM algorithm
圖5 中的卷積模塊1(ConvBlock_1)、卷積模塊2(ConvBlock_2)、卷積模塊3(ConvBlock_3)是改進(jìn)CNN+SVM模型中的卷積提取層。其中:ConvBlock_1 用兩個通道數(shù)為32 的3×3 卷積核提取面部表情特征,選用小尺寸卷積核代替較大卷積核,能有效減少網(wǎng)絡(luò)模型參數(shù)量,同時提升網(wǎng)絡(luò)性能;ConvBlock_2 中用兩個通道數(shù)為32 的3×3 卷積核并聯(lián)取代一個通道數(shù)為64 的3×3 卷積核,通過拓展網(wǎng)絡(luò)寬度保持表情圖像的性質(zhì),確保參數(shù)量一致的前提下,前者能提取的特征分類性更強、非線性激活更多;同樣原理,將ConvBlock_3中通道數(shù)為128 的較大卷積核進(jìn)行串并聯(lián)融合操作。
輸入48×48 像素的表情灰度圖,經(jīng)過ConvBlock_1 操作和Same 填充后,進(jìn)行了平卷積,輸出與輸入大小一致,經(jīng)最大值下采樣,得到的特征圖大小減半,為24×24 像素。通過ConvBlock_2 和ConvBlock_3 中“卷積+最大池化”計算后,得到6×6×128 的特征圖,經(jīng)GAP 變換,得到一個1×1×128 的張量,送入SVM 進(jìn)行分類。模型中各網(wǎng)絡(luò)層的參數(shù)量計算方法如式(8):
CNN
表示卷積層的參數(shù)量;FCN
表示全連接層的參數(shù)量;K
表示卷積核個數(shù);H
和W
分別表示卷積核的高和寬;I
表示卷積層輸入數(shù)據(jù)的通道數(shù);B
表示偏置量;FC
表示全連接層輸入數(shù)據(jù)的維度;FC
表示輸出神經(jīng)元的節(jié)點數(shù)?;诟倪M(jìn)CNN+SVM 算法的面部表情識別模型的各網(wǎng)絡(luò)層參數(shù)情況如表1 所示,該模型的總參數(shù)量遠(yuǎn)小于傳統(tǒng)CNN 模型。表1 基于改進(jìn)CNN+SVM算法的面部表情識別模型的各層參數(shù)描述Tab 1 Parameter description of each layer of facial expression recognition model based on improved CNN+SVM algorithm
本文模型訓(xùn)練采用Fer2013和CK+兩個數(shù)據(jù)集,按8∶2 的比例隨機劃分為訓(xùn)練集和測試集。表2~3 給出了各數(shù)據(jù)集的標(biāo)簽對照及訓(xùn)練集和測試集中各表情類別數(shù)量分布情況。實驗中先將全部圖像預(yù)處理并歸一化成48×48 大小的灰度圖,如圖6 所示。
表2 Fer2013數(shù)據(jù)集中英標(biāo)簽對照及各類別數(shù)Tab 2 Chinese and English labels and numbers of different categories in Fer2013 dataset
圖6 Fer2013、CK+數(shù)據(jù)集中7類表情樣例圖Fig.6 Sample diagrams of 7 categories of facial expression in Fer2013 and CK+datasets
由于CK+數(shù)據(jù)集樣本總數(shù)偏少,送入神經(jīng)網(wǎng)絡(luò)訓(xùn)練容易造成泛化能力弱及過擬合問題,實驗過程中對CK+訓(xùn)練集圖像做隨機旋轉(zhuǎn)、隨機縮放、水平/垂直平移、隨機水平翻轉(zhuǎn)、亮度及對比度變化等幾何變換以擴增數(shù)據(jù)集,如圖7 所示。
圖7 CK+數(shù)據(jù)集中人臉圖像數(shù)據(jù)增強前后對比Fig.7 Comparison before and after facial image data augmentation in CK+dataset
表3 CK+數(shù)據(jù)集中各表情類別數(shù)Tab 3 Number of each expression category in CK+dataset
采用深度學(xué)習(xí)框架Tensorflow 來驗證本文改進(jìn)模型的可行性,實驗環(huán)境及硬件配置如下:CPU 為Intel Core i5-7200U,內(nèi)存8 GB,GPU4 GB,TITANX(Pascal),軟件環(huán)境為Python 3.6.12,Tensorflow 2.0.0,Windows10 專業(yè)版64 位。
本實驗主要通過識別準(zhǔn)確率、損失函數(shù)變化曲線、模型參數(shù)量三個指標(biāo)來評估算法性能?;诒疚乃惴ǖ母倪M(jìn)模型確保訓(xùn)練時間相差不大,損失函數(shù)有所下降,準(zhǔn)確率有所提高,模型參數(shù)量比改進(jìn)前有所減少。網(wǎng)絡(luò)訓(xùn)練時的批次大小設(shè)置恰當(dāng)?shù)姆秶苁固荻认陆捣较驕?zhǔn)確且振蕩小,過大會出現(xiàn)局部最優(yōu),過小會難以收斂,通過多次實驗,最終將批次大小設(shè)置為24,并加入隨機梯度下降策略優(yōu)化網(wǎng)絡(luò)模型。實驗參數(shù)設(shè)置如表4 所示。
表4 模型訓(xùn)練參數(shù)描述Tab 4 Model training parameter description
利用基于改進(jìn)CNN+SVM 算法的模型在Fer2013、CK+數(shù)據(jù)集上訓(xùn)練,得到的識別精度曲線和損失值變化曲線如圖8所示。由圖8 可看出:在CK+數(shù)據(jù)集上,當(dāng)?shù)螖?shù)達(dá)到150時,模型趨于穩(wěn)定,識別準(zhǔn)確率為98.06%;在Fer2013 數(shù)據(jù)集上,識別準(zhǔn)確率達(dá)到73.4%,性能明顯提升。圖8(b)中,損失誤差值在特定的迭代次數(shù)內(nèi)逐漸降低,結(jié)合了GAP 和SVM 分類器的優(yōu)點,其收斂速度更快。因此,基于改進(jìn)CNN+SVM 算法設(shè)計的網(wǎng)絡(luò)模型能夠很好地學(xué)習(xí)表情特征,具有更好的分類效果。
圖8 Fer2013及CK+數(shù)據(jù)集上的訓(xùn)練過程曲線Fig.8 Training process curves on Fer2013 and CK+datasets
基于改進(jìn)CNN+SVM 算法的網(wǎng)絡(luò)模型在Fer2013、CK+數(shù)據(jù)集上對各類表情的識別結(jié)果如圖9 所示。圖9 中共7 種表情類別,混淆矩陣圖主對角線上數(shù)字為該優(yōu)化算法對各類表情的識別準(zhǔn)確率。由圖9 可以得出,本文算法對一些表情變化不明顯和不容易區(qū)分的類別誤判率較高。圖9(a)中,類間準(zhǔn)確率較低的是恐懼(0.62)和悲傷(0.62),因悲傷和恐懼表情有著相似的嘴角和眉毛變化,導(dǎo)致二者的核心特征難以被充分學(xué)習(xí)。圖9(b)中,蔑視的準(zhǔn)確率最低(0.955),因蔑視表情表現(xiàn)為微抬嘴唇,嘴角微微上揚,面部肌肉運動幅度小,導(dǎo)致在SVM 分類中不易被判斷和識別。
圖9 各數(shù)據(jù)集生成的表情類別混淆矩陣圖Fig.9 Confusion matrix of expression category generated by each dataset
圖10 描述了傳統(tǒng)LeNet-5 算法與本文算法在Fer2013 數(shù)據(jù)集和CK+數(shù)據(jù)集上的識別準(zhǔn)確率對比曲線。由圖10 可見,傳統(tǒng)LeNet-5 算法在Fer2013 數(shù)據(jù)集上的識別率為61.2%,而改進(jìn)模型識別率達(dá)到73.4%,提升了2.2 個百分點;且改進(jìn)模型在CK+數(shù)據(jù)集上識別率維持在98.06%。本文算法在兩個表情數(shù)據(jù)庫上效果比傳統(tǒng)LeNet-5 算法更好的原因:1)改進(jìn)的CNN 結(jié)合了GAP 的優(yōu)點,GAP 層在特征圖與最終分類間轉(zhuǎn)換更簡單且省略大量訓(xùn)練參數(shù)的特點;2)Softmax 函數(shù)分配一個高值給某個節(jié)點,其余節(jié)點分配低值,結(jié)果兩極分化。SVM 是計算每一類樣本的估計概率值,分類性能更可靠。
圖10 傳統(tǒng)模型和改進(jìn)模型在Fer2013、CK+數(shù)據(jù)集上的識別準(zhǔn)確率比較Fig.10 Comparison of recognition accuracy between traditional model and the improved model on Fer2013 and CK+datasets
為進(jìn)一步驗證本文提出的改進(jìn)CNN+SVM 算法的優(yōu)越性,將本文算法與其他算法進(jìn)行綜合對比分析。輕量級卷積+注意力機制(Lightweight Convolution Model based on Attention,LCMA)算法,通過分解多路通道卷積減少模型參數(shù),得到69.6% 的識別率。改進(jìn)CNN+自編碼器(AutoEncoder,AE)引入含注意力機制的CNN 通道和卷積自編碼器預(yù)訓(xùn)練通道相結(jié)合的雙通道模型,利用殘差思想提取表情特征,取得72.7%的識別率。結(jié)合單發(fā)多盒檢測器(MobileNet Single Shot multibox Detector,MSSD)及核濾波(Kernel Correlation Filter,KCF)模型MSSD+KCF對輕量級CNN 改進(jìn),跟蹤檢測人臉坐標(biāo)信息,以多尺度特征融合的方式快速精確地識別表情特征。CNN+改進(jìn)Softmax先在中心損失函數(shù)的基礎(chǔ)上增加注意力機制,再融合Softmax 損失函數(shù)共同監(jiān)督表情訓(xùn)練,得到良好的識別性能。淺層CNN是在LeNet-5 基礎(chǔ)之上調(diào)整并移除兩個全連接層,利用簡單網(wǎng)格搜索方法對圖像隨機旋轉(zhuǎn)的角度進(jìn)行最優(yōu)搜索,取得不錯的分類效果。
由圖11(a)可見,本文算法識別準(zhǔn)確率較優(yōu),這是因為CNN 在逐層提取表情特征時,小尺寸卷積核提取的特征屬性不同,能充分提取圖像更細(xì)節(jié)和局部的信息,改善了識別效果;GAP 層改進(jìn)傳統(tǒng)CNN 中的全連接層,將卷積層輸出特征圖的展平向量過程和分類操作合二為一,直接在特征圖通道上做變換,進(jìn)行降維減參處理,提高了識別準(zhǔn)確率。
在CK+數(shù)據(jù)集的對比實驗中,淺層神經(jīng)網(wǎng)絡(luò)利用數(shù)據(jù)增強及人臉裁剪的手段得到97.38%的識別率;CNN+SVM通過在LeNet-5 算法的基礎(chǔ)上增加一層卷積層和池化層,再融合SVM 分類器的方法提升表情識別效果;改進(jìn)AlexNet通過減少AlexNet 網(wǎng)絡(luò)上卷積層的方法,得到97.46%的識別結(jié)果;多尺度卷積方法在AlexNet 中引入多尺度卷積,提取不同尺度的特征信息,并把低層次特征信息在向下傳遞的同時與高層次特征信息進(jìn)行跨連接特征融合,取得較高的識別準(zhǔn)確率;CNN+LBP利用LBP 提取表情特征,然后用均值聚類方法得到樣本模板,結(jié)合CNN 進(jìn)行表情的識別,方法有效。由圖11(b)可知,所提出的改進(jìn)CNN+SVM 算法識別準(zhǔn)確率相較于傳統(tǒng)機器學(xué)習(xí)方法和改進(jìn)CNN 都有進(jìn)一步的提升,這是因為通過小尺寸卷積核串并聯(lián)融合的技術(shù)避免了表情圖像有利信息的遺漏,減少了計算量,再融合SVM 分類器在小樣本數(shù)據(jù)集上的分類優(yōu)勢,使得分類效果更優(yōu)。
圖11 Fer2013、CK+數(shù)據(jù)集上不同方法的識別效果比較Fig.11 Comparison of recognition effects of different methods on Fer2013 and CK+datasets
由于人們在情感交流時表現(xiàn)出多種混合表情,導(dǎo)致面部表情的識別特殊且復(fù)雜。為解決各種網(wǎng)絡(luò)模型及其變體識別面部表情時存在的結(jié)構(gòu)復(fù)雜、識別不夠理想等問題,本文提出了改進(jìn)CNN 與SVM 相結(jié)合的算法,用于準(zhǔn)確且快速地對表情狀態(tài)分類。通過網(wǎng)絡(luò)串并聯(lián)融合的方式提取到更為全局且代表性更強的表情特征,并設(shè)計維度自適應(yīng)GAP 層融合SVM 分類器,有效減少CNN 模型總參數(shù)量。由對比實驗得出,該改進(jìn)算法在Fer2013 數(shù)據(jù)集上的識別準(zhǔn)確率相較于傳統(tǒng)LeNet-5 算法提升了2.2 個百分點,具有一定的識別效果和穩(wěn)健性。但本文未考慮面部表情信息缺失及非正面人臉圖像在復(fù)雜環(huán)境下的識別率情況,如何將本文算法應(yīng)用于復(fù)雜環(huán)境下的表情識別系統(tǒng)中將是下一步的研究工作。