張俞晴 何 寧 魏潤辰
1(北京聯(lián)合大學(xué)北京市信息服務(wù)工程重點實驗室 北京 100101)2(北京聯(lián)合大學(xué)智慧城市學(xué)院 北京 100101)
表情中包含著豐富的感情信息,是人類交流的非語言形式。人臉表情識別技術(shù)是實現(xiàn)人工智能與人機(jī)交互的基礎(chǔ),也是情感計算的關(guān)鍵技術(shù),其涉及機(jī)器視覺、圖像處理、模式識別等多個領(lǐng)域,在虛擬現(xiàn)實、身份認(rèn)證等領(lǐng)域有著廣泛的應(yīng)用前景。
人臉表情識別技術(shù)由人臉檢測、特征提取及表情分類三個部分組成。其中特征提取是最重要、最困難的部分,特征的有效性將直接影響表情識別的準(zhǔn)確率和性能。表情識別的關(guān)鍵問題是如何提取出有利于識別的特征[1-3]。表情識別的研究一般分為基于靜態(tài)的表情識別和基于動態(tài)的表情識別兩類?;陟o態(tài)的表情識別方法僅提取輸入圖像的空間特征,不包含圖像的時序特征;而基于動態(tài)的表情識別方法則從序列圖像中提取表情的時間特征用以表情識別。常用的空間特征提取方法有Gabor小波變換[4-5]、局部二值模式(local binary patterns,LBP)[6-8]、尺度不變特征變換(Scale Invariant Feature Transform, SIFT)以及方向梯度直方圖(Histograms of Oriented Gradients, HOG)[9]。SIFT算法在表情識別上取得了不錯的成績。劉洋等[10]采用傳統(tǒng)的SIFT特征提取方式,對每幅表情圖像的特征進(jìn)行匹配,文中所采用的閾值為0.3時的匹配效果最佳。SIFT特征有效地提取出面部表情的獨特特征,克服人臉間的相似性,該方法在JAFFE數(shù)據(jù)集上的識別率為95%。文獻(xiàn)[11]先定位出48個與表情相關(guān)的特征點,并提取每個特征點的SIFT特征,每個特征點選用相鄰的梯度直方圖作為SIFT特征的描述符,最終融合局部和整體類別的兩級SVM進(jìn)行分類,該方法在JAFFE數(shù)據(jù)集上的識別率達(dá)到94.2%。文獻(xiàn)[12]提出了一種解決非正面人臉表情識別的方法,將人臉圖像提取出的SIFT特征送到深度神經(jīng)網(wǎng)絡(luò)中學(xué)習(xí)出一組最優(yōu)的辨別特征向量,利用這些特征向量對表情進(jìn)行分類?;顒油庥^模型[13]、光流法[14]等也常用于提取動態(tài)圖片的特征。視覺詞袋模型對提取的圖像特征作相應(yīng)處理獲得視覺詞典已廣泛地應(yīng)用于圖像分類與圖像檢索等領(lǐng)域,文獻(xiàn)[15]將詞袋模型結(jié)合上下文語義環(huán)境進(jìn)行圖像分類。
基于深度學(xué)習(xí)的相關(guān)方法在近幾年已經(jīng)成功用于人臉相關(guān)的領(lǐng)域中?;谏疃葘W(xué)習(xí)的算法與傳統(tǒng)的淺層學(xué)習(xí)算法的區(qū)別在于能夠自主地從樣本數(shù)據(jù)中學(xué)習(xí)特征。卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Networks, CNN)、堆疊式自動編碼器(Stacked Auto-encoder, SAE)、深度置信網(wǎng)絡(luò)(Deep Belief Networks, DBNs)等是深度學(xué)習(xí)模型中比較經(jīng)典的網(wǎng)絡(luò)。深度卷積神經(jīng)網(wǎng)絡(luò)[16-18]的端到端學(xué)習(xí)方法被認(rèn)為在分類和模式識別中能夠自動發(fā)現(xiàn)最佳圖像特征。CNN的局部權(quán)值共享特殊結(jié)構(gòu)降低了網(wǎng)絡(luò)的復(fù)雜性,同時提高了特征提取和分類的性能,使得CNN在語音識別和圖像處理方面占據(jù)著一定的優(yōu)勢。CNN可以直接輸入圖像的像素值,自主學(xué)習(xí)訓(xùn)練樣本,同時完成特征提取和分類的任務(wù),并且直接通過網(wǎng)絡(luò)給出識別結(jié)果。
近幾年,CNN已大量用于人臉表情識別,Li等[19]提出了一個遞歸框架來識別真實場景中圖像的面部表情。該框架通過微調(diào)AlexNet,不改變網(wǎng)絡(luò)的前四層卷積層,采用CIFE數(shù)據(jù)集更新第五層卷積層及第一層全連接層,將第二層的全連接數(shù)改為2 048,第三層全連接層的數(shù)為7。同時采用VGG網(wǎng)絡(luò)中的第二到四層卷積層代替AlexNet中的每個卷積層,微調(diào)后的網(wǎng)絡(luò)對CIFE及GaMo兩個數(shù)據(jù)集的識別率分別為85%及83%。這個遞歸網(wǎng)絡(luò)可以幫助構(gòu)建更好的面部表情模型來處理真實場景面部表情任務(wù)。Sun等[20]設(shè)計的網(wǎng)絡(luò)結(jié)構(gòu)在池化層與全連接層加入了嵌入式注意力模型。該網(wǎng)絡(luò)通過卷積層提取面部的局部卷積特征,嵌入式注意力模型將根據(jù)這些局部特征自動確定感興趣的區(qū)域,利用這些區(qū)域的特征進(jìn)行識別,該方法在RaFD-FRONT數(shù)據(jù)集上的識別率有95%左右。文獻(xiàn)[21-22]將卷積神經(jīng)網(wǎng)絡(luò)分別與特定的圖像預(yù)處理步驟和遺傳算法(GA)相結(jié)合來進(jìn)行表情識別。Zhang等[23]將局部人臉補(bǔ)丁和多尺度全局圖像的框架用于表情識別,明顯提高了識別的性能。結(jié)合表情序列的識別方法能夠增大表情的識別率,雖然CNN能夠有效地提取表情的空間特征,但提取圖像序列的時間特征效果欠佳。為了提高表情的識別率,常將CNN提取的空間特征與其他方法提取的時間特征進(jìn)行融合。Kim等[24]通過CNN學(xué)習(xí)代表性表達(dá)狀態(tài)幀的空間圖像特征,再將空間特征表示的時間特征通過長時間的面部表情記憶來學(xué)習(xí),提高識別率,該網(wǎng)絡(luò)在MMI數(shù)據(jù)集上的識別率有78.61%。
本文提出的融合CNN和SIFT特征的表情識別方法,主要用于靜態(tài)表情圖像的識別,采用CNN提取圖像的全局特征,圖像的局部特征則是采用詞袋模型對圖像提取的SIFT特征作進(jìn)一步處理得到。在卷積神經(jīng)網(wǎng)絡(luò)中的全連接層之后對兩種特征進(jìn)行融合,從而提高對表情的識別率。
本文首先對數(shù)據(jù)集中的圖像進(jìn)行預(yù)處理,去除與表情不相關(guān)的背景等信息,得到有利于識別的規(guī)范表情圖像;然后提取CNN全連接層的特征作為全局特征以及采用視覺詞袋模型對圖像的SIFT特征作進(jìn)一步處理得到的特征向量作為局部特征;最終將提取出的兩組特征進(jìn)行融合,在Softmax層將融合后的特征進(jìn)行分類。本文方法的算法流程如圖1所示。

圖1 SIFT-CNN表情識別算法流程圖
人臉五官附近聚集了大量的表情信息,但一般表情圖像還中包括了背景、頭發(fā)、配飾等與表情無關(guān)的信息,這些信息會降低分類的準(zhǔn)確率[25]。本文根據(jù)人臉的特征對表情圖像進(jìn)行手動裁剪,額頭與下巴也包含了大量的表情信息,因此我們將此部分保留,去除與表情無關(guān)的信息,再對圖像進(jìn)行尺寸歸一化處理,歸一化后的圖片大小為48×48。圖2展示了部分圖像預(yù)處理前后的圖片。

圖2 CK+數(shù)據(jù)集部分預(yù)處理圖像
卷積神經(jīng)網(wǎng)絡(luò)(CNN)在1998年由Lecun等[26]提出,其在人臉識別、人臉檢測、行人檢測、目標(biāo)分類等應(yīng)用中非常有效。
CNN的基本網(wǎng)絡(luò)結(jié)構(gòu)由輸入層以及若干個卷積層、池化層、全連接層組成。在卷積層與池化層中提取圖像的特征。淺層卷積層常用于提取圖像邊緣、線條等低級特征,更深層次的圖像特征則在深層卷積層中提取。池化層采用下采樣的方法對卷積層提取出的特征進(jìn)行壓縮得到新的、維度較小的特征。CNN為了減少網(wǎng)絡(luò)訓(xùn)練的參數(shù)個數(shù),常采用局部感受野和權(quán)值共享這兩種方法,卷積層與池化層中的每個神經(jīng)元的輸入與前一層的局部接受域相連,特征提取層中每個神經(jīng)元只對特征面的局部區(qū)域進(jìn)行感知,提取圖像的局部特征。全連接層則把前兩層提取出的所有局部特征綜合起來得到全局特征,CNN是一種有效提取全局特征的方法。
本文的CNN結(jié)構(gòu)如圖3所示,包含3個卷積層,每個卷基層之后接一個池化層、 1個全連接層和1個Softmax層。網(wǎng)絡(luò)采用48×48的灰度圖像作為輸入圖像,卷積層采用大小為5×5的卷積核,池化層采用的是2×2最大值采樣。第一層卷積層采用10個卷積核與輸入圖像進(jìn)行卷積運算,第二層卷積層采用20個卷積核對第一層池化層的輸出進(jìn)行卷積運算,第三層卷積層采用40個卷積核與第二層池化層的輸出進(jìn)行卷積運算,全連接層中神經(jīng)元的個數(shù)為100,表情分類在Softmax層中進(jìn)行。

圖3 CNN結(jié)構(gòu)圖
一般地,卷積層的計算公式為:
(1)

f(x)=max(0,x)
(2)
本文采用的池化方法是2×2最大值下采樣(Max-Pooling),池化層通過對上一層特征圖的局部區(qū)域取最大值來壓縮特征圖,對特征圖中主要特征進(jìn)行提取的同時降低網(wǎng)絡(luò)計算復(fù)雜度,圖4是2×2的Max-Pooling。

圖4 2×2的最大值下采樣
傳統(tǒng)的隨機(jī)梯度下降算法與本文采用的Adam算法相比,前者保持單一的學(xué)習(xí)率更新所有的權(quán)重,學(xué)習(xí)率在整個訓(xùn)練過程中始終保持不變;后者則利用梯度的一階矩估計和二階矩估計為不同的參數(shù)設(shè)計相應(yīng)獨立的自適應(yīng)性學(xué)習(xí)率。
SIFT特征是Lowe[27]在2004年提出的,SIFT特征對視角、仿射變化及噪聲保持著一定的穩(wěn)定性,同時在旋轉(zhuǎn)、尺度縮放、亮度變化方面具有良好的不變性,SIFT的這些特性讓其成為一種十分穩(wěn)定的局部特征。本文提取表情圖像的SIFT特征作為局部特征,SIFT特征提取的步驟一般包括:1) 尺度空間極值檢測;2) 關(guān)鍵點精確定位;3) 關(guān)鍵點方向確定;4) 關(guān)鍵點描述。
1.3.1尺度空間極值檢測
在高斯尺度空間中進(jìn)行極值點的初步檢測,高斯尺度空間則通過高斯函數(shù)與原圖像進(jìn)行卷積得到:
L(x,y,σ)=G(x,y,σ)×I(x,y)
(3)
式中:σ為尺度空間因子;G(x,y,σ)為高斯核函數(shù)。σ的值越大圖像越模糊,對應(yīng)的尺度也越大。
對圖像進(jìn)行不同尺度的高斯模糊后進(jìn)行隔點采樣構(gòu)建高斯金字塔,金字塔中每組相鄰兩層圖像相減便可以得到高斯差分(Difference of Gaussian, DoG)金字塔。使用DoG金字塔來檢測尺度空間中的極值點,DoG定義為:
D(x,y,σ)=[G(x,y,kσ)-G(x,y,σ)]×I(x,y)=
L(x,y,kσ)-L(x,y,σ)
(4)
式中:k為兩個相鄰尺度空間的比例因子。
在DoG金字塔同一組內(nèi),像素點大于(或者小于)相鄰兩層圖像之間共26個像素點,該點就是初步得到的極值點。
1.3.2關(guān)鍵點精確定位
在尺度空間中初步檢測到的極值點是離散的,更精確的關(guān)鍵點的位置和尺度通過擬合三維二次函數(shù)得到,在尺度空間中高斯差分函數(shù)的泰勒展開式為:
(5)
對式(5)求導(dǎo)確定極值點,舍棄絕對值小于0.03的極值點。為了增強(qiáng)關(guān)鍵點的穩(wěn)定性及抗噪性能,采用二維Hessian去除對比度較低的關(guān)鍵點以及不穩(wěn)定的邊緣影響點。
1.3.3關(guān)鍵點方向確定
通過計算關(guān)鍵點領(lǐng)域像素的梯度的模值和方向為每個關(guān)鍵點分配一個基準(zhǔn)方向,使描述符具有旋轉(zhuǎn)不變性,梯度的模值和方向如下:
m(x,y)=
(6)
(7)
1.3.4關(guān)鍵點描述
每個關(guān)鍵點用一組向量來描述,描述符包含位置、尺度和方向三個信息,在關(guān)鍵點尺度空間4×4的區(qū)域內(nèi),區(qū)域內(nèi)的每個字塊中計算8個方向的梯度信息,用最終形成的128維向量來表征描述子,如圖5所示。

圖5 SIFT 128維特征向量
不同表情提取出來的SIFT特征的關(guān)鍵點的方向不一樣,有助于表情的分類。圖6是從人臉圖像中提取出的SIFT特征向量,箭頭代表SIFT特征點的方向,長度代表SIFT特征點的大小??梢钥闯觯琒IFT特征大量集中在眼睛、鼻子及嘴巴附近,這些特征點將有利于表情的識別。

圖6 人臉圖像的SIFT特征向量
1.3.5視覺詞袋模型
每幅圖像提取出的SIFT特征數(shù)不一致,將影響表情的匹配,從而影響表情的識別率。因此本文將采用視覺詞袋模型對提取出的SIFT特征作進(jìn)一步處理。將每一幅圖像的SIFT特征統(tǒng)計為視覺單詞頻數(shù)直方圖,每幅圖像所提取出的特征直方圖包含相同的視覺單詞,不同的表情的單詞詞頻不同,將有利于表情的識別。
本文采用視覺詞袋模型主要包括以下幾個步驟:1) 對提取出的所有圖像的SIFT特征通過K-means聚類的方法聚出k類(即k個單詞),將這些類作為字典;2) 對每一幅圖像統(tǒng)計字典中每個單詞在圖像中出現(xiàn)的次數(shù);3) 用一個k維數(shù)值向量表示相應(yīng)的圖像。本文采用的視覺詞袋模型步驟如圖7所示。

圖7 視覺詞袋模型步驟
圖像的SIFT特征表述的是圖像的底層特征,底層特征缺乏空間集合信息及對圖像高層語義的描述。CNN全連接層提取的特征對圖像局部細(xì)節(jié)的描述欠佳,同時SIFT特征的幾何不變性優(yōu)于CNN提取的特征,SIFT與CNN的特征可以改進(jìn)相互之間的缺點。本文將CNN全連接層的輸出特征fc與視覺詞袋模型得到的特征向量fs進(jìn)行歸一化處理,兩組特征歸一化之后串聯(lián)連接在一起得到融合后的特征向量,表示為:
f=(fc,fs)
(8)
融合SIFT特征與CNN可以有效提高描述符的幾何不變性,增強(qiáng)特征的區(qū)分力與抗噪性能,提高表情識別率。
本文對公開的The Extended Cohn-Kanade(CK+)數(shù)據(jù)集以及FER2013數(shù)據(jù)集進(jìn)行人臉識別驗證。
CK+數(shù)據(jù)集由123個人拍攝而成,一共包含593個圖像序列,其中有327個序列帶有表情標(biāo)簽,此數(shù)據(jù)集是表情識別中常用的一個數(shù)據(jù)集。本文選用了共計1 356幅表情圖像,包含憤怒(179幅)、厭惡(275幅)、恐懼(96幅)、高興(352幅)、悲傷(106幅)、驚訝(348幅)。本文實驗中的訓(xùn)練集選用其中的1 256幅峰值圖像,測試集則選用其中的100幅表情圖像。
FER2013數(shù)據(jù)集包含中性、憤怒、厭惡、恐懼、高興、委屈、驚訝7種表情共35 000多幅表情圖像,本文對此數(shù)據(jù)集中除去中性剩余的6種表情進(jìn)行測驗,本文選用28 000幅圖像作為訓(xùn)練集,3 000幅圖像作為測試集。
本文采用識別率作為表情識別性能的定量評價指標(biāo),定義為:
(9)
訓(xùn)練過程中,輸入圖像的大小為48×48,采用步長為1、大小為5×5的卷積核進(jìn)行卷積計算,不僅減小了參數(shù)數(shù)量,還可以保留圖像或特征圖的尺寸空間,提升了整個網(wǎng)絡(luò)的準(zhǔn)確率。本文采用dropout策略避免模型出現(xiàn)過擬合,dropout是很簡單的正則化技術(shù),以一定的概率將隱層神經(jīng)元的輸入、輸出設(shè)置為0,被選中的神經(jīng)元不參加前向傳播及誤差的反向傳播,訓(xùn)練時,設(shè)置dropout為0.5。Batch_size是CNN訓(xùn)練時的重要參數(shù),適當(dāng)范圍內(nèi)的Batch_size較大使得下降方向越準(zhǔn)確,震蕩越小。Batch_size過大,會出現(xiàn)局部最優(yōu)的情況;Batch_size過小,產(chǎn)生的隨機(jī)性更大,導(dǎo)致收斂困難。故將Batch_size設(shè)置為30。
本文方法在CK+和FER2013兩個數(shù)據(jù)集上進(jìn)行了測驗,為了驗證本文方法在表情識別上的有效性,在CK+數(shù)據(jù)集上的實驗與SIFT、CNN、MSR等的表情識別算法進(jìn)行了比較,在FER2013數(shù)據(jù)集上的實驗與CNN和DNN的表情識別算法進(jìn)行了比較。表1、表2分別列出了在CK+和FER2013兩個數(shù)據(jù)集上不同方法的識別率比較。本文方法在兩個數(shù)據(jù)集上的識別率高于其他幾種方法,驗證了本文方法在識別表情上的可行性。

表1 不同方法在CK+數(shù)據(jù)集上識別結(jié)果比較

表2 不同方法在FER2013數(shù)據(jù)集上識別結(jié)果比較
本文方法在兩個數(shù)據(jù)集上的混淆矩陣如表3、表4所示。從表3中可以看出,本文的方法在CK+數(shù)據(jù)集上對憤怒、開心、驚訝這三種表情的識別結(jié)果很好,在厭惡、恐懼、沮喪這三種表情的識別結(jié)果比較欠缺,原因是這三種表情具有一定的相似性,對區(qū)分不同表情的特征在提取時增加了一定的難度。

表3 CK+數(shù)據(jù)集的混淆矩陣

表4 FER2013數(shù)據(jù)集的混淆矩陣
從表4中可以看出,本文的方法在FER2013數(shù)據(jù)集上對憤怒和開心這兩種表情的識別結(jié)果很好,在厭惡、恐懼、沮喪和驚訝這三種表情的識別結(jié)果比較欠缺,原因是FER2013數(shù)據(jù)集中數(shù)據(jù)樣本質(zhì)量不如CK+數(shù)據(jù)集,對區(qū)分不同表情的特征在提取時增加了一定的難度。
本文針對靜態(tài)表情圖像提出了一種融合SIFT特征與CNN的方法,與其他幾種方法相比,本文在特征提取方面具有重要改進(jìn)。采用CNN全連接層的特征作為全局特征用以描述表情的整體差異,同時采用視覺詞袋模型對圖像提取出的SIFT特征作進(jìn)一步處理。將得到的特征向量作為局部特征來描述表情的細(xì)節(jié)差異,通過融合兩組特征來增加表情特征的穩(wěn)定性,以此提高表情的識別率。實驗結(jié)果表明,本文方法在FER2013和 CK+兩個數(shù)據(jù)集上的識別率有所提高。未來將結(jié)合表情序列圖像的時間特征,進(jìn)一步提高表情的識別率。