周義飏
(北京師范大學 人工智能學院,北京 100088)
表情識別,是基于人的臉部特征信息進行身份識別的一種生物識別技術,在治安、刑偵、醫(yī)療、教育、零售等領域發(fā)揮著越來越重要的作用。自二十世紀七十年代以來,人們在以面部動作編碼系統(tǒng)為基礎的表情識別道路上,向高精度、高速率、大數(shù)據(jù)的方向不斷前進。
人臉表情識別從早期用于治安的道路監(jiān)控、機場安檢所用的基于人臉識別的身份確定,到用于審訊、心理治療的表情識別與分析,已經成為了社會發(fā)展的一個重要課題。
從上世紀六十年代開始,人們已經在探索更精確、更系統(tǒng)的表情識別方法,其中最具代表性的為Paul Ekman提出的面部編碼系統(tǒng)(Facial Action Coding System, FACS)[1]。FACS的出現(xiàn),使所有可能的面部表情都能被描述出來,并進行組合。
二十世紀七十年代,Paul Ekman與合作者通過對表情的觀察和生物反饋實驗,描述出了不同的臉部肌肉動作與不同表情的對應關系。FACS將人臉分成了若干個動作單元(Action Units, AU),這些動作單元依據(jù)解剖學特點劃分,相互獨立但彼此間又具有聯(lián)系。面部動作編碼主要分為3大類:主要動作單元編碼(見表1)、頭部動作單元編碼、眼睛動作單元編碼。本論文主要研究的是動作單元編碼。
表1 主要動作單元編碼
任何表情都能反映成若干AU的組合[2](見表2)。例如表示“快樂”情緒的表情通常表現(xiàn)為臉頰上抬和嘴角上揚,即AU6與AU12的組合。
表2 7種基本情緒與AU對應關系
目前,廣泛使用的幾種深度人臉檢測算法及其效率和性能的最低要求見表3。
表3 幾種深度人臉檢測算法及其效率和性能的最低要求
主動外觀模型(Active Appearance Model, AAM)可從整體人臉外觀和整體形狀中優(yōu)化所需的參數(shù)[3]。
在判別模型中[4],樹木結構模型(Mixtures of Trees, MoT)和判別式反應圖擬合(Discriminative Response Map Fitting, DRMF),通過每個人臉坐標周圍的局部外觀信息來表示人臉[5]。
人臉歸一化主要有兩種常用的方法:照度歸一化和姿態(tài)歸一化。
照度歸一化即通過操作,使一組人臉圖像的照度和對比度相同。常用的照度歸一化算法包括基于各向同性擴散(Isotropic Diffusion, IS)的歸一化、基于離散余弦變換(Discrete Cosine Transform,DCT)的歸一化和高斯差(Difference of GAUsian , DoG)。
姿態(tài)歸一化即人臉正面化。文獻[6]提出了一種方法,即在對面部關鍵點定位后,生成通用的3D紋理參考模型,這些3D紋理參考模型適用于所有人臉圖片,能有效估計可見的人臉成分。通過將每個人臉圖像,反投影到參考坐標系合成初始的正面人臉。值得一提的是,生成式對抗網絡(Generative Adversarial Networks, GAN)在人臉圖像處理中的運用次數(shù)正飛速增長。GAN常用于生成大量的人臉圖片作為訓練集與數(shù)據(jù)集,一定程度上避免了以往因尋找足夠的人臉圖片而遇到的各種困難。
3.3.1 基于外觀特征的人臉AU特征提取
基于外觀特征的人臉AU特征提取,通常會用到Gabor小波,其通過將面部圖像與一組特定的具有不同方向和比例的Gabor濾波器進行卷積,來進行Gabor表示,從而提供面部圖像的多尺度特征,反映像素之間的局部相鄰關系。
文獻[7]中通過在面部局部區(qū)域分別應用Haar小波分析,設計了自動AU檢測系統(tǒng),并使用AdaBoost來選擇特征子集。與Gabor方法相比,Haar和AdaBoost方法有著與Gabor方法相似的精度,但速度卻提高了若干個數(shù)量級。
3.3.2 基于幾何特征的人臉AU特征提取
基于幾何的特征,描述了面部幾何信息并基于幾何形狀將面部動作分類。幾何信息可以是一組關鍵點連接起來的面部網格。一些研究中,利用面部分量的變形,表情和中性面部圖像之間的基準點的位置或差異[8-9]來進行識別。但并非所有的AU都可以僅僅通過幾何表示來識別,例如AU6的特征包括眼睛外角周圍的皮膚起皺和臉頰隆起,這很難通過變形來識別。同時,幾何特征也無法檢測出細微的面部特征,例如皺紋或紋理變化[10]。
3.3.3 基于混合特征的人臉AU特征提取
一些研究整合了基于外觀特征與基于幾何特征兩種方法[11-12],并且結合了整體表示與局部表示、小波分析表示與直方圖表示、低級表示與高級表示。文獻[13]通過引入拓撲結構和關系約束提出多條件潛在變量模型。該模型將特征和模型級別的AU,依賴項編碼用于AU識別的學習中,對于9個AU進行操作,其最佳識別精度達到92.7%。
本方法對1 268張人臉圖片進行識別與檢測,在下巴、雙眉、雙眼、雙唇、鼻梁、鼻尖9個部位返回68個關鍵點(不同部位的某些關鍵點可能重合)。圖1為未處理的人臉圖片,經過處理后可得到各關鍵點的坐標如圖2。
圖1 8張未經處理的人臉圖片
圖2 含關鍵點的人臉圖片
這些關鍵點與人臉各個部位的位置相對應,將在接下來的仿射變換中起到定位作用。本步驟運用仿射變換實現(xiàn)人臉對齊,對齊后的人臉圖片如圖3所示。
圖3 對齊后的人臉圖片
本文進行仿射變換的具體思路為:分別計算左、右眼中心坐標、計算左右眼中心坐標連線與水平方向的夾角、計算左右兩眼整體中心坐標、以左右兩眼整體中心坐標為基點,將圖片逆時針旋轉相應角度,使左右眼中心坐標連線與水平方向平行,確保人臉圖片為視覺上的正向。
實際上,對于執(zhí)行過上一步驟的圖片,CNN可以較為精確地選取出圖片中的人臉部分。但為了減少CNN的執(zhí)行時間,需盡可能減少圖片中的無效部分。根據(jù)landmark裁剪人臉到固定尺寸,水平方向以最靠左和最靠右的landmark中點為裁剪后圖片的中心點,垂直方向上分為3部分:中部(雙眼中心到雙唇中心的像素距離)、底部和頂部(雙眼中心到雙唇中心的距離)。裁剪后的圖片為邊長為138像素的正方形,如圖4所示。
圖4 剪裁后的人臉圖片
本文使用基于68張人臉圖片關鍵點的“圖像擴充”,即對每個關鍵點取子區(qū)域,使每個子區(qū)域能包含至少2/3的人臉區(qū)域,從而將數(shù)據(jù)量擴大至69倍,原本的1 268張人臉圖片擴充為87 492張圖片,但依然只反映1 268張人臉,如圖5所示。子區(qū)域均為邊長為92像素的正方形。
圖5 數(shù)據(jù)增強示例
為了方便表示,建立2個平面直角坐標系記為:坐標系A與坐標系B。分別以經上一步驟剪裁后的圖片左上角頂點和每個關鍵點子區(qū)域左上角頂點為原點(如圖6)。以圖5為例,各個關鍵點及其對應的坐標見表4。
圖6 兩個坐標系
表4 各個關鍵點及其對應的坐標
CNN是一類可進行卷積計算并且具有深度結構的前饋神經網絡(Feedforward Neural Networks, FNN),是深度學習的代表算法之一。CNN主要由輸入層、池化層、激活函數(shù)、卷積層、全連接層5個部分組成。
深度卷積網絡將小的神經網絡串聯(lián)起來,從而構成深度神經網絡。以三維圖進行卷積處理為例,如圖7所示,同一卷積核對不同輸入層進行卷積操作,得到一組輸出,多個卷積核則得到多個輸出。
圖7 CNN的卷積過程
VGG網絡是Oxford Visual Geometry Group于2014年提出的一種CNN模型,其采用連續(xù)的小卷積核代替較大卷積核,以獲取更大的網絡深度。例如,使用2個3*3卷積核代替5*5卷積核(圖7)。這種方法使得在確保相同感知野的條件下,VGG網絡具有比一般的CNN更大的網絡深度,提升了神經網絡特征提取及分類的效果。VGG網絡與其他幾種常用的CNN模型對比見表5。
表5 幾種常用的CNN模型
本方法使用的VGG-19網絡包含了19個隱藏層、16個卷積層和3個全連接層。該網絡模型使用的卷積核均為3*3卷積,池化層則采用2*2最大值池化(圖8)。
圖8 VGG-19網絡結構
以往的研究中通常使用Soft-Max作為激活函數(shù),損失函數(shù)則使用分類交叉熵,但這種方法僅適用于單標簽分類。而本文方法不僅實驗AU分類,更要對同一AU的不同強度進行識別和分類,因此需要進行多標簽多分類。本文方法需要分類的AU為12個,每個AU分為0~5個強度等級,總共為60種分類項。因此,本文采用二分類疊加使用的方式,即先對不同AU種類進行二分類,再對單個AU所對應的不同強度進行二分類,最后將每種AU與對應強度結合形成對照表。采用Sigmoid函數(shù)作為激活函數(shù),損失函數(shù)使用二進制交叉熵函數(shù)。
在后續(xù)的實驗中,還將向VGG19網絡中加入一個加權處理層。
5.3.1 數(shù)據(jù)來源
DISFA是一個無姿勢的面部表情數(shù)據(jù)庫。該數(shù)據(jù)庫包含具有不同種族的27位成人受試者(12位女性和15位男性)的立體聲視頻。使用PtGrey立體成像系統(tǒng)以高分辨率(1 024×768)采集圖像,由FACS專家手動對所有視頻幀的AU(0~5)強度進行評分。
5.3.2 AU分類與強度計算
87 492張圖片分為兩個數(shù)據(jù)集,其中86 224個子區(qū)域圖片為訓練集,1 268張人臉圖片為測試集,輸入至VGG-19網絡。
圖9與圖10分別展現(xiàn)了使用VGG-19網絡訓練30個Epoch和60個Epoch的效果。
圖9 訓練30個Epoch的效果
圖10 訓練60個Epoch的效果
可以看出,訓練至第30個Epoch時測試集的準確率幾乎不再發(fā)生改變,訓練至第60個Epoch時測試集的準確率為54.52%。
結果呈現(xiàn)為每個人臉圖片12種AU的強度(0~5)。以圖11為例,其12種AU的強度呈現(xiàn)在右側表中所示。
圖11 人臉圖片及其含有的AU強度
總體來看,該方法能基本滿足人臉AU分類與強度計算,實現(xiàn)人臉表情分類。因此,為提高精度,將引入一個加權處理層。
為了提高VGG網絡進行人臉表情分類時的精度,本文將通過在VGG-19網絡中加入加權處理層,實現(xiàn)加權處理下的人臉表情分類。
加權處理層在VGG網絡中的位置如圖12所示。在這一層中,經過4組卷積層處理后的人臉圖片會根據(jù)含有的AU,被劃為若干個子區(qū)域,子區(qū)域的劃分是基于AU區(qū)域的中心。AU中心為完成每個AU所需的面部器官對應關鍵點構成的矩形中心,而以這些中心為中心的邊長6像素的正方形區(qū)域,為該AU中心的子區(qū)域。
圖12 加權處理層在VGG網絡中的位置
在劃分AU子區(qū)域后,對于子區(qū)域內的每個1*1像素塊,計算其到AU中心的曼哈頓距離。
設A為權重,d為該位置到AU中心的曼哈頓距離。由于經過第三個池化層和第四組卷積層處理后的圖片大小為28*28,子區(qū)域內每個位置的權重以該位置距離的0.1%進行衰減,即距離每增加1像素,權重減少0.028。A與d的關系如式(1)。
A=1-0.028d
(1)
引入加權處理層后,訓練30個Epoch和60個Epoch的效果分別如圖13和圖14所示。
圖13 訓練30個Epoch的效果
圖14 訓練60個Epoch的效果
結果顯示,直接運用VGG-19網絡進行表情分類的測試集準確率在訓練60個Epoch時僅為54.52%,而引入加權處理層后的準確率達到了83.76%。即引入加權處理層能顯著提高VGG網絡進行表情分類的準確率。
本文采用了兩種提高準確率的方法:一是在數(shù)據(jù)預處理階段對圖片進行二次剪裁,實現(xiàn)數(shù)據(jù)增強,在運用VGG網絡進行訓練時使用疊加后的數(shù)據(jù)集,提高了準確率,同時避免了以往研究中為獲取龐大數(shù)據(jù)集而遇到的種種困難;二是在VGG-19網絡的第四組卷積層和第五組卷積層之前加入一個加權處理層,從而提高準確率,最終使測試集準確率相比未引入加權處理層時提高了53.63%。
在采用了提高準確率的新方法的同時,也存在一些有待改進之處,主要體現(xiàn)在人臉圖片樣本較為單一、缺少其它卷積神經網絡模型的對比、加權處理層作用較為單一等問題,有待進一步研究解決。