牛犇 滕運(yùn)江
(金陵科技學(xué)院電子信息工程學(xué)院 江蘇省南京市 211169)
人臉表情能夠快速、準(zhǔn)確傳遞出當(dāng)事人的狀態(tài)、思想和態(tài)度等內(nèi)在心理,成為眾多情感表達(dá)中最自然、最直接有效的方式。基于非接觸式圖像和視頻序列的人臉表情識(shí)別成為人機(jī)交互及人工智能領(lǐng)域不可或缺的環(huán)節(jié),具有重要的研究意義。人臉表情識(shí)別在生活中的應(yīng)用非常廣泛,如情感機(jī)器人能夠通過捕捉人臉表情來感知人類的喜怒哀樂;醫(yī)療服務(wù)方面,可以通過對(duì)病患的人臉表情識(shí)別判斷其痛苦情況,輔助醫(yī)生進(jìn)行診斷;交通安全方面,通過對(duì)車輛駕駛員進(jìn)行實(shí)時(shí)人臉表情識(shí)別,可以在疲勞駕駛和突發(fā)情況時(shí)及時(shí)給予提示;公共安全方面,通過人臉表情識(shí)別可以預(yù)測(cè)人們的心理變化,從而預(yù)防惡性事件的發(fā)生;教育方面,可以通過實(shí)時(shí)的人臉表情識(shí)別來反映學(xué)生的學(xué)習(xí)狀態(tài)[1]。
著名心理學(xué)家Ekman 定義了6 種基本表情和1 種無表情狀態(tài),即:生氣、厭惡、恐懼、高興、悲傷和驚訝,無表情狀態(tài)也稱為“自然表情”。Ekman 等根據(jù)面部肌肉的運(yùn)動(dòng)將人臉劃分成不同區(qū)域,建立了“面部動(dòng)作編碼系統(tǒng)”(Facial Action Coding System,F(xiàn)ACS)。不同的肌肉運(yùn)動(dòng)過程,能夠產(chǎn)生不同的表情,從而實(shí)現(xiàn)人臉表情識(shí)別[2]。研究人員在此基礎(chǔ)上開展了大量的研究工作。目前人臉表情識(shí)別主要基于兩種方法:傳統(tǒng)的特征提取方法和深度學(xué)習(xí)方法。傳統(tǒng)的人臉表情識(shí)別方法依賴于特征提取的有效性及分類器設(shè)計(jì)的合理性,常用的特征提取方法主要有局部二值模式(Local Binary Pattern, LBP)、Gabor 小波變換、方向梯度直方圖(Histogram of Oriented Gradients, HOG)、尺度不變特征變換(Scale-Invariant Feature Transform,SIFT)等,常用的分類器主要包括K 近鄰分類器(K Nearest Neighbor,KNN)、樸素貝葉斯分類器(Naive Bayes, NB)、支持向量機(jī)(Support Vector Machine, SVM)、隨機(jī)森林(Random Forest, RF)、決策樹(Decision Tree, DT)等[3]。對(duì)于傳統(tǒng)人臉表情識(shí)別方法,特征提取具有較強(qiáng)的人為干擾因素,且分類器選取也決定了識(shí)別精度,因此魯棒性不強(qiáng)。深度學(xué)習(xí)方法能夠自動(dòng)地提取更深層次的表情特征,排除了人工選取特征的不利因素,從而大大提高了識(shí)別率。使用卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行人臉表情識(shí)別,通常是將整張圖片作為輸入,通過網(wǎng)絡(luò)模型的訓(xùn)練以達(dá)到分類識(shí)別的目的[4]。本文主要研究基于深度學(xué)習(xí)的人臉表情識(shí)別方法,并在樹莓派中實(shí)現(xiàn)實(shí)時(shí)人臉表情識(shí)別。
2012年3月,樹莓派是由英國(guó)的“Raspberry Pi基金會(huì)”研發(fā)成功,被譽(yù)為最小的臺(tái)式機(jī),因?yàn)橥庑蔚拇笮「庞每ㄏ嘟?,所以又被稱為卡片式電腦。
樹莓派自發(fā)售以來,風(fēng)靡全球,受到廣大計(jì)算機(jī)愛好者的廣泛追捧。樹莓派具有圖形化的操作界面,可以作為一臺(tái)微型電腦使用,實(shí)現(xiàn)常用的文檔編輯、網(wǎng)頁(yè)瀏覽、音視頻播放等功能。樹莓派也可以用于硬件智能化,實(shí)現(xiàn)智能小車、電子相框、人臉識(shí)別、語音識(shí)別等嵌入式開發(fā)工作。
圖1:較弱光照條件下的人臉表情識(shí)別
樹莓派4B 使用1.5GHz 四核ARM Cortex-A72 處理器,4G 內(nèi)存,并引入U(xiǎn)SB3.0 接口,支持雙頻無線Wi-Fi,5V/3A 的USB-C 接口供電,具有良好的性能和豐富的接口[5]。
本文所設(shè)計(jì)的基于樹莓派的實(shí)時(shí)人臉表情識(shí)別系統(tǒng)采用樹莓派4B 作為載體,軟件平臺(tái)及版本為Python3.7+OpenCV4.2.0+Tensorfl low2.0.0+Keras2.3.1,人臉檢測(cè)采用Haar-like 特征算法,分類器模型為深度學(xué)習(xí)卷積神經(jīng)網(wǎng)絡(luò)模型,該模型具有訓(xùn)練簡(jiǎn)單、權(quán)值損失小、能夠并行學(xué)習(xí)、復(fù)雜度低等優(yōu)點(diǎn)?;跇漭傻膶?shí)時(shí)人臉表情識(shí)別系統(tǒng)主要分為以下幾個(gè)部分。
獲取圖像:圖像的獲取可以直接上傳拍攝的照片,也可以選擇用攝像頭實(shí)時(shí)捕捉畫面,本系統(tǒng)采用攝像頭進(jìn)行實(shí)時(shí)人臉檢測(cè)。代碼實(shí)現(xiàn)主要通過語句cv2.VideoCapture(0)獲取視頻幀,然后傳入一個(gè)變量cap,最后調(diào)用語句cap.set()繪制視頻窗口,通過獲取的視頻幀圖像形成視頻流,從而達(dá)到實(shí)時(shí)檢測(cè)的目的。
人臉檢測(cè):該系統(tǒng)調(diào)用OpenCV 自帶的基于Haar-like 特征的人臉檢測(cè)模型對(duì)當(dāng)前幀圖像進(jìn)行檢測(cè),對(duì)人臉區(qū)域進(jìn)行標(biāo)注。代碼實(shí)現(xiàn)使用cv2.CascadeClassifier()語句導(dǎo)入OpenCV 的haarcascade_frontalface_default.xml 模型,然后使用cap.read()語句讀取視頻幀圖像,使用face_classifier.detectMultiScale()語句進(jìn)行檢測(cè)參數(shù)的設(shè)置,最后把檢測(cè)到的人臉特征傳入faces 變量,即完成了人臉檢測(cè)部分的功能。
特征提?。涸撾A段通過事先訓(xùn)練好的人臉表情分類器提取視頻幀圖像的人臉表情特征。首先安裝Tensorflow 框架,然后再安裝一個(gè)Keras 模塊來加載訓(xùn)練模型,完成環(huán)境的搭建后,使用load_model()語句加載事先訓(xùn)練好的模型,將檢測(cè)到的人臉特征即上文提到的faces 變量導(dǎo)入人臉表情分類器模型即可。
表情分類:使用訓(xùn)練好的深度學(xué)習(xí)模型檢測(cè)提取到的人臉表情特征。通過將所提取的人臉表情特征進(jìn)行分類,即可得到當(dāng)前圖像中的人臉表情類別。代碼實(shí)現(xiàn)需要定義一個(gè)字典表示7 種表情,因?yàn)閺谋砬榉诸惼髂P椭蟹祷刂凳?~6 的數(shù)字,然后把數(shù)字傳入字典后得到所定義的表情類型。
輸出結(jié)果:將識(shí)別結(jié)果在原圖像中進(jìn)行標(biāo)注。代碼實(shí)現(xiàn)主要是先從faces 變量中提取四個(gè)參數(shù),然后使用cv2.rectangle()語句繪制人臉區(qū)域,之后使用cv2.putText()語句在繪制出的人臉區(qū)域上方輸出對(duì)應(yīng)的人臉表情標(biāo)簽。
本文采用攝像頭在真實(shí)環(huán)境下進(jìn)行面部表情采集,通過改變光照條件、膚色條件等對(duì)基于樹莓派的實(shí)時(shí)人臉表情識(shí)別系統(tǒng)進(jìn)行測(cè)試。
3.1.1 正面人臉的實(shí)時(shí)表情識(shí)別測(cè)試
正面人臉表情采集環(huán)境為大學(xué)宿舍室內(nèi),具有簡(jiǎn)單的室內(nèi)家具環(huán)境,測(cè)試對(duì)象性別均為男性,年齡22-25 歲,黃種人,人臉正對(duì)設(shè)備,共測(cè)試自然(neutral)、高興(happy)、驚訝(surprise)、悲傷(sad)、生氣(angry)、恐懼(fear)、厭惡(disgust)七種表情。在正常光照情況下,該系統(tǒng)能夠成功檢測(cè)出人臉區(qū)域,進(jìn)行實(shí)時(shí)人臉表情識(shí)別,并顯示表情類別標(biāo)記。考慮到光照對(duì)于圖像檢測(cè)的影響,改變光照條件,在光照較為微弱的環(huán)境下進(jìn)行測(cè)試。測(cè)試對(duì)象為男性,23 歲,黃種人,人臉正對(duì)設(shè)備,共測(cè)試七種表情。人臉表情識(shí)別結(jié)果如圖1所示,在室內(nèi)較弱光照環(huán)境下,雖然圖像對(duì)比度較低,但該系統(tǒng)仍能成功檢測(cè)出人臉區(qū)域,正確識(shí)別出人臉表情,并顯示表情類別標(biāo)記。
本文所設(shè)計(jì)的基于樹莓派的人臉表情識(shí)別系統(tǒng)在不同光照條件下均能夠達(dá)到較好的識(shí)別效果。不同測(cè)試對(duì)象在不同的表情下具有非常強(qiáng)烈的個(gè)人特征,本系統(tǒng)可以正確識(shí)別不同人臉的表情。共進(jìn)行十組實(shí)驗(yàn),人臉表情的平均識(shí)別率為93.4%,其中厭惡和生氣兩種表情在識(shí)別過程中容易發(fā)生混淆,需要測(cè)試者做出較為夸張的表情才能夠正確識(shí)別,可能的原因是該兩種表情在面部肌肉的運(yùn)動(dòng)表現(xiàn)較為相似,從而造成一定的識(shí)別誤差。
3.1.2 非正面人臉及部分遮擋人臉的實(shí)時(shí)表情識(shí)別測(cè)試
在實(shí)際應(yīng)用場(chǎng)景中,所采集到的人臉圖像可能并不是正面人臉,本文對(duì)非正面人臉進(jìn)行測(cè)試。實(shí)驗(yàn)分別測(cè)試了人臉旋轉(zhuǎn)45 度和旋轉(zhuǎn)90 度的人臉表情圖像,從實(shí)驗(yàn)結(jié)果可以看出,本文所設(shè)計(jì)的基于樹莓派的實(shí)時(shí)人臉表情識(shí)別系統(tǒng)對(duì)于角度較大的非正面人臉表情識(shí)別效果并不理想,需要進(jìn)一步改進(jìn)完善。
在實(shí)際應(yīng)用場(chǎng)景中,所采集到的人臉圖像可能會(huì)發(fā)生遮擋,比如測(cè)試對(duì)象佩戴帽子、眼鏡等,本文對(duì)部分遮擋人臉進(jìn)行表情識(shí)別測(cè)試。如圖2左邊兩個(gè)圖像為佩戴眼鏡的人臉表情識(shí)別結(jié)果,右邊三個(gè)圖像為使用紙張對(duì)人臉進(jìn)行部分遮擋情況下的表情識(shí)別結(jié)果。從實(shí)驗(yàn)結(jié)果可以看出,對(duì)于佩戴眼鏡的人臉表情識(shí)別效果較為理想,但是對(duì)于紙張遮擋部分人臉的表情識(shí)別效果較差。
3.1.3 不同種族及多人臉情況下的實(shí)時(shí)表情識(shí)別測(cè)試在實(shí)際應(yīng)用場(chǎng)景中,所采集到的可能是不同種族的人臉圖像,比如白種人,黑種人和黃種人,本文對(duì)于不同種族的人臉進(jìn)行表情識(shí)別測(cè)試。實(shí)驗(yàn)結(jié)果表明,對(duì)于不同膚色的人臉表情同樣能夠正確識(shí)別。在實(shí)際應(yīng)用場(chǎng)景中,可能會(huì)出現(xiàn)多張人臉的情況,本文對(duì)于多張人臉進(jìn)行實(shí)時(shí)表情識(shí)別。在實(shí)際的實(shí)驗(yàn)過程中,會(huì)出現(xiàn)個(gè)別人臉表情無法正確識(shí)別的情況。
通過以上實(shí)驗(yàn)結(jié)果可以看出,由于硬件限制,識(shí)別結(jié)果會(huì)出現(xiàn)一定的延時(shí)。此外,受攝像頭像素和光照條件等因素的影響,部分人臉表情識(shí)別結(jié)果不夠準(zhǔn)確,人臉的偏轉(zhuǎn)角度也對(duì)人臉表情識(shí)別結(jié)果具有一定的影響。
在實(shí)驗(yàn)過程中,每個(gè)測(cè)試對(duì)象的表情強(qiáng)度各不相同,從而引起面部變化的不同,因此可能造成不同的識(shí)別結(jié)果。實(shí)驗(yàn)結(jié)果表明,在背光、昏暗的室內(nèi)進(jìn)行人臉檢測(cè)時(shí),由于人臉的陰影面積較大,造成人臉檢測(cè)較為困難,從而無法進(jìn)行后續(xù)的表情識(shí)別。在光照良好的條件下,當(dāng)人臉一側(cè)背光時(shí),則無法準(zhǔn)確檢測(cè)出人臉,造成表情識(shí)別錯(cuò)誤,而當(dāng)人臉曝光良好時(shí),識(shí)別結(jié)果較為準(zhǔn)確。實(shí)驗(yàn)結(jié)果表明,生氣和厭惡這兩種表情識(shí)別較為困難,可能的原因是該兩種表情在面部肌肉的運(yùn)動(dòng)表現(xiàn)較為相似,同時(shí)也與表情強(qiáng)度有關(guān)。
復(fù)雜情況下人臉檢測(cè)難度較大,造成人臉表情識(shí)別困難,人臉轉(zhuǎn)動(dòng)一定角度時(shí)無法正確檢測(cè)到人臉,從而導(dǎo)致了人臉表情識(shí)別錯(cuò)誤。在人臉被部分遮擋時(shí),佩戴透明或透光性較差鏡片的眼鏡時(shí)能夠正確識(shí)別人臉表情,而使用不透光的紙片遮擋眼部、眼鼻部、嘴部等情況下都無法識(shí)別人臉表情。
通過對(duì)不同種族的人臉表情進(jìn)行識(shí)別,發(fā)現(xiàn)人臉表情識(shí)別仍較為準(zhǔn)確。但在多個(gè)人臉表情識(shí)別時(shí)會(huì)發(fā)生個(gè)別人臉檢測(cè)不到,無法進(jìn)行表情識(shí)別的情況。
通過對(duì)實(shí)驗(yàn)中所使用的表情進(jìn)行分類對(duì)比,不難發(fā)現(xiàn),現(xiàn)實(shí)生活中最常見的表情更容易識(shí)別,如開心、驚訝、悲傷。另外幾種表情在實(shí)驗(yàn)過程中識(shí)別較為困難,可能是因?yàn)槊娌考∪膺\(yùn)動(dòng)較難區(qū)分,同時(shí)表情強(qiáng)度較弱。
從實(shí)驗(yàn)結(jié)果可以看出,人臉表情識(shí)別受環(huán)境因素影響很大,在后續(xù)的研究中可以通過優(yōu)化分類模型來改善識(shí)別效果,同時(shí)也可以通過調(diào)整實(shí)驗(yàn)環(huán)境來達(dá)到識(shí)別效果的最優(yōu)化。
本文設(shè)計(jì)了一種基于樹莓派的實(shí)時(shí)人臉表情識(shí)別系統(tǒng),對(duì)人臉表情識(shí)別的主要方法進(jìn)行了分析,使用深度學(xué)習(xí)框架Tensorfllow在樹莓派上實(shí)現(xiàn)對(duì)人臉表情的實(shí)時(shí)識(shí)別。實(shí)驗(yàn)結(jié)果表明,本文設(shè)計(jì)的基于樹莓派的實(shí)時(shí)人臉表情識(shí)別系統(tǒng)對(duì)于正面人臉表情識(shí)別具有較好的識(shí)別精度和較高的魯棒性,但對(duì)于旋轉(zhuǎn)角度較大的非正面人臉表情和低分辨率多人臉表情識(shí)別效果不佳。后續(xù)將圍繞非正面人臉表情和低分辨率多人臉表情實(shí)時(shí)識(shí)別開展研究工作,對(duì)深層網(wǎng)絡(luò)模型進(jìn)行優(yōu)化。