余 濤,鄒建華,徐 君,龍卓群
(1.西安航空學(xué)院電子工程學(xué)院,西安 710077; 2.西安交通大學(xué)系統(tǒng)工程研究所系統(tǒng)工程國家重點實驗室,西安 710049; 3.廣東順德西安交通大學(xué)研究院,廣東 佛山 528300)
面部表情識別在很多領(lǐng)域都非常有價值,如醫(yī)療診斷[1]、教育[2]及人機(jī)交互系統(tǒng)[3]等。被識別的面部表情主要有兩種類型,即二維表情[3]與三維表情[4],前者直接識別在二維面部圖像中獲得的處理過的特征,后者利用多個攝像機(jī)拍攝多個視角的面部圖像、特定的3D數(shù)據(jù)庫、特定的傳感器獲得三維特征??蓪⒍S與三維結(jié)合起來識別面部表情[5],獲取并處理特征。
面部表情識別方法主要包括神經(jīng)網(wǎng)絡(luò)(Neutral network)[6]、支持向量機(jī)(Support vector machine)[5]、馬爾科夫鏈(Markov chains)[4]等。不同的學(xué)習(xí)機(jī)適應(yīng)不同種類的數(shù)據(jù)集,當(dāng)這些學(xué)習(xí)機(jī)被單獨利用時,它們無法克服自身的局限性,甚至常常使實際數(shù)據(jù)集以犧牲很多有用的特征信息為代價在很大程度上作出改變調(diào)整來適應(yīng)學(xué)習(xí)機(jī),這樣將影響識別的準(zhǔn)確率。為盡可能保留這些原有的特征信息,需研究以某種架構(gòu)集成學(xué)習(xí)機(jī)來提高整體性能。由于在多數(shù)情況下得到的是二維面部表情圖像,故嘗試直接從二維圖像中獲得并利用一些反應(yīng)出的三維信息來實現(xiàn)逼近的三維識別。
本研究針對來自一個非定標(biāo)攝像機(jī)的單目視頻人的面部表情提出一個進(jìn)行自動識別的框架方法,通過一個類似面部肌肉分布的彈性模板提取出相關(guān)的表情特征。經(jīng)過規(guī)則化和正則化,隨著一個表情的產(chǎn)生,這些特征在時空中變化形成的時間序列被逐行排列進(jìn)一個矩陣中。利用保持鄰域嵌入法(NPE),對這個特征矩陣進(jìn)行降維,以這個被提煉后的矩陣作為輸入,用一個集成了隱條件隨機(jī)場(HCRF)和支持向量機(jī)(SVM)的集成分類器來識別表情。
圖1給出了面部表情識別的方法框架,其中單目視覺的二維動態(tài)表情序列或視頻被用來作為訓(xùn)練或測試的輸入表情,用表情圖像中面部不同區(qū)域灰度值的質(zhì)心作為特征。因為灰度包含亮度、對比度及飽和度的成分,它們都會隨著不同深度而變化,故灰度值含有一定量的深度信息,特別是它的相對變化值。隨著每個表情的產(chǎn)生,這些特征在時空中運(yùn)動。
圖1 面部表情識別原理Fig.1 Principles of facial expression recognition
通常相同類別表情的特征在時空運(yùn)動中具有類似的周期性形式,因此每種類型表情在識別框架中只需要一個面部表情周期。隨著表情產(chǎn)生過程,相關(guān)特征在時空中變化形成時間序列。將其排列成矩陣。這樣識別問題就轉(zhuǎn)化成處理所有時間序列數(shù)據(jù)的問題。
用一個面部檢測器檢測人臉,如果檢測成功,就在此面部區(qū)域再用相關(guān)檢測器分別檢測眼睛、鼻子及嘴巴(若這些感官中的某一個檢測失敗,將基于標(biāo)準(zhǔn)普通人臉的一些通用先驗解剖學(xué)知識,按照一定比例在面部區(qū)域中確定可能的五官區(qū)域。如果面部檢測沒成功,就用面部檢測器在該圖像中其他區(qū)域搜索)。被檢測出的區(qū)域用對應(yīng)的圓圈、三角及橢圓繪制。用線條來連接檢測出的區(qū)域邊緣的不同位置,構(gòu)成彈性模板。此方法可節(jié)省處理時間,檢測器參照文獻(xiàn)[7]進(jìn)行設(shè)計,可自動檢測,不需要手動輔助。圖2是用于檢測面部表情特征的彈性模板工作原理,可以看出,模板特征與人面部肌肉的一般分布在很大程度上是一致的,可從人體解剖學(xué)的角度來分析表情。圖3為用模板檢測一個人的常見表情。該檢測是在以Microsoft Visual C++ 6.0為平臺的環(huán)境下實現(xiàn)的。
圖2 彈性模板匹配原理(a.面部肌肉分布 b.彈性表情模板c.真實人臉與彈性模板匹配示例)Fig.2 Elastic template matching principle (a.Facial muscle distribution, b.Elastic expression template, c.Real face and elastic template matching example)
圖3 彈性模板與真實人臉在不同表情下的匹配Fig.3 Matching of elastic template and real face under different expressions
根據(jù)人面部肌肉的分布及其動態(tài)性能的解剖學(xué)知識[8],將面部表情分為8個區(qū)域。在每個區(qū)域中用一個相關(guān)的質(zhì)心來描述該區(qū)域的像素在時空中隨著不同表情而產(chǎn)生的整體變化。每一個質(zhì)心通過公式(1)進(jìn)行計算,其中,在時刻t時,ni是區(qū)域i中像素的數(shù)目;xm、ym和zm分別是每個像素的水平坐標(biāo)、垂直坐標(biāo)及灰度值。
(1)
圖4用Matlab工具描繪了從一個人的中性表情開始,逐漸產(chǎn)生上述典型表情過程中運(yùn)動質(zhì)心的時間序列分布。這些時間序列的分布與形狀因表情種類的不同而不同,故可用來作為區(qū)分彼此不同表情的依據(jù)。
圖4 一個人由中性表情逐漸變化到不同種類表情中運(yùn)動質(zhì)心的時間序列分布Fig.4 Time series distribution of the center of mass of motion of a person from neutral expression to different kinds of expression
(2)
公式(2)描述了對上述時間序列預(yù)處理的原理,包括提取相對變化值、正則化及離散化。
由于現(xiàn)實中時間序列長度很長,而序列在認(rèn)知意義上的結(jié)構(gòu)維數(shù)本身較低,需要降維。考慮到對同種類型的表情來說,所有特征的時間序列互相關(guān)聯(lián)且這種關(guān)聯(lián)性是重要的個性化特征,故希望這種結(jié)構(gòu)相關(guān)性在進(jìn)行降維的同時盡可能得以維持繼承。
文獻(xiàn)[9]中的保持領(lǐng)域嵌入法(NPE)是一種在維持?jǐn)?shù)據(jù)流形的局部領(lǐng)域結(jié)構(gòu)的流形學(xué)習(xí)方法,比主成分分析法(PCA)[10]對外圍數(shù)據(jù)的敏感度小,與流形學(xué)習(xí)方法(如Isomap[11]及LLE[12]相比,NPE方法不只局限于定義在訓(xùn)練數(shù)據(jù)中,而是定義在全局意義上,故采用此方法來降維。
如文獻(xiàn)[9]所述,主要原理如公式(3)~(5)所示。需注意由相關(guān)曲線產(chǎn)生的每一個時間序列i(i=1,…,8×3=24)被看做一個數(shù)據(jù)點xi。為了保持曲線間的相關(guān)特性,構(gòu)建領(lǐng)近圖的方式用KNN,設(shè)K為24。面部表情中的每個時間序列由領(lǐng)近的其他23個時間序列進(jìn)行重構(gòu)。盡管這些數(shù)據(jù)點可能屬于一種非線性的支流形,但對每個點的局部領(lǐng)域范圍內(nèi)假設(shè)為線性流形也是合理的。用公式(3)來計算存在于這些數(shù)據(jù)點中的結(jié)構(gòu)關(guān)系的權(quán)重矩陣W,用公式(4)來計算關(guān)于降維的投影,用公式(5)依次對各數(shù)據(jù)點xi進(jìn)行降維轉(zhuǎn)換。
j=1,2,…,k
(3)
X(I-W)T(I-W)XTa=λXXTa,其中X=(x1,…,xk),I=diag(1,…,1)
(4)
yi=ATxi=(a0,a1,…,am-1)Txi,
(5)
其中,yi是一個m維向量。
最初,在一個表情周期下的每條表情特征運(yùn)動曲線有50個空間采樣點,用NPE方法后,對應(yīng)的時間序列維數(shù)從一個面部表情周期的50維降至24維,且其局部流形結(jié)構(gòu)以優(yōu)化嵌入的方式在低維空間中得以維持。
在識別的關(guān)鍵環(huán)節(jié)采用集成隱條件隨機(jī)場(HCRF)和支持向量機(jī)(SVM)來組建分類器,這種集成分類器同時具有HCRF與SVM的優(yōu)勢:對每個時間序列以局部特征為條件的隱變量被訓(xùn)練學(xué)習(xí),觀測值不需要條件獨立,可在時空域上重疊[13];分類的最終決策邊界的分類間隔在被稱作特征空間的高維空間中被最大化[14],即這種分類器可解決存在于同一個時間段中的多序列分類問題。具體說明如下:
2.3.1 HCRF用于標(biāo)記所有時間序列
(6)
(7);
圖1中,對某第X(X=1,2,…,7)種表情,根據(jù)人面部表情中不同的質(zhì)心點對應(yīng)不同的運(yùn)動時間序列,對應(yīng)第X種表情的所有運(yùn)動時間序列可以依次標(biāo)記為:X01A,X01B,X01C,X02A,X02B,X02C,…,X08A,X08B,X08C。
由于所有時間序列彼此關(guān)聯(lián),故這些觀測不是條件獨立過程。文獻(xiàn)[13]提出的隱條件隨機(jī)場(HCRF)分類方法用中間隱變量來模型化輸入域的潛在結(jié)構(gòu),并對類標(biāo)記和以觀測為條件的隱狀態(tài)標(biāo)記定義了一個聯(lián)合分布,依賴于由間接圖形關(guān)系表達(dá)的隱變量,不需要條件獨立,且在時空域中可以重疊,該方法能夠?qū)g具有暫態(tài)依賴的潛在圖模型關(guān)系的序列進(jìn)行建模,并能夠納入長范圍的依賴關(guān)聯(lián),故采用HCRF作為一種描述模式來標(biāo)記這些序列,且這些序列和對應(yīng)標(biāo)記間的映射是通過對HCRF的訓(xùn)練及推理識別來進(jìn)行的。HCRF具體方法參見文獻(xiàn)[15],相關(guān)公式如式(6)、式(7)所示。
隱狀態(tài)的數(shù)目設(shè)為10,窗參數(shù)w依次設(shè)為0、1、2來測試對比。在訓(xùn)練中,對所有的訓(xùn)練個體的所有表情,人臉每個區(qū)域中其質(zhì)心運(yùn)動的每個維度的時間序列及對應(yīng)的標(biāo)記分別用一個HCRF模型來學(xué)習(xí);在推斷中,被測試的序列用來自同樣的臉部區(qū)域的產(chǎn)生同種維度的時間序列HCRF模型來判別,具有最大測試概率的類標(biāo)記則為對應(yīng)該測試序列的標(biāo)記。這樣就實現(xiàn)了多特征運(yùn)動時間序列的標(biāo)記訓(xùn)練及標(biāo)記推斷問題。
2.3.2 SVM用于對多序列的所有標(biāo)記分類
通過HCRF的訓(xùn)練,對于一個具體的人面部表情而言,一組標(biāo)記與其對應(yīng)的一組運(yùn)動曲線,即對應(yīng)的時間序列被用于學(xué)習(xí),且這些標(biāo)記的定義值因表情和面部區(qū)域而異,故將這些標(biāo)記看作是一個具體面部表情的一組特征。但大多數(shù)人的表情風(fēng)格中存在一些相似成分,盡管HCRF能夠在一定程度上克服時空域上的重疊,但在推斷中還可能存在一些表情的某些特征完全相同的情況,此時這些特征部分是重疊的。參閱文獻(xiàn)[14],根據(jù)SVM的性質(zhì),其決策邊界直接由訓(xùn)練數(shù)據(jù)決定,最終決策邊界的分類間隔在被稱作特征空間的高維空間中被最大化,這樣多數(shù)在低維空間中不可分的數(shù)據(jù)映射在高維空間中變得可分。故將與面部表情相關(guān)聯(lián)的標(biāo)記特征作為輸入,用SVM作為最終分類手段來識別表情。
分類支持向量機(jī)(multi-class SVM)有很多種設(shè)計方法。根據(jù)文獻(xiàn)[17]的比較測試,1對1(one-against-one)模型方法較適合于實際應(yīng)用,采用此方法對訓(xùn)練樣本中的所有類別的各類之間兩兩建立一個SVM模型,用以區(qū)別相關(guān)聯(lián)的兩類樣本,具體如文獻(xiàn)[18]所述,如果數(shù)據(jù)庫中被訓(xùn)練的個體種類數(shù)量是K,則需要K(K-1)/2個二分類SVM分類器。每個分類器采用具有徑向基函數(shù)(RBF)核的C支持向量機(jī)(CSVC)模型,其中有兩個參數(shù)需要確定,即C和γ,通過平行網(wǎng)格搜索采用典型的交叉驗證法來實現(xiàn)參數(shù)選擇,所有K(K-1)/2個決策函數(shù)共享相同的參數(shù)(C,γ)。
約束條件:
(8)
為證明此方法在一般環(huán)境下的應(yīng)用能力,以奔騰1.73 G的個人電腦為平臺,在VC++6.0環(huán)境下進(jìn)行試驗。
面部表情識別框架方法用數(shù)據(jù)庫the Cohn-Kanade AU-Coded Facial Expression(CKACFE) Database[20]進(jìn)行測試。該數(shù)據(jù)庫包含來自97個個體的486個640x480或640x490、8位灰度尺度值的圖像序列。每一個序列開始于一個中值表情,逐漸進(jìn)入一個峰值表情。每一個序列的峰值表情對應(yīng)一個情緒標(biāo)記。每一個個體有至多7種情緒:中性,驚奇,悲傷,厭惡,生氣,恐懼及高興。在實驗中采用留一交叉驗證法(the leave-one-out cross validation)來訓(xùn)練推斷表情。將第一個人的所有表情用于識別,其余人的所有表情用于訓(xùn)練;將第二個人的所有表情用于識別,用其他人的所有表情用于訓(xùn)練。再次改變識別人順序,用其他人的所有表情用于訓(xùn)練,以此類推,直到所有人的表情都有機(jī)會被識別過。計算每種類型表情被成功識別的比率,并把它作為最終結(jié)果。計算公式如(9)所示。其中,函數(shù)function_infer可以看作是當(dāng)?shù)趇個表情是測試的情緒xi(xi>0) 時,對應(yīng)相關(guān)識別系統(tǒng)(HCRF+SVM)的整體函數(shù),只有在此函數(shù)的結(jié)果等于輸入xi時,此結(jié)果才是正確的。
(9)
其中:δ是單位沖激函數(shù): 若m=0,δ(m)=1 ;否則,δ(m)=0。在對HCRF的訓(xùn)練中,文獻(xiàn)[16]中的共軛梯度法被用于估計相關(guān)參數(shù);在對SVM的訓(xùn)練中,文獻(xiàn)[18]中通過平行網(wǎng)格搜索的交叉驗證法被用于估計相關(guān)參數(shù)。試驗中共有97個實驗個體,每個個體有7種表情,每個表情對應(yīng)8個3D時間序列,則共有8×3=24個HCRF模型和7×(7-1)/2=21個SVM分類器。當(dāng)對CKACFE數(shù)據(jù)庫中的表情訓(xùn)練結(jié)束時,HCRF模型與SVM分類器的所有訓(xùn)練參數(shù)也被存儲在另一個數(shù)據(jù)庫database中。
在進(jìn)行完相關(guān)時間序列的降維后,用暫態(tài)數(shù)據(jù)分別作為單個分類器HCRF及SVM的輸入來直接識別面部表情。在這種情況下,一個HCRF模型對應(yīng)一種類型的表情,即此時共有7個HCRF模型,SVM分類器的數(shù)量與之前設(shè)置一樣。在相關(guān)訓(xùn)練結(jié)束后也會產(chǎn)生另一個與相關(guān)訓(xùn)練參數(shù)有關(guān)的數(shù)據(jù)庫。在同樣的窗口參數(shù)w下,將相應(yīng)的識別結(jié)果與本方法的識別率及典型的Kotsia’s method[5]方法進(jìn)行比較。
圖5為CKACFE數(shù)據(jù)庫中所有個體不同表情的時間序列分布。不同種類的表情對應(yīng)不同類型的時間序列分布。這為利用這些時間序列來識別表情提供了很大便利。
圖5 CKACFE數(shù)據(jù)庫中所有個體不同表情特征的時間序列分布Fig.5 Time series distribution of different facial features of all individuals in CKACFE database
表1給出了集成分類器HCRF+SVM方法與典型的Kotsia方法[5]及單個分類器HCRF/SVM用于表情識別的結(jié)果比較,可以看出,本方法的識別率比Kotsia方法更穩(wěn)定,盡管在少數(shù)情況下Kotsia方法比本方法略高一些,但集成分類HCRF+SVM 比單個分類HCRF 或 SVM 的識別率高很多。當(dāng)用NPE方法對時間序列降維時,相關(guān)數(shù)據(jù)流形的局部臨近結(jié)構(gòu)得到保持;當(dāng)用HCRF訓(xùn)練或推斷時間序列標(biāo)記時,這些在幀間具有暫態(tài)依賴的潛在圖模型關(guān)系的序列被模型化并納入長范圍的依賴關(guān)聯(lián);當(dāng)用SVM訓(xùn)練或推斷相關(guān)標(biāo)記的最終表情時,隨著分類數(shù)據(jù)被映射到高維空間中,相關(guān)分類的決策邊界的分類間隔被最大化。這樣與單個分類器HCRF或SVM相比,集成分類器(HCRF+SVM)在處理數(shù)據(jù)過程中包含了更多待分類數(shù)據(jù)的結(jié)構(gòu)特征,使得識別更加充分。識別率隨著窗口w的不同而不同,當(dāng)w等于1時,識別率普遍比其他尺度的窗口要高。從總體效果上看,此識別方法結(jié)果是令人滿意的。
表1 在不同窗口w下與Kotsia方法及單個分類器HCRF/SVM表情識別率的比較Tab.1 Comparison of expression recognition rate with Kotsia method and single classifier HCRF/SVM under different window w
在進(jìn)行完相關(guān)時間序列降維后, 用HCRF的識別率略高于SVM,這是因為HCRF比SVM更適合于分類時間序列,而SVM直接把相關(guān)序列作為獨立的參數(shù)來處理,是不合理的。無論是用單獨HCRF還是單獨SVM,在不同表情下識別率的變化趨勢與集成分類器HCRF+SVM在總體上是一致的。
提出了一個基于集成分類器HCRF+SVM 用于面部表情識別的方法。根據(jù)人面部通常的肌肉分布,用面部圖像不同區(qū)域的質(zhì)心作為特征,從人的解剖學(xué)結(jié)構(gòu)角度來分析表情。隨著某個基本表情的產(chǎn)生,這些質(zhì)心在時空中運(yùn)動形成多個時間序列。用NPE方法對特征序列降維后,這些數(shù)據(jù)流形的局部臨近結(jié)構(gòu)得以保持。在推斷過程中提出的集成分類器HCRF+SVM包含了數(shù)據(jù)在時空中更多的結(jié)構(gòu)特征,故試驗測試中相比單個HCRF 或SVM 直接從特征序列的識別獲得了更高的識別率,比典型的Kotsia 方法[5]更加魯棒。
在后續(xù)研究中要進(jìn)一步提高該方法在不同光照及遮擋條件下的魯棒性。用一個數(shù)學(xué)模型等價代替二級分類集成,直接實現(xiàn)多序列的分類,這樣可有效避免級間分類可能產(chǎn)生的累積誤差,進(jìn)一步提高識別率。除了本研究測試的數(shù)據(jù)庫外,也可以通過新的測試將此方法應(yīng)用于其他數(shù)據(jù)庫中。為提高方法的實時性,還需引入并行機(jī)制,進(jìn)一步提高算法速度。