車 娜,趙 劍*,史麗娟,王 柳,范秦寅
(1.長春大學 計算機科學技術學院,吉林 長春 130022;2.長春大學 電子信息工程學院,吉林 長春 130022;3.大阪大學 機械科學部,日本 大阪 556670)
人的面部表情識別是人工智能的基本問題,同時也是一個復雜的計算問題,解決人類面部表情識別問題對于人機交互等高級應用有著重要意義[1]。近些年來在表情識別方面有很多的優秀成果,在相關研究方面積累了很多經驗教訓。
心理學研究表明人類的表情與味覺一樣,是幾種基本表情的混合,識別這些基本表情就成了早期表情識別的重要方向[2]。早期的研究主要是通過數據特征判斷表情和用時序分析判斷表情[3]等方法,這些方法的技術難度較高,但是最終得到程序的魯棒性較差。
近幾年來人工智能的再度興起使得很多人將研究重點轉移到使用深度學習方法進行表情識別的方向上來[4]。在利用深度學習和卷積神經網方面也有很多不錯的工作[5]。
本文提出了一種基于卷積神經網的機器學習方法來進行人類表情識別,并且詳細分析了影響表情識別的卷積神經網各方面的參數。本文主要基于FER2013數據集和卷積神經網模型進行探索,最終給出一個基于實驗的最優的解決方案。
FER2013數據集合是表情數據庫,它是由35 887張面部表情圖片構成,在這些圖片中分別有訓練集合、驗證集合和測試集合。表情圖片都處理成了灰度圖片,并且是統一規格的,都是48×48像素的,如圖1所示。按照相關學科的理論,人的表情是7種基本表情的混合,也就是面無表情、生氣、厭惡、恐懼、開心、驚訝、傷心這幾種表情,FER2013中也將面部表情數據分成了這7類。在FER2013中給出的文件是csv格式,本文為了訓練方便將其轉換成了灰度圖片,如圖1所示。
本文采用了基本的CNN結構來探討卷積神經網在面部表情識別中的性能問題,其結構如圖2所示。
其中神經網的INPUT為輸入層,FER2013數據集合中28 709張訓練圖片隨機亂序之后通過輸入層輸入到神經網結構中。在輸入層之后的C1是最開始的卷積層,它有6組卷積核,設定每組局部感受野的尺寸為5×5,我們將滑動窗口步長設為1,在神經網中對輸入圖像作局部卷積,可以得到6個(28-5+1)×(28-5+1)=24×24尺寸的特征圖。接下來的層S2為池化層,我們通過池化層對前面卷積層得到的特征圖進行下采樣處理,這是卷積神經網絡在保留訓練數據同時降低維度的技術,為了不重疊數據,我們將池化層設為2×2,并且步長設為2。通過卷積層和池化層之后的數據就是池化特征圖,這個特征圖的數據是每個輸入圖的1/4。后面的層C3同樣為卷積層,在這個層里有12個卷積核,這里的卷積窗口為5×5,滑動步長為1,在接下來的卷積層S2中需要尺寸為8×8的12個特征圖。在S2到C3的特征圖可以選擇全連接方式,就是C3中每個特征圖都由C2中的所有特征圖組合疊加而成。接下來的第S4層也是池化層,這里將采集窗口設為2×2,步長設為2,用最大值下采樣,通過S3池化層可以得到對應的前面的12個特征圖,其中每個圖為4×4的尺寸。后面的F5 是全連接層,S4則將每個圖轉換成16×1的向量,之后將其轉換為192×1的特征向量,再通過全連接的方式傳遞給F5層,F5層有120個節點,這些節點與接下來的F6層全連接,F6設了84個節點,F5與F6這樣的兩極全連接結構能夠增強整個網絡的泛化效果。輸出層與F6相連,這里是為了區分7種基本表情,所以這里給出了7個節點,分別表示為0~6,對應表情“面無表情、生氣、厭惡、恐懼、開心、驚訝、傷心”。

圖1 FER—2013集合的例子

圖2 經典CNN模型結構示意
通過經典的卷積神經網對FER2013的訓練,我們將總共35 887張圖片中的28 709設為訓練集,3 589設為驗證集,3 589設為測試集。學習率設為1,當神經網迭代300次之后錯誤率為2.45%,迭代1 000次之后錯誤率為1.86%。
本文用經典的卷積神經網構建了面部表情識別的系統,接下來對卷積神經網的主要參數進行對比試驗,主要研究滑動窗口大小以及池化方式這兩個方面對于在該具體問題中的卷積神經網影響,為進一步的理論和實驗研究做出指導。
在滑動窗口方面,經典的做法是固定滑動窗口,這樣可以穩定地掃描過全部的感受區域,利用神經元與周圍像素的關系進行神經網訓練。本文在第一個卷積層C1中設計了一系列的滑動窗口尺寸試驗,使用不同的模型進行測試,以發現相對較優的滑動窗口尺度。在下面的表1中,是我們對于1~9的窗口尺寸進行測試的結果。
通過實驗數據,我們大概可以找到一個局部最優解,顯然過大或者過小的滑動窗口尺寸都會影響系統性能。通過表1得到的數據走向,以及系統中臨時特征圖的對比,我們最終將C1卷積層中的窗口尺寸設為5×5大小的。滑動窗口尺寸是根據實驗結果和輸入數據尺寸決定的,相對較大的輸入數據,如果采用小窗口會拉低實驗性能,反之亦然。這是設計卷積神經網的重要因素之一。

表1 C1層中不同窗口尺寸以及對應的錯誤率對照
卷積神經網除了卷積層之外的重要設計內容就是池化層了。池化層不同的設計對于整個卷積神經網的性能有很大的影響,而且它也是神經網魯棒性的來源之一,同樣的圖像如果有輕度噪音在池化層的處理下也能得到同樣的訓練/識別效果。常用的池化策略是最大值池化、平均值池化和隨機值池化。
為了選擇最為適合的池化方式,本文將以上3種策略在表情識別系統中都實現了。這3個模型采用同樣的設計,只有池化方式不同,同樣對于面部表情識庫FER2013進行訓練,得到的時間消耗如表2所示。為了排除單次實驗的誤差,下表中的數據是10次實驗取得的平均值。
在這個特定問題中,我們能夠發現池化策略有不同的最優表現。錯誤率最低的策略是隨機方式,而效率最高的是最大化策略。按照統計結果表明,最大化策略在時間表現方面的顯著性水平要高于隨機化策略在提高錯誤率方面的顯著性水平。所以我們認為在這個具體問題中采用最大化策略能夠更好地提高系統功效。

表2 3種池化方式的實驗對比數據
本文通過實驗修改經典的卷積神經網結構,以得到在實驗中表現良好的參數配置,為面部表情識別工作做出了探索。在我們的實驗中,針對面部表情識別問題,得到了較好的卷積層窗口尺寸設置,以及表現優秀的池化方案。得出的結論為,為了進行更好的深度學習,卷積核窗口的尺寸不宜過大也不宜過小;池化方案相對來說采用最大化策略能夠改進效率。