張悅欣 付曉峰



摘要:針對實時人臉表情識別模型訓練慢、識別速度慢的問題,提出一種OpenCV和卷積神經網絡結合進行實時表情識別的方法。人臉表情是多個局部區域特征的集合,而卷積神經網絡提取出的特征能更多地關注局部,因此采取卷積神經網絡的方式進行模型的訓練。所提網絡在全連接層中加入了Dropout,能有效預防過擬合現象的發生,并且提升模型泛化能力。實驗結果表明此模型的可行性,在fer2013數據集上的準確率達到71.6%。基于以上方法再結合OpenCV構建一個實時表情識別系統,系統實時識別表情的速度為0.4s。所構建的系統相比于現有的其他系統,具有訓練速度較快、準確率較高、識別速度較快等優點。
關鍵詞:OpenCV; 卷積神經網絡; 表情識別; 情感分類; 深度學習
Abstract:Aiming at the problems of slow training and slow recognition speed of real-time facial expression recognition model, a method for real-time expression recognition by combining OpenCV and convolutional neural network is proposed. Facial expression is a collection of features of multiple local regions, and the features extracted by the convolutional neural network can pay more attention to the locality. Therefore, this paper adopts the method of convolutional neural network to train the model. The network in this paper adds Dropout to the fully connected layer, which can effectively prevent the occurrence of overfitting and improve the model generalization ability. The experimental results show the feasibility of this model, and the accuracy rate on the fer2013 data set reaches 71.6%. Based on the above method and then combined with OpenCV to construct the real-time expression recognition system in this paper, the system's real-time expression recognition speed is 0.4s. Compared with the existing system, the system in this paper has the advantages of faster training speed, higher accuracy and faster recognition speed.
Key words:OpenCV; convolutional neural network; facial expression recognition; emotion classification; deep learning
面部表情是人們用來表達自己內心情緒的方式之一,對比語言能更具象直觀地表達人類的心情。隨著人工智能技術和計算機技術的日益進步,人們日益向往智能化的人機交互方式[1]。如果計算機能認識和識別人類的情感,將能更好地為人類服務。因此人臉表情識別在機器人、心理學、醫學、智能監控及3D合成動畫[2]等方面都有很大的應用價值。
目前表情識別的應用方法有LBP、SVM[3]和深度學習[4]等。近幾年來,深度學習逐漸走進越來越多人的視線,成了人們研究的熱點,卷積神經網絡[5]也成為其中較為熱門的方法,并取得了越來越好的成績,比如VGGNet[6]、CNN16等。但結合實時攝像進行表情識別的仍然不是很多,用時存在識別時間較長等問題。為了減少人臉識別的時間,本文使用了OpenCV中的haarcascade分類器[7],其中積分圖和AdaBoost級聯分類器的使用節省了大量時間,可提高檢測效率。
本文采用OpenCV的haarcascade分類器檢測人臉部分,利用卷積神經網絡來提取人臉表情特征,設計了一個可以進行實時人臉表情識別的系統,還可進行靜態圖片或視頻中的表情識別。
1 方法
卷積神經網絡是包括卷積層、池化層、全連接層的深度神經網絡[8]。卷積神經網絡權值共享,卷積池化交替出現的層組織結構方式能夠減少網絡參數并對輸入進行降維,使提取出的特征具有高度不變性。本文采用4層卷積和4層池化交替,輸入數據集的訓練圖片,輸出包含7個神經元,對應7種表情,分別為angry、disgust、fear、happy、neutral、sad、surprise。
人臉圖像具有豐富的表情數據信息,如:眼睛睜大、眉毛皺起、嘴巴張大、嘴角上揚等,這些都是人心情通過面部的具象表達。為了提取出的特征能更多地關注局部,一般設定卷積神經網絡內的卷積核小于輸入圖像的大小,適合提取人臉多個局部區域特征。關于表情分類,本文先利用卷積神經網絡提取相關特征,再通過分類器得到最后的分類結果。
1.1 表情識別模型構建
卷積神經網絡具有由卷積池化結構提供特征提取的能力,其組織方式使其含有較少的訓練參數,能夠提取旋轉、位移不變形特征以及像素局部相關性。本文的卷積神經網絡由4層卷積層、4層池化層、2層全連接層組成,接下來將詳細介紹本文所采用的卷積神經網絡的組成。
1.1.1 卷積層
在特征提取的部分受到了ResNet[9]的啟發,建立一個3*3的濾波器,設置步長為1,步長是指每次向前傳播的像素數,在輸入圖像數據的寬度和高度上向前移動,然后計算整個濾波器與輸入數據任意一處的內積,就會得到一個卷積后的特征矩陣。在卷積層中,多個濾波器共同工作,輸出時將每個濾波器卷積后的數據疊加在一起輸出。
1.1.2 池化層
池化層主要有兩種類型:最大池化和平均池化,本文使用最大池化,設置窗口大小和步長均為2。每次都從2*2的窗口中選取最大的數據,同時滑動2個步長進入新的窗口。對圖像進行下采樣,丟掉其中75%的激活信息,選取其中最大地保存下來,去除一些噪聲信息,能夠有效降低數據的大小。
1.1.3 全連接層
卷積神經網絡和輸入數據中的一部分連接,并且輸出的神經元每個深度切片都共享參數。經過了前面的卷積層和池化層之后,提取出圖片的特征圖,將特征圖中的全部神經元轉變為全連接層的樣子,直觀上即將一個3D的立方體排列組合,變成一個全連接層,然后通過幾個隱藏層,最后在輸出層輸出最終結果。為了防止過擬合現象的發生會引入Dropout,本文設置Dropout為0.25。
1.2 小卷積核
較大的卷積核能夠獲取更大的感受野,但是會導致計算量的明顯增加,計算性能也會因此降低。使用多個小卷積核[10]代替大卷積核可在相同感受野的情況下,減少所需的計算量。本文3層卷積層均使用3*3的卷積核結構,保留一層5*5的卷積核,在保留足夠感受野的同時,減少計算量。
1.3 haarcascade分類器
haar分類器=haar-like特征+AdaBoost算法+級聯+積分圖快速計算。AdaBoost方法是一種迭代算法,在每一輪中添加一個新的弱分類器,直到達到一個預估的極小的錯誤率。每一張訓練樣本圖片都被初始賦予一個權重,表示它被其中一個分類器選入訓練集的概率大小。如果某張樣本圖片已經被選入正確的分類器,在選擇下一個訓練集時,它被選中的概率就降低;相反,如果某張樣本圖片沒有被準確分類,它的權重就得到提高。
2 實驗
2.1 圖片預處理
基于深度學習的方法需要大量樣本用來訓練,本文采用fer2013表情庫作為實驗對象,將其分為訓練集和測試集,其中每張圖片的表情由一個0~6中的數字代表,0=angry,1=disgust,2=fear,3=happy,4=sad,5=surprise,6=neutral。訓練集中一共28709張圖片,測試集3589張。在進行網絡訓練之前,先將圖片進行預處理,得到48*48的人臉表情集。
2.2 表情分類
本文采用的卷積神經網絡為4層卷積層、4層池化層、2層全連接層。導入已經預處理完的圖片集,定義CNN結構,導入模型,開始訓練模型。此過程大概需要一到兩個小時,使用小卷積核替代大卷積核,減少了非常多的計算量。導入測試集進行準確率測試。使用混淆矩陣表示每類表情的精確準確率,具體各表情識別結果準確率如表1所示,混淆矩陣的行標表示本文算法預測表情結果,列標表示實際表情。
由表1可知該模型對happy、surprise兩類表情識別準確率都達到了0.85,識別率較高,而對angry、fear、disgust類表情識別準確率都在0.6以下,識別率較低。
再對本文網絡計算F1-score,F1-score是衡量分類問題的一個指標,最大為1,最小為0。由表1數據計算得到本文網絡的F1-score為0.64,記錄在表2中。
2.3 與其他算法比較
為驗證本文所提方法的有效性,本文將分別與其他方法進行準確率、F1-score的比較。如表2所示,本文算法的準確率對比其他算法有所提升,F1-score也較高。
3 實際應用
實時進行人臉表情識別,利用OpenCV自帶的haarcascade分類器,檢測人臉,可在正臉分類器的基礎上加上側臉及眼睛的分類器提高正確率,配合使用上述模型對已識別到的人臉進行表情識別,連接攝像頭建立實時人臉表情識別系統。
3.1 實時人臉表情識別系統
本系統在Python3.6操作環境下運行。圖1為本文設計的系統主界面,圖中4個按鈕分別指向4個不同功能的子界面。“攝像頭識別”指向連接攝像頭實時進行人臉表情識別,如圖2(a);“圖片識別”指向靜態圖片中的人臉表情識別,如圖2(b);“視頻識別”指向動態視頻中的人臉表情識別,如圖2(c)。
圖2(a)為攝像頭識別系統運行界面,界面中的文件圖標表示可選擇模型,默認為上文訓練出的模型,下面的攝像頭圖標可打開攝像頭,右上的“用時”則表示一次識別所用的時間長短,“識別結果”表示本次識別到的表情的輸出結果。
圖3為用此模型的識別結果舉例,用時在0.04s左右,時間較短。本文采用OpenCV中的haarcascade分類器識別人臉,haar-like特征通過積分圖來計算,積分圖是只需要遍歷一次圖像就可以求出圖像中所有區域像素和的快速算法,從而大大地加快了圖像特征值計算的速度;AdaBoost級聯分類器[14]是樹狀結構,每一級都是強分類器,當檢測窗口成功遍歷全部的強分類器時才被認為是正樣本,不然則為負樣本,由于每一個強分類器對負樣本的判斷準確度都十分高,所以一旦發現通過分類器的為負樣本,就不再繼續調用下面的強分類器,節省了很多的檢測時間。圖示背景皆為復雜背景[15],通過實驗得出,系統能夠準確地將人臉從背景中檢測出來,并對人臉進行實時跟蹤進行表情檢測。
4 結論
本文利用不同于傳統的新型卷積神經網絡進行模型的訓練,對人臉表情進行高效的分類,達到了較高的準確率。并將其與攝像頭連接,可進行實時的表情識別且識別速度較快。本文中描述的實時人臉表情識別系統,能較好地實現計算機實時人臉表情識別的任務,具有網絡容易訓練、識別準確度較高、系統實時性強、識別速度較快等優點,可以應用于較多計算機系統的人機交互。同時,該系統算法也有繼續研討、改良的意義,有一定的提升空間。
參考文獻:
[1] 薛雨麗,毛峽,郭葉,等.人機交互中的人臉表情識別研究進展[J].中國圖象圖形學報,2009,14(5):764-772.
[2] 潘光良.機器人人臉表情識別技術研究[J].智能機器人,2019(1):50-52.
[3] 姚麗莎,徐國明,房波,等.結合LBP和SVM的視頻表情識別方法[J].山東理工大學學報(自然科學版),2020,34(4):67-72.
[4] 盧官明,何嘉利,閆靜杰,等.一種用于人臉表情識別的卷積神經網絡[J].南京郵電大學學報(自然科學版),2016,36(1):16-22.
[5] 施宇楠,吳自萬,孫文.基于卷積神經網絡的人臉表情識別研究[J].科學技術創新,2020(5):75-76.
[6] Simonyan K, Zisserman A. Very deep convolutional net-works for large-scale image recognition[C]. International Conference on Learning Representations, San Diego, USA: ICLR, 2015:1-5.
[7] 謝爾曼,羅森林,潘麗敏.基于Haar特征的Turbo-Boost表情識別算法[J].計算機輔助設計與圖形學學報,2011,23(8):1442-1446,1454.
[8] 張立春,劉雅楠,曲柄光,等.深度學習下的人臉表情識別算法分析[J].電子元器件與信息技術,2020:4(1):67-68.
[9] Hhen K,ZHANG X,REN S, et al. Deep residual learning for image recognition[C]. Computer Vision and Pattern Recognition(CVPR), Las Vegas:2016. 770-778.
[10] Chen Hang, QIU Xiaohui. Research on Emotional Recognition Based on Convolution Neural Network and Pooling Algorithm[J].Computer Technology and Development, 2019 (1):61-65.
[11] 張麗英,沈詩婕,瞿子文,等.基于痛苦表情識別的智能醫療監護系統[J].國外電子測量技術,2020,39(3):148-151.
[12] 夏成靜.基于數據增強和卷積神經網絡的面部表情識別研究與實現[J].電腦知識與技術,2020,16(3):213-215.
[13] Dong Feiyan. Application of Distributed Training of Convolutional Neural Network in Facial Expression Recognition[J].Software,2020(1): 160-164 .
[14] 朱健翔,蘇光大,李迎春.結合Gabor特征與Adaboost的人臉表情識別[J].光電子·激光,2006,17(8):993-998.
[15] 王金云,周暉杰,紀政.復雜背景中的人臉識別技術研究[J].計算機工程,2013,39(8):196-199,203.
【通聯編輯:唐一東】