譚論正,丁 銳,夏利民
1(中山職業(yè)技術(shù)學(xué)院,廣東 中山 528400) 2(中山火炬職業(yè)技術(shù)學(xué)院,廣東 中山 528436) 3(中南大學(xué) 信息科學(xué)與工程學(xué)院,長沙 410075)E-mail:tanlunzheng@126.com
人臉表情識(shí)別是計(jì)算機(jī)視覺的重要科研課題,對于推動(dòng)自然和諧的人機(jī)交互以及智能監(jiān)控等方面具有十分重要的意義[1].人臉表情識(shí)別采用機(jī)器和軟件對人臉表情信息進(jìn)行采集及分類,使計(jì)算機(jī)能夠根據(jù)人的表情信息,推斷人的心理狀態(tài).
目前大多數(shù)表情識(shí)別技術(shù)主要專注于識(shí)別7種經(jīng)典表情即:中性,高興,驚訝,恐懼,憤怒,悲傷和厭惡[2].傳統(tǒng)的人臉表情識(shí)別方法都是采用手工設(shè)計(jì)的方法進(jìn)行圖像特征提取.例如通過提取Gabor[3]特征或局部二值特征(LBP)[4]結(jié)合活動(dòng)外觀模型(AAM)[5]進(jìn)行面部動(dòng)作編碼[6]跟蹤特征運(yùn)動(dòng),使用支持向量機(jī)(SVM)[7]、最近鄰算法[8]、PLAS[9]等統(tǒng)計(jì)方法進(jìn)行表情分類.
傳統(tǒng)的表情識(shí)別方法存在以下缺陷:
1)特征選取需要人為手工操作,耗費(fèi)大量時(shí)間且摻雜人為因素,難以滿足實(shí)際需求;
2)特征維度高,識(shí)別算法訓(xùn)練時(shí)間長,效率低;
3)傳統(tǒng)的統(tǒng)計(jì)識(shí)別方法,需大量的標(biāo)注特征樣本來訓(xùn)練概率模型,但在實(shí)際中很難得到足夠多的手工標(biāo)注的表情特征的樣本.因此,傳統(tǒng)表情識(shí)別算法的識(shí)別率不高.
近年來深度學(xué)習(xí)[10,11]作為一種新的機(jī)器學(xué)習(xí)方法,通過卷積神經(jīng)網(wǎng)絡(luò)[12](CNN)自動(dòng)學(xué)習(xí)圖像特征,把低層特征組合起來形成具有良好表示的高層特征,在圖像識(shí)別相關(guān)的任務(wù)中取得了很大成功.
針對傳統(tǒng)表情識(shí)別方法識(shí)別率低、實(shí)時(shí)性差的問題,本文提出了一種基于歸一化正交投影的卷積神經(jīng)網(wǎng)絡(luò)的人臉表情識(shí)別方法.研究CNN對圖像素材的要求,本文對圖像進(jìn)行光照預(yù)處理、姿態(tài)歸一化、尺度歸一化處理;為增加訓(xùn)練圖像的數(shù)量進(jìn)行數(shù)據(jù)增益;為提高機(jī)器訓(xùn)練速度,提出歸一化正交投影方法對圖像進(jìn)行降維,同時(shí)保留全局幾何以及局部鄰域關(guān)系;將預(yù)處理后的人臉圖像輸入到卷積神經(jīng)網(wǎng)絡(luò),在海量人臉表情數(shù)據(jù)庫上訓(xùn)練卷積神經(jīng)網(wǎng)絡(luò)并進(jìn)行監(jiān)督微調(diào).最后在人臉表情數(shù)據(jù)庫中對提出的方法與已有的方法進(jìn)行了對比實(shí)驗(yàn).
由于現(xiàn)實(shí)環(huán)境中低照明度、不均勻照明、低分辨率、遮擋、非正面頭部姿勢、以及運(yùn)動(dòng)模糊等都會(huì)給人臉表情識(shí)別帶來很大困難.因此,先對人臉圖像進(jìn)行預(yù)處理,盡量降低這些不利因素的影響.
采用形態(tài)學(xué)的頂帽和底帽操作進(jìn)行光照處理,減少光照不均對人臉識(shí)別的影響.令f代表灰度圖,B代表結(jié)構(gòu)化單元,形態(tài)學(xué)中的膨脹和腐蝕通過開操作和閉操作,定義如式(1)(2)所示:
f⊕B=maxi,j(f(x-u),y-v)+B(v,u)
(1)
f?B=mini,j(f(x+u),y+v)-B(v,u)
(2)
f(x,y)通過B(u,v)進(jìn)行開和閉運(yùn)算:
f°B=(f?B)⊕B
(3)
f·B=(f⊕B)?B
(4)
開操作和閉操作增強(qiáng)了有利于表情識(shí)別的低頻成分,突出了感興趣的區(qū)域,如眼睛、鼻子和嘴.在此基礎(chǔ)上,采用TT代表Top-hat,BT代表Bottom-hat,TT變換和BT變換如式(5)(6)所示:
TT(x,y)=f(x,y)-f°B(x,y)
(5)
BT(x,y)=f·B(x,y)-f(x,y)
(6)
Top-hat變換適于提取基于暗背景的明亮對象;而Bottom-hat變換則適于提取基于亮背景的暗對象.
通過使用變換操作符,不僅減少了光照和噪聲的影響,而且將圖像的隱含特征塊聚集在一起.增強(qiáng)了圖像對比度,用結(jié)構(gòu)化像素和圖像細(xì)節(jié)代替所選的像素,利于將面部特征與背景分割開來.
使用OpenCV的Viola&Jones人臉檢測器檢測所有面部的正面和輪廓[13],然后采用Intraface[14]庫檢測49個(gè)面部點(diǎn).由Intraface提供的對齊模型的擬合度用于判斷是否假性人臉:任何擬合度低于0.3的區(qū)域都被認(rèn)為是非人臉面部,系統(tǒng)將其丟棄.接著計(jì)算眼睛的4個(gè)點(diǎn)(兩眼的眼角)的水平及垂直位置的平均值得到兩眼的中心,連接兩眼中心得到眼睛中線,通過計(jì)算眼睛中線與水平直線的夾角,進(jìn)行圖像旋轉(zhuǎn)達(dá)到人臉角度校正.
由于卷積神經(jīng)網(wǎng)絡(luò)對尺度的敏感性,我們預(yù)處理還需進(jìn)行人臉圖像的尺度歸一化.根據(jù)人眼距離(e2e:眼睛到眼睛的距離)的比例來定義面部圖像邊框的邊界:側(cè)邊界為 0.62×e2e,上邊界為0.9×e2e,下邊界為1.34×e2e,產(chǎn)生一個(gè)近似方形的邊界框,為面部方框的邊界,然后將截取的人臉圖像進(jìn)行歸一化調(diào)整,將人臉圖像調(diào)整為48×48像素.
為了增加表情圖像的數(shù)量,采用離線和在線兩種不同的數(shù)據(jù)增強(qiáng)的方式來處理訓(xùn)生成圖像.
離線數(shù)據(jù)增強(qiáng)的第一種形式包括采取隨機(jī)擾動(dòng)和變換(平移,翻轉(zhuǎn),縮放,旋轉(zhuǎn))提取隨機(jī)的42×42像素圖像塊.數(shù)據(jù)增強(qiáng)的第二種形式包括改變訓(xùn)練圖像的RGB通道的強(qiáng)度,噪聲添加,以及在眼睛之間添加2維高斯隨機(jī)分布的噪聲.
在線數(shù)據(jù)增強(qiáng),在圖像經(jīng)過歸一化正交投影后進(jìn)入卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行預(yù)測時(shí),對測試數(shù)據(jù)進(jìn)行圖像剪切,水平翻轉(zhuǎn)等操作生成多張類似的測試圖,然后每張測試出圖預(yù)測出的輸出做均值.
采用歸一化正交鄰域保持投影法(ONPP)降低圖像的維數(shù),聚類相同類別的特征數(shù)據(jù),提高卷積神經(jīng)網(wǎng)絡(luò)對海量數(shù)據(jù)的訓(xùn)練和識(shí)別速度.ONPP通過正交基和標(biāo)準(zhǔn)化投影矩陣顯示數(shù)據(jù)映射,投影矩陣將新數(shù)據(jù)點(diǎn)嵌入到低維子空間中,保留了局部鄰域關(guān)系以及全局幾何關(guān)系.
步驟1.采用基于歐幾里德距離的K近鄰來選擇鄰域,X=[x1,x2,…,xN],Nxi代表xi的K近鄰集合.
(7)
(8)
其中Gi是數(shù)據(jù)點(diǎn)xi的k*k維Gram矩陣.
步驟3.尋找投影矩陣VNPP,NPP的目標(biāo)是找到一個(gè)投影矩陣V∈Rmn×d,將數(shù)據(jù)X從mn維子空間映射到d維空間Y中.NPP的成本函數(shù)計(jì)算如下:
(9)
argmintr[VTX(I-W)T(I-W)XTV]=
argmintr[VTXMXTV]
(10)
使用規(guī)范化約束去除投影空間中的任意縮放因子.
YYT=VTXXTV=I
(11)
M=(I-W)T(I-W)
(12)
ONPP優(yōu)化問題的拉格朗日方程,可用正交約束表示:
L(V)=tr[VTXMXTV]-λ(VTXXTV-Id)
(13)
為了求解最優(yōu)投影矩陣V,對式(13)求微分:
(14)
XMXTV=λXXTV
(15)
步驟4.求投影矩陣VONPP,減少維數(shù),通過最小化較低維空間中的重建誤差的平方和,式(11)中矩陣V使得高維度xi可以在較低維度yi上重建:
VTV=Id
(16)
用正交約束求解子空間的正交基,投影矩陣V的ONPP優(yōu)化問題的拉格朗日方程:
L(V)=tr[VTXMXTV]-λ(VTV-Id)
(17)
對上式求微分得到:
XMXTV=λV
(18)
ONPP算法:
輸入:X=[x1,x2,…,xN]
輸出:投影矩陣V
Y=[y1,y2,…,yN]
1.尋找每個(gè)數(shù)據(jù)點(diǎn)的最小鄰域
2.采用式(8)計(jì)算W
3.計(jì)算M=(I-W)T(I-W)
4.計(jì)算V1:XMXTV1=λ1XXTV1
5.fork=2 tod
V(k-1)=[V1,V2,…,Vk-1]
(19)
U(k-1)=[V(k-1)]T[XXT]-1[V(k-1)]
(20)
A=[XXT]-1[V(k-1)][U(k-1)]-1[V(k-1)]T
(21)
迭代至{I-A}[XXT]-1[XMXT]Vk=λkVk
步驟5.X通過矩陣V投影到d維空間Y.
圖1 圖像預(yù)處理效果Fig.1 Effect of image preprocessing
如圖1所示,人臉圖像經(jīng)過以上5種預(yù)處理后的效果.
基本網(wǎng)絡(luò)模型:包括3個(gè)卷積層、3個(gè)降采樣層、2個(gè)全連接層.為提高網(wǎng)絡(luò)的訓(xùn)練速度,我們將所有權(quán)重層的激活函數(shù)(最后一層除外)取為ReLU激活函數(shù),最后一層是多路softmax分類器.
輸入圖像為42*42像素的人臉圖,第一卷積層用5*5的卷積核并輸出32張42*42像素的圖像,步幅為1個(gè)像素,邊界填充pad為2個(gè)像素.第二層為下采樣層,將第一卷積層的輸出作為輸入,采用最大池化下采樣因子3*3的內(nèi)核對其進(jìn)行過濾,步伐為2,輸出為32個(gè)21*21像素圖像.第三層為卷積層內(nèi)核大小為3*3,步伐為1,邊界填充為1,輸出為32個(gè)20*20像素圖像.第四層為下采樣層,采用最大池化下采樣因子3*3的內(nèi)核,步伐為2,輸出為32個(gè)10*10像素圖像.第五為卷積層:內(nèi)核大小為5*5,步伐為1,邊界填充為2,輸出64張10*10像素圖像.第六層為下采樣層,采用最大池化下采樣因子3*3的內(nèi)核,步伐為2,輸出為64個(gè)5*5像素圖像.全連接層1有2048個(gè)神經(jīng)元.全連接層2有1024個(gè)神經(jīng)元,最后的完全連接層的輸出被饋送到7路softmax分類器,其產(chǎn)生7個(gè)類別標(biāo)簽上的分布,然后根據(jù)式:
Y*→X=argYmaxp(Y|X)
(22)
即得到待識(shí)別的人臉表情分類.其中,在訓(xùn)練網(wǎng)絡(luò)時(shí)首先隨機(jī)初始化網(wǎng)絡(luò)參數(shù),然后通過反向傳播算法(BP)優(yōu)化網(wǎng)絡(luò),得到最優(yōu)的參數(shù).本文采用帶權(quán)重衰減的自適應(yīng)梯度下降(Adam W)進(jìn)行參數(shù)訓(xùn)練.假設(shè)隨機(jī)從訓(xùn)練集中提取i個(gè)樣本數(shù)據(jù){x1,x2,…,xi},yi為xi對應(yīng)的標(biāo)簽,首先計(jì)算平均梯度:
(23)
其中ft(·)表示卷積網(wǎng)絡(luò),θ表示網(wǎng)絡(luò)參數(shù),權(quán)重衰減系數(shù)ω.梯度的一階矩估計(jì)和二階矩估計(jì):
mt=β1·mt-1+(1-β1)·gt
(24)
(25)
再計(jì)算網(wǎng)絡(luò)參數(shù)的更新量:
(26)
為了使網(wǎng)絡(luò)具有更高的泛化能力,在網(wǎng)絡(luò)訓(xùn)練完成后,將其在其它數(shù)據(jù)集上進(jìn)行微調(diào),本文采用hinge loss函數(shù)對CNN的全連接層進(jìn)行微調(diào)優(yōu)化:
(27)
圖2 深度卷積神經(jīng)網(wǎng)絡(luò)架構(gòu)Fig.2 Architecture of our CNN
為驗(yàn)證文中算法有效性,我們收集了多個(gè)表情數(shù)據(jù)庫分別是:CAS-PEAL[15]人臉數(shù)據(jù)庫(包含 1040名中國人共 99450幅人臉圖像,并包含姿態(tài)、表情、飾物和光照4種主要變化條件),FER-2013[16](包括7種表情共35886張人臉表情圖片),JAFFEE數(shù)據(jù)庫,Cohn-Kanade Dataset[17](包括CK和CK+,含有近500人,7種表情),AR數(shù)據(jù)庫(包含126人在各種表情、遮擋及光照下4000張人臉圖像),LFW[18]數(shù)據(jù)庫(5749人,13000余張圖像),ORL-faces數(shù)據(jù)庫(包含40人在不同表情、人臉姿勢和遮擋下的4000張圖像),CelebA[19]中有10177個(gè)人,共202,599幅圖像.圖3是部分?jǐn)?shù)據(jù)庫的表情圖像樣例.
圖3 部分?jǐn)?shù)據(jù)庫的表情圖像樣例Fig.3 Some images of partial expression database
由于收集的人臉數(shù)據(jù)庫中有部分?jǐn)?shù)據(jù)庫沒有對表情圖像進(jìn)行分類,我們對這些數(shù)據(jù)庫進(jìn)行整理及表情標(biāo)注,再通過線下數(shù)據(jù)增益得到百萬級(jí)數(shù)量的人臉表情數(shù)據(jù)庫,達(dá)到卷積神經(jīng)網(wǎng)絡(luò)的訓(xùn)練要求.
在4個(gè)常用表情數(shù)據(jù)庫中進(jìn)行識(shí)別實(shí)驗(yàn),測試歸一化正交鄰域保持投影法的維度.首先圖像大小調(diào)整為48×48像素,為避免因隨機(jī)選擇訓(xùn)練集而產(chǎn)生偏差,進(jìn)行了20次迭代,圖4為不同數(shù)據(jù)庫中具有不同維數(shù)(d)的識(shí)別精度,衡量準(zhǔn)確率與運(yùn)算復(fù)雜度,最后本文選擇的ONPP運(yùn)算維數(shù)為d=70.
為了驗(yàn)證本文提出方法的有效性,分別對有無ONPP算法預(yù)處理、數(shù)據(jù)增益、網(wǎng)絡(luò)微調(diào)三個(gè)實(shí)驗(yàn),并與直接采用網(wǎng)絡(luò)分類進(jìn)行對比實(shí)驗(yàn),實(shí)驗(yàn)結(jié)果見圖5.當(dāng)直接利用網(wǎng)絡(luò)在原始數(shù)據(jù)集上進(jìn)行分類,其準(zhǔn)確率為75.5%,無ONPP算法預(yù)處理、數(shù)據(jù)增益、網(wǎng)絡(luò)微調(diào)三個(gè)實(shí)驗(yàn)的準(zhǔn)確度分別為85.3%、86.2%和88.5%.采用歸一化正交鄰域保持投影法(ONPP)能降低圖像的維數(shù),聚類相同類別的特征數(shù)據(jù),使神經(jīng)網(wǎng)絡(luò)能在特征上直接提取,減少非主要特征的干擾,提高識(shí)別準(zhǔn)確度.通過數(shù)據(jù)增益使得卷積神經(jīng)網(wǎng)絡(luò)對海量數(shù)據(jù)進(jìn)行訓(xùn)練,提取更多的表情特征.在其它數(shù)據(jù)集上進(jìn)行網(wǎng)絡(luò)結(jié)構(gòu)的微調(diào),使網(wǎng)絡(luò)具有更高的泛化能力.
圖4 表情識(shí)別準(zhǔn)確度與OPNN尺寸數(shù)量關(guān)系圖Fig.4 Recognition accuracy with varying number of dimensions
經(jīng)ONPP算法預(yù)處理、數(shù)據(jù)增益和訓(xùn)練微調(diào)后,進(jìn)行表情識(shí)別的正確識(shí)別率到達(dá)了92.6%,表1為本文方法在海量表情數(shù)據(jù)庫進(jìn)行7種表情識(shí)別的平均混淆矩陣.可以看出本文的算法區(qū)分“悲傷”“恐懼”表情準(zhǔn)確率低,然而即使對于人類來說,判斷某些細(xì)微情緒有時(shí)也很困難,這意味著我們的CNN模型區(qū)分這種類似的微表情(悲傷和恐懼)方面需要尋找更具表達(dá)性的特征及分類方法,同時(shí)目前的數(shù)據(jù)庫中這兩類圖像數(shù)量相當(dāng)較少,后期工作需要采集并標(biāo)注更多這些種類的表情圖像,以提高機(jī)器此類表情的識(shí)別率.
圖5 不同設(shè)置下的識(shí)別率Fig.5 Recognition accuracy with different methods
表1 文中方法的混淆矩陣Table 1 Confusion matrix of our method
圖6為本文算法與目前流行算法及經(jīng)典算法的對比實(shí)驗(yàn)結(jié)果,訓(xùn)練微調(diào)后進(jìn)行表情識(shí)別的正確識(shí)別率到達(dá)了92.6%,相比其他的方法有所提高.文獻(xiàn)[12]采用Caffe框架進(jìn)行分類,該方法沒有進(jìn)行圖像預(yù)處理,在FER數(shù)據(jù)庫進(jìn)行模型訓(xùn)練,數(shù)據(jù)量不夠大,實(shí)驗(yàn)結(jié)果在“開心”與“驚訝”2種不同類別的樣本分類最優(yōu).文獻(xiàn)[20]采用多任務(wù)級(jí)聯(lián)的卷積神經(jīng)網(wǎng)絡(luò)對比實(shí)驗(yàn)表明該方法對樣本預(yù)處理不夠完善,卷積神經(jīng)網(wǎng)絡(luò)收斂慢訓(xùn)練時(shí)間長,識(shí)別率較低.文獻(xiàn)[21]采用SIFT方法提取特征,再將特征向量組成的特征矩陣輸入到神經(jīng)網(wǎng)絡(luò)中,但該提取會(huì)丟失一部分的表情特征,造成識(shí)別率不高.文獻(xiàn)[22]采用神經(jīng)網(wǎng)絡(luò)與圖像預(yù)處理的方法對表情進(jìn)行識(shí)別,但其采用的訓(xùn)練數(shù)據(jù)集較少,沒有在其它數(shù)據(jù)集上對網(wǎng)絡(luò)進(jìn)行微調(diào),泛化能力較差.
圖6 不同方法的識(shí)別結(jié)果Fig.6 Recognition results of different methods
最后,我們對本文方法的計(jì)算復(fù)雜度在Cohn-Kanade Dataset數(shù)據(jù)庫上進(jìn)行測試,5種方法分別在數(shù)據(jù)庫中計(jì)算平均時(shí)間.由圖7可以看出,文獻(xiàn)[20]的分類時(shí)間最長,因?yàn)樵摲椒ㄖ胁捎萌齻€(gè)網(wǎng)絡(luò)級(jí)聯(lián)的方式,該方法花費(fèi)的時(shí)間較多.文獻(xiàn)[21]在提取SIFT點(diǎn)特征時(shí)需要消耗一些時(shí)間.文獻(xiàn)[22]與本文方法相似,首先都對圖像進(jìn)行預(yù)處理,再將處理后的圖片傳送到網(wǎng)絡(luò)中進(jìn)行分類,并且網(wǎng)絡(luò)結(jié)構(gòu)相比文獻(xiàn)[20]較為簡單,所以花費(fèi)的時(shí)間基本一致.文獻(xiàn)[12]由于分類前未對圖片進(jìn)行預(yù)處理,所以花費(fèi)的時(shí)間較小.所以本文方法在檢測時(shí)間上優(yōu)于大部分的方法.圖8為不同方法訓(xùn)練時(shí)的損失曲線文獻(xiàn)[12]由于網(wǎng)絡(luò)簡單和圖片未預(yù)處理,所以訓(xùn)練時(shí)收斂速度快,但損失比較大.文獻(xiàn)[20]網(wǎng)絡(luò)復(fù)雜所以在訓(xùn)練時(shí)收斂速度較慢.文獻(xiàn)[21,22]和本文網(wǎng)絡(luò)結(jié)構(gòu)相似,所以在收斂速度上相似.
圖7 不同方法的計(jì)算復(fù)雜度Fig.7 Computational complexity ofdifferent methods
圖8 不同方法訓(xùn)練時(shí)的損失曲線Fig.8 Loss curves of different methods
本文提出了一種基于歸一化正交鄰域保持投影法的卷積神經(jīng)網(wǎng)絡(luò)的人臉表情識(shí)別方法.由于CNN對圖像素材的要求,對圖像進(jìn)行一系列的預(yù)處理:光照預(yù)處理、姿態(tài)歸一化、尺度歸一化等.為了降低特征維數(shù),提高機(jī)器識(shí)別準(zhǔn)確率,提出歸一化正交鄰域保持投影方法,在大幅降低維數(shù),同時(shí)保留了局部鄰域關(guān)系以及全局幾何關(guān)系;然后對歸一化正交鄰域保持投影的圖像進(jìn)行在線增益輸入到卷積神經(jīng)網(wǎng)絡(luò),并在海量人臉表情數(shù)據(jù)庫上訓(xùn)練并監(jiān)督微調(diào)卷積神經(jīng)網(wǎng)絡(luò)以提高分類速度和準(zhǔn)確率.最后在表情數(shù)據(jù)庫上對本文提出的方法與已有的方法進(jìn)行了對比實(shí)驗(yàn),結(jié)果表明該方法具有較強(qiáng)的穩(wěn)定性.