顧狀狀 許學(xué)斌 路龍賓 豆陽光
(1.西安郵電大學(xué)計(jì)算機(jī)學(xué)院 西安 710000)(2.長安大學(xué)地質(zhì)工程與測繪學(xué)院 西安 710054)
近年來,隨著計(jì)算機(jī)科學(xué)技術(shù)的迅猛發(fā)展,機(jī)器學(xué)習(xí)以及深度學(xué)習(xí)技術(shù)伴隨著智能終端的推廣成為了一個(gè)極其熱門的研究方向,推動(dòng)了人臉識(shí)別技術(shù)的飛速發(fā)展。目前人臉識(shí)別[1]技術(shù)的識(shí)別精度已經(jīng)遠(yuǎn)超人類所能識(shí)別的范圍,使得其在多個(gè)領(lǐng)域占據(jù)著不可或缺的一席之地。人臉表情識(shí)別作為人臉識(shí)別技術(shù)的一個(gè)重要分支:其在人機(jī)交互、安全、機(jī)器人制造、自動(dòng)化、醫(yī)療、通信和駕駛等領(lǐng)域備受關(guān)注[2],且在近十年里也取得了由量到質(zhì)的突破,成為國際前沿研究領(lǐng)域的熱門領(lǐng)域之一。
人臉表情的研究,起源于心理學(xué)。1972 年達(dá)爾文就從心理實(shí)驗(yàn)中得出結(jié)論,并在他的著名論著《The Expression of the Emotions in Animals and Man》中闡述了人臉表情和動(dòng)物面部表情的聯(lián)系和區(qū)別[3]。在1978 年,Ekman 和Friesen 制定了FACS(Facial Action Coding System)系統(tǒng),該系統(tǒng)主要用來檢測面部的變化,并定義了六種基本表情,即:傷心、開心、厭惡、害怕、憤怒和驚訝[4]。計(jì)算機(jī)領(lǐng)域?qū)θ四槺砬榈难芯孔钤缡窃?978 年,Suwa 和Sugie等人對(duì)人臉表情圖像中面部的20 個(gè)點(diǎn)進(jìn)行追蹤進(jìn)行表情識(shí)別,提出了在圖片流中對(duì)人臉表情進(jìn)行自動(dòng)分析[5]。1981年,通過仿生學(xué)方法建立了人臉表情模型[6]。20 世紀(jì)90 年代初,K.Mase 和A.Pentland提出了光流法,該方法很快被應(yīng)用到人臉表情識(shí)別研究中[7]。Rashid T A 提出了一種使用不同的面部表情不平衡數(shù)據(jù)集來識(shí)別面部表情的技術(shù)[8]。Fathallah 等提出基于CNN 的用于面部表情識(shí)別的新架構(gòu)網(wǎng)絡(luò),并使用視覺幾何組模型(VGG)微調(diào)了架構(gòu)以改進(jìn)結(jié)果,精度達(dá)到了71.04%[9]。Cheng S 等提出一種改進(jìn)的視覺幾何組(VGG)深度卷積神經(jīng)網(wǎng)絡(luò)(CNN)的表情識(shí)別模型,改進(jìn)后的VGG-19 網(wǎng)絡(luò)模型在人臉表情識(shí)別上可以達(dá)到96%的準(zhǔn)確率[10]。目前為止人臉表情識(shí)別研究已歷經(jīng)了半個(gè)世紀(jì),然而它的熱度不降反升,近年來更是伴隨著神經(jīng)網(wǎng)絡(luò)技術(shù)的發(fā)展成為了一個(gè)熱門的研究課題。
本文提出了一種基于稠密卷積神經(jīng)網(wǎng)絡(luò)的人臉表情識(shí)別方法,通過特征復(fù)用與旁路連接的方式,實(shí)現(xiàn)人臉表情特征提取,在擴(kuò)展的KDEF 數(shù)據(jù)集數(shù)據(jù)集上訓(xùn)練卷積神經(jīng)網(wǎng)絡(luò),對(duì)面部表情進(jìn)行分類,精度達(dá)到了96.88%,并利用預(yù)先訓(xùn)練的網(wǎng)絡(luò)模型開發(fā)出一個(gè)可以實(shí)時(shí)檢測人臉表情的操作軟件。本文不僅在人臉表情識(shí)別網(wǎng)絡(luò)的學(xué)術(shù)領(lǐng)域取得了一定的成果,也對(duì)社會(huì)生產(chǎn)實(shí)踐有一定的指導(dǎo)意義。
人臉表情[11]是傳遞人類情緒信息和協(xié)調(diào)人際關(guān)系的有效手段。人臉表情是由面部多處肌肉(如,眼部,口部等)的變化組合來表達(dá)人類自身的各種心理狀態(tài)。人類的面部表情至少包含21 種,1971 年,心理學(xué)家Ekman 與Friesen 首次提出人類的6 種主要情緒狀態(tài),分別是:生氣(Anger)、開心(Happiness)、傷心(Sadness)、驚訝(Surprise)、厭惡(Disgust)和害怕(Afraid)[4]。本文所研究的人臉表情即是在此六種基本表情基礎(chǔ)上加入了中立(Neutrality)表情。
人臉表情識(shí)別主要基于三個(gè)步驟組成:人臉表情圖像獲取、圖像特征提取、特征分類[12],如圖1 所示。
圖1 人臉識(shí)別過程
從CNN 開始不斷地加深網(wǎng)絡(luò),梯度消失和模型退化問題就一直存在,其中批量規(guī)范化使得梯度消失問題得到一定程度的緩解,ResNet[11]的出現(xiàn)進(jìn)一步減少梯度消失和模型退化問題的發(fā)生。DenseNet[13]的優(yōu)勢在于其通過特征重用和旁路設(shè)置,使得網(wǎng)絡(luò)的性能得到大幅度提升。相比于ResNet,減少了可訓(xùn)練參數(shù)量,加強(qiáng)了特征的傳遞,更加有效地利用特征,減輕了梯度消失和模型退化問題。
ResNet 將每一層和前面的某一層短路連接起來,在一定范圍內(nèi)減輕了該問題的發(fā)生,而DenseNet做了一個(gè)更加激進(jìn)的緊密連接機(jī)制:將每一層網(wǎng)絡(luò)都和前面所有的層連接起來(如圖2),即在DenseNet網(wǎng)絡(luò)的第n 層有(n-1)個(gè)連接與前面的所有層。這種緊密連接機(jī)制,避免了特征信息在層之間傳遞導(dǎo)致的梯度消失問題。
圖2 DenseNet短路連接機(jī)制
2.3.1 人臉表情識(shí)別數(shù)據(jù)集
本文所采用的數(shù)據(jù)集由KDEF 和手動(dòng)制作的人臉數(shù)據(jù)集組成。
KDEF[14]數(shù)據(jù)集包含了70個(gè)年齡位于20歲~30歲之間的成年人,由35 個(gè)男性,35 個(gè)女性從5 個(gè)不同的角度:正前方,左前方,左側(cè),右前方,右側(cè),拍攝了7 種表情:生氣、開心、傷心、驚訝、厭惡、害怕和中立,每個(gè)表情拍攝兩次,總共4900 張人臉表情圖片。圖片為562*762 像素的RGB 圖像,圖3 所示為KDEF中的部分表情圖片。
圖3 KDEF部分圖片示例
手工制作的人臉表情數(shù)據(jù)集同樣包含7 種表情,每種表情包含10 張不同的圖片,共70 張,圖片為420*620 像素的RGB 彩色圖像,部分圖片如圖4所示。
圖4 手工制作數(shù)據(jù)集部分示例
訓(xùn)練集包含KDEF數(shù)據(jù)集中的3780張圖片,以及手工制作數(shù)據(jù)集中的56 張圖片,驗(yàn)證集包括KDEF 數(shù)據(jù)集中的1120張圖片,手工制作數(shù)據(jù)集中的14張圖片。
2.3.2 數(shù)據(jù)處理
歸一化處理[15]可以提升訓(xùn)練模型的收斂速度、訓(xùn)練精度以及防止梯度爆炸。文章采用了最大-最小標(biāo)準(zhǔn)化方法對(duì)輸入的圖像數(shù)據(jù)進(jìn)行歸一化處理,數(shù)學(xué)定義式為
式中:x為數(shù)據(jù)灰度值,max 為圖像灰度最大值,min 為圖像灰度最小值。
文中采用了隨機(jī)上下、左右翻轉(zhuǎn)和隨機(jī)裁剪對(duì)圖像進(jìn)行數(shù)據(jù)增強(qiáng),對(duì)圖像進(jìn)行隨機(jī)上下左右翻轉(zhuǎn)和隨機(jī)裁剪,大大擴(kuò)充了樣本量,訓(xùn)練出來的模型泛化能力更強(qiáng)[16]。
2.3.3 網(wǎng)絡(luò)模型
本文采取的人臉表情識(shí)別方法是基于DenseNet預(yù)訓(xùn)練網(wǎng)絡(luò)搭建的。為了減輕梯度消失和梯度爆炸問題,在模型中用添加BatchNormalization層做批量正則化處理,選擇ReLU作為激活函數(shù),可以減輕梯度消失和梯度爆炸問題,而且計(jì)算量小,收斂迅速。添加一層GlobalAveragePooling,對(duì)特征信息的高度和寬度兩個(gè)維度進(jìn)行平均化求值。
兩層Dense 做分類器,第一層Dense 有1024 個(gè)隱藏單元,使用ReLU作為激活函數(shù),最后一層輸出層Dense 隱藏單元數(shù)為7,使用softmax 作為激活函數(shù)。
網(wǎng)絡(luò)模型如圖5 所示,該模型共有8098375 個(gè)參數(shù),其中可訓(xùn)練參數(shù)為8012679個(gè)。
圖5 人臉表情識(shí)別方法整體結(jié)構(gòu)
文章編寫了一個(gè)系統(tǒng),來實(shí)時(shí)檢測人臉表情。將訓(xùn)練好的模型加載進(jìn)來,調(diào)用計(jì)算機(jī)攝像頭,在視頻流中獲取到每一幀的圖片,然后調(diào)用OpenCV提供的人臉識(shí)別分類器,找出人臉?biāo)诘淖鴺?biāo),并記錄下來,按下空格鍵,系統(tǒng)則會(huì)先保存下當(dāng)前圖像,將圖像按照人臉識(shí)別出來的坐標(biāo)裁剪出合適的圖片,用于人臉表情識(shí)別。此時(shí)載入人臉表情識(shí)別模型,對(duì)圖片內(nèi)容進(jìn)行識(shí)別,并識(shí)別內(nèi)容返回,使用OpenCV在顯示圖像的每一幀時(shí)將上一次的識(shí)別結(jié)果放在圖片左上角,按下Q 鍵則退出系統(tǒng),軟件操作界面如圖6所示。
圖6 人臉表情識(shí)別系統(tǒng)軟件界面
經(jīng)過測試512*512、256*256、224*224、128*128 不同大小尺寸的圖像輸入網(wǎng)絡(luò)后的結(jié)果,如表1 所示,可以看出當(dāng)輸入圖像尺寸為256*256 和224*224的時(shí)候,都取得了93%的較高準(zhǔn)確率,但是大小為224*224 像素時(shí)每次迭代訓(xùn)練速度更快,模型收斂速度也略快,所以最終采用圖像的輸入尺寸為224*224像素。
表1 不同尺寸的圖像輸入對(duì)準(zhǔn)確率的影響
文章建立的數(shù)據(jù)集對(duì)模型進(jìn)行5000 次迭代的訓(xùn)練,模型的準(zhǔn)確率隨著訓(xùn)練進(jìn)行產(chǎn)生的變化如圖7 所示,圖中紅色的線表示訓(xùn)練集上的準(zhǔn)確率情況,藍(lán)色的線表示驗(yàn)證集上的準(zhǔn)確率情況,橫軸表示迭代的次數(shù),縱軸表示準(zhǔn)確率。在進(jìn)行第2085次迭代之后,模型的準(zhǔn)確率達(dá)到了5000 次訓(xùn)練的最大值96.88%。
圖7 模型準(zhǔn)確率變化情況
除了訓(xùn)練集和驗(yàn)證集的準(zhǔn)確率和損失,本文還運(yùn)用了其他評(píng)估方法對(duì)模型進(jìn)行了評(píng)估。
1)計(jì)算模型在不同人臉表情上的識(shí)別精度,如表2所示。
表2 不同表情上的識(shí)別準(zhǔn)確率精度
2)計(jì)算混淆矩陣。本文中的人臉表情識(shí)別模型的混淆矩陣[17]如表3 所示。引入了五個(gè)分類精度評(píng)價(jià)指標(biāo),分別為準(zhǔn)確率(Accuracy)、精確率(Precision)、召回率(Recall)、特異度(Specificity)、F1-值(F1-score)。其中,準(zhǔn)確率是所有的預(yù)測正確的樣本數(shù)占總預(yù)測樣本個(gè)數(shù)的比重,數(shù)學(xué)公式為
表3 混淆矩陣精度評(píng)估表
式中:TP表示預(yù)測值為當(dāng)前表情且預(yù)測正確,TN則為預(yù)測值為非當(dāng)前表情且預(yù)測正確,F(xiàn)P 表示真實(shí)值不是當(dāng)前表情且預(yù)測錯(cuò)誤,F(xiàn)N 則為真實(shí)值是當(dāng)前表情且預(yù)測錯(cuò)誤。
精確率表示預(yù)測值為當(dāng)前表情且正確預(yù)測的樣本數(shù)占預(yù)測正確的樣本數(shù)的比重,精確率的數(shù)學(xué)公式:
計(jì)算出每一個(gè)表情的精確率,如表4。
表4 精確率的精度評(píng)估表
召回率表示預(yù)測值為當(dāng)前表情且正確預(yù)測的樣本數(shù)占全部預(yù)測當(dāng)前表情的樣本數(shù)的比重,召回率的數(shù)學(xué)公式為
每個(gè)表情的召回率如表5。
表5 召回率的精度評(píng)估表
特異度是錯(cuò)判的樣本數(shù)占全部預(yù)測錯(cuò)誤的樣本數(shù)的比重,特異度的數(shù)學(xué)公式為
計(jì)算結(jié)果如表6所示。
表6 特異度的精度評(píng)估表
F1 Score是P和R 的調(diào)和平均數(shù),F(xiàn)1 Score的數(shù)學(xué)定義為
式中:P 代表精確率,R 代表召回率,所以每個(gè)表情的F1 Score值如表7所示。
表7 F1 Score值的精度評(píng)估表
本文提出的基于DenseNet 預(yù)訓(xùn)練神經(jīng)網(wǎng)絡(luò)的人臉表情識(shí)別方法,相對(duì)于直接使用DenseNet有較大的優(yōu)勢,從表8 中可以看出,DenseNet121 預(yù)訓(xùn)練網(wǎng)絡(luò)模型在本文的數(shù)據(jù)集下最高準(zhǔn)確率為93.66%。
表8 不同的網(wǎng)絡(luò)模型的識(shí)別準(zhǔn)確率
使用文章中的數(shù)據(jù)集對(duì)ResNet121、MobileNet流行的預(yù)訓(xùn)練網(wǎng)絡(luò)模型以及傳統(tǒng)方法PCA+KNN、2DPCA[18]、Gabor+2DPCA、NFM+SVM進(jìn)行了對(duì)比試驗(yàn)。ResNet121 同樣采取跳接的方式,取得了85.62%的準(zhǔn)確率,但DenseNet 更為激進(jìn)的跳接方式在特征提取上取得了更好的效果。MobileNet 在體積上有著很大的優(yōu)勢,極大地減少了參數(shù)量,但與此同時(shí)損失了精度,準(zhǔn)確率為90.54%。傳統(tǒng)機(jī)器學(xué)習(xí)方法:PCA+KNN、2DPCA相對(duì)于卷積神經(jīng)網(wǎng)絡(luò)對(duì)圖像特征提取能力較差,人臉圖像識(shí)別準(zhǔn)確率較低。Gabor+2DPCA 中Gabor 類似于人體視覺細(xì)胞刺激響應(yīng)方式,能夠較好提取局部特征信息,取得了82.51%的準(zhǔn)確率。NFM+SVM 能夠快速學(xué)習(xí)到高階線性組合圖像特征,取得了較高的準(zhǔn)確率83.17%。綜上,文章所提出的基于DenseNet 的人臉表情識(shí)別方法在準(zhǔn)確率上明顯優(yōu)于其他方法。
本文提出的基于稠密卷積神經(jīng)網(wǎng)絡(luò)的人臉表情識(shí)別方法,最終取得了驗(yàn)證集上96.88%的準(zhǔn)確率,與此同時(shí)設(shè)計(jì)出了人臉表情識(shí)別原型軟件,利用已經(jīng)訓(xùn)練好的模型實(shí)時(shí)檢測人臉表情,取得了很好的效果。本文主要做出的貢獻(xiàn)如下:
1)提出基于稠密卷積神經(jīng)網(wǎng)絡(luò)的人臉表情識(shí)別方法,該模型能夠有效提取人臉表情特征信息,識(shí)別率較高,收斂速度快。
2)手工制作了人臉表情數(shù)據(jù)集并結(jié)合目前主流的公開數(shù)據(jù)集,測試了不同圖像尺寸下模型的表現(xiàn)情況。
3)設(shè)計(jì)出了人臉表情識(shí)別的原型軟件,對(duì)人臉表情識(shí)別的普及推廣具有重要的現(xiàn)實(shí)意義。
文中所提出的模型雖然已經(jīng)取得了不錯(cuò)的識(shí)別效果,但是還需要繼續(xù)增大訓(xùn)練數(shù)據(jù)樣本,其普遍性無法推廣到整個(gè)人類的表情數(shù)據(jù),還需要經(jīng)過更多的數(shù)據(jù)檢驗(yàn)。其次,文中所提出的模型方法,需要提供擁有非常強(qiáng)大算力的計(jì)算機(jī),訓(xùn)練參數(shù)達(dá)到了百萬級(jí),訓(xùn)練過程較長,在不降低模型性能的基礎(chǔ)上,適當(dāng)優(yōu)化模型,減少模型訓(xùn)練參數(shù),以減少計(jì)算量。