趙 揚,張建紅,郁舒蘭*,凌禹杭
(1.南京林業大學 機械電子工程學院,江蘇 南京 210037;2.南京審計大學 智芯人智慧心理實驗室,江蘇 南京 210037)
人類一般會通過面部表情來進行情感表達,研究[1]發現,在日常交流中,大約55%的信息是由人臉傳達出來的,38%來源于表達者的聲調變化,由此可見,人臉表情在信息交流中起到了巨大作用。隨著互聯網、大數據技術的不斷更新,通過機器識別人臉情緒在智慧醫療、在線教育、智能測謊、人機交互和疲勞檢測[2]等領域發揮著巨大的作用。
傳統的人臉表情識別方法采用的是手工特征,主要方法有方向梯度直方圖(Histogram of Oriented Gradient, HOG)、Gabor小波變換和局部二值模式(Local Binary Patterns, LBP)等。例如Mahmood等[3]通過采用Radon變換和Gabor小波變換以及魯棒分類器來提高識別精度,傳統方法雖然可以有效解決少量數據的表情識別問題,但是由于其提取特征過程需要人工進行參與且不能提取到網絡深層特征,不能滿足龐大數據的需求。
隨著深度學習技術在計算機視覺領域發展迅速,研究者們開始使用卷積神經網絡(CNN)對人臉表情識別進行研究。張波等[4]提出了基于通道注意力機制的人臉表情識別方法,模型可以對基本表情進行識別,同時設計了機器人對不同表情時的交互語音和動作,實現了人機交互。Zhao等[5]提出了一種置信學習的應用方法,引入了2個超參數來調整面部表情數據集的噪聲,在不同噪聲比的數據集上驗證了動態噪聲檢測的有效性。Verma等[6]提出了一個具有視覺和面部標識分支的網絡,視覺分支負責圖像序列的輸入,面部標識分支研究軌跡運動,考慮面部動作帶來的特征變化影響,該方法在CK+數據集上取得了很好的性能。Wu等[7]基于LeNet-5網絡,選擇最大池化和平均池化,在完整提取圖像特征的同時又有效減少參數量,提高了識別的準確性。Wang等[8]提出了AM-softmax函數,引入角度間距,加入余弦余量,使得模型學習到的特征在特征空間的決策邊緣最大化,從而減少表情的類內距離,提升分類效果。李思誠等[9]提出了一種改進的ECANet34-DA網絡,有效提取到了類間差異極小的微表情特征。閆河等[10]為了解決卷積降維后主干網絡丟失部分特征信息的問題,引入Ghost模塊和可分離卷積,保留更多的原始信息,增強主干網絡的提取能力,取得了較高的識別準確率。
以上方法雖然都實現了對人臉表情識別精度的提升,但是其復雜的網絡結構也帶來了更大的參數量和計算數,同時人臉不同表情類間差異小,類內差異大,使得模型難以充分提取人臉特征,造成識別準確率偏低。為了解決上述問題,本文提出了基于注意力特征融合與聯合損失函數的表情識別方法,使用AFF特征融合模塊融合不同尺度的特征信息并以此構建網絡塊結構,融合深淺層圖像特征信息,提高模型準確率,同時使用聯合損失函數對網絡進行優化訓練,在保證網絡輕量的同時,實現了更準確的人臉表情識別。
Xception網絡[11]是由谷歌團隊在2017年提出的模型,該模型是對Inception V3網絡的改進,核心思想是使用深度可分離卷積來替換原來的inception結構,以此來實現CNN中的跨通道相關性和空間相關性的完全解耦操作。模型結構如圖1所示。

圖1 Xception結構Fig.1 Xception structure
與mobilenet不同的是,Xception網絡是先進行1×1卷積然后再進行3×3卷積操作,為了保證數據不被破壞,去掉了ReLU層。通過上述操作實現了網絡參數量和復雜度的顯著下降,同時為了解決網絡退化的問題,加快模型的收斂效果,加入殘差連接結構,最終的模型結構如圖2所示。但是該網絡存在計算過程零散、執行效率不高的問題。本文將使用Xception模型來進行對比實驗。
稠密網絡(DenseNet)[12]模型是清華大學黃高團隊在2018年提出的卷積模型,核心思想是建立前后相鄰卷積層的密集連接,與殘差思想“短路連接”相加不同,它是將CNN采集得到的特征在通道維度上進行堆疊,實現特征的重用,有效避免了隨著網絡的加深帶來的梯度消失問題。稠密網絡的部分結構如圖3所示。在稠密網絡中,前層信息可以傳入后層,且在深度方向上進行拼接,極大地避免了信息的破壞,有效地解決了神經網絡反向傳播過程中帶來的梯度消失問題。

圖3 稠密結構示意Fig.3 Schematic diagram of dense structure
網絡整體結構主要是由稠密塊和過渡層兩部分組成,其中稠密塊負責對提取到的特征進行密集重用,保證信息在卷積層之間相互傳遞,過渡層則用來調整多個稠密塊提取到的特征,降低特征圖的維度,減少模型的參數。稠密網絡的亮點在于每個卷積層都與前面所有層進行了連接,加強了網絡層之間的信息流動,相較于殘差網絡,模型有著更少的參數量和更高的準確率。稠密網絡的輸入輸出關系表達式如式(1)所示:
xL=HL([x0,x1,…,xL-1]),
(1)
式中:xL-1為模型上一層的輸出,xL為當前層的輸出,HL為一個非線性變換。模型將前L-1層的輸出在通道維度上進行拼接,優化了模型內部的信息流動。本文借鑒稠密網絡的密集連接思想,構建神經網絡深淺層特征融合,增強模型特征提取能力。
特征融合是指將來自不同卷積層或分支的特征信息進行融合,以使得模型可以提取到更加豐富的特征。一般采用的操作是線性求和與通道維度拼接,但是會造成參數量的增加,而且在融合不同尺度時會帶來新的問題。對于人臉表情識別任務來說,希望模型能更多地關注嘴巴、眼睛等關鍵部位信息,忽略掉無關的特征,提升模型的感知能力。為此,引入注意力特征融合模塊增強模型提取能力。圖4為AFF[13]特征網絡結構圖。

圖4 AFF特征網絡結構Fig.4 Structure diagram of AFF feature network
對于輸入的2個特征X、Y(Y是感受野更大的特征)先做相加操作進行初步特征融合,隨后送入2個分支,通過全局平均池化操作來提取全局特征注意力,使用點卷積(Point-wise)來提取局部特征的注意力信息,隨后再做相加操作進行全局和局部特征綜合,最后通過Sigmoid激活函數進行X、Y的加權平均計算。通過訓練,使得網絡可以自動確定權重大小,篩選出有效的人臉特征信息。
對于CNN參數量過大,難以滿足嵌入式等移動端設備應用的問題。研究人員提出了使用深度可分離卷積代替普通卷積進行特征提取。深度可分離卷積如圖5所示,與傳統卷積不同,它是對輸入圖像的空間信息和通道信息分別進行操作,可以有效減少模型計算量和推理時間。

圖5 深度可分離卷積Fig.5 Depthwise separable convolution
本文提出的SAF網絡塊結構如圖6所示,在傳統卷積結構基礎上進行改進。首先,將卷積層替換成深度可分離卷積,減少模型參數量,然后將ReLU激活函數替換成Mish激活函數,提升模型訓練的穩定性和精確性,最后在模塊中引入AFF注意特征融合模塊,實現網絡自適應分配權重,提取人臉有效特征信息,同時加入殘差結構來減輕模型訓練帶來的梯度消失問題。

圖6 SAF網絡塊結構Fig.6 SAF network block structure
傳統的SoftMax損失函數僅僅保證了類別間可分,并沒有考慮類內的差異性。而對于人臉表情識別任務來說,不同人做同一個表情的差別比同一個人做不同表情的差別大得多,為了獲取更好的分類效果,需要縮小數據類內距離,增大類間距離。
因此本文引入L-SoftMax和中心損失函數二者聯合訓練模型,提高模型的判別能力。其中L-SoftMax公式如下:
(2)
式中:
(3)
xi表示第i個樣本,Wyi表示W的第yi列,θyi表示Wyi和xi之間的夾角,m控制分類邊界,其值越大分類界限越大。L-SoftMax損失函數建立了更為嚴格的分類邊界,有效加大了類間距離。
中心損失函數[14]可以用來減少類內差異,使得相同表情數據更加緊湊,有利于分類效果的提高。其計算公式如下:
(4)
式中:m表示樣本個數,xi表示第i個樣本數據,cyi表示特征中心。每次輸入m張圖片,中心損失函數會減小每個樣本特征與中心特征的距離。對于每次特征中心的變化量可由下式得到:
(5)
最終的聯合損失函數如下:
L=Li+λLc,
(6)
式中:λ為權重系數,本文取值0.001。
本文設計的基于注意特征融合與聯合損失的卷積網絡模型結構如圖7所示。主要是由9個SAF模塊堆疊而成。輸入圖像首先經過一個卷積核大小為3×3的卷積層提取淺層特征信息,隨后依次經過9個SAF模塊,進一步提取人臉表情信息。同時為了避免網絡過長帶來的信息丟失的問題,本文分別使用卷積層和池化層來充分提取淺層網絡的特征信息,并將淺層信息與深層信息進行融合以提升模型的判別效果。所提的網絡結構及詳細參數如表1所示。

圖7 網絡模型結構Fig.7 Network model structure

表1 模型參數Tab.1 Model parameters
本次選取RAF-DB、CK+和Fer2013數據集對模型進行測試。RAF-DB數據集是一個大規模的人臉表情數據集,不同于實驗室采集的數據,它是研究人員從互聯網采集的包含不同種族、性別和年齡等多樣化的數據集,共包括12 271張訓練集和3 068張測試集,可分為驚奇、厭惡、高興、悲傷、生氣、中性和害怕共7種基本表情,部分示例如圖8所示。數據庫中的圖像已經對頭部姿態、光照條件等外部影響進行過處理。CK+數據集是在實驗室拍攝的數據集,共分為憤怒、惡心、恐懼、高興、中性、驚訝、輕蔑和悲傷共8種基本情緒,包含了981張圖像數據。Fer2013數據集有7個表情分類標簽,共包含28 709張訓練圖像和3 589張測試圖像,與CK+數據集不同的是,Fer2013數據集存在大量遮擋人臉照片,對模型分類結果會有一定的影響。在進行模型訓練前,需要分別對數據集進行預處理操作,依次將數據集輸入人臉檢測算法MTCNN裁剪人臉照片并將圖片縮放至48 pixel×48 pixel。本文實驗使用機器的操作系統為Windows 10,實驗環境Python3.8,使用Pytorch神經網絡框架,硬件平臺為CPU Intel(R) Xeon(R) Silver 4110 CPU @ 2.10 GHz,內存16 GB,顯卡為RTX 2080Ti 11 GB。優化器部分選擇了Adam,在訓練初期將初始學習率設定為0.001,在模型訓練30輪之后,將學習率逐步衰減使得模型逼近最優點,衰減參數設置為0.98,本次實驗將模型的訓練輪數設置為250,批次大小為16。在進行模型訓練過程中,由于CK+數據集過少,直接將其輸入模型容易造成過擬合現象,因此在實驗前對圖片進行裁剪、翻轉和添加噪聲等數據增強技術將數據集擴充為原來的10倍,最終得到9 810張人臉照片,隨后將擴充之后得到的人臉數據再送入模型中進行訓練。

(a)生氣

(b)厭惡

(c)害怕

(d)開心

(e)中性

(f)悲傷

(g)驚奇
分別在RAF-DB、CK+以及Fer2013人臉表情數據集上進行訓練,設置epoch為250次,學習率為0.001,16張圖片為一個batch。得到模型在驗證集上的準確率分別為83.7%和96.5%。同時為了驗證AFF算法的優越性,不加任何網絡的模型作為基礎網絡,在其中分別嵌入SE、CBAM、ECA、AFF注意機制,使用CK+數據集進行對比實驗。實驗結果如表2所示。由表2可以看出,嵌入AFF特征融合網絡的識別準確率最高。

表2 注意力模型對比結果
模型在RAF-DB驗證集上的混淆矩陣如圖9所示。從圖中可以看出,高興和生氣等表情具有更好的識別效果,由于在數據集中高興和生氣擁有更明顯的面部特征,而對于傷心、驚訝和害怕的識別率相對較低,其中害怕的識別準確率最低,原因是害怕的表情中會帶有皺眉、嘴巴張開等明顯的特征,但驚訝也會有這類特征表現,導致模型難以區分,同時數據集中各類表情數量不平衡導致模型訓練不充分也是識別率低的原因之一。

圖9 RAF-DB驗證集識別結果混淆矩陣Fig.9 Confusion matrix of RAF-DB validation set recognition results
為了驗證本文所提方法的有效性,本文對添加的AFF特征融合注意力、聯合損失以及深淺層特征融合的有效性進行了驗證。消融實驗結果如表3所示,其中,不加任何網絡的基礎模型記為Basic;AFF表示加入了注意特征融合模塊。將各個模塊進行對比實驗,結果表明,AFF特征融合注意力、聯合損失以及深淺層特征融合3個模塊都可以有效提升模型的識別準確率,將三者融合加入到網絡模型中將得到最好的準確率。對比基礎模型,所構建的網絡模型在RAF-DB數據集上提升了2.2%,在CK+數據集上提升了3.1%,從而驗證了所提網絡模型的有效性。

表3 消融實驗
為了驗證本文算法的先進性,在所用數據集上同國內外的方法進行對比實驗,對比結果如表4所示。可以看出本文所提算法在RAF-DB、CK+和Fer2013數據集上的準確率分別達到了83.7%、96.5%和70.3%,相較于其他算法而言有著更好的準確率,表明本文所提模型可以有效提取人臉表情特征,獲得更好的分類效果。

表4 準確率對比
為了驗證本文模型的輕量化改進效果,將表4中的部分模型參數大小與本文模型進行對比,對比結果如表5所示。由表5可知,本文模型的參數量僅有5.26 MB,小于其他模型,同時在RAF-DB數據集上準確率僅僅比表4中的最高準確率CASC低0.72%,參數量卻減少了70%,這表明本文模型較好地滿足了人臉表情識別模型的輕量化和準確率的要求。

表5 模型參數量對比
本文提出了一種注意力特征融合機制與聯合損失的人臉表情識別網絡。特征融合模塊使得網絡可以自適應分配權重大小,自動學習到表情變化豐富區域的特征信息,提升判別準確率;圖像深淺層信息融合可以增加網絡對圖像的語義表征能力,而使用聯合損失函數進行訓練則可以進一步加大類間距離,進一步提高識別效果。最終實驗結果表明,本文所提網絡不僅可以有效提高人臉表情識別的準確率,同時模型參數量小于其他網絡,較好地實現了人臉表情識別模型的準確率和輕量化的平衡。下一步考慮將所提模型部署到NAO機器人端,并設計機器人的交互動作行為,實現人機情感交互。