賴東升,馮開平,羅立宏
(1.廣東工業(yè)大學 計算機學院,廣東 廣州 510006;2.廣東工業(yè)大學 藝術與設計學院,廣東 廣州 510090)
面部表情能夠表達出人們自身的情緒和感受,有助于理解人類的狀態(tài)和行為,隨著人機交互技術的發(fā)展和應用,表情識別分析技術在社交機器人、醫(yī)學治療、駕駛監(jiān)測等領域中具有越來越重要的實際意義。在大多數情況下人類可以輕而易舉地識別出各種不同的面部表情,但機器在實際應用環(huán)境中對面部表情的識別性能與人類相比仍有一定的差距,因此,近年來表情識別技術一直是熱門的研究方向之一。
表情識別技術的主要步驟為從人臉圖像中提取相關的面部表情特征,再使用特征信息進行不同表情的識別。傳統(tǒng)方法主要通過研究者設計的手工特征提取算子提取目標圖像的表情特征后再進行分類識別,常見的特征提取算子有局部二值模式(Local Binary Pattern, LBP)[1]、尺度不變特征變換(Scaleinvariant Feature Transform, SIFT)和Local Binary Patterns from Three Orthogonal Planes (LBP-TOP)等。通過傳統(tǒng)手工特征進行識別需要的計算量較少,但研究者需要有豐富的先驗知識才能實現特征的設計和選擇,且其性能容易受實際環(huán)境因素的影響而減弱,進而影響最終的識別效果。
隨著相關技術、配置和數據等多方面因素的發(fā)展成熟,深度學習方法在圖像、文本和視頻等相關識別任務中取得了非常優(yōu)秀的識別效果,成為了大多數研究者的首要選擇?;谄湓谔卣魈崛∩系膬?yōu)異能力,大型的神經網絡模型[2-3]能夠達到更好的表情識別率。然而,層數更多的大型神經網絡模型往往擁有極大的參數量,應用時對硬件資源的要求非常高,耗時較多,在實際生活中大多數網絡模型難以在資源不充分的平臺上部署。
鑒于大型深層神經網絡模型的局限性,近年來研究者們針對表情識別任務提出了許多參數量更少的輕量級神經網絡模型以更易應用于現實生活中。然而,輕量級卷積神經網絡與一般的神經網絡相比參數量更少,特征提取能力較差,為了在保留較低網絡參數量的情況下提高識別性能,輕量級網絡需要結合多種更具判別性的特征信息以提高網絡的識別準確率。除了從原始人臉圖像提取的表情特征之外,許多研究者采用多種不同的方式提取多樣性的表情特征。Fan等[4]從輸入的人臉圖像中分割出左眼、嘴巴和鼻子3個與表情變化相關的局部圖像,分別用3個雙分支的神經網絡提取不同人臉部位的局部表情特征和原圖像的全局表情特征,再結合3個子網絡的預測結果做出最終的表情預測,通過加入不同局部人臉區(qū)域判別性特征的方法提高算法的識別率。高層特征通常與最后的表情類別高度相關,多數算法[4-6]只使用網絡最后一層卷積層所提取的特征進行表情分類識別,而忽略了眼睛、額頭等局部部位的細節(jié)信息,因此文獻[7]融合了低層、中層和高層的特征并進行變化處理增強后續(xù)特征的空間細節(jié)信息和表達能力。然而,低層特征通常表示圖像的邊角等瑣碎的細節(jié)信息,且更易關注圖像的背景等不利于當前識別任務的其他區(qū)域,存在大量的冗余。在研究者對網絡中不同層級特征圖進行可視化后,其結果表明中層卷積層提取的局部特征能夠更關注眼睛、嘴巴和鼻子等有明顯表情變化的區(qū)域,包含更多與輸入圖像相關的基本表情特征且魯棒性更強,高層的全局特征則更具判別性,并基于此融合中層和高層的特征進行分類識別,引入中層特征后生成的大量表情特征信息有效地提高了算法在實際非受限環(huán)境中對表情的識別性能和魯棒性。
研究表明挖掘并合理利用不同區(qū)域、層級等多種不同的特征信息能夠在一定程度上有效提高表情識別算法的性能,但只從單一原始人臉圖像提取而來的這些特征并不夠豐富,對網絡性能的提升有限。文獻[8]表明LBP算子所提取的局部紋理特征能夠捕獲面部的微小變化信息,有助于區(qū)分不同表情之間的細微差別,提高神經網絡對于表情的識別率。輕量級卷積神經網絡的特征提取能力較弱,與一般的卷積神經網絡相比難以提取到更多判別性特征,而經過LBP處理后的人臉圖像能夠減少背景等無關信息的干擾,更專注于面部五官等關鍵區(qū)域的信息。針對輕量級網絡在表情識別任務中性能較低的問題,本文提出了基于多特征融合的表情識別算法,結合LBP圖像的特征以及神經網絡提取的中層局部特征和高層全局特征,在輕量級神經網絡的基礎上捕獲更多有助于識別表情的特征信息,同時使用了改進的通道注意力模塊對融合后的特征信息進行篩選,在保留原有特征信息的同時更有效地加強更具判別性的重要特征,減少相關性較弱的特征信息的影響,從而在保持網絡較低參數量的同時在一定程度上提高算法的識別準確率。
局部二值模式通過在局部區(qū)域內與相鄰點進行對比計算的方式捕獲目標圖像中不同區(qū)域的紋理信息,并在一定程度上減少無關的面部信息或背景信息的干擾,突顯有助于識別表情的基本面部信息。
原始LBP算法的圖像計算在大小為3像素×3像素的方型鄰域內進行,通過與相鄰采樣點進行比較得到對應的LBP值L(xz,yz),主要計算流程如式(1)所示。
式中:(xz,yz)為該窗口區(qū)域中心的坐標,p為窗口內的采樣點,ip為相鄰像素的像素值,iz為窗口中心點的像素值,S為式(2)所示的符號函數。
計算得到的LBP值表示該像素點對應區(qū)域的紋理信息。
原始LBP算子的計算區(qū)域固定在3像素×3像素大小的方型鄰域內,在紋理特征的尺度和頻率不同的情況下容易受到限制,因此研究人員對LBP算子進行了研究并提出了多種改進版本的算子。其中,圓形LBP算子可以在任意尺寸的圓形區(qū)域內進行計算,其計算過程如式(3)所示。
式中:P為圓形鄰域內的采樣點個數,R為圓形鄰域的半徑,S則表示與式(2)相同的符號函數。對于中心點(xr,yr) ,其在圓形鄰域內的采樣點(xp,yp)常由式(4)計算得到。
若式(4) 計算所得結果并不在像素點的坐標上,則使用雙線性插值進行近似處理以得到相鄰采樣點的坐標值。
LBP算子在局部區(qū)域內的對比計算能夠反映出人臉圖像中的皺紋等與肌肉變化相關的面部紋理信息,進而捕獲人臉表情的變化信息并幫助識別不同的面部表情,因此被廣泛應用于表情識別等與人臉相關的識別任務中以提升識別性能。表情的變化通常和眼睛、鼻子和嘴巴等人臉局部區(qū)域高度相關,因此,本文在提取原始圖像表情特征的小型卷積神經網絡之外,添加了另一個卷積神經網絡分支,將經圓形LBP算子處理后五官等局部區(qū)域更顯著的人臉圖像作為該網絡的輸入以提取能夠捕獲面部細微變化的特征信息,并融合兩個網絡提取的特征,通過提供更多有效特征信息的方式提高表情識別率。
為了在減少卷積神經網絡參數量的同時保有一定的識別性能,本文所提出的算法采用兩個網絡分支分別提取原始人臉表情圖像和對應的LBP圖像的特征,并融合兩個網絡分支提取的中高層特征進行表情識別。算法的網絡結構如圖1所示,主要包含兩個輕量神經網絡分支,分別以原始人臉圖像以及半徑為2像素、采樣點個數為8的圓形LBP算子處理后的人臉圖像作為輸入。
圖1 網絡結構示意圖Fig.1 Network structure
如圖1所示,兩個神經網絡分支擁有同樣的結構。在神經網絡中淺層特征通常擁有豐富的位置信息和細節(jié)信息,因此低層的兩個卷積層使用5像素×5像素卷積核擴大感受野,提取更豐富的低層特征。中層和高層的卷積層使用3像素×3像素卷積核以確保網絡有足夠的特征提取能力,同時避免整體網絡結構過于復雜。每個卷積層后都加入Batch Normalization層以加快網絡模型收斂并增強網絡的泛化能力。提取輸入圖像特征后,將兩個網絡所提取的中層和高層的特征進行連接生成大量對表情識別任務有效的特征信息。
為了加強融合信息中有利于識別當前表情的重要特征,同時減少相關性較弱的信息的影響,算法采用了改進的注意力模塊對融合生成的大量特征信息進行篩選并提高重要信息的權重,注意力模塊的結構如圖2所示。
圖2 注意力模塊Fig.2 Attention module
文獻[9]所提出的通道注意力模塊使用全局平均池化操作,對每個通道的特征圖進行壓縮以進一步學習計算每個通道特征的權重。然而,全局平均池化操作只是累加特征圖內的所有像素值并求其平均值,不同區(qū)域的信息對于當前任務的重要程度并不相同,而累加并求均值的操作在一定程度上會減少較重要特征信息的權重。受文獻[10]啟發(fā),在注意力模塊中,本文使用文獻[10]中所提出的尺寸與輸入特征圖尺寸相同的全局深度卷積來代替全局平均池化操作對每個通道的特征圖進行壓縮,計算過程如式(5)所示。
式中:K為尺寸為H×W×C的卷積核,F為尺寸為H×W×C的輸入特征圖,H、W、C分別為卷積核的高度、寬度、深度,GC為每個通道上進行卷積計算后得到的壓縮信息。與全局平均池化操作相比,通過全局深度卷積計算可以更有效地學習每個通道的特征圖上不同區(qū)域信息的重要程度,保留更多重要區(qū)域的信息,減少其他區(qū)域信息的影響,從而在一定程度上保留更多與該通道特征圖相關的空間信息,能夠更有效地計算每個通道對應的權重。在壓縮得到代表每個通道特征圖的信息后,使用1×1卷積整合不同通道之間的信息并學習不同通道特征的重要程度,再通過Sigmoid操作得到每個通道特征圖對應的權重,所得權重對原輸入特征進行點乘計算加強更具判別性的通道特征。
為了不影響輸入特征圖原有的特征信息,本文所使用的注意力模塊在對輸入特征進行加權后,通過殘差連接將加權后的結果與原輸入特征相加,在保留原有輸入信息的同時加強更具辨別性的重要通道特征,計算過程如式(6)所示,
式中:I為輸入特征圖,Q為每個通道特征的權重,O為注意力模塊的輸出結果,l為輸入的通道數。
注意力模塊加強更具判別性的通道特征后通過1×1的卷積操作減少特征維數和計算量,避免融合特征后網絡計算量過多,同時卷積計算過程中不同通道特征信息之間的交互能夠提高后續(xù)特征的表達能力。在1×1卷積操作后同樣使用與當前特征圖相同尺寸的全局深度卷積取代全連接層,在進一步減少網絡計算量的同時保留更多的有效特征信息以及與當前表情類別的關聯能力,再進行最后的表情分類識別。網絡具體參數如表1所示。
表1 神經網絡結構參數Table 1 Parameters of neural network
Fer2013數據集包含了驚喜、厭惡等7種生活中常見的表情類別,共有35 887張48像素×48像素大小的人臉圖像,所有圖像被切分為訓練集、驗證集和測試集3部分,其中訓練集由28 709張圖像構成,驗證集和測試集均由3 589張圖像構成。與其他公開數據集相比,Fer2013數據集中的人臉圖像數據都是在網絡上爬取采集而成,在年齡、人種、性別、姿態(tài)、背景、光照和遮擋等因素上各有差異,更加符合實際的應用場景,且數據量足夠大,非常適用于訓練并評估表情識別算法。在實驗過程中通過將人臉圖像隨機裁剪為44像素×44像素大小的圖像、隨機水平翻轉和隨機旋轉的方式進行數據增強,擴充訓練時的樣本量,避免模型因樣本量不足出現過擬合的情況。
CK+數據集是從實驗對象采集而來的7種常見表情的變換序列,所有的表情變換序列都從一個中性的表情逐漸過渡為最終峰值的表情。數據集中共327個變化序列有相應的峰值表情標簽,選用其最后3幀的峰值人臉表情圖像共981張人臉表情樣本對模型進行訓練評估,每張圖像的大小都為48像素×48像素,并同樣通過隨機裁剪為44像素×44像素大小的人臉圖像、隨機水平翻轉和隨機旋轉的方式擴充訓練過程中的樣本量。
實驗在Windows10操作系統(tǒng)上基于python3.6.5版本的Pytorch深度學習框架進行,所用GPU為NVIDA GeForce RTX 2060,CPU為Intel(R) Core(TM)i7-9750H,內存為16 GB,并使用Cuda10.1工具包加速模型訓練。實驗采用十折交叉驗證法以減少數據差異帶來的準確率誤差,算法訓練過程中的具體參數設置如表2所示。
表2 實驗參數Table 2 Experiment settings
訓練200個epoch后,模型在Fer2013數據集上的識別準確率為70.21%,在CK+數據集上的識別準確率為95.59%。為了表明算法中所提出的改進之處對識別性能的提升效果,進行消融實驗與原算法進行對比,即分別去除注意力模塊、去除以LBP圖像作為輸入的神經網絡分支以及去除中層特征僅融合2個小型卷積神經網絡所提取的高層特征構造3個不同的網絡模型,并在同樣的數據集上訓練200個epoch后與本文所提出算法的訓練結果進行對比。
在2個數據集上進行消融實驗得到的準確率結果如表3所示,根據對比結果可知,加入LBP圖像的網絡分支可以提供更具判別性的面部特征信息,融合2個網絡所提取的中高層特征信息可以生成大量豐富且有助于識別表情的特征信息用于最后的表情分類識別,注意力機制則能夠加強有效信息的權重,減少與當前類別相關性較弱的特征信息的影響,從而在一定程度上提高輕量網絡的性能。
表3 消融實驗對比結果Table 3 Results of ablation experiment
為了驗證本文方法的綜合性能,與現有的其他模型方法在參數量和識別率上進行對比,在Fer2013數據集上的對比結果如表4所示。
表4 不同算法在Fer2013數據集上的對比結果Table 4 Comparison result on Fer2013 dataset
文獻[11-12]均采用多個分支卷積計算并融合多尺度特征的方法提高圖像表情特征的表達能力,但僅結合從單一輸入圖像中提取的不同尺度特征信息對算法的性能并沒有太大的提升,且多個分支的卷積計算大大增加了網絡的計算量。文獻[13]結合HOG特征和優(yōu)化的單卷積網絡結構取得了較好的實時識別結果,文獻[14]采用改進神經網絡和損失函數的方法提高了算法的識別率,但兩個算法提出的網絡中使用的過多卷積核和大尺度卷積核大大增加了模型的參數量。ShuffleNet[15]能夠在提高模型速度的同時保持較好的準確率,但作為能夠廣泛使用于多種任務的輕量模型,在缺少針對表情識別任務的優(yōu)化和注意力機制對無關特征的處理的情況下對表情進行識別的能力還有待提高。VGGNet被廣泛應用于表情識別的任務中并作為算法的基準模型,其使用的大量3×3卷積核能夠充分提取大量的表情特征,從而達到較高的表情識別效果,但其堆疊的大量卷積核無疑增加了模型的參數量。從表4的對比結果可知,在Fer2013數據集上,本文所提出的算法比文獻[11-12,15]所提出的方法在識別準確率上有較大的提升,且參數量更少。雖然與文獻[13-14]提出的算法和VGGNet相比本文算法識別率相對較低,但在參數量上仍少于這3個算法,在整體性能上有一定的優(yōu)勢。
在CK+數據集上的對比結果如表5所示。
表5 不同算法在CK+數據集上的對比結果Table 5 Comparison result on CK+ dataset
在CK+數據集中,與本文算法相比,文獻[11-12]所采用的計算并融合多尺度特征信息的方法在增加網絡參數量的同時對算法的識別率并沒有太大的提升。ShuffleNet[15]作為輕量級模型在較少的參數量下也能達到較好的識別率,但仍需要針對表情識別任務進行優(yōu)化以進一步提高對于表情的識別能力。文獻[16]采用融合不同層級卷積層所提取的不同分辨率特征的方法提高模型的泛化能力,但在另一分支帶來了額外參數量的情況下只從原始圖像中提取不同分辨率的特征,不僅不能得到更全面更具判別性的特征信息,還增加了模型復雜度,在識別率上的提升并不高。ResNet的殘差結構能夠進一步保留特征信息的完整度并提高模型的準確度,是許多研究者首選的基準模型,文獻[17]在ResNet模型的基礎上加入注意力模塊,極大地提高了模型的性能。經過對比可知,在CK+數據集上,與文獻[17]提出的算法相比本文算法識別率較低,但模型的參數量更少,與其他算法相比本文模型參數量均少于這些算法,且識別率也有所提升,在整體性能上有一定的優(yōu)勢。
根據表6及表7與其他算法的綜合對比結果可知,本文所提出的算法在識別率上有一定的提升,同時擁有較少的參數量,有一定的綜合性能優(yōu)勢。實驗結果表明,引入LBP特征分支網絡并融合2個網絡的中高層特征信息,再通過注意力模塊提高重要特征的權重,可以在保持較少的網絡參數量的同時,充分利用2個網絡所提取的豐富的特征信息彌補輕量級網絡模型在提取能力上的不足,從而改善了輕量神經網絡的表情識別效果。本文方法在Fer2013數據集和CK+數據集上的混淆矩陣分別如表6及表7所示。
表6 Fer2013數據集混淆矩陣Table 6 Confusion matrix on Fer2013 dataset
根據表6及表7的混淆矩陣可知,算法對于開心、驚訝這兩種表情的識別率比其他類別的表情更高,這兩種表情通常伴隨著更加明顯的面部肌肉或五官變化,如上拉的嘴角和眼角、張大的嘴巴、上揚的眉毛等,因此更加容易進行區(qū)分,不易與其他表情混淆。其他表情類別則由于存在相似的面部肌肉變化或五官特征容易出現錯誤分類,如生氣表情和厭惡表情通常帶有皺起的眉毛和收緊的嘴巴等表情特征,容易相互錯判。CK+數據集是在受限的實驗室環(huán)境采集而來,沒有過多外界實際因素的干擾,因此開心和驚訝這兩個類別的表情有很好的識別率。Fer2013數據集里的數據是在網絡上爬取采集而成的,圖片數據錯亂復雜,存在如憤怒般的厭惡等更加復雜的混合表情,且存在標簽缺失或標簽錯誤等問題,因此識別精度并不能與實驗室數據集相比,更容易造成表情混淆。
本文采用了兩個輕量級卷積神經網絡分別提取輸入人臉表情圖像和對應的LBP圖像的表情特征,融合兩個網絡提取的中高層特征生成更加豐富且更具備判別性的表情特征信息,并通過改進的注意力模塊加強有利于識別當前表情的重要特征,在一定程度上提高了輕量級神經網絡的識別性能。本文方法在Fer2013和CK+數據集上分別取得了70.21%和95.59%的識別率,在保持較低的網絡參數量的同時提高了網絡的表情識別率,并與其他方法進行對比證明了該方法的有效性。后續(xù)將對網絡的結構和訓練參數進行優(yōu)化調整,進一步提高網絡的識別性能,并應用于更多主流數據集上。