王怡文



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