崔鳳焦
(北京科技大學(xué) 計(jì)算機(jī)與通信工程學(xué)院,北京 100083)
1970年,研究者開始關(guān)注表情識別并進(jìn)行了相關(guān)研究。GALTON于1888年和1920年在《Nature》上發(fā)表了兩篇論文,主要是表情識別在身份識別方面的應(yīng)用,這是最早關(guān)于表情識別應(yīng)用的文章。1971年,Ekman P和Friesen W N研究了6種基本表情(高興、悲傷、驚訝、恐懼、憤怒、厭惡),并采集上千幅不同人的表情組成了一個(gè)表情庫[1],這是一個(gè)系統(tǒng)的圖像庫。自表情識別的出現(xiàn)到現(xiàn)在已取得了一定的進(jìn)展[2-3],但由于對表情的研究相對復(fù)雜,而且會受到光照、角度等外因的影響,發(fā)展相對比較緩慢。目前,市場上也缺乏較好的應(yīng)用系統(tǒng)。此外,由于現(xiàn)有表情庫都是在特定條件下采集的,使得研究具有一定的局限性。
在已有研究的基礎(chǔ)上,采用卷積神經(jīng)網(wǎng)絡(luò)(convolutional neural network,CNN)、支持向量機(jī)(support vector machine,SVM)和Adaboost三種算法對Cohn-Kanade表情庫進(jìn)行了分類識別,并結(jié)合參數(shù)優(yōu)化、算法結(jié)構(gòu)設(shè)計(jì)、算法融合等對算法進(jìn)行了對比分析,為下一步的研究工作提供基礎(chǔ)和參考。
CNN是對傳統(tǒng)神經(jīng)網(wǎng)絡(luò)的改進(jìn),它引入了卷積和降采樣(pooling)技術(shù)。1988年,Lecun Y等[4]第一次成功訓(xùn)練了多層CNN。2012年,Hinton G E等[5]將CNN應(yīng)用于ImageNet圖像庫,相對之前的研究,其錯(cuò)誤率降低了6%(前五個(gè)由25%的錯(cuò)誤率降為17%)。CNN在手寫字符識別[6]、人臉識別[7]、圖像邊緣檢測[8]、車牌字符識別[9-10]、交通信號識別[11]、身份證號碼識別[12]、人臉表情識別[13]等領(lǐng)域取得了很好的效果[14-15]。
CNN每層的輸出特征圖,是上層特征圖被具有學(xué)習(xí)性的卷積核卷積后通過激勵函數(shù)得到的,如式(1)所示:

(1)
f表示特征圖選擇集合;X表示卷積核;k表示CNN的結(jié)構(gòu)層數(shù);b表示CNN輸出圖各自的偏置量。
網(wǎng)絡(luò)結(jié)構(gòu)的子采樣層中輸出特征圖的數(shù)目和輸入特征圖的數(shù)目一致,但是輸出特征圖較小,子采樣層形如式(2):
(2)
其中,down()為子采樣函數(shù),子采樣實(shí)際上是對輸入圖像進(jìn)行區(qū)域求和的過程,區(qū)域大小為n*n。圖像經(jīng)過采樣處理會在兩個(gè)維度縮小n倍,所以輸出圖像比輸入圖像小。每個(gè)輸出有一個(gè)特定的乘性偏置和加性偏置,b為輸出圖像的加性偏置。
SVM[16-17]是一種模式識別方法,由VAPNIK等在1998年提出,它的實(shí)現(xiàn)目標(biāo)是達(dá)到結(jié)構(gòu)風(fēng)險(xiǎn)最小的同時(shí)為2種及以上的樣本數(shù)據(jù)找到一個(gè)最優(yōu)的分類面。SVM和卷積神經(jīng)網(wǎng)絡(luò)都是學(xué)習(xí)性算法,不同之處在于,SVM采用數(shù)學(xué)上的方法實(shí)現(xiàn),優(yōu)化技術(shù)也是數(shù)學(xué)實(shí)現(xiàn)。
SVM算法做分類,關(guān)鍵要選擇合適的核函數(shù)。為了實(shí)現(xiàn)核函數(shù)的廣泛應(yīng)用,采用松弛系數(shù)(gamma,g)和懲罰系數(shù)(c)來校正。
SVM算法原理如圖1所示。
Adaboost運(yùn)用迭代思想,訓(xùn)練某個(gè)訓(xùn)練集的多個(gè)弱分類器,最終級聯(lián)為一個(gè)強(qiáng)分類器。2001年,Viola P和Jones M[18]使用Adaboost算法對人臉進(jìn)行檢測,首次提出了“積分圖”,并建立了真正意義上的檢測系統(tǒng):Haar分類器=Haar-like特征+積分圖方法+Adaboost +級聯(lián)。算法過程如下:

圖1 SVM算法原理示意圖
(1)對要訓(xùn)練的樣本集進(jìn)行標(biāo)定:(x1,y1),(x2,y2),…,(xL,yL),gj(xi)為第i個(gè)樣本的第j個(gè)Haar-Like特征,xi∈X為訓(xùn)練樣本,yi∈Y=(-1,1)對應(yīng)真假樣本,T為循環(huán)的最大次數(shù);
(2)給權(quán)值設(shè)定默認(rèn)值wi,j=1/2m,1/2n,其中m為正樣本數(shù),n為負(fù)樣本數(shù),樣本總數(shù)L=m+n;
(3)進(jìn)行T輪訓(xùn)練,F(xiàn)ort=1,2,…,T:
(a)所有權(quán)重的樣本進(jìn)行歸一化處理:
(3)

(4)
式(4)可由pj決定,但只可選擇±1兩種情況。
(c)滿足最佳閾值條件下,從已訓(xùn)練好的簡單分類器中找到εj最小的ht;
(4)強(qiáng)分類器為:
(5)
其中,αt=ln(1/βt),它的值與ht(第t輪的分類規(guī)則)的預(yù)測錯(cuò)誤相關(guān),αt是對ht的評價(jià),ht的重要性與αt的大小成正比。
上述算法的迭代過程共循環(huán)T次,每次權(quán)值分布都不相同,由此對正樣本確定一個(gè)新的權(quán)值分布P,在P上得到一個(gè)新的弱分類器。所以,T次循環(huán)共有T個(gè)弱分類器,最后得到的強(qiáng)分類器是訓(xùn)練好的所有弱分類器權(quán)值的平均。
選用的樣本均來自Cohn-Kanade庫,實(shí)驗(yàn)圖片總數(shù)為2 126張,其中包括anger(381張)、disgust(302張)、fear(280張)、happy(312張)、sadness(240張)、surprise(380張)、common(102張)、contempt(129張)8類表情。
從Cohn-Kanade表情庫中取不同測試者的一部分圖片作為樣本集,其中60%作為訓(xùn)練集,40%作為測試集;實(shí)驗(yàn)循環(huán)15次,并取它們的平均值作為最終的實(shí)驗(yàn)結(jié)果。
在進(jìn)行表情識別之前,要先進(jìn)行人臉區(qū)域檢測和歸一化處理,把非面部區(qū)域的部分去掉(例如頭發(fā)),減小非人臉區(qū)域以及人臉角度偏離所造成的不必要的誤差,以提高識別精度,裁剪圖片統(tǒng)一為64*64。
提取人臉數(shù)據(jù),然后進(jìn)行特征提取,提取維度為4 096。采用LBP進(jìn)行全局特征提取,檢測窗口為若干個(gè)16*16的小區(qū)域。對于每個(gè)區(qū)域中的某個(gè)像素點(diǎn)i,將其周圍的8個(gè)像素點(diǎn)進(jìn)行比較,值大于i的計(jì)為1,小于i的計(jì)為0,最后得到8位二進(jìn)制數(shù),即得到i的LBP值;計(jì)算所有小區(qū)域的直方圖,即LBP值的概率,把LBP的統(tǒng)計(jì)直方圖作為表情圖的特征向量,并對直方圖做歸一化。最后,把所有區(qū)域的統(tǒng)計(jì)直方圖合并為一個(gè)特征向量,即人臉的特征,提取的特征為4 096維,然后訓(xùn)練分類器進(jìn)行表情分類。
2.2.1 卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)設(shè)計(jì)
CNN的網(wǎng)絡(luò)結(jié)構(gòu)主要由網(wǎng)絡(luò)層、卷積層、子采樣層和輸出層組成。在進(jìn)行結(jié)構(gòu)設(shè)計(jì)時(shí),網(wǎng)絡(luò)層總數(shù)和每層的神經(jīng)元個(gè)數(shù)都是考慮的主要因素。其中輸出層有8個(gè)(因?yàn)楣?種表情)神經(jīng)元。
識別正確率隨著CNN網(wǎng)絡(luò)層數(shù)的增加而提高,但是層數(shù)越多CNN的結(jié)構(gòu)就會越復(fù)雜,訓(xùn)練權(quán)值參數(shù)的效率就會降低。采用7層卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu),輸入層為64*64的圖像,卷積核的大小為5*5,3個(gè)卷積層C1,C3,C5,2個(gè)子采樣層S2,S4,1個(gè)全連接F6和1個(gè)輸出層。卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)如圖2所示。

圖2 卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)
2.2.2 識別結(jié)果
卷積神經(jīng)網(wǎng)絡(luò)神經(jīng)元輸出的特征圖如圖3所示。

圖3 卷積神經(jīng)網(wǎng)絡(luò)神經(jīng)元輸出特征
CNN的識別結(jié)果如表1所示。
表1 CNN識別結(jié)果

表情訓(xùn)練樣本數(shù)測試樣本數(shù)識別率/%anger22815380.15common614178.90contempt775272.56disgust18112176.81fear16811270.64happy18712569.31sadness1449675.83surprise2288075.14
注:平均識別率為74.92%。
2.3.1 基于SVM的表情識別實(shí)現(xiàn)方案設(shè)計(jì)
SVM算法處理二類問題,而8種表情是多分類問題,所以要采取一定的方法使得SVM可以識別8種表情。采用以下2種分類方式使SVM實(shí)現(xiàn)N分類:一種是1vs(N-1);另一種是1vs1。選擇1vs1的方法,訓(xùn)練N*(N-1)/2個(gè)分類器,判斷某點(diǎn)屬于分類器i還是屬于分類器j。在N類問題中,有N個(gè)一對一的兩類SVM分類器,任意兩類之間都有1個(gè)分類超平面。故8類表情,共構(gòu)造28個(gè)分類超平面。
2.3.2 支持向量機(jī)的參數(shù)設(shè)置
在MATLAB平臺調(diào)用Libsvm-3.20工具箱,選擇SVM的不同c,g參數(shù)進(jìn)行識別調(diào)試,并比較識別結(jié)果,以尋找最優(yōu)參數(shù)。其中,c是懲罰系數(shù),表示對誤差的寬容度,值越高,越不能容忍誤差的出現(xiàn);g是選擇徑向基函數(shù)作為核函數(shù)后,該函數(shù)自帶的一個(gè)參數(shù),隱含地決定了數(shù)據(jù)映射到新的特征空間后的分布。參數(shù)選擇結(jié)果對比,c選為4左右、g為2^(-8)左右時(shí)為最佳參數(shù)選擇。
2.3.3 識別結(jié)果
SVM的識別結(jié)果如表2所示。
表2 SVM識別結(jié)果

表情訓(xùn)練樣本數(shù)測試樣本數(shù)識別率/%anger22815371.45common614165.63contempt775262.24disgust18112173.81fear16811270.14happy18712568.31sadness1449665.89surprise2288065.73
注:平均識別率為67.90%。
2.4.1 Adaboost分類器結(jié)構(gòu)設(shè)計(jì)
采用Adaboost級聯(lián)分類器進(jìn)行面部表情識別時(shí),分別采用3級和5級級聯(lián),并比較識別效果。實(shí)驗(yàn)過程從有兩個(gè)特征的一個(gè)強(qiáng)分類器開始,通過調(diào)整它的閾值達(dá)到最小錯(cuò)誤率,得到相對較好的人臉分類器。
2.4.2 識別結(jié)果
3級和5級級聯(lián)Adaboost分類器識別結(jié)果對比如表3所示。
表3 3級和5級Adaboost識別結(jié)果對比

表情訓(xùn)練樣本數(shù)測試樣本數(shù)3級識別率/%5級識別率/%anger22815363.2765.18common614164.7567.32contempt775268.4368.70disgust18112170.7171.01fear16811269.0570.23happy18712572.3172.89sadness1449669.7971.25surprise2288073.8273.72
注:平均識別率分別為69.02%和70.04%。
由表3可知,5級級聯(lián)分類器的識別率較高。因此,采用5級級聯(lián)Adaboost分類器的識別結(jié)果作為最終的實(shí)驗(yàn)結(jié)果。
通過比較可知,CNN的平均識別率最高,即對Cohn-Kanade表情庫的識別中,CNN是三類算法中識別效果相對較優(yōu)的算法。根據(jù)實(shí)驗(yàn)結(jié)果,針對魯棒性、參數(shù)設(shè)置和處理時(shí)間等對這三類算法進(jìn)行性能比較。
魯棒性:即算法的穩(wěn)定性,在實(shí)驗(yàn)中CNN對圖片畸變的承受能力是最強(qiáng)的,主要因?yàn)镃NN二次抽樣的特點(diǎn)使其具有很好的魯棒性。
參數(shù)設(shè)置:CNN的參數(shù)設(shè)置相對復(fù)雜,參數(shù)的初始值不能太小、權(quán)重參數(shù)以及設(shè)置梯度更新步長等都較復(fù)雜;SVM主要是參數(shù)c,g和核函數(shù)的參數(shù)設(shè)置,以及與對應(yīng)的Libsvm-3.20工具箱參數(shù)的設(shè)置,尋找最優(yōu)c,g,比CNN的參數(shù)設(shè)置相對簡單一些;Adaboost基本不用調(diào)參。
處理時(shí)間:Adaboost的處理速度是最快的,研究表明Adaboost在訓(xùn)練樣本充足時(shí)可適應(yīng)特別復(fù)雜的分類面。
3.1.1 卷積神經(jīng)網(wǎng)絡(luò)
CNN的算法結(jié)構(gòu)比傳統(tǒng)神經(jīng)網(wǎng)絡(luò)的要簡單,最大的特點(diǎn)是權(quán)值共享,減少了計(jì)算時(shí)間,而且CNN處理圖像時(shí)可把原圖直接輸入網(wǎng)絡(luò),特征提取也較簡單,因此會簡化處理,加快處理速度。目前廣泛應(yīng)用于人工智能、模式識別、人機(jī)交互和圖像處理等方面,多分類問題用CNN處理可得到更好的效果。
缺點(diǎn):實(shí)現(xiàn)相對復(fù)雜;網(wǎng)絡(luò)訓(xùn)練時(shí)間較長;用CNN處理數(shù)據(jù),由于考慮其泛化性,需要對處理的樣本進(jìn)行編號,在實(shí)際的研究中,很少有數(shù)據(jù)是有類標(biāo)號的,如果進(jìn)行人工標(biāo)號會大大降低工作效率。
3.1.2 支持向量機(jī)
SVM是基于統(tǒng)計(jì)學(xué)的算法,屬于模式識別方法,主要用于解決分類問題。SVM是把數(shù)據(jù)從低維變換到高維,并轉(zhuǎn)換到線性問題來處理,所以具有較高的效率和精度。
缺點(diǎn):SVM是小樣本的學(xué)習(xí)算法,在處理大量的樣本數(shù)據(jù)時(shí)不能取得很好的效果;SVM本身是解決二類問題的算法,因此應(yīng)用在多分類問題上有一定的局限性。因此,SVM的改進(jìn)方向主要針對多分類問題和大數(shù)據(jù)樣本問題。
3.1.3 Adaboost
Adaboost為迭代算法,具有較高的分類精度。Adaboost級聯(lián)分類器是由幾級弱分類器構(gòu)成,而構(gòu)造弱分類的過程并不復(fù)雜,所以Adaboost分類器的形成也不復(fù)雜,構(gòu)造極其簡單;此外,Adaboost分類器中各級弱分類器都是獨(dú)立的,可以選擇自己的方法進(jìn)行結(jié)構(gòu)組成,由此可得Adaboost算法是為各級級聯(lián)提供框架。Adaboost的另一個(gè)優(yōu)點(diǎn)是沒有過擬合問題。Adaboost同時(shí)也存在一些缺點(diǎn):噪聲會影響其分類結(jié)果;對樣本的訓(xùn)練時(shí)間較長;最終結(jié)果受制于弱分類器的選擇。
根據(jù)各個(gè)算法的上述缺點(diǎn),有針對性地提出三種算法的改進(jìn)方向。
對CNN結(jié)構(gòu)方面的改進(jìn),是直接把圖像輸入網(wǎng)絡(luò)進(jìn)行處理,下一步研究工作把原始數(shù)據(jù)進(jìn)行相應(yīng)的預(yù)處理后再輸入網(wǎng)絡(luò),提高識別精度,減少樣本的訓(xùn)練時(shí)間;CNN各層映射結(jié)果一般是獨(dú)立的,若用PCA或其他算法對CNN各層的映射結(jié)果進(jìn)行降維融合,并作為最后的特征提取結(jié)果,可以提高識別率。
由于SVM在多類問題方面的應(yīng)用有一定的限制,需要找到一定的方法來構(gòu)造解決多類問題的SVM分類器,例如通過1vs1的分類方法來構(gòu)造多類的SVM分類器。在今后的研究中可以采用其他方法,例如與其他算法結(jié)合,獲得較好的分類效果。
Adaboost的改進(jìn)方向主要考慮弱分類器的權(quán)值分配和算法間的結(jié)合,其中需要通過大量的實(shí)驗(yàn)掌握權(quán)值的選擇方法,弱分類器的權(quán)值分配決定了Adaboost分類器的性能。
文中對CNN、SVM和Adaboost三種算法的算法結(jié)構(gòu)進(jìn)行了對比分析和改進(jìn)設(shè)計(jì),以分別實(shí)現(xiàn)對Cohn-Kanade表情庫的識別,并根據(jù)實(shí)驗(yàn)結(jié)果對三種算法的優(yōu)缺點(diǎn)進(jìn)行了對比分析,對表情識別領(lǐng)域的研究與實(shí)際應(yīng)用具有一定的參考價(jià)值。
[1] EKMAN P,FRIESEN W V.Constants across cultures in the face and emotion[J].Journal of Personality and Social Psychology,1971,17(2):124-126.
[2] MEHRABIAN A. Communication without words[J].Psychology Today,1968,2(4):53-56.
[3] 詹永杰,龍 飛,卜軼坤.基于獨(dú)立子空間分析特征學(xué)習(xí)的表情識別[J].系統(tǒng)仿真學(xué)報(bào),2015,27(10):2316-2319.
[4] LECUN Y,BOSER B,DENKER J S,et al.Backpropagation applied to handwritten zip code recognition[J].Neural Computation,1989,1(4):541-551.
[5] KRIZHEVSKY A,SUTSKEVER I,HINTON G E.Imagenet classification with deep convolutional neural networks[C]//Advances in neural information processing systems.[s.l.]:[s.n.],2012:1097-1105.
[6] 高 學(xué),王有旺.基于CNN和隨機(jī)彈性形變的相似手寫漢字識別[J].華南理工大學(xué)學(xué)報(bào):自然科學(xué)版,2014,42(1):72-76.
[7] 劉 洋,季桂樹,王 剛.表情識別中基于軸對稱的人眼定位方法[J].計(jì)算機(jī)技術(shù)與發(fā)展,2008,18(12):47-49.
[8] 葉 波.基于細(xì)胞神經(jīng)網(wǎng)絡(luò)的圖像邊緣檢測研究[D].重慶:重慶大學(xué),2012.
[9] 王李冬.一種新的人臉識別算法[J].計(jì)算機(jī)技術(shù)與發(fā)展,2009,19(5):147-149.
[10] 謝文浩,翟素蘭. 基于加權(quán)稀疏近鄰表示的人臉識別[J].計(jì)算機(jī)技術(shù)與發(fā)展,2016,26(2):22-25.
[11] 陳先昌.基于卷積神經(jīng)網(wǎng)絡(luò)的深度學(xué)習(xí)算法與應(yīng)用研究[D].杭州:浙江工商大學(xué),2013.
[12] 鄭永森.基于卷積神經(jīng)網(wǎng)絡(luò)的身份證號碼識別研究與實(shí)現(xiàn)[J].計(jì)算機(jī)光盤軟件與應(yīng)用,2015,18(3):13-14.
[13] 徐 鵬,薄 華.基于卷積神經(jīng)網(wǎng)絡(luò)的人臉表情識別[J].微型機(jī)與應(yīng)用,2015,34(12):45-47.
[14] 孔 銳,張 冰.光照變化條件下人臉識別方法研究[J].系統(tǒng)仿真學(xué)報(bào),2016,28(3):689-695.
[15] 白小葉,程 勇,曹雪虹.基于光照歸一化分塊自適應(yīng)LTP特征的人臉識別[J].計(jì)算機(jī)技術(shù)與發(fā)展,2016,26(5):56-60.
[16] 祝曙光,胡曉峰,司光亞,等.仿真實(shí)驗(yàn)與SVM相結(jié)合的數(shù)據(jù)分類方法研究[J].系統(tǒng)仿真學(xué)報(bào),2010,22(3):761-764.
[17] 黃永明,章國寶,董 飛,等.基于Gabor、Fisher臉多特征提取及集成SVM的人臉表情識別[J].計(jì)算機(jī)應(yīng)用研究,2011,28(4):1536-1539.
[18] VIOLA P,JONES M.Robust real-time face detection[J].International Journal of Computer Vision,2004,57(2):137-154.