李 嬌 王彬彬 周心荊 冉 峰*
(上海大學微電子研究與開發中心 上海 200000) 2(上海大學新型顯示技術及應用集成教育部重點實驗室 上海 200000)
人臉表情包含著豐富的情感信息,能夠直觀地反映喜怒哀樂等各種情緒。因此,表情識別可作為情感研究的一個重要方向,是人機交互的重要組成部分[1],在醫學、教育、商業營銷等領域都有著廣泛的應用。
人臉表情識別主要有三個步驟:人臉檢測、特征提取及表情分類。其中,特征提取在表情識別任務中起到核心作用,特征提取方法主要有基于傳統手工設計的特征提取和基于深度學習的特征提取。
傳統手工特征提取方法,如局部二值模式(Local Binary Pattern,LBP)[2]、尺度不變特征變換(Scale Invariant Feature Transform,SIFT)[3]、定向梯度直方圖(Histogram of Oriented Gradients,HOG)[4]等,這些方法較為復雜,且不易提取圖片的高層次特征。
隨著技術的快速發展,越來越多的深度神經網絡不斷涌現,例如AlexNet[5]、VGG[6]和ResNet[7]等。這些網絡被廣泛應用于圖像、語音等各個領域,在人臉表情識別任務上,也取得了較好的效果。但隨著深度神經網絡模型的不斷發展,它的弊端也逐漸凸顯。不斷加深、加寬的模型,使得模型參數龐大化、模型計算復雜化,這些都不利于模型在移動端和嵌入式設備中的應用。
基于以上背景,本文提出一種新型網絡結構EM_VoVNet。該網絡基于VoVNet[8],設計了新的特征提取框架,改變輸入尺寸大小為44×44×3,大大減少了模型參數和計算量。采用組合池化的思想,在淺層特征提取時組合了3×3的卷積特征和池化特征的兩路特征,豐富了淺層特征圖的學習。另外,還在模塊內引入了注意力機制,增強不同通道間的特征學習。最終實驗證明,設計的EM_VoVNet具有較好的輕量級特性和良好的表情識別率,有利于模型進一步在低內存資源的設備上實現實時表情識別。
VoVNet由DenseNet密集網絡發展而來。Dense Block結構如圖1所示。該模塊通過逐次卷積,將每層神經網絡的輸出密集連接到后面的每一層卷積作為輸入,大大減少了參數模型。由于聚合了不同層感受野的中間特征,該網絡在物體檢測任務上取得了良好的效果。但另一方面,由于密集連接的聚合作用,該網絡模塊的輸入通道數不斷增加,而輸出通道數固定,使得其存在高內存訪問成本(Memory Access Cost,MAC)和高能耗的問題,導致模型的推理速度慢。且每個層對之前層的聚合學習、重復利用,會導致中間層的特征信息對最后分類層的提供的有用信息少,造成中間層的特征冗余。

圖1 Dense Block結構
在ShuffleNetV2[9]論文中,給出了MAC的計算方式,如下:
MAC=hw(ci+co)+k2cico
(1)
式中,k、h、w、ci、co分別表示卷積核的大小、特征圖的高、特征圖的寬、輸入通道數和輸出通道數。卷積層的計算量為B=k2hwcico,若固定B值,則有:
(2)
由式(2)可知,當ci=co時,MAC取得最小值,內存訪問成本最低。由此,VoVNet模型中提出了OSA(One Shot Aggregation)模塊,如圖2所示。OSA模塊設定了模塊內的卷積具有相同的輸出通道數。這使得GPU可以進行高效并行計算,且達到卷積輸出、輸入通道數相等,從而降低內存訪問成本以及能耗。另外,它只在每個卷積模塊的最后,進行特征圖融合,減少了中間層的冗余特征。

圖2 OSA模塊結構
VoVNet主要由OSA模塊組成,有三種不同方案的構造。其中,VoVNet-27s包含的OSA模塊數最少,相比另外兩個模型更具有輕量級特性、參數計算量少、內存資源要求低的優點,因此本文采用該模型進行改造來完成輕量化表情識別網絡的搭建。
VoVNet-27s的具體結構如表1所示。其中:c0表示淺層卷積輸出通道數;c1表示OSA模塊內卷積核輸出通道數;n表示模塊內的3×3卷積次數;Concat&1×1表示對模塊內的所有輸出特征圖進行融合,并用1×1卷積進行降維,最后輸出的卷積核通道數為c2。

表1 VoVNet-27s的網絡結構
VoVNet應用于目標檢測分類任務,需要尋找目標在圖像中的位置,再對目標進行分類,因此圖像往往具有較大的輸入尺寸為224×224×3。而表情識別無須檢測目標位置,只需實現對網絡輸入的人臉圖像進行表情分類。因此,實驗設置圖片和網絡模型的輸入尺寸為44×44×3,以此來減少網絡模型參數和計算量。
表2為改進前后的低層次特征提取模塊。可以看出,原模型VoVNet的淺層特征提取結構由三個級聯的3×3卷積組成,且其卷積核通道數分別設置為64、64、128。對于改進后模型44×44×3的輸入設計,這一特征提取模塊設計的參數過多,容易導致實驗出現過擬合現象,即在訓練時,模型表現出高識別準確率,但在測試時,模型對新數據的預測能力差,識別準確率低,缺少好的泛化能力。

表2 低層次的特征提取
為了提高模型的泛化能力,本文主要采用降低淺層特征層提取維度的方法,重新設計了淺層特征提取的Stem模塊,如圖3所示。該模塊首先通過1×1卷積進行通道擴充,將特征層數目從3層增加至32層,這有利于后續模型進行更充分的特征提取。受PeleeNet[10]設計模塊的啟發,本文設計了兩路的特征提取,與組合池化(同時利用最大值池化與均值池化兩種的優勢而引申的一種池化策略)相似,這兩路分別為最大池化和3×3卷積,該方法通過從不同途徑提取淺層卷積層特征,能夠增強特征層的表達能力,且改進的Stem模塊比原模塊具有更少的計算量。

圖3 Stem Block
通道注意力機制在改善神經網絡性能方面發揮著巨大的潛力,比如SENet[11]注意力機制通過考慮通道間的相關性,對每個通道進行自動學習,獲得每個通道的重要程度,以此來增強重要特征圖的表達能力;又比如CBAM[12]注意力機制,它在SENet關注通道特征的基礎上增加了對空間特征圖的關注和權重分配,進一步提高重要特征圖的表達能力。然而還有很多方法比如AA-Net[13]、GSoP-Net[14]設計了更復雜的注意模塊來獲取網絡高性能的特征表達,但在另一方面也增加了模型整體的復雜性,增加了卷積計算的負擔。而注意力機制ECA模塊[15]是一種輕量級的注意模塊,它只用參數k,就可以為深度學習模型獲取較好的性能增益。因此,為了增強重要特征的表達能力,同時兼顧構建輕量化模型為目的,本文引入參數量較少的輕量級注意模塊ECA,其結構如圖4所示。
圖4中,X∈Rh×w×c為注意力模塊的輸入特征圖,h、w、c分別是特征圖的高度、寬度和通道數。X先經過GAP(全局平均池化)得到1×1×C聚合特征向量,再考慮每個通道和它k個鄰居的關系來捕獲本地跨通道交互,主要是由通過內核大小為k的快速一維卷積實現。然后,用Sigmoid函數對1×1×C的特征向量進行非線性化學習,生成注意力權重Wx,最后將Wx和X的對應元素進行相乘得到新的特征圖χ,主要公式如下:
(3)
式中:Wx∈R1×1×C是生成的通道注意力權重;C1D表示一維卷積;GAP是全局平均池化函數;k表示一維卷積的卷積核大小;σ為Sigmoid激活函數;?表示對應元素的點乘運算;χ∈Rh×w×c為融合后的輸出特征圖。
由于使用1D卷積來捕獲局部的跨通道交互,參數k決定了局部跨通道信道交互的覆蓋范圍,不同的通道數和不同的CNN架構的卷積塊可能會有所不同。k與C的映射關系如下:
(4)
本實驗設置γ=2,b=1。并且將ECA模塊添加在OSA模塊的最后一層,即對通道降維后的特征圖進行通道注意力權重的提取和分配,具體模型如圖5所示。

圖5 增加ECA注意力模塊的OSA模塊
本文對EM_VoVNet網絡進行搭建,具體結構如表3所示。EM_VoVNet先設有1個Stem block,對輸入圖像進行卷積和池化兩路并行的操作,豐富神經網絡對淺層特征圖的學習。然后將輸出特征圖送入3個OSA模塊和下采樣操作交替的神經網絡,依次進行特征圖采樣和空間降維。最后通過自適應平均池化,以及全連接線性輸出進行七種表情分類。

表3 EM_VoVNet網絡表
在Windows平臺下基于PyTorch框架,對本文所提出的網絡進行搭建,計算機硬件配置為Intel core i7-7700HQ(主頻2.8 GHz)、內存8 GB、NVIDIA GeForce GTX 1050(2 GB顯存)。軟件平臺為Python 3.7、NVIDIA CUDA 9.2、cuDNN庫。
本文采用常用的FER2013[16]和RAF-DB[17]兩個公共數據集進行實驗。
1) FER2013 數據集。FER2013 數據集最初是 Kaggle 團隊從互聯網收集的視頻中截獲的面部表情圖像,被用作表情識別挑戰。該數據集包含35 887幅48×48像素的灰色圖像,其中訓練集(Training)28 708幅,公共驗證集(Public Test)和私有驗證集(Private Test)各3 589幅,具體表情分類數目如表4所示。圖片預處理首先將每幅圖像隨機裁剪成10幅44×44像素的圖像。最后,得到每個面部表情類別在所有10幅圖片上的平均得分。

表4 FER2013表情數據集分類
2) RAF-DB 數據集。真實世界情感人臉數據庫(RAF-DB)是Li等發布的人臉表情數據集。該數據集包含大約30 000幅面部圖像,這些圖像在被試的年齡、性別和種族、頭部姿勢、照明條件、遮擋等方面都有很大的差異。本文選用帶有7類基本表情的部分數據集,該基本數據集其中包括訓練數集12 271幅圖像和測試集3 068幅圖像。首先,我們將每幅圖像隨機裁剪成10幅44×44像素的圖像。最后,得到每個面部表情類別的在所有10幅圖片上的平均得分。
本文使用了Softmax損失函數和SGD優化技術,通過設置0.01的學習率和0.000 5的權重衰減,來實現損失函數的最優值求解。同時,總的迭代次數設置為300,當迭代次數大于80后,學習率就會每5代降低10%。
實驗主要分為兩個部分。第一部分,將改進前后的模型在FER2013和RAF-DB兩個數據集上進行訓練和測試,得到實驗對比和實驗分析;第二部分,在網絡輸入圖片尺寸相同的條件下,將EM_VoVNet與不同的主流輕量模型比較和分析。
3.3.1實驗一:EM_VoVNet的實驗效果和分析
為了驗證改進結構的有效性,實驗將EM_VoVNet在FER2013和RAF-DB兩個常用人臉表情識別數據集上進行訓練和測試。圖6和圖7分別展示了EM_VoVNet在FER2013數據集上訓練和測試時的準確率和損失值。

圖6 FER2013訓練集和測試集的準確率

圖7 FER2013訓練集和測試集的損失值
由圖6可知,訓練250代后,訓練集和測試集的準確率都趨于穩定,且測試集準確率達到了70.33%。由圖7可知,此時的訓練損失值也在0.4以下,趨近于0。
為了更清晰地展示EM_VoVNet在人臉表情識別任務中的表現,本文提供了網絡在數據集FER2013上測試得到的混淆矩陣,如圖8所示。其中,縱向標簽欄為真實表情標簽,橫向標簽欄為預測表情標簽。

圖8 FER2013混淆矩陣
從混淆矩陣中可以看出,高興的識別準確率最高,其次是驚訝,而其余五種表情的識別效果并不是很好。其主要原因是高興和驚訝相對于其他表情具有更明顯的表情特征。比如高興大多伴有咧嘴、瞳孔微縮,甚至瞇眼的特征,而驚訝則是大都具有張嘴成O形和睜大眼的特征。而其余五種表情,尤其是害怕的表情,會因為皺眉的動作和難過的表情具有類似的特征,由此標簽就容易被誤判,從而降低表情識別率。
實驗還將改進模型與原模型進行了實驗對比。從表5中可見,EM_VoVNet的模型參數僅為VoVNet的4.5%,且FLOPs僅為原模型的23.6%。在保證相近的模型處理速度下,EM_VoVNet相比VoVNet在FER2013數據集上識別準確率提高了1.62百分點,在RAF-DB數據集上識別準確率提高了1.17百分點,由此可見改進模型具有較優的輕量性和較高的識別率。

表5 EM_VoVNet與VoVNet的實驗結果對比
3.3.2實驗二:相同圖片尺寸輸入時不同主流輕量模型的實驗比較和分析
現有的主流輕量網絡有MobileNet、ShuffleNet、SqueezeNet等系列模型,為了驗證EM_VoVNet的高效性,本文以以上模型作為對比模型,設置每個結構具有相同大小的圖像輸入尺寸為44×44×3,然后在FER2013和RAF-DB兩個數據集上進行實驗,主要從模型參數、模型復雜度FLOPs、模型處理速度、測試集準確率4個方面進行計算和記錄。實驗所得結果如表6所示。

表6 相同圖片尺寸輸入的輕量模型在表情識別上的比較
表6中,SqueezeNet用的是1_1的版本,SqueeezeNeXt用的是1.0-SqNxt-23的結構,MobileNet和MobileNetV2使用1x 的擴張系數,MobileNetV3使用MobileNetV3-small模型。
從RAF-DB數據集上看測試效果,EM_VoVNet達到了最高的測試集準確率,且EM_VoVNet的參數值最小,非常有利于模型在低內存資源的硬件上存儲。
從FER2013數據集上看測試效果,EM_VoVNet的實驗準確率僅次于SqueeezeNeXt和EdgeCNN,但SqueeezeNeXt的模型過于復雜、模型處理速度最慢,性能不佳。而相比之下,EM_VoVNet具有低參數、低FLOPs、較快運行速度和高準確率的特點,模型性能佳。雖然EM_VoVNet的準確率比Edge CNN低0.3百分點,但在模型參數、FLOPs和模型處理速度三個方面,EM_VoVNet都具有更大的優勢。
本文基于VoVNet進行改進,提出輕量化的人臉表情識別網絡EM_VoVNet。該網絡通過減少模塊數、通道數的模型優化技術減少網絡參數和計算量。重新設計VoVNet的淺層特征提取模塊,并且引入通道注意力機制,增強通道間相關性特征的學習。最終,將設計的EM_VoVNet網絡與其他主流輕量型識別網絡共同在FER2013和RAF-DB數據集上進行實驗對比,實驗結果表明該網絡具有最優輕量性和良好準確率。接下來將EM_VoVNet移植到低內存硬件設備上,構建完整的實時表情識別系統。