王怡文
摘要:旨在對卷積神經(jīng)網(wǎng)絡(luò)及特征提取面部表情識別算法進行簡單的對比,找到更加合適的識別方法。通過open CV進行人臉動態(tài)圖像截取,對截取的靜態(tài)圖像進行簡單的規(guī)格及灰度處理后進行分類,分類算法選取基于卷積神經(jīng)網(wǎng)絡(luò)與基于特征提取的面部表情識別。結(jié)果表明,基于卷積神經(jīng)網(wǎng)絡(luò)的面部表情識別精確度更高,更能滿足要求。
關(guān)鍵詞:卷積神經(jīng)網(wǎng)絡(luò);特征提取;面部表情識別
中圖分類號:TP391? ? ? ? 文獻標識碼:A
文章編號:1009-3044(2019)16-0203-03
開放科學(資源服務(wù))標識碼(OSID):
Abstract: The purpose of this paper is to compare the convolutional neural network and feature extraction algorithm for facial expression recognition, and find a more suitable recognition method. OpenCV is used for face dynamic image interception, and the static image intercepted is classified by simple specification and gray level processing. The classification algorithm is based on convolution neural network and feature extraction for facial expression recognition. The results show that the accuracy of facial expression recognition based on convolution neural network is higher and can meet the requirements better.
Key words:Convolutional neural network; Feature extraction; Facial expression recognition
近年來,隨著計算機技術(shù)的進一步發(fā)展,人們對于計算機的探索不再局限于計算與數(shù)據(jù)處理方面,開始更多地考慮通過計算機進一步輔助人們的生活,人工智能的概念也逐漸被更多人所了解、支持。圖像識別作為人工智能的重要組成部分,近年來也取得了很多成果。圖像識別技術(shù)得到了很好的發(fā)展,人臉識別作為其中的一部分也在逐漸趨于成熟。在這個背景下,如果可以在人臉識別的基礎(chǔ)上,通過一些算法,讓計算機也可以做到察言觀色,可以辨別人們的表情情感,那么計算機將可以更好地幫助人們,為人們的日常生活服務(wù)。目前,面部表情識別有很多人機交互方面的應(yīng)用,比如疲勞駕駛檢測和手機端實時表情識別。早在20世紀,Ekman等專家,通過跨文化調(diào)研提出了七類基本表情,包括恐懼、生氣、厭惡、悲傷、開心、驚訝及中立,現(xiàn)在很多面部表情識別分類也是基于這七種表情進行分類研究,是目前人臉表情識別最直接、最有效的情感識別模式。同時計算機實現(xiàn)面部表情識別也是人機交互的一個基礎(chǔ),對于面部表情識別的研究既符合當下的科技發(fā)展發(fā)現(xiàn),在未來也必定會成為一大熱門領(lǐng)域。人臉表情識別的實現(xiàn)的難點主要在于特征的提取、學習與分類,這也會在很大程度上直接影響最后識別的準確率。論文主要選取了卷積神經(jīng)網(wǎng)絡(luò)和特征提取兩種方法分別進行面部表情識別的實現(xiàn)。
1 面部表情識別的基本框架
人臉面部表情識別一般分為四部分,包括圖像獲取、人臉檢測、圖像預(yù)處理、表情識別分類。其中表情識別分類部分又根據(jù)算法的不同會有不同的實現(xiàn)方式,在本文中主要是構(gòu)建神經(jīng)網(wǎng)絡(luò),數(shù)據(jù)訓(xùn)練和提取表情特征、參數(shù)計算兩種不同的實現(xiàn)方式?;究蚣苋鐖D1所示。
2 基于卷積神經(jīng)網(wǎng)絡(luò)的面部表情識別
2.1 卷積神經(jīng)網(wǎng)絡(luò)
卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Networks, CNN)是深度學習的代表算法之一,是一種包含卷積計算且具有深度結(jié)構(gòu)的前饋神經(jīng)網(wǎng)絡(luò)。因為可以進行平移不變分類(shift-invariant classification),所以卷積神經(jīng)網(wǎng)絡(luò)也被稱為“平移不變?nèi)斯ど窠?jīng)網(wǎng)絡(luò)(Shift-Invariant Artificial Neural Networks, SIANN)。卷積神經(jīng)網(wǎng)絡(luò)主要由卷積層、池化層、全連接層三部分組成,如圖2所示。其中卷積層主要是實現(xiàn)在原始的輸入上進行的特征提取操作,池化層的作用是對特征圖進行特征壓縮,以減少數(shù)據(jù)量,全連接層是對特征進行整合分類,得到最終的分類結(jié)果。
2.1.1 卷積層
卷積層主要實現(xiàn)的是特征提取功能,特征提取簡而言之就是在原始輸入上一個小區(qū)域內(nèi)通過卷積計算進行特征提取。在卷積層中有一個很重要的概念——卷積核,是指在進行圖像處理時,對于給定輸入進行加權(quán)平均的權(quán)值的定義函數(shù)。而卷積層的最主要的運算卷積運算就是指將卷積核與輸入矩陣根據(jù)一定規(guī)則進行相乘并求和的計算過程。設(shè)ωmn是卷積核中的值,xmn是輸入矩陣的值,aij是卷積后得到的特征矩陣的值,可以得到如下的計算公式
每進行一次卷積計算,都會產(chǎn)生數(shù)個與之有關(guān)的權(quán)值,并且這些權(quán)值參數(shù)的個數(shù)與卷積層個數(shù)有關(guān),即與卷積層所用的函數(shù)有直接的關(guān)系。通過卷積層,可以得到若干個特征值,根據(jù)判斷特征值的大小可以確定該區(qū)域內(nèi)是否含有所需要的特征。
2.1.2 池化層
當需要描述的圖像過大,不便于描述處理的時候,就可以對圖像根據(jù)一定的規(guī)則進行聚合運算,這種聚合統(tǒng)計的方法就稱為池化。經(jīng)過池化操作,可以大大減小參數(shù)矩陣的尺寸,從而方便后面全連接進行運算,簡化訓(xùn)練。池化操作最大的優(yōu)點是可以在避免過擬合的基礎(chǔ)上有效地降低緯度,減少數(shù)據(jù)量。池化的這個優(yōu)點在對大型數(shù)據(jù)進行神經(jīng)網(wǎng)絡(luò)訓(xùn)練時會起到很好的不可忽視的作用。目前常見的池化算法有四種:最大池化、平均池化、隨機池化和譜池化。在這次的面部表情識別實現(xiàn)中使用的是最大池化,即取一定范圍內(nèi)元素的最大的一項作為該區(qū)域最終的輸出結(jié)果。
2.1.3 全連接層
全連接層的功能是將之前訓(xùn)練得到的局部特征重新通過一定的權(quán)值矩陣組裝成一個完整的全新的圖。通過全連接層,可以將同一個特征的表示由特征矩陣,變?yōu)閱蝹€的值,在減小數(shù)據(jù)量的基礎(chǔ)上,大大減少特征位置對分類帶來的影響。全連接層具體的實現(xiàn)原理如圖3所示。其中,W是全連接層的參數(shù),是一個T*N的矩陣,T表示類別數(shù),N表示特征數(shù)。X是指全連接層的輸入,是一個N*1的向量。通過全連接層可以得到一個T*1的向量,其中向量中的每個值表示該樣本屬于每個類的可能性的大小,數(shù)值越大,則表示該樣本是該類的可能性越大。由此,可以通過最后的輸出向量,來判斷該樣本的分類。
2.2 面部表情識別實現(xiàn)[2]
2.2.1 數(shù)據(jù)集的選取
本次實驗所用的數(shù)據(jù)集選取的是FER2013數(shù)據(jù)集,該數(shù)據(jù)集是2013年Kaggle比賽時的一個數(shù)據(jù)集,由28709張訓(xùn)練圖,3589張公開測試圖和3589張私有測試圖組成,且每一張圖片都是像素為48*48的灰度圖。FER2013數(shù)據(jù)集采取七分類的分類方式進行人臉表情分類,將表情分為憤怒,厭惡,恐懼,開心,難過,驚訝和中性七種。由于該數(shù)據(jù)集是從網(wǎng)上別人提供的鏈接下載的,而且數(shù)據(jù)大多是通過網(wǎng)絡(luò)爬蟲下載,所以可能會存在一定的誤差。
2.2.2 數(shù)據(jù)預(yù)處理
這一環(huán)節(jié)主要是對于數(shù)據(jù)集進行預(yù)處理。首先對FER2013數(shù)據(jù)集進行劃分,將其分為訓(xùn)練集和測試集兩部分,以方便后面的訓(xùn)練。然后對于所有數(shù)據(jù)進行統(tǒng)一的灰度處理,減少噪聲干擾。為了防止網(wǎng)絡(luò)過快地過擬合,一個最好的辦法就是使用更多的訓(xùn)練數(shù)據(jù)。所以在數(shù)據(jù)集劃分后,會對圖像進行一些旋轉(zhuǎn)切割等操作,以增大數(shù)據(jù)量。最終得到1050000張經(jīng)過處理的圖片,均為48*48的黑白照片。
2.2.3 神經(jīng)網(wǎng)絡(luò)搭建
對于多類分類網(wǎng)絡(luò)結(jié)構(gòu)而言,增加中間隱含層能夠提升訓(xùn)練精度,但是所需的計算時間和空間會增大,因此需要測試選擇一個合適的數(shù)目,本論文選取了一些層數(shù)分別進行訓(xùn)練測試。同時,每一層將舍棄率設(shè)為0.5,以盡可能地避免欠擬合或過擬合現(xiàn)象的出現(xiàn)。實驗所搭建的八層神經(jīng)網(wǎng)絡(luò)示意圖如圖4所示,八層神經(jīng)網(wǎng)絡(luò)搭建所使用的代碼如圖5所示,十三層神經(jīng)網(wǎng)絡(luò)構(gòu)建與八層類似。
3 基于特征提取的面部表情識別
3.1 基于幾何的特征提取[6]
人臉幾何特征包括人臉眼睛、鼻子、嘴等五官的局部形狀特征,臉型特征以及五官在臉上分布的幾何特征?;趲缀蔚奶卣魈崛》椒?,是一種基于統(tǒng)計的特征提取方法,是通過計算臉部各個特征點之間的距離與標準進行比較,從而進行情緒判斷的一種識別方式。一般對于人臉輪廓的確定多采用灰度差投影法,眼睛的定位采用積分投影法或水平差分累加的方式。
人臉部特征提取主要依靠Dlib庫,采用ERT算法進行實現(xiàn)。ERT(Ensemble of Regression Trees)算法又稱為級聯(lián)回歸算法,是一種基于梯度提高學習的回歸樹方法。該算法需要一個事先標定好的圖片集作為訓(xùn)練集,進行訓(xùn)練,從而得到訓(xùn)練模型,以用于的后續(xù)特征分類。在該算法中,會使用基于特征選擇的相關(guān)性方法,將輸入數(shù)據(jù)隨機投影到一個方向上,并選擇一對特征(u,v),計算該特征與輸入數(shù)據(jù)之間的樣本相關(guān)性,并通過不斷調(diào)整特征(u,v)的值,來尋找與輸入數(shù)據(jù)具有最高樣本相關(guān)性的特征。每當輸入一個新的圖像時,算法會首先估計一個大致的特征點位置,然后采用gradient boosting算法選取與輸入平方差最小的特征點。該算法一般采用最小二乘法來減少誤差,以得到每一級的級聯(lián)回歸因子。ERT算法的核心公式如下所示:
其中,t表示級聯(lián)序號,rt表示當前級的回歸器regressor。I為輸入圖像。
每個回歸器可以由若干棵樹組成,使用梯度提高學習的回歸樹訓(xùn)練每個回歸器,同時不斷使用最小二乘法來最小化誤差。
3.2 算法實現(xiàn)
在實踐中,首先調(diào)用Dlib庫來進行動態(tài)的人臉識別,同時調(diào)用預(yù)測器來對識別出來的臉部進行68點標定。標定后獲取并存儲這68個點的具體坐標,以備后面進行相關(guān)參數(shù)計算。面部表情識別主要依靠嘴張開的比例,眼睛睜開程度與眉毛的傾斜程度三個指標來進行表情判定。實驗用的主要規(guī)則如下:1.嘴巴張開的大小占面部識別框也就是整個臉的寬度的比例越大,說明此時被試的情緒越激動,可能出于非常開心的狀態(tài),也可能是極度憤怒的狀態(tài)。2.當Dlib標注的17-21 或者 22-26 號特征點距離面部識別框頂部的距離與識別框的總高度的比值越小,說明眉毛上揚越厲害,此時該被試可能處于驚訝或開心的情緒狀態(tài)下。研究表明,眉毛的傾斜角度在一定程度可以顯示目前的情緒狀態(tài),人開心時眉毛一般會上揚,而憤怒時大多人會有皺眉的行為出現(xiàn),眉毛下壓的會比較厲害。3.人在開懷大笑的時候多數(shù)情況下會不自覺地瞇起眼睛,而憤怒或者驚訝的時候更大概率的會瞪大眼睛。本實驗的主要通過以上三條判定準則來判斷樣本的面部表情。具體的實現(xiàn)流程圖如圖6所示。
4 總結(jié)
面部表情識別是情感識別的一部分,也是圖像識別的分支之一,該技術(shù)也一直深受人們關(guān)注,且具有巨大的應(yīng)用市場。本文對現(xiàn)有的面部表情識別算法進行簡要介紹,并對其中兩種比較熱門的方法-基于卷積神經(jīng)網(wǎng)絡(luò)的表情識別與基于特征提取的表情識別進行了實現(xiàn)。在實現(xiàn)過程中也對二者進行了一些比較。在算法的復(fù)雜性方面,基于特征提取的方法相對較高,該方法更依賴于算法設(shè)計本身,想要得到較高的準確率就必須要一些比較精密的算法作支撐,對于實現(xiàn)者的能力要求相對較高。且該方法的判別標準主要依賴于統(tǒng)計與研究結(jié)果,具有一定的主觀性??傮w來說,基于特征提取的面部表情識別方法在現(xiàn)實中可能更適用于設(shè)備環(huán)境相對較差,無法支撐大量數(shù)據(jù)訓(xùn)練的情況。相對而言,在本次實現(xiàn)中,基于卷積神經(jīng)網(wǎng)絡(luò)的面部表情識別精確度更高,更能滿足要求。
由于作者能力有限,對于這兩種方法均只完成了相對較為簡單的實現(xiàn),算法與最后的結(jié)果還有很大的提升空間,在日后的研究中,應(yīng)加深研究,進一步改進與優(yōu)化相應(yīng)的算法。同時在這兩種算法基本掌握的情況下,應(yīng)進一步嘗試別的算法,并對于這些算法進行對比,找到各個算法的優(yōu)缺點,以便更好地服務(wù)于實際應(yīng)用。
參考文獻:
[1] 胡超. 人臉表情識別研究[D].華東交通大學,2018.
[2] 張璐璐. 基于卷積神經(jīng)網(wǎng)絡(luò)的人臉面部表情識別方法研究[D].河北科技大學,2019.
[3] 施興華. 自動人臉表情識別[D].西安電子科技大學,2009.
[4] 楊凡,張磊.基于Gabor參數(shù)矩陣與改進Adaboost的人臉表情識別[J].計算機應(yīng)用,2014,34(04):1134-1138.
[5] 李雅倩,李穎杰,李海濱,等.融合全局與局部多樣性特征的人臉表情識別[J].光學學報,2014,34(05):172-178.
[6] 寧凡,厲星星.基于人臉幾何結(jié)構(gòu)的表情識別[J].計算機應(yīng)用與軟件,2009,26(06):238-240+285.
[7] 王志良,陳鋒軍,薛為民.人臉表情識別方法綜述[J].計算機應(yīng)用與軟件,2003(12):63-66.
[8] 左登宇. 基于Adaboost算法的人臉檢測研究[D].中國科學技術(shù)大學,2009.
【通聯(lián)編輯:唐一東】