馬金峰
(南京郵電大學(xué)通信與信息工程學(xué)院,江蘇 南京 210003)
人臉表情識別是計算機視覺領(lǐng)域的研究熱點之一。不同于語言交際,人臉表情是人類情緒表達的一種直接方式。相較于語言,人臉表情當中往往蘊含著更多的信息,心理學(xué)家Albert Mehrabian[1]提出了著名的55-38-7法則,她表示人與人之間交流的信息55%是由人臉表情傳遞的,38%是由說話時的語調(diào)傳遞的,而僅有7%是由所說內(nèi)容傳遞的。之后著名心理學(xué)家Ekman 發(fā)現(xiàn),有7 類基本表情是全球通用的,各種族間可以相互識別,甚至連與世隔絕的部落和哺乳動物都有著相似的表情。據(jù)此,Ekman 和Friesen[2]通過對各種文化的大量研究定義了7類基礎(chǔ)表情:生氣、厭惡、害怕、自然、開心、悲傷和驚訝。人臉表情識別目前主要的應(yīng)用領(lǐng)域包括人機交互、安保、醫(yī)療、通信、安全駕駛等等。
隨著人臉表情識別應(yīng)用的領(lǐng)域不斷增加,人臉表情識別算法也在不斷發(fā)展,傳統(tǒng)的人臉表情識別的算法有:基于幾何特征的主動形狀模型(ASM),活動外觀模型(AAM)與尺度不變換特征轉(zhuǎn)換;基于整體統(tǒng)計特征的主成分分析法(PCA),獨立成分分析法(ICA);基于頻率特征的Gabor小波變換法;基于運動特征的光流法等[3]。由于傳統(tǒng)的特征提取方法容易受到圖像的背景、光照強度等噪聲的影響,所以其對于特征的提取方法復(fù)雜且需要單獨的分類方法進行分類,并且往往最終的識別準確率較低。相較于傳統(tǒng)的方法,深度學(xué)習(xí)方法往往對圖像有著較好的特征提取能力,避免了傳統(tǒng)的人臉表情識別算法中繁瑣的人工提取特征的步驟。深度學(xué)習(xí)當中由于卷積神經(jīng)網(wǎng)絡(luò)(CNN)的模型簡單高效,成為深度學(xué)習(xí)的模型的代表,被廣泛應(yīng)用于深度學(xué)習(xí)相關(guān)的領(lǐng)域并成功成為圖像分類領(lǐng)域的核心算法模型。
最經(jīng)典的CNN 模型是由Yann LeCun 提出的LeNet-5[4]網(wǎng)絡(luò),擁有標準的卷積層與池化層相互堆疊的結(jié)構(gòu),基于這種基本的網(wǎng)絡(luò)結(jié)構(gòu),研究人員又在后續(xù)的研究中提出了VGGNet[5]、ResNet[6]、MobileNet[7]、DenseNet[8]等性能更加高效的網(wǎng)絡(luò)模型結(jié)構(gòu),這些模型有的是通過增加模型的深度和寬度來獲得更高的性能,有的則通過提高模型參數(shù)的利用率來獲得更為高效的性能。
隨著卷積神經(jīng)網(wǎng)絡(luò)模型的不斷發(fā)展,為了提取更為復(fù)雜的特征,獲得更高的預(yù)測準確率,網(wǎng)絡(luò)模型的深度不斷加深,參數(shù)數(shù)量大大增加,從而使網(wǎng)絡(luò)結(jié)構(gòu)龐大復(fù)雜,同時對模型的移植應(yīng)用也形成了巨大的挑戰(zhàn)。由于網(wǎng)絡(luò)的深度對于學(xué)習(xí)表達能力更強的特征至關(guān)重要,因此如何在保持一定的網(wǎng)絡(luò)深度和測試精度的同時,有效降低網(wǎng)絡(luò)的參數(shù)數(shù)量就成為一個值得研究的方向。受到密集連接卷積網(wǎng)絡(luò)的啟發(fā),本文給出了一種基于輸入尺寸為48×48的單通道灰度圖片的密集連接卷積結(jié)構(gòu)的模型(M-DenseNet)。該模型在保持一定的網(wǎng)絡(luò)深度和較高的模型預(yù)測準確率的情況下,提高了網(wǎng)絡(luò)對于模型參數(shù)的利用率,大大降低了其運行時所需的參數(shù)數(shù)量。
卷積神經(jīng)網(wǎng)絡(luò)(CNN)如圖1所示由卷積層、池化層和全連接層組成,是深度學(xué)習(xí)領(lǐng)域圖像分類的核心模型。
圖1 卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)圖
卷積層對輸入執(zhí)行卷積,在訓(xùn)練過程中,選擇內(nèi)核和偏置參數(shù)以優(yōu)化網(wǎng)絡(luò)輸出的誤差函數(shù)。池化層對輸入圖像應(yīng)用非線性變換,以減少操作后的神經(jīng)元數(shù)量。在兩個連續(xù)的卷積層之間放置一個池化層是很常見的,該操作還可以減小單元尺寸、減少計算負荷以及防止過度擬合等問題。全連接層與經(jīng)典的神經(jīng)網(wǎng)絡(luò)層完全相同,其中層中的所有神經(jīng)元都連接到后續(xù)層中的所有神經(jīng)元,神經(jīng)元由它們的輸入總和乘以激活函數(shù)傳遞的權(quán)重而觸發(fā)。
為了改善模型的性能使模型能夠適應(yīng)不同的需求,最直接的方法就是加大網(wǎng)絡(luò)模型的深度,以下介紹幾種經(jīng)典的深度卷積神經(jīng)網(wǎng)絡(luò)。
2.2.1 VGGNet
由牛津大學(xué)視覺組于2014年所提出的VGGNet,這是一種專注于構(gòu)建卷積層的簡單網(wǎng)絡(luò),它提出了由兩個3×3的小濾波器彼此堆疊模仿獲得一個5×5的大濾波器的感受野,而不再是像以往的CNN模型一樣使用單個更大的濾波器。經(jīng)過這樣的處理,模型參數(shù)大大降低了,并且模型的非線性表達能力獲得了提高。
2.2.2 ResNet
ResNet 網(wǎng)絡(luò)是一個模塊化的網(wǎng)絡(luò),借鑒了“HighWay”,添加了一條“捷徑”連接路徑。該網(wǎng)絡(luò)提出了一個殘差學(xué)習(xí)塊來減少網(wǎng)絡(luò)的訓(xùn)練,明確將層重新定義為參照層重新輸入的學(xué)習(xí)殘差函數(shù),而不是學(xué)習(xí)未引用的函數(shù),因此可以大大加深深度,提高準確度。
2.2.3 DenseNet
DenseNet網(wǎng)絡(luò)模仿了ResNet網(wǎng)絡(luò),同樣構(gòu)建了模塊化的網(wǎng)絡(luò)來進行學(xué)習(xí)。DenseNet 將這種模塊稱為密集塊(Dense Block),其核心思想是創(chuàng)建了一個跨層連接來連通網(wǎng)絡(luò)中的前后層。為了最大化網(wǎng)絡(luò)中所有層之間的信息流,DenseNet將網(wǎng)絡(luò)中的所有層兩兩進行了連接,使得網(wǎng)絡(luò)中每一層都接受它前面所有層的特征作為輸入,圖2 展示了這種模式。DenseNet結(jié)構(gòu)主要擁有以下兩個特性:1)一定程度上減輕在訓(xùn)練過程中梯度消散的問題。從圖2我們可以看出,在反向傳播時每一層都會接受其后所有層的梯度信號,所以不會隨著網(wǎng)絡(luò)深度的增加,出現(xiàn)靠近輸入層的梯度會變得越來越小的現(xiàn)象。2)由于大量的特征被復(fù)用,使得使用少量的濾波器就可以生成大量的特征,所需模型的規(guī)模也隨之減小。
圖2 一個四層密集塊(Dense Bolck)結(jié)構(gòu)
本文給出的網(wǎng)絡(luò)模型受到DenseNet網(wǎng)絡(luò)結(jié)構(gòu)的啟發(fā),在DenseNet的網(wǎng)絡(luò)的基礎(chǔ)上,結(jié)合人臉表情識別的特點以及所使用的數(shù)據(jù)集,對網(wǎng)絡(luò)進行了優(yōu)化,使其更加適合于人臉表情識別的應(yīng)用。DenseNet網(wǎng)絡(luò)由于其密集塊的設(shè)計理念,使得它能在每一個卷積層中都使用較少的濾波器,這樣網(wǎng)絡(luò)寬度收窄,需要的參數(shù)更少。由于網(wǎng)絡(luò)的每層都直接相互連接在一起,有效保證了特征信息和梯度在網(wǎng)絡(luò)中的傳播,極大地化解了網(wǎng)絡(luò)過深時出現(xiàn)的梯度消失問題。基于這種設(shè)計,模型能夠在提取表達能力更強的特征而加深網(wǎng)絡(luò)深度的同時,減少了參數(shù)的數(shù)量,從而加快運算速度。同時我們選擇Adam 優(yōu)化算法來代替原本的隨機梯度下降(SGD)算法。Adam 算法結(jié)合了Adagrad 算法中擅長于處理稀疏梯度和RMSprop 算法擅長于處理非平穩(wěn)目標的優(yōu)點,此外Adam 算法對于大數(shù)據(jù)集以及較深的網(wǎng)絡(luò)也往往有著更優(yōu)異的表現(xiàn)且它對于內(nèi)存的需求也較小,符合降低模型應(yīng)用成本的需求目標。該模型的網(wǎng)絡(luò)結(jié)構(gòu)如圖3所示,各層參數(shù)見表1所示。
圖3 改進的M-DenseNet網(wǎng)絡(luò)模型結(jié)構(gòu)
改進的M-DenseNet網(wǎng)絡(luò)模型中,總層數(shù)為52層,輸入圖像首先通過一個標準的卷積層(Conv),再通過3 個密集塊(Dense Block),相鄰兩個Dense Block 之間增加一個過渡層(Transition Layer),最后使用全局平均池化(Global Average Pooling)[9]來代替?zhèn)鹘y(tǒng)卷積神經(jīng)網(wǎng)絡(luò)的全連接層并使用softmax 激活函數(shù)對人臉面部表情圖像進行分類。Conv 就是傳統(tǒng)的卷積層,用來提取圖像的特征。表中的每一個Conv 都符合BN-ReLU-Conv的結(jié)構(gòu)要求。批量歸一化(BN)[10]調(diào)整了數(shù)據(jù)的分布,使得每一層的輸出歸一化為均值為0方差為1的分布,這樣就保證了梯度的有效性,減輕了對參數(shù)初始化的依賴,使得訓(xùn)練更為快速有效。線性整流函數(shù)(ReLU)[11]作為非線性激活函數(shù)可以減少計算量,緩解梯度消失,減少參數(shù)的相互依賴,緩解過擬合等問題。同時為了進一步防止過擬合,在每一個密集層(Dense Layer)后面都加上了丟棄單元(Dropout)[12]。我們給出的M-DenseNet網(wǎng)絡(luò)模型其增長率超參數(shù)K設(shè)置為12。Dense Block是由一系列Dense Layer連接而成,每一個Dense Layer 由一個1×1 的Conv 和一個3×3 的Conv 組成。過渡層由一個1×1 的Conv 和一個2×2 步長為2的平均池化(average pool)組成。
實驗采用的是Fer2013灰度表情數(shù)據(jù)集[13],F(xiàn)er2013數(shù)據(jù)集由35887 張人臉表情圖片組成,每張圖片均是大小為48×48像素的灰度圖像。一共有七種表情類型,分別對應(yīng)數(shù)字標簽0~6,如表2所示。
表2 表情對應(yīng)的數(shù)字標簽
我們使用所設(shè)計的M-DenseNet 網(wǎng)絡(luò)模型和LeNet-5、VGG-16、ResNet-50、MobileNet 以及DenseNet-121 諸多網(wǎng)絡(luò)模型分別對Fer2013數(shù)據(jù)集進行了比對測試。
從表3中可以看到,M-DenseNet網(wǎng)絡(luò)模型相對于其他網(wǎng)絡(luò)模型在有效降低了參數(shù)的同時,模型識別的準確率也有所提高。
表3 各模型準確率與參數(shù)數(shù)量表
M-DenseNet 模型是在DenseNet 模型的基礎(chǔ)上,降低了模型的深度和寬度,并在每一密集層(Dense Layer)后面添加一個臨時丟棄單元(Dropout)來防止過擬合,是專為人臉表情識別所設(shè)計的一種網(wǎng)絡(luò)結(jié)構(gòu)。
試驗中使用了Adam 優(yōu)化算法進行優(yōu)化,選擇批量大小(batch_size)為8進行訓(xùn)練,用softmax分類器進行分類。初始化學(xué)習(xí)率選擇為0.001,當學(xué)習(xí)輪數(shù)達到50輪時,將學(xué)習(xí)率為0.0001,丟棄率設(shè)置為0.2。
采用M-DenseNet 網(wǎng)絡(luò)模型的驗證集混淆矩陣如圖4 所示。
圖4 驗證集混淆矩陣
M-DenseNet 網(wǎng)絡(luò)模型的識別準確率為70.45%,略高于人工情況下對該數(shù)據(jù)集65%±5%的平均準確率,于其他模型相比,模型參數(shù)數(shù)量僅約為VGG-16 的1/50,ResNet 的1/80,MobileNet的1/11,識別準確率有著明顯的提高。
M-DenseNet 網(wǎng)絡(luò)參數(shù)的大幅度減少得益于密集連接卷積的優(yōu)秀設(shè)計理念,它不強調(diào)卷積的維度,更重視將每一次得到的特征圖進行復(fù)用,將每一層前一級的輸出作為當前的輸入以此來縮短前后層之間的連接,實現(xiàn)最大化的信息流動,避免特征信息的丟失,成功解決了網(wǎng)絡(luò)深度加深時出現(xiàn)的梯度消失問題。Dense Block的設(shè)計使得網(wǎng)絡(luò)能夠使用較少的濾波器就能獲得足夠多的特征參數(shù)而不是像傳統(tǒng)的卷積網(wǎng)絡(luò)一樣動輒使用成百上千的濾波器,從而達到有效降低網(wǎng)絡(luò)參數(shù)數(shù)量的目的。
為了實現(xiàn)特征復(fù)用,密集連接卷積在跨層連接時選擇將特征維度串聯(lián)起來,而不是像傳統(tǒng)卷積那樣將特征元素相加。由于不需要進行特征元素的相加,所以不需要在每個單元模塊的最后加一個1×1 的卷積來將特征層數(shù)升維到和輸入的特征維度一致。密集連接卷積一方面通過對模型深度的加深,獲得表達能力更強的特征,另一方面通過對特征的不斷復(fù)用,使得少量的濾波器就可以生成大量的特征,這樣模型就可以做到在整體參數(shù)數(shù)量較少的情況下,獲得更高的準確率,使得運算時間也大大縮短。
對于人臉表情識別,不應(yīng)片面追求預(yù)測的準確率,還應(yīng)當綜合考慮在實際應(yīng)用中的可行性。一般而言,神經(jīng)網(wǎng)絡(luò)的規(guī)模越大、深度越深往往會帶來更高的模型預(yù)測準確率,但是隨著網(wǎng)絡(luò)層數(shù)的加深,網(wǎng)絡(luò)規(guī)模的擴大,網(wǎng)絡(luò)中的參數(shù)往往會急劇增加,因此如何在加深網(wǎng)絡(luò)層次,保持較好的模型預(yù)測準確率的同時還能夠保持較低的參數(shù)數(shù)量就成為一個亟待解決的文題。本文給出的M-DenseNet模型在保持相對較深的網(wǎng)絡(luò)深度(52 層)及較高預(yù)測準確率的同時有效減少了模型的參數(shù)數(shù)量,大大提高了模型的參數(shù)利用率。