梁瑞奇
(重慶市第八中學校,重慶,400000)
近幾年,隨著人工智能技術的再次迅猛崛起,以及計算技術的大幅度提升,人們對人機交互任務提出了越來越高的要求。同時,在人與人的溝通中,不只是語言符號,人臉表情以及其他身體語言也是傳達信息的組成成分[1]。心理學專家A. Mehrabian[2]的研究表明人臉表情對聽者有很大的影響,由于在人與人的溝通交流中,人臉表情所傳達的信息占高達35%,可見,在人與人之間信息交流的過程中,人臉表情起到了不可缺少的作用。人臉表情識別這項技術是指從靜態(tài)圖像或動態(tài)視頻中提取出出人的表情狀態(tài),從而可以進一步識別出對象的心理情緒。這項技術能使計算機更好地理解人類的情緒,并能根據(jù)人類面對不同環(huán)境時的面部反應做出回應。表情識別已經(jīng)在心理學,情感交流機器人等領域具有重大的研究和使用價值。
一般的表情識別系統(tǒng)的分為三個部分,首先在捕捉到的圖像中進行人臉識別,之后對圖像進行預處理、表情特征提取,最后通過BP神經(jīng)網(wǎng)絡建模,完成表情分類。然而,由于人的表情有不同程度,如對于笑這類表情可分為大笑、微笑,而哭這類表情可以分為抽噎,嚎啕大哭等。在本文中根據(jù)表情的不同程度,將某些表情進行二次分類,從而達到更為細粒度的人臉表情識別效果。
針對上述問題,本研究提出一種基于神經(jīng)網(wǎng)絡的人臉表情識別系統(tǒng)的設計方法,在識別出人臉表情的同時可以對不同程度的表情深層分類,相比先前的類似研究具有更好的人機交互效果和更深的智能化程度。
因為表情識別系統(tǒng)分為三個部分:①圖像預處理;②特征提??;③表情識別分類器。因此,首先需要對訓練樣本集中的所有人臉表情圖像進行預處理,然后基于預處理后的圖像進行特征提取,最后將提取到的表情特征引入分類器中進行學習訓練,完成訓練過程后,將測試樣本放入已經(jīng)訓練好的分類器中進行測試評估。
本文采用的圖像預處理的方法是將RGB空間中的彩色圖像轉化成為灰度圖。由于彩色圖像中的每個像素的顏色有R、G、B三個分量決定,而每個分量有256種取值情況,因此這樣一個像素點可以有1600多萬(256×256×256的顏色的變化范圍,數(shù)據(jù)量太大對存儲和計算造成一定的負擔,而灰度圖的一個像素點的變化范圍只有256種情況,所以通過將原始人臉圖像轉變成灰度圖像,以此大幅度減少后續(xù)的圖像處理的計算量。同時,灰度圖像仍然能夠反映出與彩色圖像一致的整幅圖像的整體和局部的色度和亮度等級的分布和特征。
對于人臉表情識別系統(tǒng),為了便于提取特征,因此需要將RGB空間的圖像通過做平均化處理轉化為灰度圖像,公式為
其中,RGB分別為每個彩色圖像像素點的顏色分量,g為轉化后的灰度值。
為了能夠識別人臉表情的類別及變化情況,利用人臉表情的幾何特征是一個顯著而有效的策略,人臉幾何特征是指人臉上各器官,例如眼睛,眉毛,鼻子,嘴等的形狀變化,此外還包括一些顯著點例如眼角,眉梢,嘴角等的位置變化。
(1)紋理分析技術
表情的外觀特征最主要的一個表現(xiàn)就是臉部的紋理變化,其包括臉上不同器官的紋理形狀變化。紋理分析通過研究一幅圖像中的像素灰度級變化趨勢,得到紋理變化情況。
本研究中采用空間灰度共生矩陣的方法做紋理分析,通過計算兩個灰度級別在圖像中以一定方向相鄰的次數(shù)而得到一個矩陣 ,這里的方向一般包括水平、45度、90度和135度。以采用水平方向計算的灰度共生矩陣為例,灰度共生矩陣中的每一個元素(i,j)代表灰度i與灰度j在圖像中水平相鄰的次數(shù)。如圖1所示,以(1,1)點為例,灰度共生矩陣(1,1)處的值為1說明只有一對灰度為1的像素水平相鄰?;叶裙采仃嚕?,2)處的值為2,是因為有兩對灰度為1和2的像素水平相鄰。
圖1 灰度共生矩陣計算示意圖
(2)表情時空提取
對于人臉表情視頻的數(shù)據(jù)集,可以對獲取的視頻中每一幀的人臉圖像進行上述特征提取得到特征向量,用于表情識別的幾何特征,指臉上幾個主要器官的變化,比較典型的基于視頻人臉表情幾何臉部外觀特征提取方法是基于差分圖像的時空特征[3]。由于人臉表情視頻的背景一般不變,在這一條件下,可以將視頻序列中的每一幀圖像與中性表情幀直接做差分運算,或者也可以將視頻圖像中前后兩幀圖像進行差分運算,利用上述通過灰度共生矩陣方法提取出的人臉表情紋理特征,差分運算是指將兩幀圖像的灰度共生矩陣做矩陣減法,接著將新的灰度共生矩陣按列展開為一個向量表示,得到人臉表情的特征向量。
BP神經(jīng)網(wǎng)絡是一種基于人工神經(jīng)網(wǎng)絡結構的學習模型,可以通過設置多層隱含層,并以反向逆?zhèn)鞑サ姆绞讲粩嘈薷木W(wǎng)絡權值,從而達到學習訓練的目的,其已經(jīng)成為應用最為廣泛的模型之一。
BP神經(jīng)網(wǎng)絡工作過程共分為兩個階段:
(1)正向傳播:首先將數(shù)據(jù)中的特征向量輸入輸入層,經(jīng)過隱含層,對其進行加權計算,最后由輸出層輸出,在每一層的處理中前一層可等效于后一層的輸入層。
(2)反向傳播:當傳播到輸出層時,將預測的結果與給定的標簽進行比較,判斷其是否達到收斂條件,若達到,則結束訓練過程,反之,則逐層反向傳播,對權值進行依次調(diào)整,直到滿足收斂條件。
BP神經(jīng)網(wǎng)絡是將提取出的人臉表情特征向量作為輸入,通過在網(wǎng)絡中進行線性組合,并在每個神經(jīng)元處經(jīng)過非線性的激活函數(shù)輸出,針對每個神經(jīng)元可以得到一個計算結果,將其與閾值進行比較并得到輸出結果。本文中選用sigmoid函數(shù)作為激活函數(shù),其公式如下
為了進行反向傳播過程調(diào)整權值,在學習訓練之前要確定一個誤差函數(shù),本文選用實際輸出x與期望輸出y之差的平方和來表示,其公式如下;
BP神經(jīng)網(wǎng)絡經(jīng)過大量學習訓練后,根據(jù)不斷調(diào)整網(wǎng)絡權值,減小誤差,從而達到預期效果,為了保證準確性,本文采用標準的3層神經(jīng)網(wǎng)絡結構,其中設置輸入層包括10個節(jié)點對應一組人臉表情特征輸入向量,隱含層具有10個節(jié)點,輸出層共9個節(jié)點表示9種表情的輸出結果。
本文選用5000幅人臉圖片作為訓練樣本集,再選用5000幅人臉圖片作為測試樣本集,為了保證訓練效果,每次訓練結束以后將與上一次訓練結果進行比較,若誤差增大,則向負方向調(diào)整權值,若減小,則向正方向調(diào)整權值,從而不斷提升識別準確性。當達到預定的訓練次數(shù)或達到預先設定的收斂條件時完成訓練過程。最后利用測試樣本集觀察學習訓練效果。
以上方法是使用一組人工設計的特征,雖然可以對人臉表情進行特征提取,但這種手工設計提取的特征在一定程度上損失了人臉表情原有的特征信息,或者假設屬性之間互相獨立,往往與實際應用環(huán)境不相符合[4]。于是,近年來在機器學習領域出現(xiàn)了以卷積神經(jīng)網(wǎng)絡(CNN) 為突破點的純數(shù)據(jù)驅動的特征學習算法[5]。卷積神經(jīng)網(wǎng)絡組合了特征提取、特征選擇和分類三個過程,形成了一種端到端的全自動識別的過程。本文采用卷積神經(jīng)網(wǎng)絡對人臉表情識別系統(tǒng)進行改進,首先在卷積層中添加多個卷積核實現(xiàn)一次學習多個特征,再將每個卷積層得到的結果引入池化層中做最大池化處理。再通過全連接層并選擇適當?shù)娜B接層的神經(jīng)元數(shù)量,最后利用Softmax層作為分類器得到整個CNN的訓練結果,完成人臉表情的特征提取及分類學習。當輸入給定樣本后,每一個神經(jīng)元輸出的數(shù)值都在0 到1 之間,該數(shù)值代表了輸入人臉表情圖片樣本屬于該類別的概率,且所有輸出數(shù)值相加等于1,滿足歸一化規(guī)則,符合輸出結果的概率意義。因此,可以選取輸出值最大的神經(jīng)元所對應的類別作為人臉表情的分類結果。
圖2 人臉表情識別的CNN網(wǎng)絡結構
參考LENET(一種典型的深度神經(jīng)網(wǎng)絡結構)網(wǎng)絡結構,具體的用于人臉表情識別的CNN網(wǎng)絡結構設計如圖2所示。除了輸入層,該網(wǎng)絡由7 層組成,其中包括3 層卷積層、2層池化層、1 層全連接層和1 層Softmax 層。輸入層是96× 96 的人臉像素矩陣。卷積層和池化層有若干個特征圖,每個特征圖都與其前一層特征圖以局部連接的方式相連接。卷積層分別使用32、64、128 個卷積核進行卷積操作,每個卷積層使用的卷積核的大小都為5 × 5。池化層使用的采樣窗口的大小為2 × 2。全連接層含有200個神經(jīng)元,與最后一層卷積層進行全連接。Softmax 層含有9 個神經(jīng)元,對全連接層輸出的特征進行分類,將人臉表情分成大笑、微笑、抽噎、嚎啕大哭、驚訝、憤怒、厭惡、恐懼、中性共9類。
特別的,在每層池化層之后添加激活層,本文采用修正線性單元(ReLU)作為激活函數(shù)[6],其更能逼近人腦對于視覺處理的神經(jīng)元激活函數(shù),其表達式為
為了保證人臉表情的識別的有效性,需要足夠的已經(jīng)正確分類的人類表情圖片樣本作為訓練集。自然的人臉表情樣本難以收集,因為在一段視頻中有關表情的信息較為稀少并且只能持續(xù)非常短暫的時間,而且人工標注這些人臉表情耗時耗力且準確率難以保證。因此,目前對于人臉表情識別的研究都是基于人工生成的樣本。目前許多研究致力于構建用于訓練和測試情感識別方法的數(shù)據(jù)庫。常用的含有人臉表情視頻的數(shù)據(jù)庫有很多,其中大部分數(shù)據(jù)庫的樣本都是被試者表演出來的。
針對本文采用的細粒度的表情識別策略,可以選取Belfast 自然情感數(shù)據(jù)庫作為訓練集和測試集。Belfast 自然情感數(shù)據(jù)庫[7]包含了125個成人的 565 段視頻片段。記錄的表情包括幾種基本和其他表情,最主要的是,該數(shù)據(jù)庫還記錄了每種表情的強度,這剛好符合本研究對于人臉表情進行細粒度分類的任務要求。因此,相較于其它一些用于表情識別的公開數(shù)據(jù)集,選用Belfast 自然情感數(shù)據(jù)庫更有利于對本文中關于不同程度精細分類的表情的識別算法提供充足的訓練集,并能夠進一步對算法進行有效驗證。
本文針對人臉表情識別的問題,并為了更精確地區(qū)分出同種表情的不同程度,采用以下3個步驟實現(xiàn)人臉表情識別系統(tǒng)的設計。圖像預處理采用將RGB空間轉化為灰度圖像的方法,特征提取采用灰度共生矩陣的紋理分析技術,并基于差分圖像的表情時空提取。采用BP神經(jīng)網(wǎng)絡的方法作為分類器,其中本文采用的BP神經(jīng)網(wǎng)絡共三層,將特征向量作為輸入,將被精細分類后的表情作為編碼輸出,通過不斷地學習訓練,建立學習模型,可用于不同表情精細化識別系統(tǒng)。同時,結合深度學習技術構建卷積神經(jīng)網(wǎng)絡,進一步提高了表情識別的精確度,具有較高的科研價值和實用前景。