謝 磊,王士同
江南大學 數(shù)字媒體學院,江蘇 無錫 214122
人臉表情識別是指從特定的表情狀態(tài)判別被識別對象的心理狀況,實現(xiàn)計算機對人臉表情的理解與分析。進而,從根本上改變?nèi)伺c計算機之間的關系,改善人機交互體驗。因此,人臉表情識別也逐漸引起關注。一般而言,人臉表情識別方法主要按照圖像預處理、特征提?。ɑ蚪稻S)、分類的流程實現(xiàn)表情識別。主要側重于如何利用先驗知識更好地提取特征和進行特征表達,再結合分類器作進一步的優(yōu)化。有許多方法已在表情分類方面得到使用,例如:基于人工神經(jīng)網(wǎng)絡(artificial neural network,ANN)的方法[1],基于支持向量機(support vector machine,SVM)[2]的方法,基于概率論的貝葉斯分類的方法[3]以及基于隱馬爾可夫模型(hiddenMarkovmodel,HMM)[4]的方法。作為單一表情識別問題,在以往的研究中已經(jīng)達到了不錯的準確度。
然而,由Plutchik的情緒理論[5]可知,面部表情的情況可類似于顏色,所有顏色均由三原色混合而成,表情同樣是由幾種基礎表情情緒合成。有少量基本情緒,所有其他情緒均由這些基本情緒以組合、混合或復合形式出現(xiàn)。當然,這些基本情緒的強度不盡相同。可設定一個表情中所有情緒的強度之和為1,則每個情緒強度在0~1之間,那么情緒強度指標可通過各個基礎情緒的數(shù)值進行描述表達。反觀那些只識別表情單一情緒的標簽學習方法,則有很大的局限性,在現(xiàn)實場景中不能很好適用。事實情況也是如此,大多數(shù)時候人臉的面部表情通常包含了較為豐富的內(nèi)容,表達著多種情感。另一方面,同一表情的情緒狀況也存在差異。例如開心這一表情類別,微笑屬于其范疇,開懷大笑也同樣屬于。圖1給出了一組開心表情的示例。很明顯,即使是同一表情,在視覺效果上也存在較大差異。隨著情緒表達的增強,從微笑到大笑呈現(xiàn)出序列狀。
對于以上情況,可以考慮將每個基本情緒認為是一個標簽,則多標簽學習(multi-label learning,MLL)[6]可以用來描述每個表情圖像與其相關的情緒。MLL可首先選擇一個閾值,然后將分數(shù)高于閾值的情緒標記為相關情緒,而其他標記為無關情緒。那么相關情緒可設為1,不相關情緒設為0。但是,這種方式使得所有相關的情緒都被視為同等重要。因此,關于基礎情緒強度的重要信息丟失了,不能很好地表示出每種情緒的強度。
針對以上問題,本文提出了一種數(shù)據(jù)驅動的情緒標簽分布方法(data-driven emotion label distribution method,D2ELDM)。不同于傳統(tǒng)方法,該方法認定表情由多種基礎情緒混合而成,且允許每種情緒有不同強度。具體來講,首先通過稀疏子空間學習發(fā)掘表情樣本的相關結構,然后將上下文結構合并到標簽分布[7]模型中。接下來算法將自適應地從樣本結構所保留的數(shù)據(jù)中學習不同表情的相關性,進而獲得自身所包含的基礎情緒的強弱狀態(tài)。圖2構建出了一個樣本的標簽分布狀況。從圖中可以明顯看出,每個樣本的標簽分布模型都是具體的。也就是說,不同面部樣本的標簽分布由面部樣本本身以及同它相關的表情結構來確定??偟膩碇v,本文算法通過情緒強度信息對表情進行描述分析,比單一表情分類更切實合理。同時,通過數(shù)據(jù)驅動構造的標簽分布更加靈活真實。
Fig.2 Obtaining emotion label distribution adaptively圖2 算法自適應獲得表情標簽分布
表情識別分析一般作為標簽預測問題解決,可以總結以往的一些工作。在結構構建方面,Ni等人[8]通過結合所有相關的樣本來獲得映射函數(shù),從而在這個映射空間中傳遞它們的標簽。在面部特征表示方面,由于面部區(qū)域具有規(guī)則的紋理信息,之前的一些方法通過構建紋理特征(例如LBP(local binary patterns)[9]、Gabor[10]和 AAM(active appearance models)[11])來表示面部外觀。與直接使用面部區(qū)域圖像提取特征的這些方式相比,最近的研究考慮了面部器官之間的相關性。例如,Guo等人[12]提出了生物啟發(fā)的特征。他們首先將臉部圖像分割成許多局部區(qū)域,然后通過“空間金字塔模型”的方法提取面部特征。同時,表情區(qū)域特征[13]的重要性也逐漸得到關注。另一方面,一些人臉識別通過設計各種深層神經(jīng)網(wǎng)絡來提取面部特征。這些方式[14-15]的優(yōu)點主要是可以捕捉到較多區(qū)別性的視覺信息。同樣,本文在對樣本特征進行提取時也會使用到已有的深度學習框架。
要達到自適應學習樣本相關結構的目的,子空間學習目前是基于圖形數(shù)據(jù)聚類算法中一個重要且有效的方式。
稀疏子空間聚類(sparsesubspaceclustering,SSC)[16]是聚類高維數(shù)據(jù)(如圖像和視頻)的典型方法。其基本思想是每個樣本可以通過幾個其他樣本的線性組合進行重建。因此,SSC方法根據(jù)樣本之間所在的環(huán)境結構關系,將所有原始樣本都嵌入到相應的局部流形子空間中。許多研究人員通過在子空間學習中添加各種約束來提高聚類性能,如低階約束[17]、軌跡拉索約束[18]和混合高斯噪聲約束[19]。最近,李等人[20]通過將發(fā)掘出的上下文結構跟數(shù)據(jù)聚類組合成一個統(tǒng)一的框架來解決SSC問題。
在實際應用方面,SSC技術被廣泛用于解決各種圖像或視頻處理問題。例如,Tierney等人[21]假定視頻中每幀均可由在時間上相鄰的其他視頻幀進行重建。為此,他們首先為時間上相鄰的視頻幀添加平滑約束,再通過將SSC運用于視頻中的每一幀實現(xiàn)了對視頻的分段。最近,Cao等人[22]將SSC擴展到多視圖圖像聚類中,先使用Hilbert-Schmidt范數(shù)來限制不同視圖之間的相關性,之后迭代地對每個視圖求解SSC。雖然比較流行的學習方法[23-24]和子空間學習方法都能夠捕獲樣本的環(huán)境結構,但它們在表情識別中的作用是不同的?,F(xiàn)有的這些方法使用多元學習提取圖像特征,而本文的方法使用子空間學習來構建標簽分布。
本章中,將對數(shù)據(jù)驅動的情緒標簽分布方法進行詳盡描述,例如問題分析、公式定義及推導、具體計算過程,并在最后匯總出算法的整體框架。為了方便理解和閱讀,在表1中總結了本文使用的符號集合。
下面是對文中向量及矩陣方面的一些說明,定義x(i)表示為x的第i個元素,同樣,將X(i,j)表示為X的第i行,第j列的元素。此外,分別定義XT、X?、為X的轉置矩陣、逆矩陣、F范數(shù)、1范數(shù)。
首先需要對現(xiàn)有數(shù)據(jù)進行處理,取得一組人臉表情樣本S{(xn,yn),n=1,2,…,N},其 中xn∈RD×1和yn分別表示第n個樣本的圖像特征向量和情緒標簽??梢詫n分別取1~7,其對應的情緒分別為“開心”“難過”“驚訝”“恐懼”“憤怒”“厭惡”“中性”等。為了方便表示,將標簽設置為1到T,來表示不同的情緒。接下來,使用標簽分布的方式來代替?zhèn)鹘y(tǒng)單一表情的表達方式。符號表示方面,用pn∈RT×1定義為第n個人臉樣本的標簽分布,其中pn(t)表示第n個人臉樣本中第t種情緒的強度狀況。
Table 1 Detailed description of variables表1 符號描述表
下面,通過求解回歸優(yōu)化問題的方式來學習圖像特征xn和標簽分布pn,n=1,2,…,N之間的映射關系,可得出如下公式:
其中,f(·)表示映射函數(shù)。對于式(1)的求解,需要通過增加正則項來提高其泛化性。由于樣本特征維度較高且數(shù)值大于樣本量的數(shù)值,通過加入范數(shù)的方式來控制其稀疏性及復雜性。最后,人臉表情分析的預測模型可構建成一個線性回歸的形式:
式中,用W∈RD×T作為回歸矩陣來表示映射函數(shù)f(·)。其中γ1是平衡參數(shù),來調(diào)控正則項。通過W的第t列(wt)來預測人臉樣本的第t個情緒標簽的情況。
下面將逐步描述出對標簽分布P的構造過程。與傳統(tǒng)的one-hot編碼[25]對人臉表情標記不同(在one-hot編碼模式中,每個人臉樣本的表情僅由單個標簽進行標記,用1或0進行唯一表示)。但通過分析觀察得知,一些具有相似圖像特征的面部樣本的標簽集合卻不相同。因此,人臉表情的識別不僅由其自身的標簽確定,而且還受其相關面部環(huán)境(由視覺上相似的面部樣本構成)的影響。一般而言,探索人臉樣本之間的環(huán)境結構問題通常被轉化為子空間結構學習的問題[16,19-20,26]。
在這里,首先構造圖形矩陣C∈RN×N來捕捉面部的環(huán)境結構。為了得到圖矩陣,使用“樣本自我表達”[16]這一方式來構建優(yōu)化函數(shù),可定義為如下公式:
公式中通過最小化第一項來進行樣本的“自我表達”,第二項的β是控制C的稀疏度的參數(shù)。通過把對角線設為0,對樣本的自我描述進行限制,不能描述自身。由此可見,式(3)表明每個人臉樣本都可由其面部結構環(huán)境中的其他樣本進行線性重建。
顯然,以上方式確保了所得的親和度矩陣非負且對稱。
親和圖所表達出的樣本之間的相關性,也即說明了面部樣本不僅與其自身表情標簽相關,同樣會受到一些在視覺上相似的面部樣本的標簽的影響。因此,常常會導致預測標簽同自身標簽有出入。根本原因是人臉面部表情自身包含多種不同強弱的基礎情緒,這也是提出的面向數(shù)據(jù)的標簽分布的依據(jù)。
由此可見,如若每個面部樣本相對應的標簽同時來源于自身的one-hot編碼以及與其視覺上相似的面部樣本的標簽情況,那就可以用標簽分布更加靈活真實地描述人臉表情樣本的情緒狀況。因此,這種標簽分布方式可以對具有多種情緒的表情樣本進行編碼標記。
首先,構造出樣本的多標簽矩陣Y∈RT×N,則Y(:,n)表示Y的第n列,再結合前面給出的yn表示第n個樣本的情緒標簽,那么Y可通過如下方式得到:
步驟1構造0向量Y(:,n);
步驟2如果yn=t,則Y(t,n)=1。
在Y的基礎上,構造樣本的標簽分布矩陣P∈RT×N,其中第n列也即第n個樣本的標簽分布用pn表示。則數(shù)據(jù)驅動的標簽分布pn可通過如下形式 得到:
其中,μ∈[0,1]是一個權衡參數(shù)。第二項描述了第n個樣本的合成標簽分布,它是通過其他表情樣本與第n個樣本之間的關聯(lián)度進行構建。其中,am,n表示第m個樣本和第n個樣本之間聯(lián)系緊密度的因子。顯然,式(5)表明,每個人臉樣本的情緒標簽分布都是通過自身情緒標簽與其面部環(huán)境樣本的加權線性組合構成的一個離散分布。給出其對應的矩陣表示公式,如下:
其中,am,n與親和圖A(m,n)相對應。
最后,可以將聯(lián)合優(yōu)化問題的完整形式寫成如下公式:
式中,λ、γ1、γ2均為平衡參數(shù)。
首先,分別通過SSC算法和線性回歸的方式對C和W進行初始化。然后,可以通過交替迭代的方法實現(xiàn)對D2ELDM的優(yōu)化。
3.2.1 已知W對C進行迭代計算
在求解計算方面,由于存在對矩陣取絕對值的情況,則考慮先去掉絕對值,再使用迭代更新來對C進行優(yōu)化。首先定義C1為C1=(|C|+C)/2,C2為C2=(|C|-C)/2。那么可以通過C=C1-C2的方式來簡化目標函數(shù),很明顯C1、C2為兩個非負矩陣。接下來可定義Cτ=|C|+|CT|,那么Cτ可用(C1+C2+C1T+C2T)進行表示。
替換后,式(7)可以被寫為如下形式:
下面,分別為約束項C1≥0和C2≥0引入拉格朗日乘子Ψ1和Ψ2。然后得到拉格朗日函數(shù):
下面則按照標準的求解過程分別對C1和C2求導數(shù),得到如下公式:
使用KKT條件Ψ1(n,m)C1(n,m)=0及Ψ2(n,m)C2(n,m)=0,可得到關于C1、C2的等式,具體內(nèi)容如下:
下面,可以通過以下方式對C1和C2進行更新:
獲得C1和C2的收斂值后,通過以下步驟獲得C的解:
3.2.2 已知C對W進行計算
在求得C之后,可通過式(6)構建標簽分布P,繼而轉換式(8)為以下公式:
接下來,按照常規(guī)方式,可對式(15)取其對wt的導數(shù),并置零得到:
最終,可以得到如下結果:
因此,通過計算式(17)便可得到回歸矩陣。最后,對于整個算法來講,可以通過設置迭代次數(shù)來控制計算狀況。
在通過學習算法獲得回歸矩陣W之后,便可以預測出面部表情樣本的情緒標簽分布,進而判定其主要表情,以及其內(nèi)在的各種情緒強弱情況。標簽分布可用以下公式獲得:
其中,xq為測試樣本向量,為樣本的情緒標簽分布狀況。通過對分布狀況可視化等方式,可以直觀得到表情的具體結果。最后,整理出人臉情緒分析框架的具體過程。具體過程如下:
算法1數(shù)據(jù)驅動的情緒標簽分布方法
輸入:人臉圖像特征X∈RD×N及表情標簽Y∈RT×N。
輸出:人臉表情情緒分布。
1.初始化
通過稀疏子空間聚類算法初始化C
通過線性回歸方式初始化回歸矩陣W
2.迭代計算
While迭代終止條件未滿足
2.1 通過式(13)和式(14)更新C
2.2 通過式(4)計算鄰接圖矩陣
2.3 根據(jù)式(6)更新標簽分布
2.4 更新回歸矩陣W:
對于W的第t列wt,執(zhí)行以下操作:wt=(XXT+γ1I)?XP(t,:)T
End迭代終止
3.測試數(shù)據(jù)集中表情的情緒標簽分析
根據(jù)式(18)獲取標簽分布,即得到樣本情緒的具體狀況。
本文所有實驗均在同一環(huán)境下完成,采用在Windows 7環(huán)境下搭建系統(tǒng),計算機處理器配置為Intel?CoreTMi3-4150 CPU@3.5 GHz,內(nèi)存4 GB,主算法在Matlab2017b下完成。
CK+數(shù)據(jù)庫[27]:該數(shù)據(jù)庫在美國卡內(nèi)基梅隆大學機器人研究所和心理學系共同建立的人臉表情庫(Cohn-Kanade AU-coded database,CK)基礎上,于2010年進行擴展而來。是人臉表情數(shù)據(jù)庫中比較流行的一個。如文獻中描述,數(shù)據(jù)庫共包含123人的593個圖像序列,其特點在于人臉樣本的表情強度逐漸遞增,表情呈現(xiàn)連續(xù)性變化。例如,從微笑逐漸連續(xù)轉為大笑,更適合算法對其表情強度進行分析。文中選取時注重保留各個表情的強度序列狀況,最后一共篩選出640張圖片,其中“開心”“難過”“驚訝”“恐懼”“中性”的情緒樣本都為30,“憤怒”“厭惡”的樣本量為21。
JAFFE數(shù)據(jù)庫[28]:該數(shù)據(jù)集是日本ATR人類信息處理研究實驗室和日本九州大學心理學系建立的日本女性人臉表情數(shù)據(jù)庫(Japan female facial expression,JAFFE)。數(shù)據(jù)庫共包含10位年輕日本女性的213幅表情圖像,表情類別為6種基本表情和中性表情。數(shù)據(jù)庫樣本相對精簡,但表情區(qū)分度較高,不同表情之間差異明顯,也即單個情緒比較強,可以更全面測試算法性能。
自制數(shù)據(jù)庫(Mydata):為剛好驗證算法實用性,本文結合身邊人員做了一個小型數(shù)據(jù)庫。選取三男三女同學對表情取樣,表情選取同以上數(shù)據(jù)庫相同,每人7類表情,每個表情3張樣本,共計126張樣本圖片。
實驗數(shù)據(jù)庫樣例在圖3中給出。
Fig.3 Sample images of databases圖3 表情庫樣本
實驗中,首先需要對圖片中的人臉進行識別選取,之后,面部樣本的特征提取通過Caffe工具箱[29]中的AlexNet網(wǎng)絡[30]實現(xiàn),需要注意的是,在對樣本使用框架時,需要對圖片大小進行調(diào)整來適應網(wǎng)絡輸入層,同樣需要對樣本微調(diào)后再進行特征提取。使用AlexNet的“relu7”層輸出作為面部圖像特征,該層為網(wǎng)絡輸出層前一層,較好保留了樣本特征。另一方面,通過隨機初始化的方式來預設網(wǎng)絡參數(shù),然后應用標準反向傳播方法來優(yōu)化這些參數(shù)。
一般可設置μ=0.5,對于目標函數(shù)中的參數(shù)來講,設置λ=0.5,γ1=0.1,參數(shù)γ2的數(shù)值可采用SSC[16]中方法獲得。同時,本文對目標函數(shù)中參數(shù)也嘗試了多種不同的組合進行實驗,發(fā)現(xiàn)本文方法在相對較寬的參數(shù)值范圍內(nèi)實現(xiàn)了較為穩(wěn)定的性能。選取CK+數(shù)據(jù)庫做展示,使用不同參數(shù)對樣本進行實驗,發(fā)現(xiàn)準確率在小范圍內(nèi)波動,結果在圖4中給出。
Fig.4 Accuracy by different parameters圖4 不同參數(shù)實驗結果
實驗時取數(shù)據(jù)集的70%作為訓練數(shù)據(jù),剩余圖片樣本則作為測試集。需要注意的是,選取數(shù)據(jù)時需要在各表情里進行隨機選取,保證各表情在訓練集中都有取到。本文所有實驗結果為多次實驗后取眾值所得。下面各表中第一列表示驗證數(shù)據(jù)的對應標簽,后面每行表示預測得到的結果情況。在各表的最后給出其綜合識別率,也即整體正確率。表2是JAFFE數(shù)據(jù)集實驗結果,其中測試數(shù)據(jù)集有64個樣本,恐懼表情有10張,其余皆為9張。很明顯,其在“驚訝”“恐懼”“憤怒”等表情有很好的識別效果,但在中性表情類別的實驗結果表現(xiàn)欠佳,有3張被識別為了恐懼。平均識別率為78.13%。表3為自制數(shù)據(jù)集實驗結果,在平均識別率方面優(yōu)于表2,為82.86%。
同前兩個數(shù)據(jù)集實驗結果不同,表4中實驗結果具有較大提升,綜合識別率為96.88%。因為CK+數(shù)據(jù)集在數(shù)據(jù)量上更大,且表情情緒具有更強的連續(xù)性,范圍更為廣泛??梢园l(fā)現(xiàn)在這種情況下,結果有了很好的改善。隨著數(shù)據(jù)量增大,以及表情連續(xù)性的增強,樣本在構建鄰接圖時有更為廣泛的選擇空間,根據(jù)所選圖片構造出的標簽分布更為合理真實。結果顯示,大多表情識別率均達到100%,但在測試結果中可以看出,有部分“憤怒”表情被識別為“厭惡”。參見圖5給出的樣例,不難發(fā)現(xiàn)他們的臉部特征具有很高相似性,例如眼睛微閉、嘴角側拉、眉心緊皺等方面。這些相似狀況會給表情的識別帶來干擾,看似相似的表情,些許微妙的變化便會導致其表達情緒形成較大差異。同時,根據(jù)圖5所給的標簽分布狀況圖可看出,本文算法對于此類狀況在“憤怒”和“厭惡”情緒都給出了較高的估值。
Table 2 Experimental results of JAFFE表2 JAFFE數(shù)據(jù)庫識別結果
Table 3 Experimental results of Mydata表3 Mydata數(shù)據(jù)庫識別結果
Table 4 Experimental results of CK+表4 CK+數(shù)據(jù)庫識別結果
Fig.5 Angry expressions are misidentified as disgust and emotion description degree圖5 憤怒表情被錯誤識別為厭惡樣例及其情緒描述度
本文算法可以很好地對表情進行分析,在識別準確率上也有很好的表現(xiàn)。為此,本文選取不同算法與本文方法進行比較,例如一些經(jīng)典算法SVM[31]、KNN(K-nearest neighbor)[32]、AdaBoost(adaptive boosting)[33]、RF(random forest)[34]、改進算法(least squares twinK-class support vector classification,LST-KSVC)[35],以及較為火熱的深度學習中的AlexNet[30]。表5給出了其與以上算法在識別率上的對比情況,可以看出本文算法在識別率上有著不錯的表現(xiàn)。圖6給出了部分樣例的識別圖示,豎軸的數(shù)值(如同引言所講,總值為1,各個情緒強度為0到1之間)可表示基礎情緒的強度情況,可看出本文算法在實際場景的表情分析方面具有良好的應用價值。
Table 5 Accuracy of different algorithms表5 不同算法準確率比較 %
Fig.6 Emotion analysis圖6 表情分析實例
針對人臉表情的復雜豐富性,本文提出了一種基于數(shù)據(jù)驅動的表情標簽分布方法。通過數(shù)據(jù)集中人臉的相似特征構造鄰接圖,從而得到每個樣本自身的表情標簽狀況。與其他的表情識別算法不同,本文算法可以在保證較好識別率的情況下,分析出樣本表情所包含的基礎情緒的強度,在視覺上更加直觀地顯示出樣本表情的內(nèi)在信息。實驗結果表明,本文算法在對表情的預測及分析方面都有不錯的表現(xiàn)。