倪錦園,張建勛,張馨月
(1.重慶理工大學(xué) 計算機科學(xué)與工程學(xué)院, 重慶 400054; 2.東北大學(xué)悉尼智能科技學(xué)院, 河北 秦皇島 066004)
面部表情是人類表達(dá)情感和想法最自然的方式之一,因此人臉表情識別在計算機視覺領(lǐng)域上一直是個熱門的研究課題。隨著相關(guān)領(lǐng)域的持續(xù)發(fā)展,人臉表情識別在檢測精神疾病、疲勞駕駛、人機交互、情感機器人、智能安保等諸多方面有著廣泛的應(yīng)用[1-3]。
在早期的研究過程中,人臉面部表情的特征基本上是由手工提取,但是由于自然環(huán)境下面部表情易受遮擋,背景和姿勢等諸多因素的影響,導(dǎo)致識別的精度并不高[4]。近年來,深度學(xué)習(xí)在圖像識別上取得了階段性突破成果,自從AlexNet[5]神經(jīng)網(wǎng)絡(luò)在ImageNet計算機視覺識別比賽上[6]取得了較好結(jié)果,深度學(xué)習(xí)就大幅應(yīng)用在計算機視覺領(lǐng)域中,kaya等[7]將目標(biāo)圖像特征和人工制作的Gabor二元模式特征結(jié)合起來,提高了模型對特征提取的性能。Shi等[8]提出了一種基于多分支交叉連接卷積神經(jīng)網(wǎng)絡(luò)的人臉表情識別方法,該方法是基于殘差連接、網(wǎng)絡(luò)中網(wǎng)絡(luò)和樹結(jié)構(gòu)共同構(gòu)建的,它還為卷積輸出層的求和增加了快捷的交叉連接,使網(wǎng)絡(luò)間的數(shù)據(jù)流更加平滑,提高了每個感受域的特征提取能力。Kim等[9]用面部表情測器結(jié)合人臉面部的特征點降低了背景噪音的影響。
雖然上述的多數(shù)研究都能夠提取特征,但仍存在著一定的缺陷,例如,人臉面部采集過程中易受到光照、背景和姿勢等因素的影響,導(dǎo)致模型在訓(xùn)練面部樣本集時,特征提取能力不足,學(xué)習(xí)能力下降。深度學(xué)習(xí)模型的網(wǎng)絡(luò)層數(shù)也在一定程度上影響了分類識別的精度,即隨著網(wǎng)絡(luò)層數(shù)的不斷增加,會出現(xiàn)梯度消失的現(xiàn)象,此時網(wǎng)絡(luò)模型出現(xiàn)過擬合,造成識別精度的下降。
為了緩解在深度神經(jīng)網(wǎng)絡(luò)中增加深度帶來的梯度消失問題,引入了殘差學(xué)習(xí)單元,通過恒等映射調(diào)整輸入輸出的關(guān)系來解決深層網(wǎng)絡(luò)難以優(yōu)化的情況,在ResNet殘差學(xué)習(xí)模塊中,若神經(jīng)網(wǎng)絡(luò)輸入為x,同時H(x)為最佳映射,經(jīng)過非線性卷積層去實現(xiàn)F(x)=H(x)-x,則自身的恒等映射表示為H(x)=F(x)+x。這種恒等映射就可以降低模型的復(fù)雜性和計算量,減緩了隨著層數(shù)堆疊造成的梯度消失等問題,使得堆積層從輸入的圖像特征中更容易學(xué)習(xí)到新的特征,從而能夠獲得更優(yōu)的性能,也更容易優(yōu)化和訓(xùn)練,ResNet殘差學(xué)習(xí)模塊如圖1所示。

圖1 ResNet殘差學(xué)習(xí)模塊
由于全連接神經(jīng)網(wǎng)絡(luò)層數(shù)過少會導(dǎo)致模型對目標(biāo)圖片的特征表達(dá)能力有限,過多則會出現(xiàn)梯度消失的現(xiàn)象,同時受到噪聲的影響,會導(dǎo)致模型提取人臉面部特征能力不足。結(jié)合以上問題,設(shè)計了一種基于寬殘差網(wǎng)絡(luò)的注意力機制模型,包括優(yōu)化了順序的帶小卷積濾波器的寬殘差模塊,壓縮和自適應(yīng)校正網(wǎng)絡(luò)層,預(yù)激活殘差單元模塊,改進(jìn)的隨機擦除模塊等,模型的整體架構(gòu)如圖2所示。

圖2 模型的整體架構(gòu)
在預(yù)處理階段時,通過翻轉(zhuǎn)、平移、旋轉(zhuǎn)、對比度歸一化等一系列措施對面部圖像進(jìn)行增強處理,然后通過改進(jìn)的Random Erasing方法對人臉表情進(jìn)行隨機擦除,增強了模型的泛化能力,而且提升了模型對遮擋和掩蓋的魯棒性。然后將預(yù)處理后的目標(biāo)圖片放入網(wǎng)絡(luò),首先進(jìn)入寬殘差網(wǎng)絡(luò)模塊,然后通過壓縮和自適應(yīng)校正網(wǎng)絡(luò)模塊對面部特征進(jìn)行提取,最后進(jìn)行分類處理。
該網(wǎng)絡(luò)輸入的目標(biāo)圖像大小為48×48,通道數(shù)為3,每個卷積層后面會有一個BN層和ReLU激活函數(shù)層,通過擴增卷積層的通道數(shù),使模型每層卷積層能夠表達(dá)更多的特征信息。
為了在一定程度上預(yù)防模型過擬合,在每個寬殘差注意力模塊后設(shè)有一個丟棄正則化Dropout,寬殘差模塊中的小型卷積核可以使模型進(jìn)行降維操作,BN層可以加快模型訓(xùn)練時的收斂速度并且有效防止梯度消失的情況。為了提高網(wǎng)絡(luò)的特征表示能力,在每個寬殘差模塊后面都設(shè)有一個壓縮和自適應(yīng)校正網(wǎng)絡(luò)模塊,寬殘差注意力模型如圖3所示。

圖3 寬殘差注意力模型
每10個寬殘差注意力模塊后,輸出的維度減半,通道數(shù)翻倍,然后通過Global-Ave-Pooling層降低過擬合的風(fēng)險并減少了計算的參數(shù),最后通過Softmax層對圖片進(jìn)行分類處理,類別一共包含了生氣、厭惡、害怕、開心、傷心、驚訝、中性7類,模型參數(shù)如表1所示。

表1 模型參數(shù)
傳統(tǒng)的神經(jīng)網(wǎng)絡(luò)隨著網(wǎng)絡(luò)層數(shù)的增加,往往可以提取更多的特征信息,但是簡單地堆砌神經(jīng)網(wǎng)絡(luò)層數(shù)容易出現(xiàn)梯度消失的情況,最終導(dǎo)致識別精度反而不如淺層網(wǎng)絡(luò)。通過殘差網(wǎng)絡(luò)在一定程度上可以改善該情況,但是傳統(tǒng)殘差網(wǎng)絡(luò)過于追求網(wǎng)絡(luò)的層數(shù),忽略了殘差單元模塊,所以隨著殘差模塊的疊加,模型的性能提升并不明顯。
為解決上述問題,提出了改進(jìn)的小型濾波器的寬殘差網(wǎng)絡(luò),對殘差模塊進(jìn)行改進(jìn),用卷積層的通道數(shù)乘以系數(shù)K來進(jìn)行擴展,從而拓寬了卷積核,在參數(shù)量相同且實驗結(jié)果達(dá)到同一準(zhǔn)確率的情況下[10],寬殘差網(wǎng)絡(luò)(WRN)的深度只有傳統(tǒng)殘差網(wǎng)絡(luò)的1/50,并且在訓(xùn)練速度上還有一定提升,但是模型寬度的增加會導(dǎo)致參數(shù)數(shù)量的增加,于是考慮使用小卷積濾波器,因為小卷積核濾波器相比于大卷積核,參數(shù)量明顯降低,模型的計算量也隨之下降,卷積核參數(shù)如表2所示。

表2 卷積核參數(shù)
因此在改進(jìn)WRN模塊過程中,在大卷積核后面加入一個小卷積濾波器來減少目標(biāo)圖片特征,達(dá)到對目標(biāo)圖片降維的作用,從而提高模型的訓(xùn)練速度。改進(jìn)的WRN模塊結(jié)構(gòu)如圖4所示。

圖4 改進(jìn)的WRN模塊結(jié)構(gòu)
改進(jìn)的WRN模塊結(jié)構(gòu)中,為預(yù)防模型過擬合現(xiàn)象,采用在小卷積濾波器后面加入丟棄正則化方法,其中每個卷積層后都加入了BN層做歸一化處理和ReLU激活函數(shù),k表示擴展通道的系數(shù)值。
為了進(jìn)一步提取不同人臉面部表情的深層特征,提高面部表情識別的精確度,該模型引入了壓縮和自適應(yīng)校正網(wǎng)絡(luò)模塊(Squeeze-and-Excitation),該模塊是一種通道注意力機制,可以對通道維度上的特征圖權(quán)重進(jìn)行重新分配[11-12],其中,v=[v1,v2,…,vc]是一個已經(jīng)學(xué)習(xí)到的濾波器核,vc=[v1c,v2c,…,vcc],X=[x1,x2,…,xc],F(xiàn)tr輸出為U=[u1,u2,…,uc],示例如下:
(1)
式中: *表示卷積;uc表示第c個通道的輸出;vc表示第c個通道的卷積核;xs表示卷積核輸入的第s通道的2D空間核。可以看出,輸出的Fm是由所有通道的和來生成的,所以在通道上的依賴性被隱式地嵌入至濾波器核中,而濾波器核的作用是捕獲目標(biāo)圖片像素點空間的相關(guān)性,所以通道間的依賴性和濾波器捕獲的空間相關(guān)性是一直聯(lián)系的。
2.4.1提取通道間依賴關(guān)系(squeeze)
首先對于一個H′×W′×C的特征輸入X,進(jìn)行Ftr操作,也就是常規(guī)的卷積操作,得到待處理的W×H×C的特征圖U。接著對得到的U分別進(jìn)行2種操作:Fsq和Fscale。Fsq是對于每一個通道上都采用一種全局平均池化的操作,示例如下:
(2)
式中:uc表示特征圖u的c個通道分別進(jìn)行平均池化的操作;Zc表示壓縮生成的通道描述符,空間維度為W×H,然后得到1×1×C的特征圖z。
2.4.2自適應(yīng)校正(excitation)
為了全面捕獲通道依賴性,使用特殊通道依賴的門機制來對各個通道上的特征進(jìn)行激活處理,調(diào)整每個通道的反饋,讓網(wǎng)絡(luò)利用全局信息有選擇地增強有益的特征通道,并抑制無益的特征通道,從而實現(xiàn)特征通道的自適應(yīng)校正,excitation相當(dāng)于2次全連接操作,示例如下:
s=Fex(z,W)=σ(g(z,W))=σ(W2?(W1z))
(3)
式中: ?和σ分別表示激活函數(shù)ReLU和Sigmoid,第一次用降維層W1(C/r×C)與z(1 × 1 ×C)得到1 × 1 ×C/r的張量,其中C表示通道數(shù),r表示降維的比例(該模型設(shè)為4),然后通過激活函數(shù)ReLU,并與升維層W2(C×C/r)相乘得到1×1×C的張量,最后通過Sigmoid函數(shù)輸出,最終輸出通過重新調(diào)節(jié)變化輸出U得到,示例如下:
(4)
式中:s得到的是(0,1)區(qū)間的數(shù),將uc中每個通道的二維矩陣中每個數(shù)都與對應(yīng)的sc相乘,即得到最終輸出。
對在人臉面部表情識別過程中,面部表情特征部分缺失的問題,壓縮和自適應(yīng)校正網(wǎng)絡(luò)模塊在通道上對特征圖的權(quán)重進(jìn)行重新分配,更好地提取有益的面部特征信息而抑制無用特征信息。
在寬殘差網(wǎng)絡(luò)中加入激活函數(shù)可以更好地擬合訓(xùn)練數(shù)據(jù),增強寬殘差網(wǎng)絡(luò)的非線性建模能力,在不用激活函數(shù)的情況下,每一層的網(wǎng)絡(luò)輸出都來源于上一層網(wǎng)絡(luò)輸入的線性函數(shù),這樣迭代的神經(jīng)網(wǎng)絡(luò)也只是簡單的堆砌,輸出都是輸入的線性組合,隱藏層的效果得不到體現(xiàn)。所以,在網(wǎng)絡(luò)中加入激活函數(shù)是有必要的。在寬殘差網(wǎng)絡(luò)加入的是修正線性單元ReLU激活函數(shù),示例如下:

(5)
ReLU激活函數(shù)由于非負(fù)區(qū)間的梯度為常數(shù),所以在一定程度上解決了梯度消失的情況,同時讓模型處于一個更于穩(wěn)定的狀態(tài)。
深度網(wǎng)絡(luò)學(xué)習(xí)過程本質(zhì)上是為了研究數(shù)據(jù)分布,在處理數(shù)據(jù)時,若每批數(shù)據(jù)分布都不同,訓(xùn)練時網(wǎng)絡(luò)每次都要去適應(yīng)不同的數(shù)據(jù)分布,這樣會影響網(wǎng)絡(luò)的訓(xùn)練速度,因此需要對數(shù)據(jù)進(jìn)行批量歸一化處理。當(dāng)神經(jīng)網(wǎng)絡(luò)對輸入的數(shù)據(jù)做預(yù)處理時,需要做近似白化預(yù)處理,示例如下:
(6)

(7)

(8)
(9)
(10)
(11)
通過BN層對數(shù)據(jù)進(jìn)行歸一化操作,BN層可以對每一層輸入的數(shù)據(jù)進(jìn)行統(tǒng)一處理,改善網(wǎng)絡(luò)梯度的同時使網(wǎng)絡(luò)有更大的學(xué)習(xí)率,可以大幅度提高網(wǎng)絡(luò)的訓(xùn)練速度。傳統(tǒng)殘差單元結(jié)構(gòu)采用“卷積層+BN層+ReLU層”的排列結(jié)構(gòu),每一個卷積層后面加入BN層,然后再插入ReLU激活函數(shù),殘差單元結(jié)構(gòu)如圖5所示,其中(a)表示傳統(tǒng)殘差單元模塊,(b)表示預(yù)激活殘差單元模塊。

圖5 殘差單元結(jié)構(gòu)
由于在傳統(tǒng)殘差單元中,BN層和ReLU層放在卷積層后面,缺少對輸入圖像的處理,在一定程度上限制BN層的作用。對殘差單元結(jié)構(gòu)進(jìn)行改進(jìn),提出了一種預(yù)激活殘差單元結(jié)構(gòu),該方式就是把BN層和ReLU激活函數(shù)移到卷積層之前,形成“BN層+ReLU層+卷積層”的新順序,這種結(jié)構(gòu)就構(gòu)成了一種預(yù)激活的模式,該方式增強了網(wǎng)絡(luò)的正則化,讓模型具有非線性的學(xué)習(xí)能力,有效降低了模型過擬合的風(fēng)險,加快了網(wǎng)絡(luò)的訓(xùn)練速度和收斂能力。
遮擋是影響網(wǎng)絡(luò)泛化能力的一個重要因素,當(dāng)神經(jīng)網(wǎng)絡(luò)模型結(jié)構(gòu)過于復(fù)雜的時候,模型往往會出現(xiàn)過擬合,通過在預(yù)處理階段對人臉面部表情進(jìn)行隨機擦除處理,可以緩解該現(xiàn)象。Random Erasing(隨機擦除)模塊在預(yù)處理階段將對模型做2種操作之一:在圖片的任意位置選擇隨機大小的矩形區(qū)域,將該區(qū)域的像素值替換為隨機值;不對目標(biāo)圖片做任何處理。
預(yù)處理階段將設(shè)定目標(biāo)圖片隨機擦除的概率為p,隨機擦除公式示例如下:
Se=S×random(Sl,Sh)
(12)
(13)
(14)
式中:S表示原始圖像的面積;Sl和Sh表示隨機擦除圖像的最小閾值和最大閾值;re表示遮擋矩陣的長寬比;Se表示隨機擦除的面積;He表示隨機擦除矩陣面積的高;We表示隨機擦除矩陣面積的寬,隨機擦除參數(shù)如表3所示。

表3 隨機擦除參數(shù)
圖像上隨機選擇一個點Pe=(xe,ye),xe和ye的限定示例如下:
(15)
由于面部表情圖片的背景噪聲會影響識別的精度,而且隨機擦除處理不一定能覆蓋人臉表情區(qū)域,造成原始數(shù)據(jù)集的冗余,為了保證隨機擦除的區(qū)域一定在人臉位置,對隨機擦除方法進(jìn)行了改進(jìn),重新限定了xe和ye的坐標(biāo)值,示例如下:
(16)
式中:Rx、Ry、Rxl、Ryl分別表示人臉圖像范圍左上頂點的真實坐標(biāo)值和右上頂點的真實坐標(biāo)值,通過限制對隨機點Pe點的選取范圍,使每次隨機擦除都能覆蓋人臉表情范圍,隨機擦除方法和改進(jìn)方法對比如圖6所示。

圖6 隨機擦除方法和改進(jìn)方法人臉表情
由圖6可知,改進(jìn)的方法可以保證每次隨機擦除都在人臉表情的范圍,在訓(xùn)練集樣本中加入隨機擦除的圖片,人為擴展訓(xùn)練樣本的數(shù)據(jù)集,提高模型的魯棒性,有效降低了模型過擬合的風(fēng)險。
為驗證NSENet網(wǎng)絡(luò)模型的準(zhǔn)確性和有效性,將NSENet網(wǎng)絡(luò)模型在fer2013、ck+數(shù)據(jù)集和JAFFE數(shù)據(jù)集上進(jìn)行對比消融實驗。該實驗基于Tensorflow深度學(xué)習(xí)框架進(jìn)行訓(xùn)練,在Pycharm上進(jìn)行測試,硬件環(huán)境配置如下:Win10操作系統(tǒng)、CPU主頻2.9 GHz的Intel Core i7-10700F和16 G內(nèi)存以及NVIDIA GeForce RTX 2060(6 GB)顯卡。在實驗過程中,隨機選取70%的人臉表情圖像作為訓(xùn)練集,30%的人臉表情圖像作為測試集,實驗參數(shù)設(shè)置如表4所示。

表4 實驗參數(shù)設(shè)置
FER2013人臉面部表情數(shù)據(jù)集由35 886張人臉面部表情組成,其中訓(xùn)練集含有28 708張,測試集和驗證集都有3 589張,而且每張圖片都是由固定大小為48×48的灰度圖像組成,共包含了7種表情,F(xiàn)ER2013的人臉表情圖像因為遮擋和姿勢,對比度較低,背景等因素的干擾,導(dǎo)致識別難度較大。
ck+是由Cohn-Kanda數(shù)據(jù)集的基礎(chǔ)上擴展而來,一共包含了123個參與者,593個圖片序列,ck+數(shù)據(jù)集都是在同一光照背景下采集的,采集環(huán)境較為優(yōu)秀。
JAFFE數(shù)據(jù)集選取了10名日本女學(xué)生,每個人做出7種不同的表情,一共由213張照片,通過旋轉(zhuǎn)、翻轉(zhuǎn)、對比度增強、平移、裁剪、縮放、隨機擦除等方法,將數(shù)據(jù)擴充到3 408張,人臉面部表情如圖7所示。
圖7(a)表示FER2013人臉面部表情示例,(b)表示ck+人臉面部表情示例,(c)表示JAFFE人臉面部表情示例。

圖7 面部表情示例
為驗證NSENet網(wǎng)絡(luò)模型的有效性,將對各個模塊進(jìn)行消融實驗,實驗結(jié)果如表5所示,Miniature filter表示寬殘差塊中1×1小型濾波器機制,SE表示壓縮和自適應(yīng)校正網(wǎng)絡(luò)模塊機制,Pre activation表示預(yù)激活殘差單元機制,dropout表示丟棄正則化機制,Random Erasing表示隨機擦除機制。

表5 NSENet網(wǎng)絡(luò)消融實驗準(zhǔn)確率 %
通過對原始圖像進(jìn)行翻轉(zhuǎn)、平移、旋轉(zhuǎn)、對比度歸一化、隨機擦除等數(shù)據(jù)增強的操作之后,把處理后的圖像輸入到模型中,為了讓模型能獲取到更多人臉表情的局部特征,引入壓縮和自適應(yīng)校正網(wǎng)絡(luò)模塊對圖像在通道上的權(quán)重進(jìn)行重新分配,為了加快模型的訓(xùn)練速度和收斂能力,對寬殘差模塊的順序結(jié)構(gòu)進(jìn)行了優(yōu)化,并改進(jìn)了寬殘差塊中的小型濾波器,為了緩解模型過擬合,加入丟棄正則化函數(shù)進(jìn)行處理。最后通過和VGG16的對比實驗發(fā)現(xiàn),在FER2013數(shù)據(jù)集上準(zhǔn)確率提升了3.60%,在ck+數(shù)據(jù)集上提升了3.83%,在JAFFE數(shù)據(jù)集上提升了3.83%,驗證了NSENet網(wǎng)絡(luò)模型在人臉面部表情識別中具有一定的有效性,同時保持著更優(yōu)的性能。
消融實驗曲線如圖8所示,其中(a)表示FER2013消融實驗,(b)表示ck+消融實驗,(c)表示JAFFE消融實驗,從圖8(a)可以看出,NSENet的收斂速度最快,最高準(zhǔn)確率達(dá)到72.49%,在迭代到250次的時候,準(zhǔn)確率逐漸趨于平穩(wěn),同時可以看出壓縮和自適應(yīng)校正網(wǎng)絡(luò)模塊對該數(shù)據(jù)集的影響最大,在減少參數(shù)量的同時模型的準(zhǔn)確率提升了2.81%,也兼具了更好的穩(wěn)定性。
從圖8(b)可以看出,改進(jìn)預(yù)激活寬殘差模塊后,對模型的提升最大,準(zhǔn)確率上升了2.1%,同時NSENet在迭代到150次的時候,趨于平穩(wěn),準(zhǔn)確率最高達(dá)到99.29%。從圖8(c)可以看出,NSENet收斂速度最快,大概迭代200次的時候,準(zhǔn)確率趨于平滑,同時可以看出在JAFFE數(shù)據(jù)集中,壓縮和自適應(yīng)校正網(wǎng)絡(luò)模塊對實驗的影響最大,加入該模塊后,準(zhǔn)確率提升了4.55%,同時也保持了更好的魯棒性。

圖8 消融實驗曲線
為驗證NSENet算法在人臉面部表情識別的有效性,與表6列舉的一些相關(guān)算法實驗結(jié)果做對比,可以發(fā)現(xiàn)所提算法性能更好,表情識別的精度也更高,相較于一些傳統(tǒng)的機器學(xué)習(xí)方法來說,NSENet算法具有較強的泛化能力,不同方法對比如表6所示。

表6 不同方法準(zhǔn)確率 %
提出了一種深度寬殘差網(wǎng)絡(luò)注意力機制的人臉表情識別方法,有效抑制了無關(guān)特征信息對模型的影響,同時減緩了神經(jīng)網(wǎng)絡(luò)層數(shù)過多造成梯度消失的情況。寬殘差網(wǎng)絡(luò)融合壓縮和自適應(yīng)校正網(wǎng)絡(luò)模塊更多關(guān)注特征信息,加快模型的收斂速度,提高模型的性能,改進(jìn)的隨機擦除方法擴充了訓(xùn)練集同時加強了模型對噪聲的魯棒性,小卷積濾波器的殘差模塊減小網(wǎng)絡(luò)計算量的同時對目標(biāo)圖片進(jìn)行了降維處理,優(yōu)化的預(yù)激活殘差單元結(jié)構(gòu)大幅度提高網(wǎng)絡(luò)的訓(xùn)練速度,減少了模型過擬合現(xiàn)象。所提模型(NSENet)在FER2013數(shù)據(jù)集上的準(zhǔn)確率為72.49%,在ck+數(shù)據(jù)集上的準(zhǔn)確率為99.29%,在JAFFE數(shù)據(jù)集上的準(zhǔn)確率為94.87%,實驗結(jié)果優(yōu)于目前諸多現(xiàn)存的人臉表情識別方法,展現(xiàn)了較好的有效性和魯棒性。但在面部表情有遮擋的情況下識別精度仍不夠高,在未來要多關(guān)注這類數(shù)據(jù)集的識別性能。