夏成靜
摘要:針對(duì)面部表情數(shù)據(jù)集圖片數(shù)量少、依靠人工選取特征的傳統(tǒng)面部表情識(shí)別精度不高的問(wèn)題,該文提出了一種數(shù)據(jù)增強(qiáng)和卷積神經(jīng)網(wǎng)絡(luò)(CNN)的面部表情識(shí)別方法。通過(guò)數(shù)據(jù)增強(qiáng),使面部表情數(shù)據(jù)集Fer2013圖片總數(shù)量變?yōu)樵瓉?lái)的6.7倍左右。在傳統(tǒng)的卷積神經(jīng)網(wǎng)絡(luò)中加入批量歸一化(BN)和Dropout,能有效預(yù)防過(guò)擬合現(xiàn)象的發(fā)生,提高識(shí)別率。在Fer2013數(shù)據(jù)集上進(jìn)行的實(shí)驗(yàn)結(jié)果表明:將Fer2013數(shù)據(jù)集進(jìn)行數(shù)據(jù)增強(qiáng)后,采用本文提出的神經(jīng)網(wǎng)絡(luò)模型,訓(xùn)練集和驗(yàn)證集的識(shí)別準(zhǔn)確率明顯比未進(jìn)行數(shù)據(jù)增強(qiáng)、僅采用CNN方法的準(zhǔn)確率高。
關(guān)鍵詞:卷積神經(jīng)網(wǎng)絡(luò);數(shù)據(jù)增強(qiáng);批量歸一化;Dropout;面部表情識(shí)別
中圖分類(lèi)號(hào):TP393 文獻(xiàn)標(biāo)識(shí)碼:A
文章編號(hào):1009-3044(2020)03-0213-03
面部表情是人們?cè)谌粘=涣鬟^(guò)程中一種非語(yǔ)言傳遞的重要表達(dá)方式。面部表情識(shí)別在心理學(xué)、輔助駕駛、人機(jī)交互和計(jì)算機(jī)視覺(jué)等領(lǐng)域被廣泛研究。1971年美國(guó)心理學(xué)家PaulEkman和Friesen…定義了六種基本面部表情:憤怒.高興、悲傷、驚訝、厭惡和恐懼,并提出了面部動(dòng)作編碼系統(tǒng)(FACS)。羅元等[2]使用主成分分析(PCA)和支持向量機(jī)(SVM)相結(jié)合的方法分別提取面部表情特征和面部表情分類(lèi),其研究結(jié)果表明在平均識(shí)別率上這種方法比單獨(dú)使用PCA和SVM方法有明顯提高。劉濤等[3]采用高斯LDA方法對(duì)光流特征映射得到特征向量,并設(shè)計(jì)多類(lèi)SVM實(shí)現(xiàn)面部表情分類(lèi)和識(shí)別,在JAFFE和CK數(shù)據(jù)庫(kù)中平均識(shí)別率分別是94.9%和92.2%。方彥[4]提出了一種基于卷積神經(jīng)網(wǎng)絡(luò)的人臉表情識(shí)別,采用了數(shù)據(jù)增強(qiáng)的方法人為擴(kuò)充數(shù)據(jù),在Fer2013數(shù)據(jù)庫(kù)上的識(shí)別率達(dá)到66.38%。傳統(tǒng)的面部表情識(shí)別系統(tǒng)包括:檢測(cè)人臉區(qū)域、面部特征提取和面部表情分類(lèi),其中面部特征提取需要人為選擇提取特征,特征選擇的質(zhì)量直接影響識(shí)別率的高低[5],因此魯棒性差。隨著計(jì)算機(jī)硬件水平發(fā)展,近年來(lái)深度學(xué)習(xí)迅速崛起,卷積神經(jīng)網(wǎng)絡(luò)是深度學(xué)習(xí)的經(jīng)典算法之一,但是小樣本集會(huì)影響神經(jīng)網(wǎng)絡(luò)模型的泛化能力,因此本文首先使用數(shù)據(jù)增強(qiáng)擴(kuò)充圖片數(shù)量,然后采用卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行特征提取和識(shí)別分類(lèi),可以提高分類(lèi)識(shí)別率和魯棒性。
1 基于數(shù)據(jù)增強(qiáng)和卷積神經(jīng)網(wǎng)絡(luò)的面部表情識(shí)別算法
本文的面部表情識(shí)別系統(tǒng)包括:數(shù)據(jù)預(yù)處理、模型學(xué)習(xí)、模型評(píng)估和新樣本預(yù)測(cè),總體框圖如圖1所示。采用監(jiān)督學(xué)習(xí)方式,首先將數(shù)據(jù)集分為訓(xùn)練集、驗(yàn)證集和測(cè)試集,對(duì)三部分?jǐn)?shù)據(jù)都進(jìn)行數(shù)據(jù)增強(qiáng),使圖片數(shù)量成倍增長(zhǎng),其次用增強(qiáng)后的訓(xùn)練集訓(xùn)練模型,然后根據(jù)驗(yàn)證集的識(shí)別準(zhǔn)確率調(diào)整超參數(shù),最后選擇最佳模型將新的人臉面部表情圖片輸入到其中實(shí)現(xiàn)面部表情的分類(lèi)。
1.1 數(shù)據(jù)增強(qiáng)
Fer2013數(shù)據(jù)集圖片數(shù)量相對(duì)較少,7類(lèi)面部表情圖片分布不均,有的類(lèi)別圖片數(shù)量較少,造成識(shí)別率低[6],使復(fù)雜、深層卷積神經(jīng)網(wǎng)絡(luò)的魯棒性較差。為了提高訓(xùn)練模型對(duì)面部表情的識(shí)別率,使用圖像增強(qiáng)方法,通過(guò)旋轉(zhuǎn)、水平平移、垂直平移、透視變換、隨機(jī)縮放和水平翻轉(zhuǎn)一系列操作將圖片數(shù)量增加為原來(lái)的6.7倍左右,增強(qiáng)后具體的圖片數(shù)量如表1所示。
1.2 卷積神經(jīng)網(wǎng)絡(luò)
傳統(tǒng)的卷積神經(jīng)網(wǎng)絡(luò)一般包括卷積層、池化層和全連接層[7]。在卷積層中,卷積核參數(shù)值通過(guò)反向傳播優(yōu)化后得到,并共享參數(shù),每一層的每個(gè)輸出都僅依賴(lài)一小部分的輸入f稀疏連接),神經(jīng)網(wǎng)絡(luò)通過(guò)共享參數(shù)和稀疏連接可以減少權(quán)重參數(shù),同時(shí)預(yù)防過(guò)擬合發(fā)生。在池化層中,池化方式有最大池化和平均池化,最大池化是選擇每個(gè)過(guò)濾器的最大值,而平均池化是選擇每個(gè)過(guò)濾器的平均值,在卷積層后連接池化層可以進(jìn)行特征降維,壓縮數(shù)據(jù)量[8]。在全連接層中,每個(gè)神經(jīng)元與上一層的所有神經(jīng)元相連接,可以綜合卷積層和池化層提取的特征,從而得到每一類(lèi)被準(zhǔn)確識(shí)別的概率。
在神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)中,權(quán)重初始值的設(shè)定影響到神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)能否成功,在卷積神經(jīng)網(wǎng)絡(luò)中使用BN“強(qiáng)制性”地調(diào)整激活值的分布[9],使每層擁有適當(dāng)廣度,同時(shí)使得學(xué)習(xí)快速進(jìn)行。Dropout是一種按照設(shè)定概率值隨機(jī)刪除神經(jīng)元的方法。在訓(xùn)練過(guò)程中,隨機(jī)選出隱藏層的神經(jīng)元,然后將其刪除,使其不再進(jìn)行信號(hào)的傳遞[10],對(duì)于參數(shù)多、結(jié)構(gòu)復(fù)雜的神經(jīng)網(wǎng)絡(luò),使用Dropout能夠有效地抑制過(guò)擬合現(xiàn)象發(fā)生。
本實(shí)驗(yàn)訓(xùn)練模型是一個(gè)10層神經(jīng)網(wǎng)絡(luò),模型具體結(jié)構(gòu)為每次卷積后,再經(jīng)過(guò)四個(gè)步驟的操作:BN、Relu激活函數(shù)、最大池化和Dropout,共經(jīng)過(guò)四次卷積處理,每次卷積后都重復(fù)上述四次操作,然后經(jīng)過(guò)256個(gè)神經(jīng)元全連接和512個(gè)神經(jīng)元全連接,最后通過(guò)softmax激活函數(shù)獲取7種面部表情分類(lèi)的概率,根據(jù)最大概率確認(rèn)識(shí)別的類(lèi)別,本文的CNN結(jié)構(gòu)如圖2所示。神經(jīng)網(wǎng)絡(luò)每層參數(shù)如表2所示,輸入是48*48像素圖片,經(jīng)過(guò)卷積后,輸出圖片的大小沒(méi)變,但是通道數(shù)增加,再經(jīng)過(guò)最大池化后圖片的大小縮小為原來(lái)的一半,去掉冗余信息,使特征圖減小,加快運(yùn)行速度,最后輸出1*7的向量。
2 實(shí)驗(yàn)結(jié)果與分析
本實(shí)驗(yàn)的硬件環(huán)境如下:Window7操作系統(tǒng),i3-4170CPU、NVIDIA CeForce GTX 1060 3CB的CPU硬件環(huán)境。軟件環(huán)境為Python 3.6.2.TensorFlow l.14.0,使用Keras 2.1.2搭建卷積神經(jīng)網(wǎng)絡(luò)。Keras是一個(gè)使用Python編寫(xiě)的高級(jí)神經(jīng)網(wǎng)絡(luò)API,可以使用TensorFlow作為后端運(yùn)行,方便快速搭建神經(jīng)網(wǎng)絡(luò),調(diào)整超參數(shù)。
2.1 實(shí)驗(yàn)結(jié)果
模型參數(shù)初始化是神經(jīng)網(wǎng)絡(luò)訓(xùn)練過(guò)程中的重要環(huán)節(jié),合適的初始化數(shù)值能使模型快速趨于收斂,本實(shí)驗(yàn)?zāi)P蛥?shù)的初始化如表3所示,批量處理尺寸(Batch Size)為128,總共訓(xùn)練輪數(shù)(Epoch)為200,優(yōu)化器選擇隨機(jī)梯度下降算法(SGD),其中學(xué)習(xí)率(Leaming rate)參數(shù)設(shè)置為0.05,每次更新后的學(xué)習(xí)率衰減值(Decay)設(shè)置為le-5。
為了驗(yàn)證本文提出方案的可行性,使用Keras框架下的Im-ageDataGenerator進(jìn)行數(shù)據(jù)增強(qiáng),訓(xùn)練集、驗(yàn)證集和測(cè)試集的比例(8:1:1)保持不變,使用訓(xùn)練集和驗(yàn)證集調(diào)整面部表情識(shí)別的卷積神經(jīng)網(wǎng)絡(luò)框架的超參數(shù),Epoch設(shè)置為200時(shí),訓(xùn)練集和驗(yàn)證集的準(zhǔn)確率變化曲線如圖3中(a)所示,隨著Epoch次數(shù)的增加,訓(xùn)練集和驗(yàn)證集的準(zhǔn)確率隨之提高,最后驗(yàn)證集上準(zhǔn)確率是69.47%,損失值變化曲線如(b)所示,訓(xùn)練集和測(cè)試集的損失值隨著Epoch的增加逐漸減小,Epoch值大于100后,驗(yàn)證集的準(zhǔn)確率上升緩慢,損失值幾乎不再下降。
2.2 實(shí)驗(yàn)結(jié)果分析
數(shù)據(jù)集是否進(jìn)行數(shù)據(jù)增強(qiáng),Epoch設(shè)置的大小都對(duì)訓(xùn)練集、驗(yàn)證集的準(zhǔn)確率和損失值有較大的影響,本實(shí)驗(yàn)在Fer2013數(shù)據(jù)集上不同參數(shù)設(shè)置的性能比較如表4所示,第一列是實(shí)驗(yàn)中設(shè)置的參數(shù),在實(shí)驗(yàn)過(guò)程中,Batch Size、優(yōu)化器、Learning Rate等參數(shù)保持不變。當(dāng)Epoch設(shè)置為200,數(shù)據(jù)集未進(jìn)行增強(qiáng)時(shí),訓(xùn)練集的準(zhǔn)確率是59.11%,驗(yàn)證集準(zhǔn)確率是62. 17%,由于驗(yàn)證集圖片數(shù)量較少,驗(yàn)證集準(zhǔn)確率高于訓(xùn)練集準(zhǔn)確率,訓(xùn)練集的損失值比驗(yàn)證集的損失值高了0.676,為了提高在訓(xùn)練集和驗(yàn)證集上的準(zhǔn)確率,需要增加訓(xùn)練輪數(shù),即將Epoch設(shè)置為更大的數(shù)值。Epoch設(shè)置為100時(shí),訓(xùn)練集和驗(yàn)證集的準(zhǔn)確率變化曲線如圖(c)所示,在數(shù)據(jù)集都增強(qiáng)且Epoch設(shè)置為200比Epoch設(shè)置為100時(shí),訓(xùn)練集的準(zhǔn)確率提高了7. l9%,驗(yàn)證集的準(zhǔn)確率提高了2.58%,同時(shí)訓(xùn)練集的準(zhǔn)確率和未進(jìn)行數(shù)據(jù)增強(qiáng)的準(zhǔn)確率相比提高了7.3%,Epoch為100時(shí),訓(xùn)練集和驗(yàn)證集的損失值變化曲線如圖(d)所示,當(dāng)訓(xùn)練輪數(shù)達(dá)到100時(shí),損失值還有下降趨勢(shì),由此可看出將數(shù)據(jù)集增強(qiáng)和Epoch設(shè)置為200時(shí)更合理,訓(xùn)練效果更好。實(shí)驗(yàn)結(jié)果表明通過(guò)數(shù)據(jù)增強(qiáng)擴(kuò)充圖片數(shù)量和設(shè)置合理的參數(shù)能提高訓(xùn)練集和測(cè)試集準(zhǔn)確率,降低損失值。使用數(shù)據(jù)增強(qiáng)后的24000張測(cè)試集圖片評(píng)估模型性能,平均準(zhǔn)確率為70.05%,實(shí)驗(yàn)結(jié)果表明測(cè)試集上的平均準(zhǔn)確率和驗(yàn)證集上的最高準(zhǔn)確率幾乎相等,模型泛化性能好。
3 總結(jié)
本文首先采用數(shù)據(jù)增強(qiáng)的方法對(duì)每張圖片進(jìn)行擴(kuò)充,擴(kuò)充后的圖片總數(shù)量是原圖片數(shù)量的6.7倍左右,然后提出了一種在卷積神經(jīng)網(wǎng)絡(luò)中加人防止過(guò)擬合現(xiàn)象的BN和Dropout操作的算法框架提取面部特征和面部表情識(shí)別。實(shí)驗(yàn)結(jié)果表明將Fer2013數(shù)據(jù)集進(jìn)行數(shù)據(jù)增強(qiáng)后,訓(xùn)練集的準(zhǔn)確率和未進(jìn)行數(shù)據(jù)增強(qiáng)的準(zhǔn)確率相比提高了7.3%,驗(yàn)證集準(zhǔn)確率為69.47%,使用測(cè)試集評(píng)估了模型性能,表明模型的泛化能力好。
參考文獻(xiàn):
[1] Ekman P,F(xiàn)riesen W V.Facial ActionCoding System (FACS):A Technique forThe Measurement of Facial Action[J].Rivista Di Psichiatria, 1978, 47(2):126-38。
[2]羅元,吳彩明,張毅.基于PCA與SVM結(jié)合的面部表情識(shí)別的智能輪椅控制[J]計(jì)算機(jī)應(yīng)用研究,2012,29(8): 3166-3168.
[3]劉濤,周先春,嚴(yán)錫君.基于光流特征與高斯LDA的面部表情識(shí)別算法[J].計(jì)算機(jī)科學(xué),2018,45(10):286-290,319.
[4]方彥,基于卷積神經(jīng)網(wǎng)絡(luò)的人臉表情識(shí)別研究[J].現(xiàn)代信息科技,2019(14):81-83.
[5] Hua W T,Dai F,Huang L Y,et al.HERO:human emotions recog-nition for realizing intelligent Internet of Things[J].IEEE Ac-cess, 2019.7:24321-24332.
[6] Zhu X Y,Liu Y F,Li J H,et aI.Emotion classification with dataaugmentation using generative adversarial networks[M]//Ad-vances in Knowledge Discovery and Data Mining. Cham:Springer International Publishing, 2018: 349-360.
[7] Krizhevsky A,Sutskever I,Hinton G E.ImageNet classificationwith deep convolutional neural networks[J].Communications ofthe ACM, 2017,60(6):84-90.
[8]齋藤康毅,深度學(xué)習(xí)入門(mén):基于Python的理論與實(shí)現(xiàn)[M].陸宇杰,譯:人民郵電出版社,2018:1-285.
[9] Ioffe S,Szegedy C.Batch normalization:accelerating deep net-work training by reducing intemal covariate shift[C]//Proceed-ings of the 32nd International Conference on IntemationalConference on Machine Leaming - Volume 37, 2015:448-456.
[10] Srivastava N,Hinton G,Krizhevsky A,et al.Dropout:a sim-ple way to prevent neural networks from overfitting[J]. Thejournal of machine leaming research. 2014, 15(1):1929-1958.