王韋祥 周 欣,2 何小海* 卿粼波 王正勇
1(四川大學電子信息學院 四川 成都 610065)2(中國信息安全測評中心 北京 100085)
人臉表情識別是計算機視覺領域一大熱點[1]。人臉表情作為人類情緒的直接表達,是非語言交際的一種形式[2]。人臉表情識別技術目前主要的應用領域包括人機交互(HCI)、安保、機器人制造、醫療、通信、汽車等。在人機交互、在線遠程教育、互動游戲、智能交通等新興應用中,自動面部表情識別系統是必要的[3]。
人臉表情識別的重點在于人臉表情特征的提取。對于人臉表情的提取,目前已出現兩類特征提取方法。一種是基于傳統人工設計的表情特征提取方法,如局部二值模式(Local Binary Pattern,LBP)[4]、定向梯度直方圖(Histogram of Oriented Gradients,HOG)[5]、尺度不變特征變換(Scale Invariant Feature Transform,SIFT)[6]等,這些方法不僅設計困難,并且難以提取圖像的高階統計特征。另一種是基于深度學習的表情特征提取方法,目前深度神經網絡已廣泛應用在圖像、語音、自然語言處理等各個領域。為了適應不同的應用場景,越來越多的深度神經網絡模型被提出,例如AlexNet[7]、VGG[8]、GoogleNet[9]和ResNet[10],這些網絡模型被廣泛應用于各個領域,在人臉表情特征提取及分類上,也取得了不錯的效果。
但隨著深度神經網絡模型的不斷發展,其缺點也逐漸顯現。網絡模型的復雜化、模型參數的大量化等缺點,使得這些模型只能在一些特定的場合應用,移動端和嵌入式設備難以滿足其需要的硬件要求。復雜網絡模型對于硬件的高要求限制了其應用場景。基于此,Howard等[11]在2017年4月提出了一個可以應用于移動端和嵌入式設備的MobileNet輕量化網絡模型。文中提出的深度可分離卷積層,在保證精度損失不大的情況下,大大減少了網絡的計算量,從而為計算設備“減負”。但是這個版本的MobileNet模型在深度卷積層后引入非線性激活函數ReLU,而深度卷積沒有改變通道數的能力,其提取的特征是單通道的,且ReLU激活函數在通道數較少的卷積層輸出進行操作時,可能導致信息丟失。為了解決MobileNet第一版的問題,2018年1月Sandler等[12]提出第二版的MobileNet,即MobileNetV2。MobileNetV2使用了倒轉的殘差結構,即在采用當時流行的殘差結構的同時,在進入深度卷積前先將輸入送入1×1的點卷積,把特征圖的通道數“壓”下來,再經過深度卷積,最后經過一個1×1的點卷積層,將特征圖通道數再“擴張”回去。即先“壓縮”,最后“擴張”回去。前兩步的輸出都采用ReLU激活函數處理,最后一步采用線性輸出,可在一定程度上減少信息的丟失。然而此模型應用于實際人臉表情識別中識別效果依然不佳,且參數量和運算量很大,在安卓手機上測試時,實時性表現也不佳。除此之外,MobileNet網絡模型的最小輸入尺寸為96×96,而人臉表情識別允許更小的輸入尺寸,因此MobileNet難以滿足實際人臉表情識別的需要。
針對MobileNet的上述缺點,本文設計了一個基于輸入尺寸為48×48×1的單通道灰度圖片的改進MobileNet模型——M-MobileNet,不僅大大減小了網絡模型的參數量和運算量,使其更切合人臉表情識別的特點,還提升了其在人臉表情識別的實時性,除此之外,在CK+及KDEF人臉表情數據集上也取得了較高的識別率。由于MobileNetV2中采用“點卷積-深度卷積-點卷積”結構,其運算量和參數量較直接采用“深度卷積-點卷積”方式更多,MobileNetV2使用的殘差網絡結構也較直接使用順序級聯方式更復雜,且在實驗部分其在人臉表情識別率較其他優秀模型更低。因此為了更好地保留深度卷積后輸出的特征,不同于MobileNetV2中“先壓縮再擴張”的思想,M-MobileNet在深度卷積層輸出后,去掉用于提取非線性特征的激活層,采用線性輸出,同時為了提高模型的非線性表達,依然在點卷積后采用ReLU激活函數,在各卷積層之間依然采用順序級聯方式,不使用殘差連接方式,即采用本文提出的改進的深度可分離卷積層。另一方面,由于MobileNetV1和MobileNetV2使用Softmax分類器來進行分類,而由于人臉表情特征的特點,表情的類間區分本身就不高,所以Softmax在表情識別領域并不是很合適[13]。而SVM分類器作為一種具有較強泛化能力的通用學習算法,且對大數據高維特征的分類支持較好[14],其中L2-SVM[15]具有較好的可微可導性,故本文網絡使用L2-SVM代替MobileNet中Softmax分類器,訓練深度神經網絡進行分類。實驗驗證了M-MobileNet網絡相比MobileNet網絡可以有效提高人臉表情識別的準確率;同時為了驗證使用SVM分類器的有效性,還增加了與“M-MobileNet+Softmax”網絡模型的對比實驗。
傳統標準卷積既過濾輸入又將過濾后的輸出進行組合,最終形成一組新的輸出[11],如圖1(a)所示。假設輸入特征圖大小為M×M,通道數為C,標準卷積的卷積核大小為N×N,個數為K,并且假設輸出與輸入尺寸一致,則經過標準卷積后輸出尺寸為M×M,輸出通道數為K。傳統標準卷積過程,實際上包含了兩步:特征過濾和將過濾后的結果組合,圖1(b)顯示了輸入特征圖與第i(1≤i≤K)個卷積核進行標準卷積的過程。在這個過程中,首先輸入特征圖中的每個通道與對應的卷積核的每個通道進行卷積,卷積的結果是形成了C個M×M的單通道特征圖,然后將這C個結果合并,最終形成一個M×M×1的單特征圖。由于有K個卷積核,因此輸入特征圖與所有K個卷積核進行標準卷積后,共有K個M×M×1結果,最終結果為M×M×K的輸出特征圖,如圖1(a)所示。標準卷積的計算量為:
M×M×N×N×C×K
(1)

(a) 標準卷積

(b) 輸入與第i(1≤i≤K)個卷積核標準卷積過程示意圖

(c) 深度卷積

(d) 點卷積圖1 標準卷積、深度卷積、點卷積過程示意圖
深度可分離卷積則是將標準卷積分解為一個深度卷積和一個點卷積[11],深度卷積過程實際上是將輸入的每個通道各自與其對應的卷積核進行卷積,最后將得到的各個通道對應的卷積結果作為最終的深度卷積結果。實際上,深度卷積的過程完成了輸入特征圖的過濾,深度卷積過程如圖1(c)所示,其計算量為:
M×M×N×N×C
(2)
這里的點卷積則是將深度卷積的結果作為輸入,卷積核大小為1×1,通道數與輸入一致。點卷積過程類似標準卷積,實際上是對每個像素點在不同的通道上進行線性組合(信息整合),且保留了圖片的原有平面結構、調控深度。相比于深度卷積,點卷積具有改變通道數的能力,可以完成升維或降維的功能。點卷積過程如圖1(d)所示,其計算量為:
M×M×1×1×C×K=M×M×C×K
(3)
因此深度可分離卷積總的計算量為:
M×M×N×N×C+M×M×C×K
(4)
深度可分離卷積與傳統標準卷積計算量相比:
(5)
從式(5)可以看出,深度可分離卷積可有效減少計算量,若網絡使用卷積核大小為3×3,則深度可分離卷積可減少8至9倍計算量。相比傳統標準卷積,這種分解在有效提取特征的同時,精度損失也較小[11]。
在MobileNet網絡中,為了更好地表現網絡的非線性建模能力,同時為了防止梯度消失,減少了參數之間的依存關系,緩解過擬合發生,深度可分離卷積在深度卷積和點卷積后都使用了ReLU激活函數。同時,為了防止梯度爆炸,加快模型的收斂速度,提高模型精度,在ReLU激活函數前加入BN層,如圖2(a)所示。

(a) MobileNet中深度可分離卷積層 (b) 改進的深度可分離卷積層圖2 MobileNet及本文深度可分離卷積模型
ReLU定義如下:

(6)
式中:x表示輸出,f(x)表示輸出。
然而ReLU也有缺陷,它可能會使神經網絡的一部分處于”死亡”的狀態。假設網絡在前向傳導過程中如果有一個很大的梯度使得神經網絡的權重更新很大,導致這個神經元對于所有的輸入都給出了一個負值,然而這個負值經過ReLU后輸出變為0,這個時候流過這個神經元的梯度就永遠會變成0形式,也就是說這個神經元不可逆轉地“死去”了。神經元保持非激活狀態,且在后向傳導中“殺死”梯度。這樣權重無法得到更新,網絡無法學習,自然就丟失了信息。而在深度卷積的過程中,由于深度卷積沒有改變通道數的能力,其提取的特征是單通道的。而ReLU激活函數在通道數較少的卷積層輸出進行操作時,如果出現這種情況就可能導致信息的丟失,所以深度卷積后進行非線性是有害的,甚至可能影響網絡的建模能力。為此,文獻[12]使用了線性的反轉殘差網絡,然而此網絡應用于實際人臉表情識別中效果依然不佳,參數量和運算量依然很大,在安卓手機上測試時,實時性表現也不佳。除此之外,文獻[12]中的網絡模型允許的輸入尺寸與實際人臉表情圖像的輸入尺寸也不一致,因此MobileNet難以滿足實際人臉表情識別的需要。為了避免這些現象的發生,本文提出了一種改進的深度可分離卷積層,即在深度卷積后去掉中ReLU激活函數而采用線性輸出,其余與MobileNet中深度可分離卷積層一致,如圖2(b)所示。線性輸出表達如下:
f(x)=Wx+b
(7)
式中:W表示權重,b表示偏置,x表示輸入,f(x)表示輸出。
改進后的深度可分離卷積層的計算量與改進前相同,即保留了MobileNet網絡中深度可分離卷積可減少卷積計算量的優勢。同時,改進后的深度可分離卷積層在深度卷積層后采用了線性輸出,使得各通道的信息完全保留下來,從而為后續人臉表情識別提供可靠的人臉表情特征。為了驗證使用改進后的深度可分離卷積層的有效性,本文在實驗部分對使用未改進的深度可分離卷積層的模型進行了對比。
本文受到MobileNet網絡模型啟發,結合人臉表情識別的特點,在盡可能在減小網絡的計算量并且保持較高的識別率的原則下,設計了一個基于改進深度可分離卷積層輸入尺寸為48×48×1的改進MobileNet網絡模型M-MobileNet,其網絡結構如表1所示。

表1 M-MobileNet網絡結構

續表1

(8)
pi的計算公式為:
(9)
根據式(8)、式(9)求得所有7個可能概率,取最大概率對應的類別即為最終預測類別。由于人臉不同表情的類間區分度本身就不高,使用Softmax分類器很可能會產生誤判,因此在人臉表情識別方面不宜采用Softmax分類器。針對此問題,M-MobileNet采用L2-SVM作為分類器。在L2-SVM中,對于給定訓練數據(xn,yn),n=1,2,…,N,xn∈RD,tn∈{-1,1},帶有約束性的支持向量機:
(10)
s.t.wTxntn≥1-ξn?n
ξn≥0 ?n
目標函數:
(11)
預測類別為:
(12)
式中:w表示最優超平面法向量,C表示用來調節錯分樣本的錯誤比重,ξn表示松弛因子。
由于L2-SVM挖掘不同類別數據點的最大邊緣,具有較好的可微可導性,正則化項對錯分數據懲罰力度更大[16],且具有較強的泛化能力以及其對大數據高維特征的分類支持較好[14],對于人臉表情特征區分較好,所以本文使用SVM分類器替代MobileNet網絡模型中的Softmax分類器對目標進行分類。
改進后的網絡模型參數及與MobileNetV1、MobileNetV2的參數對比如表2所示。

表2 本文模型與MobileNetV1、MobileNetV2參數量對比
可以看出,M-MobileNet網絡模型參數較MobileNetV1減少90%左右,較MobileNetV2減少88%左右,大大縮減了MobileNet網絡模型參數。
本文在PC端上的實驗以Keras深度學習框架為基礎,以TensorFlow框架作為其后端,編程語言使用Python 3.5,在Windows 7 64位操作系統上進行實驗。硬件平臺為:Intel Core i5-7500 3.4 GHz CPU,8 GB內存。數據集使用CK+數據集(extended Cohn Kanade dataset)[17]和KDEF數據集(The Karolinska Directed Emotional Faces dataset)[18]。實驗中采用Adam優化器優化損失,epoch為100,batch_size為32。
本文的移動端的實時性實驗在小米8手機上進行,CPU為驍龍710,內存6 GB,操作系統為Andriod 9.0。編程語言為Java。
本文在CK+數據集上分別進行6分類和7分類實驗,在KDEF數據集上進行7分類實驗。
CK+數據集包括123名年齡在18~30歲之間的593個表情序列。其中,帶標簽的表情序列有327個,為了避免引起誤會,余下不確定的表情序列不帶標簽。標簽總共有7類,包括:“快樂”,“悲傷”, “憤怒”,“驚訝”,“恐懼”,“厭惡”和“蔑視”。每個帶標簽的表情序列僅有一個標簽。每個表情序列都是以中性表情開始,以對應峰值表情結束。在7分類實驗中,為了比較本文模型和目前國際上在CK+數據集上識別率處于領先地位的模型的準確率,在本實驗中,采用國際上比較通用的數據集選取和結果驗證方式,即選用所有帶標簽的表情序列中的最后三幀,總共得到了981幅圖像的實驗數據集,其表情選取數量分布如表3所示。然后將數據集進行交叉驗證,國際上常見的交叉驗證策略包括8折交叉驗證、10折交叉驗證等,本文采用10折交叉驗證策略。同理,在6分類實驗中,除了數據集選取不同外(6分類實驗中舍棄了蔑視表情),其他步驟與7分類實驗一致。

表3 CK+數據集7分類實驗樣本選取數量分布
KDEF數據集包括了20~30歲年齡段的70位業余演員(35位女性和35位男性)的7類表情圖像,共有4 900幅,拍攝角度包括正負90度、正負45度以及正面角度。本文選用正面角度圖像進行實驗,其數量分布如表4所示。同樣采用10折交叉驗證策略。

表4 KDEF數據集實驗樣本選取數量分布
原始數據集的原始圖像中包含了大量與人臉表情特征無關的冗余信息,且圖像較大,因此不適合直接用于網絡訓練。因此在訓練之前,對輸入圖片進行預處理是必要的。圖3顯示了圖像預處理前和處理后的人臉表情圖像示例。

圖3 預處理前后的人臉表情圖像示例
預處理過程如圖4所示,首先根據輸入圖片類型判斷是否轉換成單通道灰度圖,若圖片已經是單通道灰度圖,則直接轉到一下步,反之則進行轉換。然后對上一步的輸出圖像進行人臉檢測,確定人臉區域。最后根據人臉區域對圖像進行裁剪,將其裁剪至大小為48×48的單通道灰度圖。

圖4 圖像預處理流程圖
3.4.1CK+數據集7分類
本文按照表1所設計的網絡模型進行訓練,將預處理后的圖片輸入網絡,采用10折交叉驗證策略對網絡性能進行評估。表5顯示了本文模型與其他國際上在CK+數據集(7分類)準確率上取得領先水平的算法模型的對比結果,同時也對比了M-MobileNet+Softmax、MobileNet+Softmax、MobileNet+SVM、MobileNetV2四種網絡模型的準確率。

表5 不同算法模型在CK+數據集(7類)上的準確率對比
可以看出,使用本文網絡M-MobileNet提取特征后,無論是使用Softmax分類器還是SVM分類器,其準確率都高于其他模型,說明M-MobileNet網絡具有良好的特征提取能力。而相比于傳統未改進的MobileNet網絡模型,M-MobileNet+Softmax網絡模型高于未改進前0.93%,且本文最終模型M-MobileNet高于未改進前0.41%,說明改進的深度可分離卷積層相比未改進的深度可分離卷積層可以有效提高網絡的識別率。從M-MobileNet、MobileNet+Softmax、MobileNetV2的準確率來看,M-MobileNet高于MobileNetV2網絡1.13%,高于MobileNet+Softmax網絡1.03%,說明M-MobileNet提高了MobileNet在人臉表情上的識別率。從M-MobileNet+Softmax網絡及M-MobileNet網絡的準確率來看,使用SVM分類器高于使用Softmax分類器0.1%,說明使用SVM分類器可以提高模型識別的準確率。
3.4.2CK+數據集6分類
本文比較了目前國際上對CK+數據集作6分類準確率較為領先的模型,同樣采用10折交叉驗證策略對網絡性能進行評估。表6顯示了本文模型與其他國際上在CK+數據集6分類準確率上取得領先水平的算法模型的對比結果,同時也對比了M-MobileNet+Softmax、MobileNet+Softmax、MobileNet+SVM、MobileNetV2四種網絡模型的準確率。

表6 不同算法模型在CK+數據集(6類)上的準確率對比
可以看出,無論是使用Softmax分類器還是使用SVM分類器,使用基于改進的深度可分離卷積的M-MobileNet網絡的模型的準確率都高于使用未改進的深度可分離卷積的模型,再次證明模型中使用改進的深度可分離卷積層相比使用未改進的深度可分離卷積層的網絡模型可以有效提高模型的識別率。從M-MobileNet、MobileNet+Softmax、MobileNetV2的準確率來看,M-MobileNet高于MobileNetV2網絡2.68%,高于MobileNet+Softmax網絡0.87%,進一步證明M-MobileNet提高了MobileNet在人臉表情上的識別率。而雖然在7分類實驗中使用SVM分類器相比使用Softmax分類器模型識別的準確率僅提高0.1%,但是在6分類實驗中M-MobileNet網絡與M-MobileNet+Softmax網絡相比,其準確率提高了0.66%,明顯提高了模型識別的準確率,說明使用SVM分類器能提高網絡模型對人臉表情的識別準確率。而本文最終網絡模型M-MobileNet對表情分類的準確率高于表中其他模型。
3.4.3KDEF數據集
本文模型在KDEF數據集的實驗結果及與其他算法模型對比如表7所示。

表7 不同算法模型在KDEF數據集上的準確率對比
可以看出,本文模型M-MobileNet準確率最高,高于表中所有其他模型,說明本文模型具有較好的識別性能。M-MobileNet網絡模型準確率高于M-MobileNet+Softmax 0.73%,MobileNet+SVM高于MobileNet+Softmax 0.27%,說明使用SVM分類器相比Softmax分類器可以有效提高準確率;M-MobileNet網絡模型的準確率高于MobileNet+SVM 1.03%,M-MobileNet+Softmax網絡模型的準確率高于MobileNet+Softmax 0.58%,說明使用改進后的深度可分離卷積模型可以提高深度可分離卷積層的網絡模型的準確率,進一步證明使用改進后的深度可分離卷積可以盡可能防止信息丟失。而M-MobileNet準確率高于MobileNetV2模型1.53%。
3.4.4移動端實時性
為了驗證本文模型在移動端的實時性能,本文還在移動端上對比了M-MobileNet與MobileNetV1、MobileNetV2模型在小米8手機上的實時性表現,在CK+數據集上選取7種表情各一幅典型表情的圖像進行預測,表8顯示了各個模型預測1 000次后的結果。

表8 本文模型與MobileNetV1、MobileNetV2移動端表現對比
從表8可以看出,M-MobileNet網絡無論是使用Softmax分類器還是SVM分類器,其實時性都比MobileNetV1、MobileNetV2好很多,說明本文模型相比MobileNetV1、MobileNetV2模型具有更好的實時性,結合表2可知,本文模型不僅減少了網絡參數,同時還提高了實時性性能。同時從預測時間可以看出,M-MobileNet+Softmax及M-MobileNet二者預測時間都小于40 ms,可以看出二者都具有較好的實時性,考慮到二者預測時間相差不大,而在準確性實驗中SVM分類器具有更好的準確率,因此本文最終采用SVM分類器。
本文提出了一種改進的MobileNet模型M-MobileNet用于人臉表情特征提取及分類。在M-MobileNet網絡模型中,通過使用改進的深度可分離卷積層保證了網絡的輕量級特性,解決了深度卷積的輸出使用非線性激活函數而可能導致信息丟失的問題,提高了網絡的特征提取能力。同時為了有效對表情進行分類,使用SVM分類器對人臉表情進行分類,提高了網絡對于人臉表情的識別準確率。實驗結果表明,本文模型不僅提高了模型的準確率,還實現與現有其他人臉表情識別模型更好的識別性能。在安卓手機上的實驗證明,本文模型具有相較于改進前具有更好的實時性。與其他當前優秀算法模型的比較,也看出本文網絡模型能夠獲得更好的識別率,說明其具有良好的應用價值。