雷建云,馬威,夏夢,鄭祿,田望
(中南民族大學(xué) 計算機科學(xué)學(xué)院 &湖北省制造企業(yè)智能管理工程技術(shù)研究中心,武漢 430074)
近幾年來,基于卷積神經(jīng)網(wǎng)絡(luò)和循環(huán)神經(jīng)網(wǎng)路的深度神經(jīng)網(wǎng)絡(luò)模型在計算機視覺和自然語言處理等領(lǐng)域應(yīng)用廣泛.自第一個大規(guī)模的深度神經(jīng)網(wǎng)絡(luò)AlexNet[1]誕生以后,各種骨干架構(gòu)如VGGNet[2]、GoogleNet[3]、MobileNet[4]、ResNet[5]和DenseNet[6]等相繼被提出,網(wǎng)絡(luò)的性能不斷提升,網(wǎng)絡(luò)規(guī)模越來越大.情緒識別的難點之一,同一個人臉有不同的表情,對應(yīng)不同的情緒分類,不同人臉有相同的表情,對應(yīng)相同的情緒分類,因此,人臉情緒識別的分類任務(wù)有類間差異小,類內(nèi)差異大的挑戰(zhàn).
傳統(tǒng)人臉情緒識別方法依賴手工設(shè)計特征或者淺層學(xué)習(xí),如局部二值模式(local binary pattern,LBP)[7]、三正交平面的局部二值模式(local binary pattern from three orthogonal planes,LBP-TOP)[8]、非負矩陣分解(nonnegative matrix factorization,NMF)[9]和稀疏學(xué)習(xí)[10].2013 年起,表情識別比賽如FER2013(the Facial Expression Recognition 2013)[11]和EmotiW[12]從具有挑戰(zhàn)性的真實世界場景中收集了相對充足的訓(xùn)練樣本,促進了人臉表情識別從實驗室受控環(huán)境到自然環(huán)境下的轉(zhuǎn)換(表1).
表1 常見人臉表情數(shù)據(jù)集Tab.1 Common facial expression dataset
由于靜態(tài)數(shù)據(jù)處理的便利性及其可得性,目前大量研究是基于不考慮時間信息的靜態(tài)圖像進行.直接在相對較小的人臉表情數(shù)據(jù)庫上進行深度網(wǎng)絡(luò)的訓(xùn)練勢必會導(dǎo)致過擬合問題.為了緩解這一問題,許多相關(guān)研究采用額外的輔助數(shù)據(jù)來從頭預(yù)訓(xùn)練并自建網(wǎng)絡(luò),或者直接基于有效的預(yù)訓(xùn)練網(wǎng)絡(luò),例如AlexNet、VGG、ResNet、Mobelinet 和GoogLeNet 進 行微調(diào).
大型人臉識別數(shù)據(jù)庫CASIA WebFace、CFW 和FaceScrub dataset,以及相對較大的人臉表情數(shù)據(jù)庫如FER2013 和TFD 是較為合適的輔助訓(xùn)練數(shù)據(jù).Kaya 等人[13](2017)指出在人臉數(shù)據(jù)上進行預(yù)訓(xùn)練的VGG-Face 模型比在預(yù)訓(xùn)練的ImageNet 模型更加適合于人臉表情識別任務(wù).Knyazev 等[14](2017)也指出在大型的人臉數(shù)據(jù)庫上進行預(yù)訓(xùn)練,然后進一步在額外的表情數(shù)據(jù)庫上進行微調(diào),能夠有效地提高表情識別率.
卷積神經(jīng)網(wǎng)絡(luò)是深度學(xué)習(xí)領(lǐng)域中舉足輕重的網(wǎng)絡(luò)框架,尤其在計算機視覺領(lǐng)域更是一枝獨秀.CNN從ZFNet到VGG、GoogLeNet再到Resnet和最近的DenseNet,網(wǎng)絡(luò)越來越深,架構(gòu)越來越復(fù)雜,解決梯度傳播時梯度消失的方法也越來越巧妙.稠密網(wǎng)絡(luò)架構(gòu)DenseNet 高速公路網(wǎng)絡(luò)是第一批提供有效訓(xùn)練超過100 層的端到端網(wǎng)絡(luò)的架構(gòu)之一.使用旁通路徑和澆注單元,公路網(wǎng)絡(luò)與數(shù)百層可以毫無困難地優(yōu)化.旁路路徑被認(rèn)為是簡化這些深度網(wǎng)絡(luò)訓(xùn)練的關(guān)鍵因素.ResNet 進一步支持這一點,其中使用純身份映射作為旁路路徑.ResNet 在許多具有挑戰(zhàn)性的圖像識別、定位和檢測任務(wù)上取得了令人印象深刻的、破紀(jì)錄的性能,如ImageNet和COCO 目標(biāo)檢測.最近,隨機深度被提出作為一種成功訓(xùn)練1202層ResNet的方法.隨機深度通過在訓(xùn)練過程中隨機丟層來改進深度殘差網(wǎng)絡(luò)的訓(xùn)練.這表明并非所有的層都是需要的,并強調(diào)了在深層(殘差)網(wǎng)絡(luò)中存在大量的冗余[6].
DenseNet 是一種網(wǎng)絡(luò)架構(gòu),目的是訓(xùn)練更深的神經(jīng)網(wǎng)絡(luò).由于單獨的DenseNet 應(yīng)用到人臉情緒識別時沒有結(jié)合提取情緒特征,導(dǎo)致識別精度不高;DenseNet 網(wǎng)絡(luò)通過通道上的融合,會減輕深度特征的權(quán)重,更多提取到的是淺層特征.本文針對人臉情緒識別的特點,在DenseNet 中結(jié)合中心損失函數(shù),提高情緒識別精度;使用Adam 隨機梯度優(yōu)化器加快訓(xùn)練模型收斂;結(jié)合多尺度空洞卷積模塊,分別用5、8 和12 的膨脹提權(quán)不同尺度圖像特征;使用DenseNet-BC 的增長率k=12,24,32 分別進行情緒特征提取進行研究.常見DenseNet 網(wǎng)絡(luò)結(jié)構(gòu)如表2所示.
表2 DenseNet網(wǎng)絡(luò)架構(gòu) k=32,卷積=BN-ReLu-ConvTab.2 DenseNet Network structure k=32 conv=BN-ReLu-Conv
針對原始的稠密網(wǎng)絡(luò)不能有效提取情緒特征,多尺度特征提取不充分,且稠密網(wǎng)絡(luò)內(nèi)存占用高的問題.本文提出多尺度卷積提取多尺度特征,減少稠密網(wǎng)絡(luò)內(nèi)存占用,同時結(jié)合改進的稠密網(wǎng)絡(luò)模型,使用中心損失函數(shù),加強模型對表情分類損失的學(xué)習(xí).網(wǎng)絡(luò)由兩部分組成,第一部分為多尺度空洞卷積模塊,第二部分為結(jié)合Adam 優(yōu)化器和中心損失函數(shù)的稠密網(wǎng)絡(luò)DenseNet169.網(wǎng)絡(luò)結(jié)構(gòu)如圖1.
圖1 網(wǎng)絡(luò)結(jié)構(gòu)圖Fig.1 Network structure diagram
對于人臉情緒識別,不同的人臉都由五官組成,相同的人臉受不同的外界條件影響,能表達不同的情緒,面部肌肉做不同程度的收縮與舒張,因此人臉情緒識別需要模型重視深層的圖像特征,針對類內(nèi)差異大類間相似度高的問題,在稠密卷積網(wǎng)絡(luò)模型中如何提高不同尺度特征的表達能力也是解決該問題的有效方法,V-J 人臉檢測算法采用多尺度融合的方式提高模型的精度,Inception 網(wǎng)絡(luò)則是通過不同大小的卷積核來控制感受野,MTCNN[15]人臉檢測算法采用了多尺度模型集成以提高分類任務(wù)模型的性能.除了不同大小的卷積核控制感受野外,在圖像分割網(wǎng)絡(luò)Deeplab V3[16]和目標(biāo)檢測網(wǎng)絡(luò)Trident Networks[17]中使用空洞卷積來控制感受野.還有方法是通過直接使用不同大小的池化操作來控制感受野,這個方法被PSPNet[18]網(wǎng)絡(luò)所采用.本文提出結(jié)合多尺度空洞卷積的稠密網(wǎng)絡(luò)形成更緊湊和位置不變的特征向量,提高不同尺度卷積特征表達能力,從而有效解決類內(nèi)差異大和類間相似度小導(dǎo)致人臉情緒識別分類性能問題.
空洞卷積也叫擴張卷積或者膨脹卷積,在卷積核中插入空洞,起到擴大感受野從而進行多尺度卷積,多尺度卷積在情緒特征識別任務(wù)中對于識別準(zhǔn)確率相當(dāng)重要,廣泛應(yīng)用在語義分割等任務(wù)中.在深度網(wǎng)絡(luò)中為了增加感受野且降低計算量,采用降采樣增加感受野的方法,但空間分辨率會降低,為了能不丟失分辨率,且仍能擴大感受野,可以使用空洞卷積,在分割任務(wù)中十分有用,一方面感受野大了可以檢測分割大目標(biāo),另一方面分辨率高了可以精確定位目標(biāo),捕捉多尺度上下文信息.空洞卷積有一個參數(shù)可以設(shè)置,空洞率,具體含義就是在卷積核中填充一定數(shù)量的0,當(dāng)設(shè)置不同的空洞率,感受野就會不一樣,即獲得了多尺度信息.
該模塊包含四個分支,每個分支都由3 個batchnorm、relu 和conv 組成,中間的卷積為3×3 的空洞卷積,三個空洞卷積的膨脹分別為5、8和12.第4 個分支在原始圖像的基礎(chǔ)上,為了和前三個分支的特征圖像尺寸一致對邊緣做了一定的裁剪且使用3×3 卷積計算使圖像變成40×40×18,最后在四個分支上進行通道上的融合,形成40×40×54的特征圖,作為稠密網(wǎng)絡(luò)的輸入.通道融合如公式(1).
x1、x2 和x3 分別為不同膨脹的空洞卷積分支,x4是原始圖像分支,cat表示對這四個分支在通道上面進行融合.
DenseNet 網(wǎng)絡(luò)由稠密塊、過渡層交替連接組成.在稠密層中,任何層直接連接到所有后續(xù)層,加強特征傳遞,因此后面所有層都會收到前面所有層的特征圖,即X0、X1、X2、…、Xμ-1做為輸入,如公式(2):
2.3.1 Adam優(yōu)化器
Adam 是一種隨機梯度優(yōu)化方法,占用很少的內(nèi)存,只需要一階梯度.該方法根據(jù)梯度的第一和第二矩估計值計算不同參數(shù)的學(xué)習(xí)率.該優(yōu)化器結(jié)合了比較流行的兩種方法AdaGrad和RMSProp方法分別在稀疏梯度和非平穩(wěn)設(shè)置梯度的優(yōu)點,該優(yōu)化器有如下優(yōu)點:參數(shù)更新幅度對于重新縮放梯度是不變的,其步長由步長超參數(shù)限制,不需要固定的目標(biāo).
2.3.2 中心損失函數(shù)
中心損失函數(shù)針對softmax 損失函數(shù)類內(nèi)間距太大的問題,對每一個類都維護一個類中心,而后在特征層如果該樣本離類中心太遠就要懲罰,也就是所謂的中心損失,每一個特征需要通過一個好的網(wǎng)絡(luò)達到特征層獲得類中心,計算后所有樣本的特征平均值為類中心,而好的網(wǎng)絡(luò)需要在類中心加入的情況下才能得到.沒法直接獲得類中心,所以將其放到網(wǎng)絡(luò)里自己生成,在每一個batch里更新類中心,即隨機初始化類中心,每一個batch 里計算當(dāng)前數(shù)據(jù)與center 的距離,而后將這個梯度形式的距離加到center上.類似于參數(shù)修正.同樣的類似于梯度下降法,增加一個度量,使得類中心不會抖動.
對提出的網(wǎng)絡(luò)模型進行實驗驗證,使用PyTorch深度學(xué)習(xí)框架,在DenseNet 網(wǎng)絡(luò)前面加入多尺度空洞卷積,同時在通道維度上結(jié)合原始輸入的圖像,在稠密網(wǎng)絡(luò)中使用softmax+center 損失函數(shù)減少同類之間的距離,增加不同類的距離.使用Adam 優(yōu)化器進行梯度反向傳播.具體分為實驗環(huán)境和實驗細節(jié)、數(shù)據(jù)集預(yù)處理、多尺度特征提取實驗和對比實驗.
本實驗在Ubuntu 18.04.2 LTS操作系統(tǒng)環(huán)境下,基于PyTorch深度學(xué)習(xí)框架構(gòu)建.實驗環(huán)境見表3.
表3 實驗環(huán)境Tab.3 Experimental environment
3.1.2 實驗過程
輸入48×48×3的圖像經(jīng)過多尺度空洞卷積處理之后得到46×46×54 的人臉圖像,批量大小為256,結(jié)合權(quán)值衰減參數(shù)為0.00001,學(xué)習(xí)率參數(shù)為1e-1 的Adam 算法,使用DenseNet-BC169k=24 的稠密網(wǎng)絡(luò)訓(xùn)練300 輪.分類全連接層包含8 個神經(jīng)元輸出實現(xiàn)8分類,8個輸出中最大輸出的序號對應(yīng)情緒狀態(tài).具體對應(yīng)關(guān)系如下:生氣-0,輕蔑-1,厭惡-2,害怕-3,高興-4,中性-5,傷心-6,驚訝-7.
本文所采用到的實驗數(shù)據(jù)集為網(wǎng)上公開數(shù)據(jù)集FER2013+,數(shù)據(jù)集由48×48×1 的3 萬張圖片組成.數(shù)據(jù)集分為3 部分,分別是訓(xùn)練集、驗證集和測試集,其中公開測試集用于訓(xùn)練過程中的驗證,私有測試集用于訓(xùn)練最后的測試.使用OpenCV 對原始數(shù)據(jù)集進行尺寸和通道的調(diào)準(zhǔn),將尺寸通過雙線性插值法調(diào)整到60×60的三通道圖片.
卷積神經(jīng)網(wǎng)絡(luò)在分類問題中,對于數(shù)據(jù)集的不同類的樣本量要求均衡,本文借助數(shù)據(jù)增強,用水平翻轉(zhuǎn)、垂直翻轉(zhuǎn)、旋轉(zhuǎn)45°、旋轉(zhuǎn)90°、高斯模糊添加噪音、仿射變換的方法,訓(xùn)練集中各類樣本數(shù)量變?yōu)?4000 張,測試集各類樣本數(shù)量變?yōu)?000 張.預(yù)處理前后數(shù)據(jù)集見表4~5和圖2.
圖2 訓(xùn)練集預(yù)處理前后對比圖Fig.2 Comparison of training set before and after preprocessing
在實驗過程中,分別使用不同空洞率的三分支結(jié)構(gòu)網(wǎng)絡(luò)模型進行訓(xùn)練,分別使用了5、8 和12 的膨脹進行多尺度特征的提取的資源消耗和識別性能最佳,太大的空洞卷積無法提取細粒度信息,太小的空洞卷積無法提取大尺度信息.本實驗為了保證通道融合上面尺寸的統(tǒng)一,使用公式(3)和公式(4)對圖像的填充和裁剪進行計算,Win和Hin表示輸入圖像尺寸,padding 表示填充數(shù)組,dilation 表示膨脹數(shù)組kernel_size,描述卷積核大小數(shù)組,stride描述卷積步長數(shù)組.為了證明多尺度空洞卷積模塊的有效性,將在改進的DenseNet 模塊前,分別添加多尺度模塊和不添加多尺度模塊進行訓(xùn)練學(xué)習(xí)情緒特征,實驗結(jié)果對比如表6 所示,其中訓(xùn)練時間是指batch size為128的單批訓(xùn)練耗時.
表6 多尺度提取模塊對比Tab.6 Comparison of multi-scale extraction modules
為了說明本文模型的優(yōu)越性,分別將DenseNet-BC 模型和ResNet 模型進行算法復(fù)雜度對比實驗,實驗數(shù)據(jù)如表7.本文提出改進的稠密網(wǎng)絡(luò)模型的模型參數(shù)量明顯少于其他的旁路網(wǎng)絡(luò).表7 是在FER2013+的8 分類網(wǎng)絡(luò)條件下進行實驗,時間是指batch size為128的單批訓(xùn)練耗時.
表7 模型參數(shù)對比Tab.7 Model parameter comparison
3.5.1 超參數(shù)調(diào)優(yōu)實驗
在預(yù)處理后的FER2013+數(shù)據(jù)集上研究不同超參數(shù)對模型收斂速度和情緒分類正確率的影響.分別從DenseNet-BC 網(wǎng)絡(luò)增長率k,DenseNet-BC 層數(shù)c,權(quán)重衰減d三個方面對模型進行訓(xùn)練.實驗結(jié)果如表8 所示,結(jié)果表明k=24,c=169,d=1e-5時網(wǎng)絡(luò)性能最好,收斂最快.更深的網(wǎng)絡(luò)會在數(shù)據(jù)集上產(chǎn)生過擬合,k值太大會通過通道融合的方式加強淺層特征對深層特征的干擾,導(dǎo)致模型提取深層情緒特征比例較少,不利于人臉情緒識別.
表8 超參數(shù)實驗對比Tab.8 Comparison of superparametric experiments
圖3 為不同模塊的識別性能對比.中心損失函數(shù)和softmax 損失相結(jié)合,學(xué)習(xí)類間的差異和類內(nèi)的共同特征,有利于網(wǎng)絡(luò)模型對情緒特征的學(xué)習(xí),結(jié)合在深度學(xué)習(xí)中表現(xiàn)優(yōu)秀的Adam 優(yōu)化器和多尺度空洞卷積,最終模型的收斂速度快,收斂效果好.這說明,多尺度特征和中心損失函數(shù)對情緒識別的精度有幫助,Adam優(yōu)化器能幫助模型加速收斂.
圖3 識別效果Fig.3 Recognition effect
3.5.2 表情識別性能
本文方法在常用的面部情緒數(shù)據(jù)集FER2013+上進行十折交叉驗證,實驗結(jié)果如表9 和圖4、5 所示,針對損失函數(shù)、Adam 優(yōu)化器和多尺度空洞卷積對實驗結(jié)果的影響見圖4 所示.根據(jù)實驗數(shù)據(jù)分析發(fā)現(xiàn),都引入旁路連接的DenseNet 和ResNet,明顯能加快模型的收斂速度和取得更好的收斂效果,旁路連接有利于提取情緒特征和情緒特征復(fù)用;注重寬度的GoogLeNet 收斂速度不如有旁路連接的網(wǎng)絡(luò)模型,但也取得了不錯的收斂效果;不過VGG 實驗效果較差,說明淺層網(wǎng)絡(luò)很難提取到有用的情緒特征.
圖4 不同模快性能對比Fig.4 Performance comparison of different models
圖5 不同網(wǎng)絡(luò)模型性能對比Fig.5 Performance comparison of different network models
表9 不同網(wǎng)絡(luò)模型性能對比Tab.9 Performance comparison of different network models
本文在DenseNet 神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)進行表情識別性能的驗證,結(jié)果表明,使用更深層的DenseNet 網(wǎng)絡(luò)容易在FER2013 數(shù)據(jù)集上產(chǎn)生過擬合,大模型需要訓(xùn)練的參數(shù)過多,數(shù)據(jù)集數(shù)量過少導(dǎo)致的原因,本文采用基于靜態(tài)圖像的單幅圖像識別,相比于圖像的視頻序列方法,單幅圖像方法的計算量更小,關(guān)于模型的正確率沒有明顯差別.靜態(tài)圖像方法中DeRL 方法[19]和PPDN 方法[20]使用了中性表情圖像作為其他情緒的參考,因此取得了比其他方法更好的性能.劉露露[21]將4 個尺度特征融合放到模型的后端,DenseNet 模型中將多尺度特征放到模型的前端,顯著加強多尺度特征在模型中的作用,提高表情特征的重要性,減少無用特征的干擾,實現(xiàn)多尺度情緒特征提取.本文的方法使用稠密網(wǎng)絡(luò)DenseNet-BC169,模型的參數(shù)量為1855130,相比其他的輕量級模型,參數(shù)量較少,但模型準(zhǔn)確率并沒有下降,在預(yù)處理后的FER2013+上面訓(xùn)練300輪在公共測試集上達到93.99%的正確率.本文方法相比于其他靜態(tài)圖像方法有更小的計算量和更好的情緒識別性能.
針對人臉情緒識別問題提出基于DenseNet-BC169 的面部表情識別網(wǎng)絡(luò)模型,該網(wǎng)絡(luò)模型由多尺度空洞卷積模塊和稠密網(wǎng)絡(luò)模塊兩部分組成.通道多尺度空洞卷積模塊關(guān)注不同尺度特征的重要性,加強表情特征的作用,減少無用特征的干擾,實現(xiàn)對多尺度特征的提取.DenseNet 模塊使用旁路加強特征傳遞,實現(xiàn)對顯著表情區(qū)域的關(guān)注.該網(wǎng)絡(luò)通過通道融合的方式,以較小的計算開銷實現(xiàn)了對特征圖的面部表情識別.此外,在DenseNet 中結(jié)合Adam 優(yōu)化器加快網(wǎng)絡(luò)收斂速度,中心損失函數(shù)得到更好收斂效果.實驗結(jié)果表明,本文方法對預(yù)處理后的FER2013+表情數(shù)據(jù)集的面部情緒識別準(zhǔn)確率能達到93.99%.