姚麗莎,徐國明,房 波,何世雄,周 歡
(安徽新華學院 信息系統軟件研究所,安徽 合肥 230088)
人的臉部是非常值得關注的外部特征。人與人交流不需要接觸對方就可以識別對象的一些心里活動,豐富多樣的表情能夠在很多情況下代替語言表達自己的內心情感。人與人不但可以通過表情來表達情緒,還能分辨出交流者的心理和態度。據Mehrabian的論述,人們在交流的時候肢體語言的方式占據最大比例[1]。視頻表情實時識別是一個很有應用價值的研究課題。
人面部表情的復雜性與細膩性使計算復雜度增加,計算量大的算法無法應用到實時視頻處理中,所以選用何種算法提取何種特征以增強時效性成為研究難點。針對這一問題,國內外學者進行了研究。如基于Gabor小波變換[2]和LBP(Local Binary Pattern)[3]特征的表情識別方法,這些算法結構簡單易實現,但識別率有待提高。文獻[4]提出結合時域信息的Gabor運動能量濾波器結合SVM實現表情分類,其效果優于Gabor濾波。針對人臉表情集中于眼睛、眉毛、嘴巴等區域的特點,學者提出了多種區域特征級聯表情識別方法。將不同區域的細節特征按照一定的規則形成一個特征向量,并將數據降維后輸入分類器進行識別,如文獻[5]將Gabor變換后的數據利用徑向網絡聯合編碼進行分類;文獻[6]通過LBP統計表情局部紋理特征并利用信息熵決策各區域的級聯加權值。上述多種區域特征級聯表情識別方法充分描述了人臉的表情特征,但是表示數據維度較高會影響識別的實時性。
近年來,級聯形狀回歸模型在特征點檢索方向上有了突破性進展,此回歸模型從歷史經驗中獲得關于人臉表觀至人臉形狀的映射方法,建立從表象至形態的映射方法[7]。這類方式不用復雜的人臉形狀及其表觀建模,效率高,實現也方便,效果好。另外,深度學習方向的人臉特征點定位算法也有很好的效果。深度學習與形狀回歸框架相結合可更好地提升定位模型的準確性,是目前特征定位的主要方式之一。
迄今為止,雖然人臉表情自動識別技術在各種應用推動下發展很快,但魯棒的自動人臉表情識別系統仍尚未建立。根據國內外學者對表情識別的研究,以上幾種算法都有其各自的局限性,同時由于信息量過大,使得識別及分類算法的效率受到嚴重影響。如何提高算法的效率成為了分類識別算法重要的研究方面。
本文通過LBP算子檢測人臉,利用多級級聯回歸樹模型對人臉68個關鍵點進行訓練,提取臉部表情的幾何特征,并依據此特征結合SVM來判別人臉表情,進而完成7種表情的分類。
表情識別一般講的是從機器通過人臉的照片判別人物當時的情緒。從結構上理解表情即眉毛、鼻子、嘴巴和臉的不同組合,最簡單的方式便是對這些幾何位置進行分類來判別表情。本文提出采用LBP(局部二值模式)特征結合SVM(支持向量機)進行決策表情分類的方法,基本流程如圖1所示。

圖1 識別過程Fig.1 Recognition process
人臉表情基本識別思路如下:
1)在圖中找到人臉,這是最基本的要求。否則就無法獲得五官的信息以提取表情特征;
2)找到人的面部以后,分析其幾何與紋理特征來表示不同的表情;
3)選取分類方法來判別這些特征。
臉部情緒特征的提取一般有下面的方式:整體模版匹配和基于幾何紋理特征的匹配。整體模板匹配中,模板一般用像素點或是向量。在幾何特征的匹配中,在圖中探測到主要的特征點,經由特征點的距離與主要部分相對尺寸得到特征向量?;谔卣鞯姆绞奖然谀0宓姆绞接嬎懔看?,但對面部位置、尺度、頭部方向、大小都不敏感。
局部二值模式(Local Binary Pattern,LBP)特征不會因為旋轉或者光照變化而發生明顯變化,并且LBP特征的算法比較容易計算,處理視頻人臉表情識別能夠更有效,實時性更好。局部是指圖像上某個像素點的紋理特質,很多情況下是指這個點和周圍像素點的關系;二值模式指用中心像素的二值化作為閾值。
最簡單的LBP模式,將一幅圖像以像素為單位分成若干3×3的區域。把周圍8個像素的值與中心像素進行比對,若是不小于中心像素的值則被設置為1,不然的話為0。這樣,3×3范圍內的8個像素點經過與中心像素比較可產生8位二進制數00010011(將該二進制轉換為十進制數即LBP碼,共256種),即得到該窗口中心像素點的LBP值,這個值即可反映該區域的紋理信息。計算過程如圖2所示。

圖2 LBP算子計算過程Fig.2 Calculation process of LBP operator
LBP算子值因光照而產生的變化很小,因為在不同光照下,不改變周圍像素與中心像素的關系,即一定程度下均勻變化的光不影響LBP算子值。因此在一定程度上,該算法可以解決因光照帶來的影響。同時LBP算法計算簡單也有助于本文實時分析圖像。如圖3所示,不同光照下的LBP特征變化很小,可以解決一些因光照帶來的影響。

圖3 不同光照下的LBP特征Fig.3 LBP characteristics under different light
計算一整幅包含背景的人臉圖像的LBP特征和人臉LBP特征進行比對是無法定位人臉的。LBP特征即可反應某處的紋理信息,進行人臉檢測的思想是根據比較人臉圖像與目標圖像的LBP特征的相似性來確定該圖像是否是人臉,但是該過程只是進行了人臉識別,也就是判斷一幅圖像是不是人臉,而非一副圖像是否包含人臉,如何在一整幅圖象中找到人臉才是關鍵。既然已經可以識別人臉,那么在輸入圖像中截取一部分分別進行LBP特征的提取與判定,可以判定圖像中截取的位置是否為人臉,這樣一直循環遍歷整幅圖像,便可以定位到人臉的位置。
本文采用設定的窗口在圖像上滑動多尺度掃描整個圖像,圖4為人臉檢測過程,通過分類器去判別是否是人臉。首先檢測窗口與將要進行檢測的對象進行對齊,然后移動窗口進行下一次比較,直到這副圖像被窗口遍歷,最后進行縮放原始進行多尺度檢測,圖5為多級級聯分類進行定位人臉的過程。通過計算窗口覆蓋下的圖像特征,與目標特征進行匹配來確定這部分圖像的內容。

圖4 人臉檢測過程Fig.4 Detection process of face

圖5 級聯分類定位人臉過程Fig.5 The process of face positioning by cascade classification
其中,計算兩張圖片LBP特征向量的相似度實現人臉識別,相似度公式為
(1)
該式即是卡方檢驗,可以檢測類別的相關性。式中H1、H2分別為兩幅圖像的LBP直方圖(Histogram)。d越小,表示差異越低,兩幅圖像越接近,越相似;相同則d為0。
人臉關鍵點檢測(Facial Landmark Detection)是根據輸入的人臉圖像,自動定位出面部關鍵特征點,如眼睛、鼻尖、嘴角、眉毛以及人臉各部件輪廓點等[8]。根據這些特征點的關系來判斷目前的情緒狀態[9]。
因為有光照、姿態、遮擋等問題的負效應,人臉關鍵點檢測不容易實現。本文首先用LBP特征定位人臉,并進行人臉目標跟蹤[10],然后進行人臉68個關鍵點檢測。本文利用幾何特征進行表情檢測[11],使用基于Ensemble of Regression Tress(ERT)算法級聯回歸,即基于梯度提高學習的回歸樹方法[12]。該方式檢測速度快,效果也不錯。同時對于不完整的人臉依舊能夠進行檢測。
當獲得一張圖片后,算法會產生一個初始形狀(initial shape)即先預估一個大致的特征點位置,然后采用Gradient Boosting方式減小初始形狀和標注位置(ground truth,真實特征點位置)的偏差平方和(損失函數)。用最小二乘法使偏差最小化,獲取每一級的級聯回歸因子。式(2)描述了偏差平方和,式中yi為預測值,ti為標注值。
(2)
Gradient Boosting算法是在迭代時選擇梯度下降的方向來保障結果最好。損失函數用來表示模型的“靠譜”水平,如果模型未過擬合,損失函數變大,模型的錯誤率增高,如果讓算法能夠使損失函數一直降低,即表明算法模型在不斷地改進,而最佳的方法是損失函數在其梯度方向上下降即Gradient Boosting算法的思想。
面部特征點定位的思想可以理解為學習一個回歸函數F,輸入圖像I,輸出為θ,即特征點的位置,則θ=F(I)。通俗來講,級聯回歸模型能夠統一為學習多個回歸函數{f1,f2,…,fn}:
θ=F(I)=fn(fn-1(…f(θ0,I),I))
(3)
θi=fi(θi-1,I),i=1,…,n
(4)
級聯是指當前函數fi的輸入依賴于上一級函數fi-1的輸出,而每一個fi的學習目標都是逼近特征點的真實位置θ,θ0為初始形狀。回歸當前形狀θi-1與標注位置θi之間的差:Δθi=θi-θi-1。核心公式為
(5)

圖6為算法的回歸過程,ERT是在學習Tree的過程中,直接將形狀(shape)的更新值ΔS存入葉子結點(leaf node),初始位置ΔS在通過所有學習到的Tree后,平均形狀(mean shape)加上所有經過的葉子結點的ΔS,即可得到最終的人臉關鍵點位置,圖7為算法檢測到的關鍵點。

(a)t=0 (b)t=1 (c)t=2 (d)t=3 (e)t=10 (f)Ground truth圖6 算法的回歸過程Fig.6 Regression process of the algorithm

圖7 關鍵點標記Fig.7 Key marks
人臉表情識別在識別表情之前需要檢測到人的面部,然后通過分析人面部五官等特點判別此時目標對象所表達的情緒。這需要建立一個判別依據,即分類器。采集一些正樣本(各種表情的圖像)建立表情庫,然后訓練分類器,給每一種表情狀態貼上標簽,這是分類器的訓練。表情識別過程輸入一幅圖像,分類器來識別判斷這副圖像的類別。
支持向量機(support vector machine,SVM)是二類分類模型方法,支持向量機模型是定義在特征空間上的間隔最大的線性分類器,SVM的學習策略是間隔最大化[13]。SVM最大分類間隔可以簡單理解為存在兩類二維數據,若是把數據畫在二維坐標平面上,可以很簡單用一條線把兩類數據分開。理論上這條線可以有無數種,但是,總有一條能夠滿足靠近這條線的點(正負樣本)與這條線的距離最大時便是最好的選擇,即是SVM算法所求的決策邊界。
一般來講普通的SVM就是用來完美劃分兩類數據的一條線,如圖8所示。這是最完美的一條直線,該條線處于兩類數據的中部且距兩類數據一樣的距離。而這些離分界線最近的點就是支持向量(Support vector),若是分類高維的點,SVM的分界就是平面或者超平面。支持向量機中最核心的是支持向量,在樣本集中定位到某些特定的點作為支持向量,就可以依據這些支持向量計算出分類超平面,然后再依據超平面對類別進行歸類劃分。SVM是一種有監督式的機器學習分類算法,所以對于給定的訓練樣本,要確定每個樣本的歸類是1還是0,即每種樣本都需要標注一個確切的類別標簽,用來SVM訓練。對于樣本的特征及其維度,SVM并沒有限定,本文采用特征點的幾何特征作為訓練對象,提取人臉五官68點特征進行分析與記錄,并使用SVM分類器進行訓練分類識別。

圖8 支持向量機最大分類間隔Fig.8 Maximum classification interval of support vector machines
為了說明結合LBP和SVM表情識別方法的有效性,本文采用CK+數據庫進行實驗評估。CK+數據庫是CK數據庫的擴展庫,是由卡內基梅隆大學建立的一個有生氣、厭煩、恐懼、開心、平常、傷心、驚訝7種表情的表情序列數據庫。實驗隨機選取表情庫中50位測試者的表情序列為訓練集,在剩余的測試者中隨機選取30位測試者的表情序列作為測試集。本文將數據集中的視頻合成為一段大小為640×480,幀率為30的avi格式視頻來模擬攝像頭采集的圖像展示實驗效果。7類表情的識別效果如圖9所示,分別對應平常、開心、厭煩、驚訝、生氣、恐懼和傷心等表情。

(a)平常(b)開心(c)厭煩(d)驚訝(e)生氣(f)恐懼(g)傷心圖9 7類表情的識別效果Fig.9 Recognition effect of 7 kinds of facial expressions
為了比較不同表情識別算法的性能,本文采用文獻[3]、文獻[5]和本文算法統計20次表情識別實驗結果。圖10所示為不同算法7類表情的平均識別率。

圖10 不同算法7類表情的平均識別率Fig.10 Average recognition rate of 7 kinds of facial expressions in different algorithms
不同算法的綜合性能比較見表1。從圖10和表1可以看出,本文算法在保證識別實時性的同時,相對于其他兩種算法平均識別率有了一定提高。
表1 不同算法的綜合性能比較
Tab.1 Comprehensive performance comparison of different algorithms

算法特征分類器平均識別率/%實時性/ms·幀-1文獻[3]LBPKNN-DS83.550~65文獻[5]GaborFLD+KNN84.750~65本文算法LBPSVM86.250~65
本文提出一種計算簡單快速的LBP特征結合SVM進行決策表情分類的方法,實現了人臉表情判別在視頻方面的應用。通過LBP算子檢測人臉,并利用多級級聯回歸樹模型對人臉68個關鍵點進行訓練,提取臉部表情的幾何特征,并依據此特征結合SVM來判別人臉表情,進而完成7種表情的分類。通過實驗表明,本文算法與其他算法相比識別性能有了一定提高,同時保證了表情識別的實時性。但是本文算法還不能實現對姿勢的要求,側面人臉表情還不能得到檢測識別。