陳 斌, 朱晉寧, 東一舟
(南京師范大學 信息化建設管理處,江蘇 南京 210046)
表情是人類情感對外表現的重要途徑之一。由于表情之中蘊含著豐富的信息,這些信息是人類內心世界的折射,所以使得計算機可以識別表情,從而探知人類的心理狀態,使其達到更好的人機交互效果和服務目標[1]。美國著名心理學家保羅·艾克曼研究了人的不同精神狀態與表情的關聯關系,發現了基本情感表達要素的7種表情分類:驚訝、悲傷、憤怒、恐懼、快樂、厭惡及輕蔑[2]。隨著計算機圖像處理技術的蓬勃發展,以及其在人臉識別領域的推進,人臉表情識別研究逐漸成為一個重要方向。
目前計算機表情識別的主要方法涵蓋3個方向:整體識別法與局部識別法、形變提取法與運動提取法、幾何特征法與容貌特征法[3]。計算機識別表情的過程主要分3個步驟:圖像預處理,表情特征提取,表情識別(分類)[4]。計算機識別的表情特征主要以3種形式表示:灰度特征、運動特征和頻率特征[5]。表情識別主要分模型設計與訓練過程及模型應用與決策過程[6]。在模型設計與訓練階段,主要有以下模型設計方法:線性分類器、神經網絡分類器、支持向量機、隱形馬爾可夫模型、人臉物理模型建模、模型圖像編碼等分類模型[7-9]。針對設計的模型在人臉表情數據集上通常進行有監督的機器學習訓練,從而得到最優參數歸一化模型的目標結果[10]。目前較為公認的人臉表情數據集有:Extended Cohn-Kanada(CK+),Kaggle-Facial Expression Recognition 2013(FER2013),Japanese Female Facial Expression(JAFFE)等[11-13]。訓練完畢的模型結果將用于應用與決策過程進行表情識別。近年來,在表情識別領域以卷積神經網絡(Convolutional Neural Network,CNN)為基礎的分類模型研究得到重視[14]。Su等人通過多角度卷積神經網絡(Multi-view Convolutional Neural Network,MvCNN)[15]進行多種姿態下的物體識別,獲得較好效果,但訓練所需條件苛刻,實踐性差;Kaya等人將圖像深層特征與HOG及局部Gabor二元模式的人工提取特征結合使用,以提高性能[16],但識別準確率受到影響;Gu等人對分塊圖進行Gabor變換,并通過徑向網絡對其進行聯合編碼,進而通過多分類器級聯實現全局分類[17]。這類方法由于融合高維特征,識別實時性受到約束;Soyel等人在卷積過程中引入了加權投票法[18],Liu等人基于Dempster-Shafer證據理論引入了最優支持度算法實現了多區域決策級融合[19],但二者的特征提取方法通常均需人工干預,而人工特征提取質量造成了表情特征損失的不確定性,直接影響了模型分類質量的魯棒性。Pathak提出基于語義的深度卷積神經網絡,通過學習圖像特征,生成圖像缺失部分的預測圖,最終實現缺失圖像的修復[20]。
針對上述問題,本文提出了基于殘差整流增強卷積神經網絡的表情識別方法。在深度學習結構中,CNN在圖像分類問題中得到了廣泛的應用[21]。近幾年來,CNN在目標分割、識別與檢測等領域表現尤為出色[22]。以CNN為原型,在訓練模型的過程中,引入殘差網絡(Residual Net,ResNets)的思想[23],修正CNN測試集效果與訓練集效果之間,也即實際觀察值與擬合值之間的差。通過內嵌于卷積層中的激勵函數(Activation Function)對殘差塊(Residual Block)的線性整流(Rectified Linear)操作,協助表達復雜特征,并降低由于神經網絡層數堆疊后在訓練集上學習效果受到的影響。同時通過數據增強的方法抑制深度神經網絡模型在訓練過程中過快的擬合,提升其在給定識別任務上的泛化性能,進而提高模型學習效果的魯棒性。在表情識別領域,算法的結果精準與性能穩定是重要指標。本文致力于結合CNN模型的優點,內嵌殘差整流及數據增強,在網絡層數恒等且復雜性不變的前提下提升模型分類的準確性與魯棒性。
圖1是基于殘差整流增強卷積神經網絡的表情識別模型構架。卷積神經網絡是一類包含卷積計算且具有深度結構的前饋神經網絡,是深度學習的代表算法之一[24-25]。卷積神經網絡主要包括輸入層、隱含層和輸出層,隱含層主要由卷積層和池化層構成。通過嵌入各層網絡的短連接(Shortcut Connection)組成的殘差塊在卷積過程中的不斷帶入以抑制訓練的退化,以及線性整流函數防止梯度彌散并保持稀疏激活性作用,反復在訓練過程中校準直到模型生成,過程中融入了數據增強手段進行訓練條件的優化,較好地增加了模型分類效果的準確性,同時增強了模型的魯棒性。

圖1 基于殘差整流增強卷積神經網絡的表情識別模型構架
CNN將數據特征的提取、模型的訓練,以及分類等操作作為一個端到端的整體識別過程來看待[26],對于大規模數據集上的應用取得了良好的效果,但對類似于人臉表情識別的小規模數據集,其分類過程中容易出現過擬合現象,從而導致識別效果和穩定性都不理想[27]。圖2給出了卷積神經網絡對表情圖像處理的基本過程。網絡深度的增加理論上可以提升分類的精度,但隨著網絡深度(層數)的不斷增加,訓練過程越發低效,參數調優越發困難,模型訓練衰退情況也越發嚴重。研究發現殘差中蘊含著模型基本關系之間的重要信息[28],通過回溯觀測值的誤差,對模型參數進行修正,可以達到理想的抑制訓練退化的目的。激活函數通過線性整流的方式將嵌入層的殘差修正,并將激活信息傳入下一層網絡。該處理方法本質上就是將激活函數的非線性因素融入CNN,補齊模型的線性表達能力,將激活整流后的殘差特征保留傳遞至下一層映射。

圖2 卷積神經網絡圖像處理基本過程
模型訓練過程分為前向計算階段及方向傳播階段。在兩個過程交疊往復中,持續對權值參數保持更新,并將殘差激活后迭代進各層各訓練階段,進而使得損失函數結果達到最小。
殘差塊與激活整流作用過程如圖3所示,x表示輸入,F(x)表示殘差塊在前一層激活函數整流之前的輸入,公式(1)

圖3 殘差塊與激活整流作用過程Fig.3 Residual block and activation rectification process
F(x)=W2σ(W1x)
,
(1)
式中,W1和W2分別表示上一層和下一層的權重,σ表示ReLU激活函數,殘差整流后的輸出結果為σ(F(x)+x)。卷積層計算方式為:
Convi=F(x*ki+bi)
,
(2)
式中,Conv結果為第i次卷積與輸入圖像卷積計算后得到的特征圖,F為激活整流函數ReLU,ki為第i個卷積核,bi為其對應偏置量。池化層的計算方式為:
Pi=F(αipooling(Convi)+bi)
,
(3)
式中,Pi為池化層中第i個圖像的輸出,αi和bi為第i個圖像的偏置值,pooling()為池化函數。合并層的計算方式為:

,
(4)
式中,m(i)為第i個池化層的特征圖,F是池化層特征圖的和值。全連接層的計算方式為:
Fl=F(w×u+b)
,
(5)
式中,u為特征值,w為權值,b為偏置量,F為激活函數。
人臉表情數據集數據樣本數量不足已經成為共性問題[29],已存在的樣本也有著相似度高的問題,各類表情分類樣本分布不均衡容易導致不同表情的分類效果差別較大[30]。數據增強是目前較好地解決表情樣本量不足及分布不均衡問題的方式。圖像生成方式在表情識別領域較常用的為生成對抗網絡(Generative Adversarial Network,GAN)及其改進方法。但究其根本,生成方法的基本思路均為二人零和博弈,即二人的利益之和為零,一方的所得必然為另一方的所失[31]。它是一種無監督概率學習方法,能夠對數據的真實分布進行學習并產生與之相關的新數據集。其模型網絡由生成模型G和判別模型D構成,生成模型用來探尋訓練數據的分布情況,判別模型本質上是一個二分類,用來判斷輸入的數據是來源于真實的數據還是生成的數據。生成模型與判別模型之間的關系可以按式(6)表示為:

,
(6)
式中,x為真實數據,服從分布pd(x),z為隨機噪聲,服從高斯分布pz(z)。但傳統GAN方式存在訓練過程不穩定,生成樣本多樣性差等問題,導致生成的圖像不可控,通常的處理方式是給生成網絡添加生成約束條件。添加了條件約束的GAN本質上是對GAN的一種有條件擴展,其中最具代表性的是帶循環約束的生成對抗網絡,也是本文選擇使用的表情數據集增強方式。

LossGAN(Gu,Dv,U,V)=Fv~Pd(v)[logDv(v)]+Fu~Pd(u)[log(1-Dv(Gu(u)))]
,
(7)
式(7)用于表示源域樣本集容量U與目標域樣本集容量V之間的映射關系所對應的由判別模型Dv進行優化所帶來的損失代價計算數值。
LossGAN(Gv,Du,V,U)=Fu~Pd(u)[logDu(u)]+Fv~Pd(v)[log(1-Du(Gv(u)))]
,
(8)
式(8)表示目標域樣本集容量V與源域樣本集容量U的映射關系所需由判別模型Du進行優化的損失。理想情況下對抗損失優化的結果將近似接近目標域的分布,使得反轉后的分布接近源域的分布,然而實際情況下生成模型通常只能學習到目標域的部分分布,導致優化結果不能達到預期的目標。然而循環一致性損失的添加可以較好地解決該問題。循環一致性損失函數的定義如式(9)所示:
LossCycle=Fu~Pd(u)[‖Gv(Gu(u))-u‖]+Fv~Pd(v)[‖Gu(Gv(v))-v‖]
,
(9)
式中,‖…‖是L1的正則化范式,用于計算兩個分布之間的間距差值。總的損失函數的計算方式可定義為:
Loss(Gu,Gv,Du,Dv)=LossGAN(Gu,Dv,U,V)+LossGAN(Gv,Du,V,U)+σLossCycle
,
(10)
式中,σ為超參數,用于協調對抗損失與循環一致性損失函數的權重。
本文基于殘差整流增強卷積神經網絡的表情識別模型主要分為輸入人臉圖像預處理(包含數據增強)、表情識別模型構建(包括模型訓練和測試),以及表情識別模型的決策,模型整體構架如圖1所示。首先,對輸入的人臉圖像進行人臉配準和歸一化處理,同時通過數據增強手段對訓練數據集進行補充,并對訓練集和測試集進行劃分;進而對表情信息含量豐富的眼眉區域、唇口區域的關鍵特征進行提取,過濾低表情信息熵的鼻、臉頰、頭發等區域,通過不斷卷積迭代及特征圖生成和池化后,最終產出訓練模型結果;在最終的模型決策階段,將待決策圖片信息提取送入模型進行判斷,尋找最優解,獲得待測對象表情分類的判定結果,完成表情識別過程。
本文的網絡結構以VGG16為基礎,卷積網絡共12個卷積層,卷積核大小在整個過程中保持3×3不變,最終的輸出特征圖尺寸為7×7,由于每一步都攜帶殘差信息并伴有線性整流操作,測算出每一步感受比未殘差整流處理的情況提升了3倍,這對整個卷積過程最終結果有很大的向好影響。本文分別在基礎表情數據集JAFFE和FER2013基礎上進行圖像生成增強,訓練數據W包含了n個訓練樣本w,劃分為7類表情數據:驚訝(Surprised)、悲傷(Sad)、憤怒(Angry)、恐懼(Scared)、快樂(Happy)、厭惡(Disgust)和平靜(Neutral),經過SoftMax分類器進行歸一化處理,處理過程表示如下:
,
(11)
式中,w代表訓練樣本,n代表樣本數量,e代表樣本概率。樣本模型預測分布h與真實樣本分布k之間的差異關系可以按照式(12)表示:

,
(12)
式中,tensor為輸出特征圖張量,此處定義其值為7。在卷積的整個過程中,由于真實分布的k值表情信息熵始終保持穩定,所以只需要考慮如何對共享表情信息熵的數值進行計算,方式如下:

,
(13)
.
(14)
同時,對于損失的計算以及各樣本分類均衡處理需要添加不同的權值,以降低樣本數量的差異化所帶來的分類效果的差異化,權值賦予方式定義如下:
,
(15)
式中,v為權值數據。訓練樣本類別不均衡是造成不同類別預測結果不對稱的最常見原因之一。本文中在訓練時為避免正負樣本比例失調,一方面通過數據增強補差,另一方面通過增加和調節權值偏置量(超參數)來改善訓練穩固性,增強抗干擾性,提升魯棒性。權值偏置量作用過程可以表示為:
AWB=σi[-(1-k(wi))]λ×AW
,
(16)
式中,λ表示表情交叉信息熵,σ表示調節權值偏置量。
本文通過基于殘差整流增強卷積神經網絡實現人臉表情檢測與識別,通過迭代殘差塊帶入卷積抑制了退化作用,并通過線性整流函數激活殘差效果,通過生成高質量候選區域,優化面部表情分類過程。為避免數據集密度不足導致的訓練過程過擬合情況,輔助數據增強手段對訓練過程進行微調,以獲得較優的效果增益。
本實驗所使用的硬件環境為:Intel(R) Core(TM) i5-6200U CPU @ 2.30GHz處理器,16GB內存(RAM),NVIDIA GeForce GTX 1070Ti GPU加速。支撐軟件及開發軟件環境為:Anaconda 4.7.5(內嵌Python 3.7),PyCharm 2019.3.3(Professional Edition),CNN所采用的基礎框架為TensorFlow 2.0.0。
為了證明基于殘差整流增強卷積神經網絡的表情識別方法的有效性,本文分別引入業界具有代表性的JAFFE數據集和FER2013數據集進行實驗評估,文中列出了JAFFE數據集的示例圖及生成圖示例(如圖4及圖5所示),FER2013數據集情況類似。JAFFE數據集使用日本ATR(Advanced Telecommunication Research Institute International)專門用于表情識別研究的基本表情數據庫。該數據庫中包含了213幅(每幅圖像的分辨率:256×256)日本女性的臉相,每幅圖像都有原始的表情定義。表情庫中共有10個人。JAFFE數據庫均為正面臉相,且把原始圖像進行重新調整和修剪,使得眼睛在數據庫圖像中的位置大致相同,臉部尺寸基本一致,光照均為正面光源,但光照強度有差異。由于此表情數據庫完全開放,且表情標定非常標準,所以現在大多數研究表情識別的文章中都使用它來訓練與測試。FER2013的表情數據來源于ICML(International Conference on Machine Learning)2013年的挑戰賽。FER2013是自然環境下的人臉表情數據庫,樣本總數為35 887幅,所有圖像來自于互聯網。由于樣本差異性較大,部分人臉有遮擋和旋轉等情況,因此在該數據庫上進行表情識別具有一定挑戰性。FER2013數據集圖像大小為48×48,由于生成對抗網絡輸出圖像大小為128×128,在使用生成樣本時,本文統一將圖像樣本歸一化處理成48×48。兩個數據集都包括憤怒(Angry)、中性(Neutral)、厭惡(Disgust)、恐懼(Scared)、快樂(Happy)、悲傷(Sad)和驚訝(Surprised)7種分類表情數據。

圖4 JAFFE數據集7類表情圖像示例
本實驗基于受控場景下近距離實時攝像頭或上傳照片的表情分析,相對非受控場景下具備較好排他干擾因素條件。該環境特點是連續(待測對象大致位置確定)、光線陰影變化來源單一(正常情況下人員位置固定,正對攝像頭或有小幅偏轉,并且一般光照情況均較好,光照影響情況突變性較小)、遮擋引起表情變化情況簡單(主要為低頭、側臉、托腮等小范圍動作),混合干擾情況少(除了小幅動作影響,幾乎沒有其他遮擋和光線陰影變化因素)。通過使用已增強數據后的數據集對模型進行了102輪的訓練,并經過近半年時間的算法改進,在基于JAFFE數據集的訓練分類效果上,最終最高正確率已收斂至91.7%。所有訓練完成耗時達3 017 min,在訓練過程中,以參數零為均值,滿足高斯分布的權重值標準差參數0.1為條件,按照偏置量參數零作為初始化值,每次選擇8張圖像代入訓練過程。為了減少測試集與訓練集數據劃分偶然性帶來的影響,實驗中進行了3次隨機抽樣,對3次實驗結果進行了平均值計算處理。
從實驗結果來看,7類表情中分類準確率最高的是中性(Neutral,最高達到91.7%,平均值接近80%),分類準確率最低的是厭惡(Disgust,最高達到57.6%,平均值接近22%)。該差異主要由兩方面原因造成:(1)中性表情的訓練集樣本最為豐富,中性表情的特征性較為明確,與其他表情的交叉特征信息少;(2)厭惡表情的訓練集樣本最少,厭惡表情的特征并不十分明確,與其他表情例如憤怒(Angry)、恐懼(Fear)、悲傷(Sad)的特征重疊性較強。面部表情信息主要通過眉眼區域或唇口區域的動作形態變化及紋理特征變化進行傳遞,如果面部器官動作特征或紋理指征不明確,則易引起識別結果不明確,從而造成分類錯誤的可能性增大,誤識率增高,最終導致識別準確率降低。圖6是本文對應的表情分析實驗系統示例圖,展示了本實驗系統對7種表情圖像(動態實時攝像或靜態圖片輸入)的分析結果,對單張靜態照片或動態實時攝像單幀的平均計算耗時均在0.04 s左右。本實驗系統同時展現了同源表情識別的歸一化概率分布,從中可以得出不同表情特征的獨立排他性和重疊相關性。

圖6 表情分析實驗系統結果示例
針對增強后的FER2013數據集,本實驗模型經過了38 961個樣本的訓練,其中用于測試集的為4 012張,訓練中采用300 epoch為一組的單網格模式,針對JAFFE數據集,由于增強后還是屬于樣本量偏少類型,所以為了避免過擬合,訓練中采用8 epoch為一組的單網格模式,并且使用了交叉驗證的方式。對于這兩個增強數據集的不同訓練模型結果的應用情況,從實驗分析數據來看,在JAFFE增強數據集上訓練的模型結果的表情分類準確率高于在FER2013增強數據集上訓練的模型結果。在JAFFE增強數據集上的識別分類準確率最高達到了91.7%,而在FER2013增強數據集上的識別分類準確率最高只能達到68.2%。造成兩種情況下模型識別率差別的最主要因素,在于FER2013數據集的圖片來源于互聯網隨機獲取的多元數據,相較于JAFEE實驗室特定情況下(10名日本女性)約束型數據集而言,雖然樣本數量占優,但樣本質量缺乏規約性。然而,從識別率的魯棒性角度而言,FER2013較JAFFE樣本集的測試結果更優,這與樣本量存在著直接的關系。圖7和圖8分別給出了基于JAFFE增強數據集以及FER2013增強數據集上訓練的模型結果應用在實驗系統中的表情分類識別率的混淆矩陣。

圖7 基于JAFFE增強表情數據集訓練模型平均識別率

圖8 基于FER2013增強表情數據集訓練模型平均識別率
本文使用了基于殘差整流增強卷積神經網絡的表情識別算法對人臉表情進行分類識別,該工作基于對現有卷積神經網絡的殘差補齊和激勵整流同時輔以數據增強手段。實驗結果表明,該方法可以有效對受控情況下的人臉圖像輸入進行表情分類,最高準確率達到了91.7%,在同訓練集基礎上,較其他識別算法效果更優。本文提及了該算法以及實驗均在受控情況下進行,僅適用于特定受控環境下的表情識別,而針對開放性非受控場景的密集型群體或人流表情的識別效果不佳,并未在本文中給出具體實驗數據,這也是下一步需要改進和研究的方向。