雒翠萍,聶志剛
(甘肅農業大學信息科學技術學院,甘肅 蘭州 730070)
人臉表情是人與人之間進行情感信息傳遞和人際關系協調的主要方式。心理學家通過研究發現,日常生活中人們通過語言進行信息傳遞的信息量在總信息量中只占7%,然而通過人臉表情傳遞的要占到總信息量的55%。這些數據充分說明了人臉面部表情在人們日常生活交流中占有重要位置。面部表情是了解特定目標對象情緒狀況的重要信息,與其他任何跡象相比,大多數人的情感表情都可以在面部觀察到[1]。
目前國內外人臉表情識別技術發展迅猛,人臉面部表情分析在許多人機交互系統中具有重要的實用意義。因此,許多學者針對人臉表情識別做了大量的研究工作。美國學者Ekman[2]在20 世紀70 年代通過大量的人臉表情識別實驗,首次將表情劃分為6 種基本形式,包括悲傷、快樂、害怕、厭惡、驚訝和生氣。過去10 年許多研究學者進行了面部表情識別研究,大多數方法都使用手工特征或淺層學習進行面部表情識別。自2013 年以來,面部表情識別技術和真實場景情緒識別等情感識別比賽收集到了相對充足的訓練數據集,這些數據集都是來自現實生活中的場景,具有極大的挑戰性。隨著圖像數據的增多、數據集的擴充,深度學習網絡特別是卷積神經網絡已經廣泛地應用于計算機視覺領域[3]。將基于卷積神經網絡的深度神經網絡應用到表情識別中,可以同時提取數據集的特征和對數據集進行分類。由于深度學習神經網絡的分類準確率高且實用效果明顯,許多學者結合深度學習在各自的研究領域上不斷創新。Szegedy[4]提出了Google Net 網絡結構:一個22 層的深度學習卷積神經網絡。在2014年Image Net 視覺識別挑戰賽(ILSVRC 14)中,這個網絡獲得了6.67%的TOP5 錯誤率。Chollet 等[5]在Google 提出XCEPTION 的網絡結構基礎之上進行改進,提出mini-Xception 框架,該模型在分類性能上有明顯的提高。在最新的人臉技術研究中,Zheng 等[6]提出了一種新的深度人臉識別網絡,將老化引起的變化從穩定的特定特征中分離出來,使用年齡根據任務來獲取年齡不變的特征。Chen[7]提出了一種基于條件生成對抗網的深度人臉細節網,該網絡結構根據復雜的面部表情使用幾何和外觀損失函數,自動生成高質量具備真實細節的三維人臉[8]。Kumawat等[9]提出了一種新的三維卷積神經網絡,它可以在不使用人臉標志的情況下,對時間序列圖像進行端到端的面部表情識別訓練,能顯著減少可訓練參數的數量。綜上所述,基于卷積神經網絡的深度神經網絡應用于表情分類已經成為熱門,并在各種數據集上具有很好的分類效果。本研究采用Open CV 內置算法進行人臉檢測,利用卷積神經網絡進行面部表情識別,實現對人臉最基本的7 種表情進行識別,在面部表情特征表現明顯的情況下能達到較高的識別精度。
人臉表情識別主要分為4 個步驟:(1)人臉面部采集和部位檢測;(2)人臉圖像增強;(3)人臉特征提取;(4)人臉表情識別分類。人臉采集是指對人臉區域進行自動檢測和人臉確定,從而獲得一定時間內的圖像或人臉圖像序列的處理階段。面部采集可以通過兩種方式完成,即檢測頭部位置或直接檢測面部位置。確定面部位置后,下一步是提取和識別面部表情引起的面部變化。面部特征的提取可以通過一些方法來完成,使用特定形成某些幾何圖形的面部點,如眼睛或嘴。基于整個面部外觀特征如顏色、皺紋、面部運動或者其他一些方法(基于混合的)。特征提取后根據不同的面部特征進行分類,并輸出7 種基本表情的概率,選取最大概率的表情作為表情識別結果。人臉表情識別系統處理流程(圖1)。

圖1 人臉表情識別系統處理流程圖
用于訓練卷積神經網絡模型的數據集采用FER2013 數據集,該數據集是人臉表情公開數據集。用于實驗結果驗證的數據集是采用攝像頭捕獲實時視頻獲取每一幀的人臉圖像或人臉表情的圖片,通過該數據集對人臉表情識別的實驗結果進行初步驗證。本研究使用Open CV 調用攝像頭獲取實時視頻流,通過創建Video Capture 對象捕獲視頻,數據集采集流程(圖2)。

圖2 人臉圖像采集流程
與面部表情無關的因素有背景、光照強度、身份偏差和頭部姿勢等。這些影響因素在無約束的場景中是非常常見的。因此,在進行卷積神經網絡訓練之前,需要對訓練數據進行預處理,盡可能地消除無關因素的影響,包括面部對齊、數據擴充和標準化[10]。圖像預處理是用來提高人臉表情識別性能的過程,在神經網絡特征提取過程之前進行。所有圖像的大小標準化為48 像素×48 像素后,用了數據增廣的方法。每幅圖像用不同的線性變換放大10 倍,這些變換包括水平翻轉、以介于(-30,30)之間的隨機角度旋轉、傾斜中心區域和縮放圖像的4 個角。最后,將所有圖像進行歸一化處理,處理為0 單位方差、0 均值。
在實驗中,使用已經訓練過且分類效果好的模型進行表情特征提取和表情分類。模型是由一種通用的卷積神經網絡構建框架,該框架被稱作mini-Xception。這個模型被證明在取得良好效果的同時能減少模型中80 倍的參數。因此,該模型采用龐大數據集進行訓練時,模型分類的準確率能夠得到提升。模型基于FER2013 數據集利用Keras 框架擴大數據集進行訓練,模型分類準確率可從66%提高到70%。FER2013 數據集中存在像有圍巾、眼鏡、帽子等遮擋物以及人臉角度的問題。這些問題對人臉表情識別造成特征提取困難,但該數據集更加符合實際生活的場景。考慮到模型在FER2013 數據集的分類準確率比較高的情況下,決定采用mini-Xception模型架構(圖3)。

圖3 模型架構圖
訓練過程中是通過損失函數定義模型的效果及優化的目標,通過監督學習讓模型學習圖像的特征。卷積神經網絡特征提取的過程檢查被看作是一個黑盒操作,提取特征數據進行卷積模型訓練,從而得到訓練模型[11]。卷積神經網絡模型訓練流程圖(圖4)。

圖4 卷積神經網絡模型訓練流程圖
圖4中反向傳播算法是在已知分類的情況下,為給定的輸入模式訓練某些給定的前饋神經網絡的算法,通過該算法根據前一次運行獲得的錯誤率對神經網絡的權值進行微調,采用這種方法可以降低錯誤率,提高模型的可靠性。神經網絡訓練是通過反向傳播實現的[12]。
卷積神經網絡在輸入的灰度圖中選擇感興趣區域來提取特征。將這些被提取的特征送到神經網絡的分類器中,用神經網絡通過在訓練時學習到的表情特征對輸入的特征進行分類。學習到的表情特征包括悲傷、快樂、中立、厭惡、驚訝、害怕和生氣。進行分類時,訓練過的模型將會預測輸入圖像在7種不同表情中的概率,在輸出表情識別結果時,選取最大概率的表情類作為識別結果。
通過實時攝像頭獲取人臉圖像,分別進行人臉識別、面部表情識別。人臉識別中進行人臉特征的提取,通過特征進行人臉檢測,檢測后的人臉圖像進行裁剪、歸一化、數據增強、人臉標準化等圖像預處理。經過處理的人臉圖像進行面部表情識別,已經進行了面部特征學習的神經網絡模型對輸入的人臉圖像進行特征提取。神經網絡模型將提取的不同面部特征進行分類,并輸出同一張人臉圖像上7種不同表情的概率。系統選取7種不同表情的概率中最大概率的表情作為識別結果。人臉表情識別結果顯示中立、悲傷的表情超過70%,厭惡、生氣、害怕的表情超過80%,高興、驚訝的表情超過90%(表1)。

表1 人臉表情識別概率 %
本研究主要通過Open CV內置算法進行人臉檢測,基于深度學習卷積神經網絡進行人臉表情識別。實驗結果表明,在表情特征表現明顯時,基于深度學習的人臉表情識別系統對7種不同的表情能夠進行準確識別,識別精度都超過70%。但在表情特征不明顯或者模糊的情況下,識別結果容易混淆,即同一張人臉圖像中7種不同表情的概率比差異不大,造成識別精度不高的現象。因此,需要更龐大的數據集訓練神經網絡模型,并進一步優化卷積神經網絡模型。