,
(上海工程技術(shù)大學 機械工程學院,上海 201620)
在過去的二十多年里,隨著科技的飛速發(fā)展,計算機的性能得到了顯著提高,隨之而來的就是計算機應用相關(guān)技術(shù)的大繁榮。在這樣的背景下,人工智能和機器學習領(lǐng)域出現(xiàn)了很多具體的研究方向,圖像處理、計算機視覺和模式識別也各自應運而生[1-3]。如何使計算機以人類的思維方式來與人類交流,成為了研究人員非常感興趣的課題,這是一個涉及心理學、模式識別和計算機視覺等的交叉學科,這方面的研究可以為用戶提供高效、友好的人機交互界面和人機交互系統(tǒng)。人臉表情是人類用以表達情感,傳遞內(nèi)心世界和態(tài)度的重要途徑,人們可以運用表情表達自己的情緒,也可以通過表情辨別他人的心理狀況。心理學家認為,人們之間的信息傳遞依賴于言詞,依賴于聲音,而源于臉部表情。
目前,模式識別算法主要包含特征提取算法和分類算法,特征的提取是模式識別中一個非常重要的環(huán)節(jié),圖像具有數(shù)據(jù)多,維數(shù)高,富含大量冗余數(shù)據(jù)的特點,要從一張靜態(tài)圖像中提取有用的信息,并且對圖像進行降維處理,就要選取一種合適的特征提取算法。近期,靜態(tài)圖像中表情特征提取算法主要有以下幾種:Gaborb小波、Histogram of Oriented Gradient (HOG),SIFT,SURF,Wavelet,DCT、(Local Binary Pattern,LBP),PCA和子空間等[4-5]。在模式識別領(lǐng)域,LBP是眾多常用特征描述子之一,它的優(yōu)勢是定義簡單、擴展方便、對光照強度具有一定的魯棒性,運算速度比較快,在表情識別實驗中經(jīng)常使用。特征的提取,盲目減少指標會損失很多信息,更重要的是在多數(shù)情況下,許多變量之間可能存在相關(guān)性,主成分分析(PCA,Principal Component Analysis),可以減少原始數(shù)據(jù)包含信息的損失,以達到對圖像的全面分析,同時,綜合存在相關(guān)性的各個變量,對原始數(shù)據(jù)進行降維。
原始圖片經(jīng)過初始處理、降維后,即可進行下一步的分類,在表情識別中,常用的分類算法有:決策樹(Decision Trees)、人工神經(jīng)網(wǎng)絡(luò)、KNN算法(K-Nearest Neighbour)、支持向量機(SVM)、樸素貝葉斯、Adaboosting等[6-7]。圖像分類使用比較多的有樸素貝葉斯算法[8-10],它有著扎實的數(shù)學理論基礎(chǔ),分類效率穩(wěn)定,所需要的估計參數(shù)很少,尤其對部分數(shù)據(jù)的缺失有一定的魯棒性,算法比較簡單。缺點是:具有最小的誤差概率,需要確定先驗概率。神經(jīng)網(wǎng)絡(luò)是另一種比較常見和應用在表情識別的算法,BP算法有著很強的非線性映射能力,擁有很強的并行處理能力,有自學習的能力,對噪聲有很強的魯棒性[11-12]。
綜合近期表情識別的發(fā)展,對原始數(shù)據(jù)特征的提取和對特征數(shù)據(jù)的分類,不是簡單的都選擇最優(yōu)的算法就可以構(gòu)建一個優(yōu)秀的模式識別模型,針對不同類型的特征數(shù)據(jù)有其最合適的分類方法。文中選擇PCA特征提取方法與神經(jīng)網(wǎng)絡(luò)分類算法相互搭配[13-15],在特征提取前,對原始圖片“敏感”部分(眉毛、眼睛、嘴巴)識別并提取出,以便在特征提取、組成時增加權(quán)重。
基于haar和adaboost人臉檢測算法是一種能夠有效識別出人臉和非人臉的算法,利用Open-cv從一幅背景較復雜圖片中識別出人臉,調(diào)用分類器haarcascade_frontalface_default.xml,在正確識別出人臉的圖像上,在此基礎(chǔ)上,利用haar算法,調(diào)用眼部(可以識別出眼睛和眉毛)和嘴巴分類器haarcascade_eye.xml、haarcascade_mouth.xml,識別并保存。
特征提取與選擇是模式識別中重要的一部分,特征提取的品質(zhì),直接影響后續(xù)分類的準確率和效率。PCA算法對原始圖片進行降維,通過線性變換將原始數(shù)據(jù)變換為一組各維度線性無關(guān)的表示,可用于提取數(shù)據(jù)的主要特征分量,該變換使得原始數(shù)據(jù)由維數(shù)較少的“有效”特征數(shù)據(jù)來表示,而不減少原始數(shù)據(jù)所包含的內(nèi)在信息量,減少余信息和綜合具有相關(guān)性信息的,在運算過程對內(nèi)存的消耗降低。
在對圖像提取特征前,首先要對原始圖像進行歸一化處理,如果原始圖像為彩色,應對其進行灰度處理,灰度處理的方法很多,本文采用的是加權(quán)平均法對圖像進行灰度處理:
Gray(i,j)=0.299*R(i,j)+0.578*G(i,j)+
0.114*B(i,j)
(1)
所有圖像均歸一化成w*h大小,本文取80*80。
將80*80的圖像矩陣轉(zhuǎn)化成一組列向量χi,χi含有K=80*80個元素,設(shè)共有70張圖片,X為70張圖片組成的圖像矩陣:
X=[χ1,χ2,......χN]N=70
求出樣本圖像集的平均圖像向量ψ和每個樣本與平均值的差值φi:
(2)
φi=χi-ψ
(3)
根據(jù)求出的φi,則可得總體的協(xié)方差矩陣S:
A=(χ1-ψ,χ2-ψ,......χN-ψ)
(4)
(5)
求解矩陣S的特征值和對應的特征向量,求得的特征值為λi,(i=1,2,3,......N),按照由大到小的順序排列,然后求得正交歸一化后與特征值對應的特征向量μi:
(6)
取前L個特征向量構(gòu)成“特征表情”空間,即構(gòu)成投影矩陣Γ=(μ1,μ2,μ3,......μL),L的取值可以根據(jù)特征值的累積貢獻率選擇:
(7)
一般情況下η=0.9~0.99。
主成分的主要用途之一就是能夠產(chǎn)生盡可能少地向量維數(shù)取代原始數(shù)據(jù)所包含的有效信息,關(guān)于η究竟要取多大,既要能夠使提取的主成分可以包含足夠的有效信息,這就要求η不能取值過小,避免原始數(shù)據(jù)過分濃縮,失去很多重要信息,又要去除原始數(shù)據(jù)中冗余數(shù)據(jù),這就要求η不能取值過大,避免不能有效對原始數(shù)據(jù)進行有效信息的提取。η取值直接關(guān)系到PCA主成分提取的效果,因此要在實驗中不斷調(diào)整η值,以期達到精度與效率的平衡點。
原來高維的圖像數(shù)據(jù)K= 80*80,圖像矩陣轉(zhuǎn)化成一組列向量χi,經(jīng)過投影矩陣Γ,原來的K×1維列向量投影在Γ后,降維到L×1維列向量F:
F=ΓT·χi
(8)
這樣得到降維后的F,不僅盡量提取了有效的圖像特征,且很好保留了原圖像矩陣的內(nèi)部信息。
通過上述對全局圖像的降維處理和特征提取,獲得了一個L×1維列向量F。在1.1中已經(jīng)對眉毛、眼睛和嘴巴的提取和保存,由于這些局部圖像含有表情識別的信息最為豐富,因此,要盡可能保存局部圖像的所有數(shù)據(jù)而不用像對全局圖像的降維處理。
圖1為攝像頭動態(tài)捕捉到的圖像,圖2分別面部、眉毛、眼睛和嘴巴,由于眉毛和眼睛在一起能夠含有更多的位置信息,因此在提取時候?qū)⒚济脱劬Y(jié)合在一起,為了減少計算量,同時獲取眉毛、眼睛和嘴巴的目的,主要是盡量保留它們輪廓和位置的信息,比如嘴巴的開度,因此,先對其進行灰度處理,再對其進行自適應二值化處理,得到如圖2的二值化圖像。圖2中的所有圖像都要進行歸一化處理,以便后續(xù)特征的組合和分類。
圖1 原始圖像
圖2 全局和局部圖像
前面已經(jīng)完成面部的特征提取,L×1維列向量F,其次眉毛、眼睛和嘴巴的二值化圖像也已經(jīng)獲得,假設(shè)眉毛和眼睛的圖像歸一化為20×20的二值化圖,轉(zhuǎn)化為400×1的列向量E,同樣,嘴部轉(zhuǎn)換成400×1的列向量M。將F,E,M組成一個列向量R,則:
R=(FT,ET,MT)T=(f1,f2,......fL,e1,
e2,......e400,m1,m2,......m400)T
(9)
R就是對全局和局部向量的提取、選擇和融合。
BP網(wǎng)絡(luò)是一種含有多層神經(jīng)網(wǎng)絡(luò)的前饋神經(jīng)網(wǎng)絡(luò),它的結(jié)構(gòu)包含輸入層、隱含層和輸出層,只有前后兩層之間的神經(jīng)元相連,學習過程正向傳播,建立在以梯度下降法的基礎(chǔ)上,反向傳播誤差,是一種廣泛使用的分類器。
圖3為神經(jīng)網(wǎng)絡(luò)拓撲結(jié)構(gòu),BP網(wǎng)絡(luò)可以看為一個高度非線性的映射,用公式表示為:
f(X)=YF:Rn→Rm
(10)
其中:xi∈Rn為輸入集合,yi∈Rm為輸出集合。
圖3 BP神經(jīng)網(wǎng)絡(luò)拓撲結(jié)構(gòu)
設(shè)該神經(jīng)網(wǎng)絡(luò)有L層n個神經(jīng)結(jié)點,轉(zhuǎn)移函數(shù)為Sigmoid函數(shù),樣本有N個(xk,yk)(k=1,2,...,N),任意結(jié)點i的輸出為Oi,網(wǎng)絡(luò)的輸出為yk,節(jié)點i的輸出為Oik,第l層第j個神經(jīng)元,第k個樣本,結(jié)點j的輸入為:
(11)
(12)
使用平方型作為誤差函數(shù):
(13)
(14)
設(shè):
(15)
(16)
結(jié)點j為輸出單元,則:
(17)
神經(jīng)網(wǎng)絡(luò)具有非常強的非線性映射能力,可以任意精度無線逼近任何復雜的非線性曲線函數(shù)。對于一個復雜的輸入輸出系統(tǒng),樣本數(shù)據(jù)越多則分類的效果越好,然而付出的代價就是對數(shù)據(jù)收集、數(shù)據(jù)處理和網(wǎng)絡(luò)的訓練等難度會大大增加。在盡量少的訓練樣本和檢測樣本要求下,可以預先對樣本進行分類,獲得分布較為均衡的樣本。對于神經(jīng)網(wǎng)絡(luò)在訓練過程中,選擇合適的激活函數(shù)(activation function)是構(gòu)建高效神經(jīng)網(wǎng)絡(luò)的關(guān)鍵之一。目前,廣泛使用的激活函數(shù)有tanh為雙切正切函數(shù),取值范圍為 [-1,1]、sigmoid為雙切正切函數(shù),取值范圍為[0,1]、ReLU函數(shù)為大于0保留,其余為0,本實驗中由于在特征運算過程中,特征相差不是特別大需要更加復雜精細的分類輸出,sigmoid更加適合。
為了驗證融合全局和局部特征并基于神經(jīng)網(wǎng)絡(luò)的表情識別方法的準確率、速度以及占用內(nèi)存等性能指標,可以和其他表情識別算法作比較。本實驗將使用比較常用的表情數(shù)據(jù)庫JAFFE (Japanese Female Facial Expression),從JAFFE選取具有代表性的7種表情,分別為厭惡、生氣、恐懼、驚訝、正常、難過和高興,部分原始圖像如圖4,在所有樣本中,一部分作為訓練樣本用于神經(jīng)網(wǎng)絡(luò)的訓練,這一部分的圖像一定要盡量保證各種表情的數(shù)量大致一樣多,達到均衡分布的效果。另選一部分作為驗證樣本,當神經(jīng)網(wǎng)絡(luò)訓練完成后,驗證樣本經(jīng)過預處理,作為輸入量,對實驗結(jié)果進行驗證。
圖4 表情數(shù)據(jù)庫
獲得表情數(shù)據(jù)庫中的表情后,由于數(shù)據(jù)庫中的圖像大小不一樣,因此首先對圖片進行歸一化處理,對全局和局部進行相應的特征提取和組合后,獲得神經(jīng)網(wǎng)絡(luò)的輸入數(shù)據(jù)F,接下來是對神經(jīng)網(wǎng)絡(luò)的設(shè)計,在第1章已經(jīng)確定F為(L×1+400×1+400×1)維列向量,故神經(jīng)網(wǎng)絡(luò)輸入層為L+800個神經(jīng)元,輸出層為7種表情,對7種表情采用4位二進制表示,如表1,因此,輸出層有4個神經(jīng)元,構(gòu)成4維輸出量。
表1 表情編碼
由于神經(jīng)網(wǎng)絡(luò)的輸入和輸出量要求位于0到1區(qū)間,因此,要對神經(jīng)網(wǎng)絡(luò)的輸入樣本進行歸一化處理,MATLAB中有mapminmax(x,ymin,ymax)專門用于數(shù)據(jù)歸一化。由前面可知,訓練樣本的輸入量維數(shù)I為L+800,輸出量維數(shù)為4,可知輸入神經(jīng)元為L+800,輸出神經(jīng)元為4,隱含層神經(jīng)元H=2I+1為2L+1601,由于數(shù)據(jù)歸一化處理后在[0,1]之間,故神經(jīng)元傳遞函數(shù)采用S型函數(shù)tansing,輸出層傳遞函數(shù)采用S型函數(shù)logsig,在樣本預先處理完成后,利用Levenberg-Marquardt算法對網(wǎng)絡(luò)進行訓練。
以JAFFE表情數(shù)據(jù)庫對神經(jīng)網(wǎng)絡(luò)訓練完成后,首先選取數(shù)據(jù)庫中被選作為樣本的兩張圖像(高興和正常)進行驗證,將經(jīng)過PCA主成分提取和數(shù)據(jù)融合處理后的圖像向量導入MATLAB作為輸入量,經(jīng)過神經(jīng)網(wǎng)絡(luò)分類后,結(jié)果如圖5所示。
圖5 分類結(jié)果
兩次分類結(jié)果分別為(1001)和(0101),對照表5可知,其對應的分別為高興和正常,兩次分類的結(jié)果都正確,那么不僅要看結(jié)果是否滿足實驗要求,還要評價整個神經(jīng)網(wǎng)絡(luò)的性能,查找MATLAB神經(jīng)網(wǎng)絡(luò)的一些參數(shù),如圖6所示。
圖6 分類器性能指標
樣本訓練迭代到第5次時,誤差開始迅速下降,Epoch表示經(jīng)過9次迭代即結(jié)束,達到設(shè)定誤差要求,Performance:誤差達到5.77e-06,Gradient:梯度達到2.45e-05,Time:耗時200 ms,由此得出該神經(jīng)網(wǎng)絡(luò)性能優(yōu)異。
本文所使用的表情識別方法,在Matlab和C++平臺中對推理過程進行訓練與仿真,根據(jù)測試結(jié)果和各項指標,得出以下結(jié)論:
1)提出的PCA算法可以有效地對原始數(shù)據(jù)降維,去除無效的、具有相關(guān)性的信息,降低了信息的冗余,同時保留包含重要特征的信息,提高了有效信息的權(quán)值;
2)全局和局部信息的融合可以增加敏感部位在原始數(shù)據(jù)中的權(quán)值,輸入數(shù)據(jù)更好保留與表情相關(guān)的信息,使分類既能從全局角度綜合判斷,又可以重點提高敏感部位信息的權(quán)重;
3)提出的神經(jīng)網(wǎng)絡(luò)作為分類器的算法,充分利用了BP神經(jīng)網(wǎng)絡(luò)所具有的非線性映射特性,可以有效實現(xiàn)各種表情的分類。
參考文獻:
[1] 伊茹夢. 人工神經(jīng)網(wǎng)絡(luò)理論與應用[J]. 科技經(jīng)濟導刊,2015(18):59-60.
[2] 趙春偉.基于PCA與LDA的表情識別算法研究[D].西安:西安電子科技大學,2014.
[3] 張 天. 面部表情識別的研究與集成實現(xiàn)[D].重慶:重慶郵電大學,2016.
[4] 李雅倩,李穎杰,李海濱,等. 融合全局與局部多樣性特征的人臉表情識別[J]. 光學學報,2014,34(5):172-178.
[5] 焦李成,楊淑媛,劉 芳,等. 神經(jīng)網(wǎng)絡(luò)七十年:回顧與展望[J].計算機學報,2016(8):1697-1716.
[6] 王文鋒,朱書華,馮以浩,等. 基于局部方向編碼的遙感影像平行邊緣識別[J]. 光學學報,2012,32(3):141-147.
[7] Gabriele D’Antona.Processing magnetic sensor array data for AC Current measurement in multiconductor systems[J].IEEE Transactions on Instrumentation and Measurement,2001,50(5): 2001.
[8] Li Y. Design of intelligent monitoring unit for low voltage power distribution switch cabinet [D]. Chengdu University of Technology, 2010.
[9] Clark F,et al.Wide-Base line stereo for Mars Rovers[A].Proceedings of the 2003 IEEE/RSJ Intl .Conference on Intelligent Robots and Systems[C]. 2003.
[10] 馮 伍,張俊蘭. 人工智能在醫(yī)學上的應用[J]. 電子設(shè)計工程,2010(1):19-20.
[11] 周曉彥,鄭文明,辛明海,等. 基于稀疏表示的KCCA方法及在表情識別中的應用[J]. 模式識別與人工智能,2013(7):660-666.
[12] 史文樊. 改進的PCA與BP神經(jīng)網(wǎng)絡(luò)人臉識別方法研究[D].秦皇島:燕山大學,2013.
[13] 陳北京,孫星明,王定成,等. 基于彩色圖像四元數(shù)表示的彩色人臉識別[J]. 自動化學報,2012(11):1815-1823.