崔鳳焦
(北京科技大學 計算機與通信工程學院,北京 100083)
1970年,研究者開始關(guān)注表情識別并進行了相關(guān)研究。GALTON于1888年和1920年在《Nature》上發(fā)表了兩篇論文,主要是表情識別在身份識別方面的應(yīng)用,這是最早關(guān)于表情識別應(yīng)用的文章。1971年,Ekman P和Friesen W N研究了6種基本表情(高興、悲傷、驚訝、恐懼、憤怒、厭惡),并采集上千幅不同人的表情組成了一個表情庫[1],這是一個系統(tǒng)的圖像庫。自表情識別的出現(xiàn)到現(xiàn)在已取得了一定的進展[2-3],但由于對表情的研究相對復雜,而且會受到光照、角度等外因的影響,發(fā)展相對比較緩慢。目前,市場上也缺乏較好的應(yīng)用系統(tǒng)。此外,由于現(xiàn)有表情庫都是在特定條件下采集的,使得研究具有一定的局限性。
在已有研究的基礎(chǔ)上,采用卷積神經(jīng)網(wǎng)絡(luò)(convolutional neural network,CNN)、支持向量機(support vector machine,SVM)和Adaboost三種算法對Cohn-Kanade表情庫進行了分類識別,并結(jié)合參數(shù)優(yōu)化、算法結(jié)構(gòu)設(shè)計、算法融合等對算法進行了對比分析,為下一步的研究工作提供基礎(chǔ)和參考。
CNN是對傳統(tǒng)神經(jīng)網(wǎng)絡(luò)的改進,它引入了卷積和降采樣(pooling)技術(shù)。1988年,Lecun Y等[4]第一次成功訓練了多層CNN。2012年,Hinton G E等[5]將CNN應(yīng)用于ImageNet圖像庫,相對之前的研究,其錯誤率降低了6%(前五個由25%的錯誤率降為17%)。CNN在手寫字符識別[6]、人臉識別[7]、圖像邊緣檢測[8]、車牌字符識別[9-10]、交通信號識別[11]、身份證號碼識別[12]、人臉表情識別[13]等領(lǐng)域取得了很好的效果[14-15]。
CNN每層的輸出特征圖,是上層特征圖被具有學習性的卷積核卷積后通過激勵函數(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ù),子采樣實際上是對輸入圖像進行區(qū)域求和的過程,區(qū)域大小為n*n。圖像經(jīng)過采樣處理會在兩個維度縮小n倍,所以輸出圖像比輸入圖像小。每個輸出有一個特定的乘性偏置和加性偏置,b為輸出圖像的加性偏置。
SVM[16-17]是一種模式識別方法,由VAPNIK等在1998年提出,它的實現(xiàn)目標是達到結(jié)構(gòu)風險最小的同時為2種及以上的樣本數(shù)據(jù)找到一個最優(yōu)的分類面。SVM和卷積神經(jīng)網(wǎng)絡(luò)都是學習性算法,不同之處在于,SVM采用數(shù)學上的方法實現(xiàn),優(yōu)化技術(shù)也是數(shù)學實現(xiàn)。
SVM算法做分類,關(guān)鍵要選擇合適的核函數(shù)。為了實現(xiàn)核函數(shù)的廣泛應(yīng)用,采用松弛系數(shù)(gamma,g)和懲罰系數(shù)(c)來校正。
SVM算法原理如圖1所示。
Adaboost運用迭代思想,訓練某個訓練集的多個弱分類器,最終級聯(lián)為一個強分類器。2001年,Viola P和Jones M[18]使用Adaboost算法對人臉進行檢測,首次提出了“積分圖”,并建立了真正意義上的檢測系統(tǒng):Haar分類器=Haar-like特征+積分圖方法+Adaboost +級聯(lián)。算法過程如下:
圖1 SVM算法原理示意圖
(1)對要訓練的樣本集進行標定:(x1,y1),(x2,y2),…,(xL,yL),gj(xi)為第i個樣本的第j個Haar-Like特征,xi∈X為訓練樣本,yi∈Y=(-1,1)對應(yīng)真假樣本,T為循環(huán)的最大次數(shù);
(2)給權(quán)值設(shè)定默認值wi,j=1/2m,1/2n,其中m為正樣本數(shù),n為負樣本數(shù),樣本總數(shù)L=m+n;
(3)進行T輪訓練,F(xiàn)ort=1,2,…,T:
(a)所有權(quán)重的樣本進行歸一化處理:
(3)
(4)
式(4)可由pj決定,但只可選擇±1兩種情況。
(c)滿足最佳閾值條件下,從已訓練好的簡單分類器中找到εj最小的ht;
(4)強分類器為:
(5)
其中,αt=ln(1/βt),它的值與ht(第t輪的分類規(guī)則)的預測錯誤相關(guān),αt是對ht的評價,ht的重要性與αt的大小成正比。
上述算法的迭代過程共循環(huán)T次,每次權(quán)值分布都不相同,由此對正樣本確定一個新的權(quán)值分布P,在P上得到一個新的弱分類器。所以,T次循環(huán)共有T個弱分類器,最后得到的強分類器是訓練好的所有弱分類器權(quán)值的平均。
選用的樣本均來自Cohn-Kanade庫,實驗圖片總數(shù)為2 126張,其中包括anger(381張)、disgust(302張)、fear(280張)、happy(312張)、sadness(240張)、surprise(380張)、common(102張)、contempt(129張)8類表情。
從Cohn-Kanade表情庫中取不同測試者的一部分圖片作為樣本集,其中60%作為訓練集,40%作為測試集;實驗循環(huán)15次,并取它們的平均值作為最終的實驗結(jié)果。
在進行表情識別之前,要先進行人臉區(qū)域檢測和歸一化處理,把非面部區(qū)域的部分去掉(例如頭發(fā)),減小非人臉區(qū)域以及人臉角度偏離所造成的不必要的誤差,以提高識別精度,裁剪圖片統(tǒng)一為64*64。
提取人臉數(shù)據(jù),然后進行特征提取,提取維度為4 096。采用LBP進行全局特征提取,檢測窗口為若干個16*16的小區(qū)域。對于每個區(qū)域中的某個像素點i,將其周圍的8個像素點進行比較,值大于i的計為1,小于i的計為0,最后得到8位二進制數(shù),即得到i的LBP值;計算所有小區(qū)域的直方圖,即LBP值的概率,把LBP的統(tǒng)計直方圖作為表情圖的特征向量,并對直方圖做歸一化。最后,把所有區(qū)域的統(tǒng)計直方圖合并為一個特征向量,即人臉的特征,提取的特征為4 096維,然后訓練分類器進行表情分類。
2.2.1 卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)設(shè)計
CNN的網(wǎng)絡(luò)結(jié)構(gòu)主要由網(wǎng)絡(luò)層、卷積層、子采樣層和輸出層組成。在進行結(jié)構(gòu)設(shè)計時,網(wǎng)絡(luò)層總數(shù)和每層的神經(jīng)元個數(shù)都是考慮的主要因素。其中輸出層有8個(因為共8種表情)神經(jīng)元。
識別正確率隨著CNN網(wǎng)絡(luò)層數(shù)的增加而提高,但是層數(shù)越多CNN的結(jié)構(gòu)就會越復雜,訓練權(quán)值參數(shù)的效率就會降低。采用7層卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu),輸入層為64*64的圖像,卷積核的大小為5*5,3個卷積層C1,C3,C5,2個子采樣層S2,S4,1個全連接F6和1個輸出層。卷積神經(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é)果
表情訓練樣本數(shù)測試樣本數(shù)識別率/%anger22815380.15common614178.90contempt775272.56disgust18112176.81fear16811270.64happy18712569.31sadness1449675.83surprise2288075.14
注:平均識別率為74.92%。
2.3.1 基于SVM的表情識別實現(xiàn)方案設(shè)計
SVM算法處理二類問題,而8種表情是多分類問題,所以要采取一定的方法使得SVM可以識別8種表情。采用以下2種分類方式使SVM實現(xiàn)N分類:一種是1vs(N-1);另一種是1vs1。選擇1vs1的方法,訓練N*(N-1)/2個分類器,判斷某點屬于分類器i還是屬于分類器j。在N類問題中,有N個一對一的兩類SVM分類器,任意兩類之間都有1個分類超平面。故8類表情,共構(gòu)造28個分類超平面。
2.3.2 支持向量機的參數(shù)設(shè)置
在MATLAB平臺調(diào)用Libsvm-3.20工具箱,選擇SVM的不同c,g參數(shù)進行識別調(diào)試,并比較識別結(jié)果,以尋找最優(yōu)參數(shù)。其中,c是懲罰系數(shù),表示對誤差的寬容度,值越高,越不能容忍誤差的出現(xiàn);g是選擇徑向基函數(shù)作為核函數(shù)后,該函數(shù)自帶的一個參數(shù),隱含地決定了數(shù)據(jù)映射到新的特征空間后的分布。參數(shù)選擇結(jié)果對比,c選為4左右、g為2^(-8)左右時為最佳參數(shù)選擇。
2.3.3 識別結(jié)果
SVM的識別結(jié)果如表2所示。
表2 SVM識別結(jié)果
表情訓練樣本數(shù)測試樣本數(shù)識別率/%anger22815371.45common614165.63contempt775262.24disgust18112173.81fear16811270.14happy18712568.31sadness1449665.89surprise2288065.73
注:平均識別率為67.90%。
2.4.1 Adaboost分類器結(jié)構(gòu)設(shè)計
采用Adaboost級聯(lián)分類器進行面部表情識別時,分別采用3級和5級級聯(lián),并比較識別效果。實驗過程從有兩個特征的一個強分類器開始,通過調(diào)整它的閾值達到最小錯誤率,得到相對較好的人臉分類器。
2.4.2 識別結(jié)果
3級和5級級聯(lián)Adaboost分類器識別結(jié)果對比如表3所示。
表3 3級和5級Adaboost識別結(jié)果對比
表情訓練樣本數(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é)果作為最終的實驗結(jié)果。
通過比較可知,CNN的平均識別率最高,即對Cohn-Kanade表情庫的識別中,CNN是三類算法中識別效果相對較優(yōu)的算法。根據(jù)實驗結(jié)果,針對魯棒性、參數(shù)設(shè)置和處理時間等對這三類算法進行性能比較。
魯棒性:即算法的穩(wěn)定性,在實驗中CNN對圖片畸變的承受能力是最強的,主要因為CNN二次抽樣的特點使其具有很好的魯棒性。
參數(shù)設(shè)置:CNN的參數(shù)設(shè)置相對復雜,參數(shù)的初始值不能太小、權(quán)重參數(shù)以及設(shè)置梯度更新步長等都較復雜;SVM主要是參數(shù)c,g和核函數(shù)的參數(shù)設(shè)置,以及與對應(yīng)的Libsvm-3.20工具箱參數(shù)的設(shè)置,尋找最優(yōu)c,g,比CNN的參數(shù)設(shè)置相對簡單一些;Adaboost基本不用調(diào)參。
處理時間:Adaboost的處理速度是最快的,研究表明Adaboost在訓練樣本充足時可適應(yīng)特別復雜的分類面。
3.1.1 卷積神經(jīng)網(wǎng)絡(luò)
CNN的算法結(jié)構(gòu)比傳統(tǒng)神經(jīng)網(wǎng)絡(luò)的要簡單,最大的特點是權(quán)值共享,減少了計算時間,而且CNN處理圖像時可把原圖直接輸入網(wǎng)絡(luò),特征提取也較簡單,因此會簡化處理,加快處理速度。目前廣泛應(yīng)用于人工智能、模式識別、人機交互和圖像處理等方面,多分類問題用CNN處理可得到更好的效果。
缺點:實現(xiàn)相對復雜;網(wǎng)絡(luò)訓練時間較長;用CNN處理數(shù)據(jù),由于考慮其泛化性,需要對處理的樣本進行編號,在實際的研究中,很少有數(shù)據(jù)是有類標號的,如果進行人工標號會大大降低工作效率。
3.1.2 支持向量機
SVM是基于統(tǒng)計學的算法,屬于模式識別方法,主要用于解決分類問題。SVM是把數(shù)據(jù)從低維變換到高維,并轉(zhuǎn)換到線性問題來處理,所以具有較高的效率和精度。
缺點:SVM是小樣本的學習算法,在處理大量的樣本數(shù)據(jù)時不能取得很好的效果;SVM本身是解決二類問題的算法,因此應(yīng)用在多分類問題上有一定的局限性。因此,SVM的改進方向主要針對多分類問題和大數(shù)據(jù)樣本問題。
3.1.3 Adaboost
Adaboost為迭代算法,具有較高的分類精度。Adaboost級聯(lián)分類器是由幾級弱分類器構(gòu)成,而構(gòu)造弱分類的過程并不復雜,所以Adaboost分類器的形成也不復雜,構(gòu)造極其簡單;此外,Adaboost分類器中各級弱分類器都是獨立的,可以選擇自己的方法進行結(jié)構(gòu)組成,由此可得Adaboost算法是為各級級聯(lián)提供框架。Adaboost的另一個優(yōu)點是沒有過擬合問題。Adaboost同時也存在一些缺點:噪聲會影響其分類結(jié)果;對樣本的訓練時間較長;最終結(jié)果受制于弱分類器的選擇。
根據(jù)各個算法的上述缺點,有針對性地提出三種算法的改進方向。
對CNN結(jié)構(gòu)方面的改進,是直接把圖像輸入網(wǎng)絡(luò)進行處理,下一步研究工作把原始數(shù)據(jù)進行相應(yīng)的預處理后再輸入網(wǎng)絡(luò),提高識別精度,減少樣本的訓練時間;CNN各層映射結(jié)果一般是獨立的,若用PCA或其他算法對CNN各層的映射結(jié)果進行降維融合,并作為最后的特征提取結(jié)果,可以提高識別率。
由于SVM在多類問題方面的應(yīng)用有一定的限制,需要找到一定的方法來構(gòu)造解決多類問題的SVM分類器,例如通過1vs1的分類方法來構(gòu)造多類的SVM分類器。在今后的研究中可以采用其他方法,例如與其他算法結(jié)合,獲得較好的分類效果。
Adaboost的改進方向主要考慮弱分類器的權(quán)值分配和算法間的結(jié)合,其中需要通過大量的實驗掌握權(quán)值的選擇方法,弱分類器的權(quán)值分配決定了Adaboost分類器的性能。
文中對CNN、SVM和Adaboost三種算法的算法結(jié)構(gòu)進行了對比分析和改進設(shè)計,以分別實現(xiàn)對Cohn-Kanade表情庫的識別,并根據(jù)實驗結(jié)果對三種算法的優(yōu)缺點進行了對比分析,對表情識別領(lǐng)域的研究與實際應(yīng)用具有一定的參考價值。
[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] 詹永杰,龍 飛,卜軼坤.基于獨立子空間分析特征學習的表情識別[J].系統(tǒng)仿真學報,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] 高 學,王有旺.基于CNN和隨機彈性形變的相似手寫漢字識別[J].華南理工大學學報:自然科學版,2014,42(1):72-76.
[7] 劉 洋,季桂樹,王 剛.表情識別中基于軸對稱的人眼定位方法[J].計算機技術(shù)與發(fā)展,2008,18(12):47-49.
[8] 葉 波.基于細胞神經(jīng)網(wǎng)絡(luò)的圖像邊緣檢測研究[D].重慶:重慶大學,2012.
[9] 王李冬.一種新的人臉識別算法[J].計算機技術(shù)與發(fā)展,2009,19(5):147-149.
[10] 謝文浩,翟素蘭. 基于加權(quán)稀疏近鄰表示的人臉識別[J].計算機技術(shù)與發(fā)展,2016,26(2):22-25.
[11] 陳先昌.基于卷積神經(jīng)網(wǎng)絡(luò)的深度學習算法與應(yīng)用研究[D].杭州:浙江工商大學,2013.
[12] 鄭永森.基于卷積神經(jīng)網(wǎng)絡(luò)的身份證號碼識別研究與實現(xiàn)[J].計算機光盤軟件與應(yīng)用,2015,18(3):13-14.
[13] 徐 鵬,薄 華.基于卷積神經(jīng)網(wǎng)絡(luò)的人臉表情識別[J].微型機與應(yīng)用,2015,34(12):45-47.
[14] 孔 銳,張 冰.光照變化條件下人臉識別方法研究[J].系統(tǒng)仿真學報,2016,28(3):689-695.
[15] 白小葉,程 勇,曹雪虹.基于光照歸一化分塊自適應(yīng)LTP特征的人臉識別[J].計算機技術(shù)與發(fā)展,2016,26(5):56-60.
[16] 祝曙光,胡曉峰,司光亞,等.仿真實驗與SVM相結(jié)合的數(shù)據(jù)分類方法研究[J].系統(tǒng)仿真學報,2010,22(3):761-764.
[17] 黃永明,章國寶,董 飛,等.基于Gabor、Fisher臉多特征提取及集成SVM的人臉表情識別[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.