李 嬌 王彬彬 周心荊 冉 峰*
(上海大學(xué)微電子研究與開發(fā)中心 上海 200000) 2(上海大學(xué)新型顯示技術(shù)及應(yīng)用集成教育部重點實驗室 上海 200000)
人臉表情包含著豐富的情感信息,能夠直觀地反映喜怒哀樂等各種情緒。因此,表情識別可作為情感研究的一個重要方向,是人機交互的重要組成部分[1],在醫(yī)學(xué)、教育、商業(yè)營銷等領(lǐng)域都有著廣泛的應(yīng)用。
人臉表情識別主要有三個步驟:人臉檢測、特征提取及表情分類。其中,特征提取在表情識別任務(wù)中起到核心作用,特征提取方法主要有基于傳統(tǒng)手工設(shè)計的特征提取和基于深度學(xué)習(xí)的特征提取。
傳統(tǒng)手工特征提取方法,如局部二值模式(Local Binary Pattern,LBP)[2]、尺度不變特征變換(Scale Invariant Feature Transform,SIFT)[3]、定向梯度直方圖(Histogram of Oriented Gradients,HOG)[4]等,這些方法較為復(fù)雜,且不易提取圖片的高層次特征。
隨著技術(shù)的快速發(fā)展,越來越多的深度神經(jīng)網(wǎng)絡(luò)不斷涌現(xiàn),例如AlexNet[5]、VGG[6]和ResNet[7]等。這些網(wǎng)絡(luò)被廣泛應(yīng)用于圖像、語音等各個領(lǐng)域,在人臉表情識別任務(wù)上,也取得了較好的效果。但隨著深度神經(jīng)網(wǎng)絡(luò)模型的不斷發(fā)展,它的弊端也逐漸凸顯。不斷加深、加寬的模型,使得模型參數(shù)龐大化、模型計算復(fù)雜化,這些都不利于模型在移動端和嵌入式設(shè)備中的應(yīng)用。
基于以上背景,本文提出一種新型網(wǎng)絡(luò)結(jié)構(gòu)EM_VoVNet。該網(wǎng)絡(luò)基于VoVNet[8],設(shè)計了新的特征提取框架,改變輸入尺寸大小為44×44×3,大大減少了模型參數(shù)和計算量。采用組合池化的思想,在淺層特征提取時組合了3×3的卷積特征和池化特征的兩路特征,豐富了淺層特征圖的學(xué)習(xí)。另外,還在模塊內(nèi)引入了注意力機制,增強不同通道間的特征學(xué)習(xí)。最終實驗證明,設(shè)計的EM_VoVNet具有較好的輕量級特性和良好的表情識別率,有利于模型進一步在低內(nèi)存資源的設(shè)備上實現(xiàn)實時表情識別。
VoVNet由DenseNet密集網(wǎng)絡(luò)發(fā)展而來。Dense Block結(jié)構(gòu)如圖1所示。該模塊通過逐次卷積,將每層神經(jīng)網(wǎng)絡(luò)的輸出密集連接到后面的每一層卷積作為輸入,大大減少了參數(shù)模型。由于聚合了不同層感受野的中間特征,該網(wǎng)絡(luò)在物體檢測任務(wù)上取得了良好的效果。但另一方面,由于密集連接的聚合作用,該網(wǎng)絡(luò)模塊的輸入通道數(shù)不斷增加,而輸出通道數(shù)固定,使得其存在高內(nèi)存訪問成本(Memory Access Cost,MAC)和高能耗的問題,導(dǎo)致模型的推理速度慢。且每個層對之前層的聚合學(xué)習(xí)、重復(fù)利用,會導(dǎo)致中間層的特征信息對最后分類層的提供的有用信息少,造成中間層的特征冗余。
圖1 Dense Block結(jié)構(gòu)
在ShuffleNetV2[9]論文中,給出了MAC的計算方式,如下:
MAC=hw(ci+co)+k2cico
(1)
式中,k、h、w、ci、co分別表示卷積核的大小、特征圖的高、特征圖的寬、輸入通道數(shù)和輸出通道數(shù)。卷積層的計算量為B=k2hwcico,若固定B值,則有:
(2)
由式(2)可知,當(dāng)ci=co時,MAC取得最小值,內(nèi)存訪問成本最低。由此,VoVNet模型中提出了OSA(One Shot Aggregation)模塊,如圖2所示。OSA模塊設(shè)定了模塊內(nèi)的卷積具有相同的輸出通道數(shù)。這使得GPU可以進行高效并行計算,且達(dá)到卷積輸出、輸入通道數(shù)相等,從而降低內(nèi)存訪問成本以及能耗。另外,它只在每個卷積模塊的最后,進行特征圖融合,減少了中間層的冗余特征。
圖2 OSA模塊結(jié)構(gòu)
VoVNet主要由OSA模塊組成,有三種不同方案的構(gòu)造。其中,VoVNet-27s包含的OSA模塊數(shù)最少,相比另外兩個模型更具有輕量級特性、參數(shù)計算量少、內(nèi)存資源要求低的優(yōu)點,因此本文采用該模型進行改造來完成輕量化表情識別網(wǎng)絡(luò)的搭建。
VoVNet-27s的具體結(jié)構(gòu)如表1所示。其中:c0表示淺層卷積輸出通道數(shù);c1表示OSA模塊內(nèi)卷積核輸出通道數(shù);n表示模塊內(nèi)的3×3卷積次數(shù);Concat&1×1表示對模塊內(nèi)的所有輸出特征圖進行融合,并用1×1卷積進行降維,最后輸出的卷積核通道數(shù)為c2。
表1 VoVNet-27s的網(wǎng)絡(luò)結(jié)構(gòu)
VoVNet應(yīng)用于目標(biāo)檢測分類任務(wù),需要尋找目標(biāo)在圖像中的位置,再對目標(biāo)進行分類,因此圖像往往具有較大的輸入尺寸為224×224×3。而表情識別無須檢測目標(biāo)位置,只需實現(xiàn)對網(wǎng)絡(luò)輸入的人臉圖像進行表情分類。因此,實驗設(shè)置圖片和網(wǎng)絡(luò)模型的輸入尺寸為44×44×3,以此來減少網(wǎng)絡(luò)模型參數(shù)和計算量。
表2為改進前后的低層次特征提取模塊??梢钥闯?原模型VoVNet的淺層特征提取結(jié)構(gòu)由三個級聯(lián)的3×3卷積組成,且其卷積核通道數(shù)分別設(shè)置為64、64、128。對于改進后模型44×44×3的輸入設(shè)計,這一特征提取模塊設(shè)計的參數(shù)過多,容易導(dǎo)致實驗出現(xiàn)過擬合現(xiàn)象,即在訓(xùn)練時,模型表現(xiàn)出高識別準(zhǔn)確率,但在測試時,模型對新數(shù)據(jù)的預(yù)測能力差,識別準(zhǔn)確率低,缺少好的泛化能力。
表2 低層次的特征提取
為了提高模型的泛化能力,本文主要采用降低淺層特征層提取維度的方法,重新設(shè)計了淺層特征提取的Stem模塊,如圖3所示。該模塊首先通過1×1卷積進行通道擴充,將特征層數(shù)目從3層增加至32層,這有利于后續(xù)模型進行更充分的特征提取。受PeleeNet[10]設(shè)計模塊的啟發(fā),本文設(shè)計了兩路的特征提取,與組合池化(同時利用最大值池化與均值池化兩種的優(yōu)勢而引申的一種池化策略)相似,這兩路分別為最大池化和3×3卷積,該方法通過從不同途徑提取淺層卷積層特征,能夠增強特征層的表達(dá)能力,且改進的Stem模塊比原模塊具有更少的計算量。
圖3 Stem Block
通道注意力機制在改善神經(jīng)網(wǎng)絡(luò)性能方面發(fā)揮著巨大的潛力,比如SENet[11]注意力機制通過考慮通道間的相關(guān)性,對每個通道進行自動學(xué)習(xí),獲得每個通道的重要程度,以此來增強重要特征圖的表達(dá)能力;又比如CBAM[12]注意力機制,它在SENet關(guān)注通道特征的基礎(chǔ)上增加了對空間特征圖的關(guān)注和權(quán)重分配,進一步提高重要特征圖的表達(dá)能力。然而還有很多方法比如AA-Net[13]、GSoP-Net[14]設(shè)計了更復(fù)雜的注意模塊來獲取網(wǎng)絡(luò)高性能的特征表達(dá),但在另一方面也增加了模型整體的復(fù)雜性,增加了卷積計算的負(fù)擔(dān)。而注意力機制ECA模塊[15]是一種輕量級的注意模塊,它只用參數(shù)k,就可以為深度學(xué)習(xí)模型獲取較好的性能增益。因此,為了增強重要特征的表達(dá)能力,同時兼顧構(gòu)建輕量化模型為目的,本文引入?yún)?shù)量較少的輕量級注意模塊ECA,其結(jié)構(gòu)如圖4所示。
圖4中,X∈Rh×w×c為注意力模塊的輸入特征圖,h、w、c分別是特征圖的高度、寬度和通道數(shù)。X先經(jīng)過GAP(全局平均池化)得到1×1×C聚合特征向量,再考慮每個通道和它k個鄰居的關(guān)系來捕獲本地跨通道交互,主要是由通過內(nèi)核大小為k的快速一維卷積實現(xiàn)。然后,用Sigmoid函數(shù)對1×1×C的特征向量進行非線性化學(xué)習(xí),生成注意力權(quán)重Wx,最后將Wx和X的對應(yīng)元素進行相乘得到新的特征圖χ,主要公式如下:
(3)
式中:Wx∈R1×1×C是生成的通道注意力權(quán)重;C1D表示一維卷積;GAP是全局平均池化函數(shù);k表示一維卷積的卷積核大小;σ為Sigmoid激活函數(shù);?表示對應(yīng)元素的點乘運算;χ∈Rh×w×c為融合后的輸出特征圖。
由于使用1D卷積來捕獲局部的跨通道交互,參數(shù)k決定了局部跨通道信道交互的覆蓋范圍,不同的通道數(shù)和不同的CNN架構(gòu)的卷積塊可能會有所不同。k與C的映射關(guān)系如下:
(4)
本實驗設(shè)置γ=2,b=1。并且將ECA模塊添加在OSA模塊的最后一層,即對通道降維后的特征圖進行通道注意力權(quán)重的提取和分配,具體模型如圖5所示。
圖5 增加ECA注意力模塊的OSA模塊
本文對EM_VoVNet網(wǎng)絡(luò)進行搭建,具體結(jié)構(gòu)如表3所示。EM_VoVNet先設(shè)有1個Stem block,對輸入圖像進行卷積和池化兩路并行的操作,豐富神經(jīng)網(wǎng)絡(luò)對淺層特征圖的學(xué)習(xí)。然后將輸出特征圖送入3個OSA模塊和下采樣操作交替的神經(jīng)網(wǎng)絡(luò),依次進行特征圖采樣和空間降維。最后通過自適應(yīng)平均池化,以及全連接線性輸出進行七種表情分類。
表3 EM_VoVNet網(wǎng)絡(luò)表
在Windows平臺下基于PyTorch框架,對本文所提出的網(wǎng)絡(luò)進行搭建,計算機硬件配置為Intel core i7-7700HQ(主頻2.8 GHz)、內(nèi)存8 GB、NVIDIA GeForce GTX 1050(2 GB顯存)。軟件平臺為Python 3.7、NVIDIA CUDA 9.2、cuDNN庫。
本文采用常用的FER2013[16]和RAF-DB[17]兩個公共數(shù)據(jù)集進行實驗。
1) FER2013 數(shù)據(jù)集。FER2013 數(shù)據(jù)集最初是 Kaggle 團隊從互聯(lián)網(wǎng)收集的視頻中截獲的面部表情圖像,被用作表情識別挑戰(zhàn)。該數(shù)據(jù)集包含35 887幅48×48像素的灰色圖像,其中訓(xùn)練集(Training)28 708幅,公共驗證集(Public Test)和私有驗證集(Private Test)各3 589幅,具體表情分類數(shù)目如表4所示。圖片預(yù)處理首先將每幅圖像隨機裁剪成10幅44×44像素的圖像。最后,得到每個面部表情類別在所有10幅圖片上的平均得分。
表4 FER2013表情數(shù)據(jù)集分類
2) RAF-DB 數(shù)據(jù)集。真實世界情感人臉數(shù)據(jù)庫(RAF-DB)是Li等發(fā)布的人臉表情數(shù)據(jù)集。該數(shù)據(jù)集包含大約30 000幅面部圖像,這些圖像在被試的年齡、性別和種族、頭部姿勢、照明條件、遮擋等方面都有很大的差異。本文選用帶有7類基本表情的部分?jǐn)?shù)據(jù)集,該基本數(shù)據(jù)集其中包括訓(xùn)練數(shù)集12 271幅圖像和測試集3 068幅圖像。首先,我們將每幅圖像隨機裁剪成10幅44×44像素的圖像。最后,得到每個面部表情類別的在所有10幅圖片上的平均得分。
本文使用了Softmax損失函數(shù)和SGD優(yōu)化技術(shù),通過設(shè)置0.01的學(xué)習(xí)率和0.000 5的權(quán)重衰減,來實現(xiàn)損失函數(shù)的最優(yōu)值求解。同時,總的迭代次數(shù)設(shè)置為300,當(dāng)?shù)螖?shù)大于80后,學(xué)習(xí)率就會每5代降低10%。
實驗主要分為兩個部分。第一部分,將改進前后的模型在FER2013和RAF-DB兩個數(shù)據(jù)集上進行訓(xùn)練和測試,得到實驗對比和實驗分析;第二部分,在網(wǎng)絡(luò)輸入圖片尺寸相同的條件下,將EM_VoVNet與不同的主流輕量模型比較和分析。
3.3.1實驗一:EM_VoVNet的實驗效果和分析
為了驗證改進結(jié)構(gòu)的有效性,實驗將EM_VoVNet在FER2013和RAF-DB兩個常用人臉表情識別數(shù)據(jù)集上進行訓(xùn)練和測試。圖6和圖7分別展示了EM_VoVNet在FER2013數(shù)據(jù)集上訓(xùn)練和測試時的準(zhǔn)確率和損失值。
圖6 FER2013訓(xùn)練集和測試集的準(zhǔn)確率
圖7 FER2013訓(xùn)練集和測試集的損失值
由圖6可知,訓(xùn)練250代后,訓(xùn)練集和測試集的準(zhǔn)確率都趨于穩(wěn)定,且測試集準(zhǔn)確率達(dá)到了70.33%。由圖7可知,此時的訓(xùn)練損失值也在0.4以下,趨近于0。
為了更清晰地展示EM_VoVNet在人臉表情識別任務(wù)中的表現(xiàn),本文提供了網(wǎng)絡(luò)在數(shù)據(jù)集FER2013上測試得到的混淆矩陣,如圖8所示。其中,縱向標(biāo)簽欄為真實表情標(biāo)簽,橫向標(biāo)簽欄為預(yù)測表情標(biāo)簽。
圖8 FER2013混淆矩陣
從混淆矩陣中可以看出,高興的識別準(zhǔn)確率最高,其次是驚訝,而其余五種表情的識別效果并不是很好。其主要原因是高興和驚訝相對于其他表情具有更明顯的表情特征。比如高興大多伴有咧嘴、瞳孔微縮,甚至瞇眼的特征,而驚訝則是大都具有張嘴成O形和睜大眼的特征。而其余五種表情,尤其是害怕的表情,會因為皺眉的動作和難過的表情具有類似的特征,由此標(biāo)簽就容易被誤判,從而降低表情識別率。
實驗還將改進模型與原模型進行了實驗對比。從表5中可見,EM_VoVNet的模型參數(shù)僅為VoVNet的4.5%,且FLOPs僅為原模型的23.6%。在保證相近的模型處理速度下,EM_VoVNet相比VoVNet在FER2013數(shù)據(jù)集上識別準(zhǔn)確率提高了1.62百分點,在RAF-DB數(shù)據(jù)集上識別準(zhǔn)確率提高了1.17百分點,由此可見改進模型具有較優(yōu)的輕量性和較高的識別率。
表5 EM_VoVNet與VoVNet的實驗結(jié)果對比
3.3.2實驗二:相同圖片尺寸輸入時不同主流輕量模型的實驗比較和分析
現(xiàn)有的主流輕量網(wǎng)絡(luò)有MobileNet、ShuffleNet、SqueezeNet等系列模型,為了驗證EM_VoVNet的高效性,本文以以上模型作為對比模型,設(shè)置每個結(jié)構(gòu)具有相同大小的圖像輸入尺寸為44×44×3,然后在FER2013和RAF-DB兩個數(shù)據(jù)集上進行實驗,主要從模型參數(shù)、模型復(fù)雜度FLOPs、模型處理速度、測試集準(zhǔn)確率4個方面進行計算和記錄。實驗所得結(jié)果如表6所示。
表6 相同圖片尺寸輸入的輕量模型在表情識別上的比較
表6中,SqueezeNet用的是1_1的版本,SqueeezeNeXt用的是1.0-SqNxt-23的結(jié)構(gòu),MobileNet和MobileNetV2使用1x 的擴張系數(shù),MobileNetV3使用MobileNetV3-small模型。
從RAF-DB數(shù)據(jù)集上看測試效果,EM_VoVNet達(dá)到了最高的測試集準(zhǔn)確率,且EM_VoVNet的參數(shù)值最小,非常有利于模型在低內(nèi)存資源的硬件上存儲。
從FER2013數(shù)據(jù)集上看測試效果,EM_VoVNet的實驗準(zhǔn)確率僅次于SqueeezeNeXt和EdgeCNN,但SqueeezeNeXt的模型過于復(fù)雜、模型處理速度最慢,性能不佳。而相比之下,EM_VoVNet具有低參數(shù)、低FLOPs、較快運行速度和高準(zhǔn)確率的特點,模型性能佳。雖然EM_VoVNet的準(zhǔn)確率比Edge CNN低0.3百分點,但在模型參數(shù)、FLOPs和模型處理速度三個方面,EM_VoVNet都具有更大的優(yōu)勢。
本文基于VoVNet進行改進,提出輕量化的人臉表情識別網(wǎng)絡(luò)EM_VoVNet。該網(wǎng)絡(luò)通過減少模塊數(shù)、通道數(shù)的模型優(yōu)化技術(shù)減少網(wǎng)絡(luò)參數(shù)和計算量。重新設(shè)計VoVNet的淺層特征提取模塊,并且引入通道注意力機制,增強通道間相關(guān)性特征的學(xué)習(xí)。最終,將設(shè)計的EM_VoVNet網(wǎng)絡(luò)與其他主流輕量型識別網(wǎng)絡(luò)共同在FER2013和RAF-DB數(shù)據(jù)集上進行實驗對比,實驗結(jié)果表明該網(wǎng)絡(luò)具有最優(yōu)輕量性和良好準(zhǔn)確率。接下來將EM_VoVNet移植到低內(nèi)存硬件設(shè)備上,構(gòu)建完整的實時表情識別系統(tǒng)。