馬金峰
(南京郵電大學通信與信息工程學院,江蘇 南京 210003)
人臉表情識別是計算機視覺領域的研究熱點之一。不同于語言交際,人臉表情是人類情緒表達的一種直接方式。相較于語言,人臉表情當中往往蘊含著更多的信息,心理學家Albert Mehrabian[1]提出了著名的55-38-7法則,她表示人與人之間交流的信息55%是由人臉表情傳遞的,38%是由說話時的語調傳遞的,而僅有7%是由所說內容傳遞的。之后著名心理學家Ekman 發現,有7 類基本表情是全球通用的,各種族間可以相互識別,甚至連與世隔絕的部落和哺乳動物都有著相似的表情。據此,Ekman 和Friesen[2]通過對各種文化的大量研究定義了7類基礎表情:生氣、厭惡、害怕、自然、開心、悲傷和驚訝。人臉表情識別目前主要的應用領域包括人機交互、安保、醫療、通信、安全駕駛等等。
隨著人臉表情識別應用的領域不斷增加,人臉表情識別算法也在不斷發展,傳統的人臉表情識別的算法有:基于幾何特征的主動形狀模型(ASM),活動外觀模型(AAM)與尺度不變換特征轉換;基于整體統計特征的主成分分析法(PCA),獨立成分分析法(ICA);基于頻率特征的Gabor小波變換法;基于運動特征的光流法等[3]。由于傳統的特征提取方法容易受到圖像的背景、光照強度等噪聲的影響,所以其對于特征的提取方法復雜且需要單獨的分類方法進行分類,并且往往最終的識別準確率較低。相較于傳統的方法,深度學習方法往往對圖像有著較好的特征提取能力,避免了傳統的人臉表情識別算法中繁瑣的人工提取特征的步驟。深度學習當中由于卷積神經網絡(CNN)的模型簡單高效,成為深度學習的模型的代表,被廣泛應用于深度學習相關的領域并成功成為圖像分類領域的核心算法模型。
最經典的CNN 模型是由Yann LeCun 提出的LeNet-5[4]網絡,擁有標準的卷積層與池化層相互堆疊的結構,基于這種基本的網絡結構,研究人員又在后續的研究中提出了VGGNet[5]、ResNet[6]、MobileNet[7]、DenseNet[8]等性能更加高效的網絡模型結構,這些模型有的是通過增加模型的深度和寬度來獲得更高的性能,有的則通過提高模型參數的利用率來獲得更為高效的性能。
隨著卷積神經網絡模型的不斷發展,為了提取更為復雜的特征,獲得更高的預測準確率,網絡模型的深度不斷加深,參數數量大大增加,從而使網絡結構龐大復雜,同時對模型的移植應用也形成了巨大的挑戰。由于網絡的深度對于學習表達能力更強的特征至關重要,因此如何在保持一定的網絡深度和測試精度的同時,有效降低網絡的參數數量就成為一個值得研究的方向。受到密集連接卷積網絡的啟發,本文給出了一種基于輸入尺寸為48×48的單通道灰度圖片的密集連接卷積結構的模型(M-DenseNet)。該模型在保持一定的網絡深度和較高的模型預測準確率的情況下,提高了網絡對于模型參數的利用率,大大降低了其運行時所需的參數數量。
卷積神經網絡(CNN)如圖1所示由卷積層、池化層和全連接層組成,是深度學習領域圖像分類的核心模型。

圖1 卷積神經網絡結構圖
卷積層對輸入執行卷積,在訓練過程中,選擇內核和偏置參數以優化網絡輸出的誤差函數。池化層對輸入圖像應用非線性變換,以減少操作后的神經元數量。在兩個連續的卷積層之間放置一個池化層是很常見的,該操作還可以減小單元尺寸、減少計算負荷以及防止過度擬合等問題。全連接層與經典的神經網絡層完全相同,其中層中的所有神經元都連接到后續層中的所有神經元,神經元由它們的輸入總和乘以激活函數傳遞的權重而觸發。
為了改善模型的性能使模型能夠適應不同的需求,最直接的方法就是加大網絡模型的深度,以下介紹幾種經典的深度卷積神經網絡。
2.2.1 VGGNet
由牛津大學視覺組于2014年所提出的VGGNet,這是一種專注于構建卷積層的簡單網絡,它提出了由兩個3×3的小濾波器彼此堆疊模仿獲得一個5×5的大濾波器的感受野,而不再是像以往的CNN模型一樣使用單個更大的濾波器。經過這樣的處理,模型參數大大降低了,并且模型的非線性表達能力獲得了提高。
2.2.2 ResNet
ResNet 網絡是一個模塊化的網絡,借鑒了“HighWay”,添加了一條“捷徑”連接路徑。該網絡提出了一個殘差學習塊來減少網絡的訓練,明確將層重新定義為參照層重新輸入的學習殘差函數,而不是學習未引用的函數,因此可以大大加深深度,提高準確度。
2.2.3 DenseNet
DenseNet網絡模仿了ResNet網絡,同樣構建了模塊化的網絡來進行學習。DenseNet 將這種模塊稱為密集塊(Dense Block),其核心思想是創建了一個跨層連接來連通網絡中的前后層。為了最大化網絡中所有層之間的信息流,DenseNet將網絡中的所有層兩兩進行了連接,使得網絡中每一層都接受它前面所有層的特征作為輸入,圖2 展示了這種模式。DenseNet結構主要擁有以下兩個特性:1)一定程度上減輕在訓練過程中梯度消散的問題。從圖2我們可以看出,在反向傳播時每一層都會接受其后所有層的梯度信號,所以不會隨著網絡深度的增加,出現靠近輸入層的梯度會變得越來越小的現象。2)由于大量的特征被復用,使得使用少量的濾波器就可以生成大量的特征,所需模型的規模也隨之減小。

圖2 一個四層密集塊(Dense Bolck)結構
本文給出的網絡模型受到DenseNet網絡結構的啟發,在DenseNet的網絡的基礎上,結合人臉表情識別的特點以及所使用的數據集,對網絡進行了優化,使其更加適合于人臉表情識別的應用。DenseNet網絡由于其密集塊的設計理念,使得它能在每一個卷積層中都使用較少的濾波器,這樣網絡寬度收窄,需要的參數更少。由于網絡的每層都直接相互連接在一起,有效保證了特征信息和梯度在網絡中的傳播,極大地化解了網絡過深時出現的梯度消失問題。基于這種設計,模型能夠在提取表達能力更強的特征而加深網絡深度的同時,減少了參數的數量,從而加快運算速度。同時我們選擇Adam 優化算法來代替原本的隨機梯度下降(SGD)算法。Adam 算法結合了Adagrad 算法中擅長于處理稀疏梯度和RMSprop 算法擅長于處理非平穩目標的優點,此外Adam 算法對于大數據集以及較深的網絡也往往有著更優異的表現且它對于內存的需求也較小,符合降低模型應用成本的需求目標。該模型的網絡結構如圖3所示,各層參數見表1所示。

圖3 改進的M-DenseNet網絡模型結構
改進的M-DenseNet網絡模型中,總層數為52層,輸入圖像首先通過一個標準的卷積層(Conv),再通過3 個密集塊(Dense Block),相鄰兩個Dense Block 之間增加一個過渡層(Transition Layer),最后使用全局平均池化(Global Average Pooling)[9]來代替傳統卷積神經網絡的全連接層并使用softmax 激活函數對人臉面部表情圖像進行分類。Conv 就是傳統的卷積層,用來提取圖像的特征。表中的每一個Conv 都符合BN-ReLU-Conv的結構要求。批量歸一化(BN)[10]調整了數據的分布,使得每一層的輸出歸一化為均值為0方差為1的分布,這樣就保證了梯度的有效性,減輕了對參數初始化的依賴,使得訓練更為快速有效。線性整流函數(ReLU)[11]作為非線性激活函數可以減少計算量,緩解梯度消失,減少參數的相互依賴,緩解過擬合等問題。同時為了進一步防止過擬合,在每一個密集層(Dense Layer)后面都加上了丟棄單元(Dropout)[12]。我們給出的M-DenseNet網絡模型其增長率超參數K設置為12。Dense Block是由一系列Dense Layer連接而成,每一個Dense Layer 由一個1×1 的Conv 和一個3×3 的Conv 組成。過渡層由一個1×1 的Conv 和一個2×2 步長為2的平均池化(average pool)組成。
實驗采用的是Fer2013灰度表情數據集[13],Fer2013數據集由35887 張人臉表情圖片組成,每張圖片均是大小為48×48像素的灰度圖像。一共有七種表情類型,分別對應數字標簽0~6,如表2所示。

表2 表情對應的數字標簽
我們使用所設計的M-DenseNet 網絡模型和LeNet-5、VGG-16、ResNet-50、MobileNet 以及DenseNet-121 諸多網絡模型分別對Fer2013數據集進行了比對測試。
從表3中可以看到,M-DenseNet網絡模型相對于其他網絡模型在有效降低了參數的同時,模型識別的準確率也有所提高。

表3 各模型準確率與參數數量表
M-DenseNet 模型是在DenseNet 模型的基礎上,降低了模型的深度和寬度,并在每一密集層(Dense Layer)后面添加一個臨時丟棄單元(Dropout)來防止過擬合,是專為人臉表情識別所設計的一種網絡結構。
試驗中使用了Adam 優化算法進行優化,選擇批量大小(batch_size)為8進行訓練,用softmax分類器進行分類。初始化學習率選擇為0.001,當學習輪數達到50輪時,將學習率為0.0001,丟棄率設置為0.2。
采用M-DenseNet 網絡模型的驗證集混淆矩陣如圖4 所示。

圖4 驗證集混淆矩陣
M-DenseNet 網絡模型的識別準確率為70.45%,略高于人工情況下對該數據集65%±5%的平均準確率,于其他模型相比,模型參數數量僅約為VGG-16 的1/50,ResNet 的1/80,MobileNet的1/11,識別準確率有著明顯的提高。
M-DenseNet 網絡參數的大幅度減少得益于密集連接卷積的優秀設計理念,它不強調卷積的維度,更重視將每一次得到的特征圖進行復用,將每一層前一級的輸出作為當前的輸入以此來縮短前后層之間的連接,實現最大化的信息流動,避免特征信息的丟失,成功解決了網絡深度加深時出現的梯度消失問題。Dense Block的設計使得網絡能夠使用較少的濾波器就能獲得足夠多的特征參數而不是像傳統的卷積網絡一樣動輒使用成百上千的濾波器,從而達到有效降低網絡參數數量的目的。
為了實現特征復用,密集連接卷積在跨層連接時選擇將特征維度串聯起來,而不是像傳統卷積那樣將特征元素相加。由于不需要進行特征元素的相加,所以不需要在每個單元模塊的最后加一個1×1 的卷積來將特征層數升維到和輸入的特征維度一致。密集連接卷積一方面通過對模型深度的加深,獲得表達能力更強的特征,另一方面通過對特征的不斷復用,使得少量的濾波器就可以生成大量的特征,這樣模型就可以做到在整體參數數量較少的情況下,獲得更高的準確率,使得運算時間也大大縮短。
對于人臉表情識別,不應片面追求預測的準確率,還應當綜合考慮在實際應用中的可行性。一般而言,神經網絡的規模越大、深度越深往往會帶來更高的模型預測準確率,但是隨著網絡層數的加深,網絡規模的擴大,網絡中的參數往往會急劇增加,因此如何在加深網絡層次,保持較好的模型預測準確率的同時還能夠保持較低的參數數量就成為一個亟待解決的文題。本文給出的M-DenseNet模型在保持相對較深的網絡深度(52 層)及較高預測準確率的同時有效減少了模型的參數數量,大大提高了模型的參數利用率。