(1.聊城大學(xué) 物理科學(xué)與信息工程學(xué)院,山東 聊城 252059;2.聊城大學(xué) 機(jī)械與汽車工程學(xué)院,山東 聊城 252059)
人臉表情在人與人交流過程中扮演著重要的角色,是進(jìn)行情感信息交流的主要方式。隨著大數(shù)據(jù)與人工智能時(shí)代的來臨,如何在人機(jī)交互中實(shí)現(xiàn)計(jì)算機(jī)對人臉表情的識別,成為了當(dāng)下的一個(gè)熱門研究領(lǐng)域。
現(xiàn)如今人臉表情識別大多分為兩個(gè)方向,先提取人臉表情特征再使用分類算法進(jìn)行識別的傳統(tǒng)方法和深度學(xué)習(xí)下的人臉表情識別方法。在提取特征方面,眾多學(xué)者提出了LBP特征[1]、尺度不變特征變換(scale-invariant feature transform,SIFT)[2]、灰度共生矩陣(gray-level co-occurrence matrix,GLCM)[3]和Gabor小波變換[4]等特征提取方式,在分類算法上則有支持向量機(jī)(support vector machine,SVM)[5]、K最近鄰分類[6](k-NearestNeighbor,KNN)、隨機(jī)森林[7](random forest,RF)等分類方式。但這些方法所提取特征受人為干擾因素過大,會造成人臉表情信息的丟失,導(dǎo)致最終分類準(zhǔn)確率不高,除此以外,這些方法對其他數(shù)據(jù)的泛化能力也較低。在2012年,Krizhevsky使用卷積神經(jīng)網(wǎng)絡(luò)(convolutional neural networks, CNN)模型在ImageNet競賽中取得冠軍,其Top-5錯(cuò)誤率為17%,遠(yuǎn)超過傳統(tǒng)方法下的圖像分類正確率,這一現(xiàn)象引發(fā)了研究人員的廣泛關(guān)注,從此深度學(xué)習(xí)被廣泛應(yīng)用于圖像分類問題中。例如Tang[8]將CNN與SVM相結(jié)合,在FER2013數(shù)據(jù)集上達(dá)到了71.2%的識別率。Jeon[9]等結(jié)合方向梯度直方圖(histogram of oriented gradient, HOG)和CNN來進(jìn)行人臉表情識別,取得了較好的識別效果。本文也將使用CNN的方式來識別人臉表情,首先提取數(shù)據(jù)庫圖片LBP特征,將其尺寸歸一化之后輸入到改進(jìn)的LeNet-5神經(jīng)網(wǎng)絡(luò)中進(jìn)行識別,實(shí)驗(yàn)結(jié)果表明,所提方法在CK+和JAFFE數(shù)據(jù)庫中可獲得非常好的識別效果。
文中系統(tǒng)流程如圖1所示,主要過程包括:1)圖像預(yù)處理。采用基于Haar-like特征的AdaBoost算法來提取人臉區(qū)域,然后提取人臉區(qū)域LBP特征并將其尺寸歸一化,以作為神經(jīng)網(wǎng)絡(luò)的輸入;2)改進(jìn)神經(jīng)網(wǎng)絡(luò)。原始的LeNet-5網(wǎng)絡(luò)是用來識別手寫體數(shù)字圖片,該種圖片背景單一且較為簡單,因此原始網(wǎng)絡(luò)不適合直接對復(fù)雜的人臉表情進(jìn)行識別,需要對網(wǎng)絡(luò)的各種參數(shù)和結(jié)構(gòu)進(jìn)行調(diào)整;3)實(shí)驗(yàn)與評估。使用調(diào)整好的神經(jīng)網(wǎng)絡(luò)對輸入圖片進(jìn)行訓(xùn)練和識別,統(tǒng)計(jì)準(zhǔn)確率來判斷文中方法性能。
圖1 系統(tǒng)流程圖
CK+與JAFFE數(shù)據(jù)集中的原始圖像包含了人臉區(qū)域和背景,需要經(jīng)過預(yù)處理去除冗余信息,才適合作為神經(jīng)網(wǎng)絡(luò)的輸入圖像,本文中的預(yù)處理為:人臉檢測、LBP特征提取和尺寸歸一化。
本文采用基于Haar-like特征的Adaboost算法檢測人臉區(qū)域,該算法運(yùn)算速度和正確率都很高,可滿足實(shí)時(shí)檢測的要求。該方法基本思想是使用Adaboost算法將基于圖像特征的弱分類器訓(xùn)練為強(qiáng)分類器,再將強(qiáng)分類器組合成級聯(lián)強(qiáng)分類器來檢測人臉區(qū)域,所檢測出的人臉圖像如圖2所示。
圖2 人臉檢測示意圖
LBP是一種描述紋理的算法,具有旋轉(zhuǎn)和灰度不變性[10]等特點(diǎn),被廣泛地應(yīng)用于紋理分析、圖像匹配等領(lǐng)域。常用的LBP有兩種:基本LBP算法和圓形LBP算法?;綥BP算法是將中心點(diǎn)像素值和中心點(diǎn)8鄰域像素值作比較,如果8鄰域像素值小于中心像素值,則標(biāo)記為0,否則標(biāo)記為1,然后從左上角開始順時(shí)針將二值化后的8鄰域像素值組合成一串8位二進(jìn)制數(shù)字,然后將其轉(zhuǎn)換為10進(jìn)制數(shù)字,由該數(shù)字來代替中心像素值。圓形LBP算法則是將基本LBP算法的3×3鄰域擴(kuò)展到任意圓形鄰域,該鄰域可由參數(shù)(P,R)表示,P為鄰域像素個(gè)數(shù),R為該鄰域半徑,該算法改善了基本LBP算法無法識別大尺寸紋理特征的缺點(diǎn)。本文中所提取到的人臉表情LBP特征圖如圖3所示。
圖3 LBP算法示意圖
圖3中可以看出處理后的圖像可明顯突出表情特征。
通過雙線性插值算法將已經(jīng)檢測出來的人臉LBP特征圖尺寸進(jìn)行調(diào)整,使得所有的神經(jīng)網(wǎng)絡(luò)輸入圖片尺寸相同,避免了輸入到神經(jīng)網(wǎng)絡(luò)后出現(xiàn)的尺寸不匹配問題。尺寸歸一化算法為雙線性插值算法,其基本思想是將待求像素點(diǎn)周圍4個(gè)點(diǎn)的像素值進(jìn)行加權(quán)平均,最后計(jì)算出待求點(diǎn)的像素值。該方法可一定程度上避免失真,保持圖像的清晰度。尺寸歸一化之后的圖像如圖4所示。
圖4 尺寸歸一化示意圖
卷積神經(jīng)網(wǎng)絡(luò)是前饋式的神經(jīng)網(wǎng)絡(luò),可從輸入數(shù)據(jù)中自動提取特征,具有很強(qiáng)的學(xué)習(xí)和表達(dá)能力,非常適合圖像分類問題。該網(wǎng)絡(luò)通常包含以下部分:卷積層、池化層、全連接層[11]。
一般來說,卷積層和輸入圖像直接相連,通過使用不同的卷積核將輸入圖像轉(zhuǎn)變?yōu)槌橄蟪潭雀叩膱D像特征并傳給下一層,卷積層的計(jì)算過程如式(1)所示:
(1)
通常在卷積層之后會再加入池化層,池化層不但可以對特征降維,而且可以較好地保持特征的尺度不變性,同時(shí)也能降低神經(jīng)網(wǎng)絡(luò)的運(yùn)算量。池化層計(jì)算公式如式(2)所示:
(2)
表1 改進(jìn)后的LeNet-5網(wǎng)絡(luò)結(jié)構(gòu)
全連接層的作用是將圖像的二維特征組合為一維特征,通常放在卷積層和池化層之后。該層輸出公式如式(3)所示。
Il=f(wlIl-1+bl)
(3)
其中:Il和Il-1分別為輸出和輸入,wl為全連接層的權(quán)重值,bl為全連接層的相應(yīng)的偏置項(xiàng)。
LeNet-5模型最初是用來識別手寫體數(shù)字,其準(zhǔn)確率達(dá)到98%以上,是一種經(jīng)典的神經(jīng)網(wǎng)絡(luò)模型,具體結(jié)構(gòu)如圖5所示。
圖5 Lenet-5網(wǎng)絡(luò)結(jié)構(gòu)圖
使用LeNet-5模型對人臉表情進(jìn)行識別,發(fā)現(xiàn)損失值收斂速度過慢,準(zhǔn)確率較低。經(jīng)分析之后對網(wǎng)絡(luò)結(jié)構(gòu)進(jìn)行改進(jìn),具體如下:
1)原始LeNet-5是用來進(jìn)行手寫體數(shù)字識別,其圖片相對簡單,尺寸也較低,為32×32;而本文所進(jìn)行的人臉表情識別圖像復(fù)雜,且不同表情之間差異較小,使用低尺寸圖片會使得圖像損失特征信息,所以本文將輸入圖像尺寸調(diào)整為128×128。
2)調(diào)整卷積核的個(gè)數(shù)。卷積核的個(gè)數(shù)影響到之后輸出的特征圖個(gè)數(shù),考慮到人臉表情過于復(fù)雜,本文將增加卷積核的個(gè)數(shù)以提高網(wǎng)絡(luò)分辨表情的能力,將前6層的卷積核個(gè)數(shù)分別設(shè)置為16、16、32、32、64和64,同時(shí)將后3層全連接層的輸出節(jié)點(diǎn)個(gè)數(shù)分別設(shè)置為128,64和7。
3)調(diào)整卷積核的尺寸大小。卷積核的尺寸與提取到的特征質(zhì)量有關(guān),原始的LeNet-5采用5×5的卷積核,用來提取人臉圖像特征效果不好,本文將調(diào)整卷積核大小,具體為表1所示。
4)將sigmoid激活函數(shù)替換為Leaky ReLU激活函數(shù)。原有sigmoid函數(shù)計(jì)算量過大,并且在輸入過大或者過小時(shí),輸出會接近+1和-1,斜率很低,在使用梯度下降法時(shí)梯度下降過慢,會嚴(yán)重降低訓(xùn)練速度,不適合當(dāng)前網(wǎng)絡(luò)結(jié)構(gòu)。所采用的Leaky ReLU函數(shù)與當(dāng)前卷積神經(jīng)網(wǎng)絡(luò)常用的ReLU激活函數(shù)相比,其優(yōu)點(diǎn)在于可以避免當(dāng)輸入為負(fù)值時(shí)導(dǎo)致權(quán)重?zé)o法更新的問題。
5)在原有的前4層網(wǎng)絡(luò)之后,新加入第5層卷積層和第6層池化層。本文網(wǎng)絡(luò)結(jié)構(gòu)輸入圖像尺寸為128×128,經(jīng)過前4層網(wǎng)絡(luò)之后特征圖尺寸為11×11,需要繼續(xù)降低尺寸,減少計(jì)算的復(fù)雜度。
6)在第一層全連接層之后加入Dropout函數(shù),Dropout可用來解決網(wǎng)絡(luò)模型中數(shù)據(jù)過擬合的問題,也可以增強(qiáng)網(wǎng)絡(luò)模型的泛化能力。
7)使用學(xué)習(xí)率指數(shù)衰減法對網(wǎng)絡(luò)結(jié)構(gòu)進(jìn)行優(yōu)化。使用該方法可提高神經(jīng)網(wǎng)絡(luò)訓(xùn)練速度,使訓(xùn)練過程中損失曲線更加穩(wěn)定的下降,減少曲線的震蕩次數(shù)。
改進(jìn)之后的網(wǎng)絡(luò)模型結(jié)構(gòu)如表1所示。表1結(jié)構(gòu)包含卷積層、池化層和全連接層,輸入層和softmax層未列于此表中。
本文將分別在CK+與JAFFE公開數(shù)據(jù)集上進(jìn)行測試,由于JAFFE數(shù)據(jù)集不包含輕蔑類型的表情,因此本文將去除CK+數(shù)據(jù)集中的輕蔑類型,最終將表情分類為生氣、厭惡、恐懼、悲傷、快樂、驚訝、中性7種人臉表情。由于CK+和JAFFE數(shù)據(jù)集原始表情數(shù)量較少,本文將原始人臉表情圖像以仿射變換方式對樣本數(shù)量進(jìn)行擴(kuò)充。擴(kuò)充后的CK+數(shù)據(jù)集圖像為6476張,JAFFE數(shù)據(jù)集圖像為4689張。人臉表情圖像樣例如圖6所示。
圖6 CK+與JAFFE數(shù)據(jù)集人臉表情樣例
本文方法使用硬件信息如下:GPU為NVIDAGeForceGTX1660 6G,CPU為InterCorei3 8100 3.6 GHz,內(nèi)存為8 G;軟件信息如下:操作系統(tǒng)為Window 10,安裝Python3.6.5和TensorFlow深度學(xué)習(xí)框架。神經(jīng)網(wǎng)絡(luò)中所設(shè)置超參數(shù)如下:初始化學(xué)習(xí)率為0.0005,學(xué)習(xí)率衰減指數(shù)為0.96,動量為0.9,正則化系數(shù)為0.001,dropout設(shè)置為0.5,Epoch為20。
為證明本文方法的有效性,并探索何種方式才能得出最高的正確率,本文將使用10次10折交叉驗(yàn)證方法,對不同的輸入圖像輸入到不同的網(wǎng)絡(luò)中得到的準(zhǔn)確率做出了統(tǒng)計(jì),具體如表2所示。
表2 CK+與JAFFE數(shù)據(jù)集實(shí)驗(yàn)準(zhǔn)確率
表2中第1列為不同的輸入圖像類型,第2列和第3列為使用原始LeNet-5網(wǎng)絡(luò)和改進(jìn)之后的LeNet-5網(wǎng)絡(luò)對CK+數(shù)據(jù)集上的輸入圖像進(jìn)行識別的準(zhǔn)確率,第4列和第5列為使用原始LeNet-5網(wǎng)絡(luò)和改進(jìn)之后的LeNet-5網(wǎng)絡(luò)對JAFFE數(shù)據(jù)集上的輸入圖像進(jìn)行識別的準(zhǔn)確率。
從表2可以看出,使用原始LeNet-5網(wǎng)絡(luò)來進(jìn)行人臉表情識別準(zhǔn)確率較低,即使輸入圖像為LBP特征圖像,也只提升了2%~3%左右的準(zhǔn)確率,其原因在于原始的網(wǎng)絡(luò)結(jié)構(gòu)并不適合人臉表情識別,需要做出針對性的調(diào)整才能使準(zhǔn)確率得到提高。由實(shí)驗(yàn)數(shù)據(jù)可知將數(shù)據(jù)集圖像所提取的圓形LBP(8,5)特征圖輸入到改進(jìn)的LeNet-5網(wǎng)絡(luò)中,其識別率可達(dá)到最高,在CK+和JAFFE數(shù)據(jù)集可以分別達(dá)到98.19%和96.35%的準(zhǔn)確率。
為進(jìn)一步查看本文中方法性能,使用上述方法統(tǒng)計(jì)不同表情的準(zhǔn)確率,如表3所示。
表3 不同表情識別準(zhǔn)確率
由表3可知,本文方法對CK+數(shù)據(jù)集不同表情識別率均達(dá)到了95%以上,其中高興和驚訝的識別率為100%;在JAFFE數(shù)據(jù)集準(zhǔn)確率稍低,但也有5種表情識別率在95%以上,足以證明本文方法的有效性。
為了更加直觀地觀察神經(jīng)網(wǎng)絡(luò)的性能,本文繪制了JAFFE和CK+數(shù)據(jù)集的損失值和準(zhǔn)確率曲線,如圖7所示。
圖7 不同數(shù)據(jù)集損失和準(zhǔn)確率曲線圖
從圖7中可以看出,隨著迭代次數(shù)的增加,JAFFE和CK+數(shù)據(jù)集的損失值和準(zhǔn)確率均趨于平緩,且損失值可以迅速下降,說明本文所設(shè)計(jì)的網(wǎng)絡(luò)模型較為合理。
表4和表5展示了使用其他方法在JAFFE和CK+表情數(shù)據(jù)集的識別率對比。
表4 JAFFE數(shù)據(jù)集實(shí)驗(yàn)準(zhǔn)確率
表5 CK+數(shù)據(jù)集實(shí)驗(yàn)準(zhǔn)確率
由表4可知,使用深度學(xué)習(xí)對人臉表情進(jìn)行識別要比傳統(tǒng)方法的準(zhǔn)確率高。這是因?yàn)閭鹘y(tǒng)方法所提取特征難以完全描述人臉表情特點(diǎn),進(jìn)而在分類算法中準(zhǔn)確率難以得到提高。
由表5可知,雖然同樣采用了深度學(xué)習(xí)的方法來進(jìn)行人臉識別,但本文方法的準(zhǔn)確率是最高的。文獻(xiàn)[15]和文獻(xiàn)[16]所使用卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)較為基礎(chǔ),沒有針對人臉表情識別問題對網(wǎng)絡(luò)結(jié)構(gòu)做出針對性的調(diào)整,且訓(xùn)練樣本較少,最終準(zhǔn)確率較低;文獻(xiàn)[17]雖然對網(wǎng)絡(luò)結(jié)構(gòu)做出了改進(jìn),但其特征提取能力不如本文方法,使得準(zhǔn)確率不高。文獻(xiàn)[18]使用HOG提取特征,再使用主成分分析法降維,最終將特征向量送入深度稀疏編碼網(wǎng)絡(luò)中進(jìn)行識別。其總體準(zhǔn)確率尚可,但單一表情識別率如恐懼和悲傷不如本文方法準(zhǔn)確率高。
本文結(jié)合LBP特征提取與改進(jìn)后的Lenet-5網(wǎng)絡(luò)對人臉表情進(jìn)行識別,其結(jié)果要優(yōu)于主流方法。為更好地提取到圖像特征,將原始圖像的LBP特征輸入到網(wǎng)絡(luò)模型中去,并對比了輸入哪一種LBP特征圖準(zhǔn)確率更高;將Lenet-5網(wǎng)絡(luò)進(jìn)行以適用于人臉表情識別,包括輸入圖像尺寸的調(diào)整、卷積核的調(diào)整、層數(shù)的調(diào)整和加入神經(jīng)網(wǎng)絡(luò)優(yōu)化算法等。
文章下一步計(jì)劃是將本方法應(yīng)用于不同的數(shù)據(jù)集中以查看方法性能,此外還需要加強(qiáng)神經(jīng)網(wǎng)絡(luò)泛化能力。