亢 潔,李思禹
(陜西科技大學 電氣與控制工程學院,陜西 西安 710021)
人臉表情[1,2]識別最核心的部分是特征提取。經(jīng)典的方法都是以人工特征為基準進行提取的,如LBP[3]、HOG[4]等。但是特征選取的好壞直接決定了表情識別準確率的高低,這對于表情識別是極其不穩(wěn)定的。卷積神經(jīng)網(wǎng)絡(convolution neural network,CNN)不需要手動提取特征,然而提高卷積神經(jīng)網(wǎng)絡的人臉表情識別性能最直觀的方法是堆疊更多的層,因此網(wǎng)絡基礎結構也在研究中隨著性能的提升而不斷增大。卷積神經(jīng)網(wǎng)絡的另一個缺點是依賴于大量的數(shù)據(jù)驅(qū)動,尤其是在人臉表情識別中,很難獲取大量識別場景下的標注表情數(shù)據(jù)集。此時將現(xiàn)有的小型已標記的數(shù)據(jù)集應用于具有大型基礎結構的網(wǎng)絡中,容易產(chǎn)生過擬合,網(wǎng)絡識別性能下降。
針對以上問題,本文提出了一種基于注意力機制的人臉表情識別遷移學習方法。該方法具有以下兩個特點:設計了一個基于特征分組和空間增強注意力機制(spatial group-wise enhance module,SGE)[5]的輕量型卷積神經(jīng)網(wǎng)絡來有效提取人臉表情特征;利用遷移學習在目標函數(shù)中構造了一個基于log-Euclidean距離的損失項來減小源域與目標域之間的分布距離。
遷移學習的主要思想是對源域的標注數(shù)據(jù)或知識結構進行遷移,以完成或提高目標領域的學習效果。領域自適應是遷移學習重要的一個分支,其目的是在不同領域內(nèi)存在差異的情況下傳遞知識。它可以應用在當目標域的數(shù)據(jù)未標記,而源域數(shù)據(jù)已標記的情況,最終目標是最小化源域和目標域之間的相關性差異,并成功將在源域上訓練的模型轉(zhuǎn)移到目標域。
本文提出了一種基于注意力機制的人臉表情識別遷移學習方法。該方法由兩個相同的卷積神經(jīng)網(wǎng)絡組成,其中一個卷積神經(jīng)網(wǎng)絡的輸入是已標記的源域人臉表情數(shù)據(jù),另一個網(wǎng)絡的輸入是未標記的目標域人臉表情數(shù)據(jù)。源域卷積神經(jīng)網(wǎng)絡和目標域卷積神經(jīng)網(wǎng)絡之間共享相同的權重參數(shù)。由于卷積神經(jīng)網(wǎng)絡的全連接層將分布式特征映射到樣本標記空間,因此利用全連接層作為域適應適配層來實現(xiàn)域適應。通過域適配層得到表征源域和目標域數(shù)據(jù)的分布特征后,構造了一個基于log-Euclidean距離[6]的損失函數(shù),以此來計算提取到的源域和目標域特征之間的分布距離,并將其視為兩個域之間的相關性差異。接著在卷積神經(jīng)網(wǎng)絡進行參數(shù)更新的過程中,結合了分類損失和log-Euclidean損失一起進行聯(lián)合訓練,最大程度減小了源域和目標域之間的相關性差異,在訓練結束時兩種損失達到平衡狀態(tài),最終可以使目標域得到有效的表情分類。本文方法在訓練過程中,有標簽的源域數(shù)據(jù)用來計算多分類損失,而對于新構造的基于log-Euclidean距離的損失項,所提網(wǎng)絡結構中所有輸入均參與。該方法中還設計了新的網(wǎng)絡結構,引入了殘差恒等塊和注意力模塊SGE,豐富了特征連接,增強了人臉表情的特征學習。本文網(wǎng)絡整體結構如圖1所示。
圖1 基于注意力機制的人臉表情識別遷移學習方法結構
本文提出的基礎網(wǎng)絡主要由9個卷積層、6個最大池化層和兩個全連接層組成。該網(wǎng)絡中9個卷積層的卷積核大小均為5*5,步長均為1,通道數(shù)依次為64、64、64、128、128、128、64、64、64,并且每個卷積層后都分別加有批量歸一化(batch normalization,BN)[7],激活函數(shù)ELU(exponential linear unit)[8]和注意力機制SGE模塊。該網(wǎng)絡在卷積連接中存在3個殘差恒等塊,網(wǎng)絡中的殘差恒等塊結構如圖2所示,其中包含了兩個卷積層和兩個SGE模塊,它可以將輸入直接與后面SGE模塊的處理結果之和輸出給下面的網(wǎng)絡層。池化層在第1、3、4、6、7、9個SGE模塊之后,所有池化窗口大小為3,步長為2。全連接層在以上所有網(wǎng)絡層之后,分別是一個64維的域適應適配層和一個用來輸出7類表情預測的Softmax分類器。整體網(wǎng)絡結構如圖3所示。
圖2 殘差恒等塊結構
圖3 卷積神經(jīng)網(wǎng)絡結構
人臉表情識別的重點在于特征提取。本文網(wǎng)絡引入注意力機制SGE模塊幫助網(wǎng)絡更加精確地提取人臉表情特征。SGE模塊采用了特征分組的思想,沿通道將卷積特征分組為多個子特征。由于缺乏對人臉表情特定區(qū)域或細節(jié)的監(jiān)督,同時表情圖像中可能會存在噪聲,表情特征的空間分布會出現(xiàn)不穩(wěn)定的情況,從而會削弱局部表情特征的表達能力。為了使每一組特征在空間上具有魯棒性和良好分布性,SGE在每一個特征組內(nèi)建立了一個空間增強機制,使用注意遮罩在所有位置上縮放特征向量,注意遮罩的生成源為全局統(tǒng)計特征和局部特征之間的相似性。這種設計能有效抑制噪聲,并能突出語義特征重點區(qū)域。其目的在于提高各組不同語義子特征的學習,并自我增強組內(nèi)空間分布。SGE模塊的結構如圖4所示。
該注意力機制SGE模塊首先將一個C通道,H×W的卷積特征沿通道數(shù)劃分為G組。SGE并行處理所有的子特征組,同時在每個子特征組內(nèi)進行單獨的注意操作。其中一個特征組在空間內(nèi)的每個位置上都存在一個特征向量,在這里將此原始特征向量表示為xi,xi∈RC/G,1
(1)
接下來,利用組內(nèi)的全局特征和原始特征的點積結果,來獲得每個特征對應的注意系數(shù),將此注意系數(shù)記為ci,則有
ci=g·xi
(2)
(3)
(4)
(5)
(6)
圖4 SGE模塊結構
(7)
人臉表情識別最終要解決的問題的本質(zhì)是利用卷積神經(jīng)網(wǎng)絡提取一組圖像的特征向量并將其類別劃分為K類。網(wǎng)絡在預測過程中用分類器來為給定的這組圖像提供一個屬于K類中每個類的概率。在本文所提的實際問題中,即將一組人臉表情數(shù)據(jù)分為7類(6類基本表情和正常表情)。在遷移學習中,定義了源域表情數(shù)據(jù)為XS,源域表情標簽為y,無標簽的目標域表情數(shù)據(jù)為XT。 將源域XS和標簽y輸入源域卷積通道,將目標域XT輸入目標域卷積通道,在提取源域和目標域的人臉表情特征之后,利用log-Euclidean距離來計算兩個域之間的表情特征相關性差異,然后使其和多分類損失一起作為優(yōu)化目標來實現(xiàn)源域和目標域之間的相關對齊。
首先,用CS和CT來分別表示源域和目標域的特征協(xié)方差矩陣,則有
(8)
(9)
其中,nS和nT分別表示源域和目標域數(shù)據(jù)的個數(shù),1表示一個列向量,所有元素都為1。一般情況下,兩個域之間的相關性差異利用協(xié)方差定義,假設此處將相關性差異用基于Euclidean距離的方法表示,則有
(10)
(11)
式中:U和V分別表示CS和CT的對角化矩陣,σi和μi(i=1,…,d) 為相應的特征值。此時考慮到,若只最小化分類損失,可能會導致對源域過度擬合,從而降低目標域上的性能,另外,若單靠最小化log-Euclidean距離可能會導致表情特征一定程度上的退化。最終,使用多分類損失函數(shù)與此距離一起來定義為遷移學習的總損失,則有
l=lclass+λllog(CS,CT)
(12)
式中:l表示遷移學習的總損失,將會作為最終的優(yōu)化目標來更新網(wǎng)絡參數(shù),lclass表示源域的多分類損失,llog(CS,CT) 表示源域和目標域之間的分布距離,λ表示權衡分布距離在網(wǎng)絡中作用的權值。多分類損失函數(shù)的定義為
(13)
式中:yp表示網(wǎng)絡預測的表情類別,y表示真實的表情類別,i表示已定義的表情類別數(shù)目。在訓練結束時,多分類損失和基于log-Euclidean距離的損失項會達到一定平衡,最終能夠在源域數(shù)據(jù)上保持良好分類精度的同時,也在目標域數(shù)據(jù)上獲得更好的人臉表情分類性能。
本文實驗用到了3個人臉表情數(shù)據(jù)庫,分別為RAF-DB[10]、JAFFE[11]、CK+[12]。
RAF-DB[10]數(shù)據(jù)庫的人臉圖像均來自互聯(lián)網(wǎng),共有29 672張。該數(shù)據(jù)庫提供了7類基本表情的子集和11類復合表情的子集。本文實驗借助其7類基本表情(生氣、厭惡、害怕、高興、悲傷、驚訝、正常)的子集進行訓練,共包含15 339張圖片。本文在實驗之前,對該數(shù)據(jù)集進行了相關預處理。主要原因在于該數(shù)據(jù)集的各類表情數(shù)量相差很大,差距最大的兩類表情為害怕(355張)和高興(5957張)。因此,本文將該數(shù)據(jù)集進行均衡化處理,主要表現(xiàn)在對數(shù)量多的表情進行過采樣處理(包括對圖像的水平翻轉(zhuǎn)和隨機旋轉(zhuǎn)操作),對數(shù)量少的表情進行欠采樣處理。處理后的數(shù)據(jù)集包含14 640張圖片,各類表情數(shù)量相對平衡。
JAFFE[11]數(shù)據(jù)庫是一個來自實驗室的圖像數(shù)據(jù)庫,包含來自10個日本女性的213個表情圖像,其中每個人均有7類基本表情,每種圖像表情有3張或4張。由于該數(shù)據(jù)集中的圖像包含無關表情區(qū)域,因此本文在實驗之前對其做了裁剪,只保留了人臉表情區(qū)域,實驗中使用的數(shù)據(jù)全部為裁剪后的人臉表情圖像。
CK+[12]同樣是實驗室數(shù)據(jù)庫,包含123名受試者的593個視頻序列,其中有標記的只有309段表情序列,標記規(guī)則為6種基本面部表情。本文實驗從此309段表情序列中提取最后1幀到3幀和每個序列的第一幀,以此作為正常表情,然后將其與上述提到的已標記的6種表情組合起來,作為本文實驗的7類表情數(shù)據(jù)集,共包含1236張圖片。
本文實驗主要分為兩組,一組是從RAF-DB數(shù)據(jù)集到JAFFE數(shù)據(jù)集的人臉表情遷移實驗,另一組是從RAF-DB數(shù)據(jù)集到CK+數(shù)據(jù)集的人臉表情遷移實驗。即源域數(shù)據(jù)為有標簽的RAF-DB人臉表情數(shù)據(jù)集,目標域數(shù)據(jù)為無標簽的JAFFE人臉表情數(shù)據(jù)集和無標簽的CK+人臉表情數(shù)據(jù)集。
本文所有實驗均將3個數(shù)據(jù)集中的人臉表情圖片縮放到56×56像素大小之后再輸入至網(wǎng)絡中,訓練數(shù)據(jù)批量大小為128,并采用學習率為0.009,動量為0.9,權值衰減系數(shù)為0.0001的動量梯度下降法進行訓練,輸出為不同類別表情的概率。
本文實驗是基于Tensorflow的深度學習框架構建的,編程語言及版本為Python3.6.5,使用的CPU為內(nèi)存16 G Intel(R) Core(TM)i7-8700,GPU為11 GB的NVIDIA GeForce GTX 1080 Ti。
本文實驗的評價準則之一為人臉表情識別正確率,其定義為
(14)
式中:Ni表示為第i類識別正確的表情數(shù)量,nT表示為目標域數(shù)據(jù)的表情數(shù)量。
2.3.1 通道分組數(shù)對比實驗
本文實驗將基于特征分組的注意力機制模塊SGE嵌入到卷積神經(jīng)網(wǎng)絡中,并研究其通道分組數(shù)G對網(wǎng)絡性能的影響。SGE模塊中的通道分組數(shù)G取值不同,則相關語義子特征的數(shù)目不同。因此,一定存在一個合適的分組數(shù)G,可以相對平衡表示每個語義,從而優(yōu)化網(wǎng)絡性能。本文在未使用遷移學習的條件下,對G=2,4,8,16,32,64這6種情況進行對比實驗,實驗結果如圖5和圖6所示。
圖5 JAFFE表情識別正確率
圖6 CK+表情識別正確率
結果顯示,在G=2時,網(wǎng)絡在兩個數(shù)據(jù)集上的人臉表情識別正確率最差,數(shù)據(jù)集JAFFE上的正確率為45.23%,數(shù)據(jù)集CK+上的正確率為58.81%。當G的逐漸增大時,網(wǎng)絡的表情識別正確率逐漸升高。在G=32時,網(wǎng)絡在兩個數(shù)據(jù)集上均達到正確率的最高值,數(shù)據(jù)集JAFFE上的人臉表情識別正確率為49.09%,數(shù)據(jù)集CK+上的人臉表情識別正確率為60.34%。當G增大到64時,網(wǎng)絡在兩個數(shù)據(jù)集上的識別正確率開始下降,分別為48.50%和60.09%??梢钥闯觯S著G的增加,網(wǎng)絡的性能呈現(xiàn)出先升后降的趨勢。因為通道數(shù)是固定的,分組過多會減少組內(nèi)語義子特征的維數(shù),導致每個語義響應的特征表示較弱,反之,分組過少會限制語義特征表達的多樣性。顯然,當G=32時在本文網(wǎng)絡框架中能得到最好的特征平衡,因此,本文將選擇G=32來進行后續(xù)所有的實驗。
2.3.2 懲罰系數(shù)對比實驗
懲罰系數(shù)λ是一個權值,在源域上用分類精度來權衡域適應的效果。因此,一定有一個相對合適的λ值來權衡遷移的程度。本文實驗選取λ=0.2,0.4,0.8,1.0,1.2,1.4來進行對比人臉表情識別的分類效果,實驗結果如圖7和圖8所示。
圖7 JAFFE表情識別正確率
圖8 CK+表情識別正確率
結果顯示,隨著λ的增加,網(wǎng)絡的人臉表情識別性能先增大后減小。在λ=0.2時,數(shù)據(jù)集JAFFE上的人臉表情識別正確率為49.61%,比未使用遷移學習時高0.52%,數(shù)據(jù)集CK+上的人臉表情識別正確率為60.97%,比未使用遷移學習時高0.63%,說明加入遷移之后對網(wǎng)絡的識別性能有一定幫助。當λ逐漸增大時,網(wǎng)絡的表情識別正確率逐漸升高。顯然,當λ=1.0時,表情識別正確率最高,在數(shù)據(jù)集JAFFE上達到54.12%,在數(shù)據(jù)集CK+上達到65.03%,在兩個數(shù)據(jù)集上分別比未遷移時高出5.03%和4.69%。當λ增大到1.2時,網(wǎng)絡的表情識別率在兩個數(shù)據(jù)集上的表情識別率開始下降,分別為53.49%和64.39%,當λ繼續(xù)增大時,正確率更低。說明懲罰系數(shù)并不是越大越好,如果讓λ繼續(xù)增大,網(wǎng)絡的識別正確率可能會出現(xiàn)低于未使用遷移時的正確率。因此選擇合適的懲罰系數(shù)能更好地權衡域適應的效果,對網(wǎng)絡的識別性能相當重要。
2.3.3 不同方法對比實驗
為了驗證所提方法的有效性,本文通過人臉表情識別正確率,卷積神經(jīng)網(wǎng)絡參數(shù)量和卷積神經(jīng)網(wǎng)絡計算復雜度(floating point operations,F(xiàn)LOPs)這3個指標將本文提出的卷積神經(jīng)網(wǎng)絡(Our CNN)、使用遷移學習方法后的卷積神經(jīng)網(wǎng)絡(Our CNN & log-Euclidean)與常用的人臉表情識別網(wǎng)絡AlexNet[13]、VGG16[14]和遷移學習方法Deep CORAL[15]進行了對比,實驗結果見表1。
表1 不同網(wǎng)絡對比實驗
表1數(shù)據(jù)結果顯示,在不使用遷移學習的情況下,本文方法在數(shù)據(jù)集JAFFE上的人臉表情識別正確率為49.09%,在數(shù)據(jù)集CK+上的人臉表情正確率為60.34%,比AlexNet網(wǎng)絡在兩個數(shù)據(jù)集中的正確率分別高出3.13%和3.45%,比VGG16網(wǎng)絡在兩個數(shù)據(jù)集中的正確率分別高出1.74%和2.27%,說明了本文網(wǎng)絡在識別任務上有一定的成效。在加上遷移學習方法后,兩個數(shù)據(jù)集的表情識別正確率分別可以達到54.12%和65.03%,這個結果比未加上遷移方法的識別正確率分別高出了5.03%和4.69%,比AlexNet網(wǎng)絡分別高出8.16%和8.14%,比VGG16網(wǎng)絡分別高出6.77%和6.96%,驗證了本文所提的遷移學習方法能有效地減小源域和目標域之間的分布距離。此外,本文遷移方法的識別正確率在兩個數(shù)據(jù)集上的識別正確率比遷移方法Deep CORAL分別高出4.35%和4.17%,足以驗證了本文方法在優(yōu)化源域和目標域之間的相關對齊問題上的優(yōu)越性,更適用于人臉表情識別任務。
另外由表1還可以可以看到,本文網(wǎng)絡的參數(shù)量大約為1.7 M,AlexNet網(wǎng)絡和VGG16網(wǎng)絡的參數(shù)量大約為62 M 和138 M,本文網(wǎng)絡的參數(shù)量在一眾對比方法中最少,大約為AlexNet網(wǎng)絡參數(shù)量的1/37,VGG16網(wǎng)絡參數(shù)量的1/83。另外本文所提網(wǎng)絡的計算復雜度為0.261 G,而AlexNet網(wǎng)絡和VGG16網(wǎng)絡的計算復雜度為0.727 G和16 G,大約為本文網(wǎng)絡的3倍和61倍,表明本文所提網(wǎng)絡運行效率較高,因此本文網(wǎng)絡實現(xiàn)了輕量化的同時還取得了較高的表情識別正確率。綜合兩個數(shù)據(jù)集上實驗結果,驗證了本文所提方法在人臉表情識別任務上的有效性,并且有一定的應用價值。
圖9和圖10給出了相同實驗環(huán)境下數(shù)據(jù)集JAFFE和CK+上實驗結果的混淆矩陣,可以更加明了地觀察到本文所提方法的人臉表情識別效果。結果顯示,在JAFFE和CK+兩個數(shù)據(jù)集中,本文方法對驚訝表情的識別正確率最高,分別為90%和93%;其次是高興表情,正確率分別為77%和72%。通過觀察表情圖片發(fā)現(xiàn),表情驚訝和高興的表現(xiàn)特征較其它表情更為明顯,表情驚訝大多都會表現(xiàn)出眼睛大睜、眉毛抬起、雙唇分開等,表情高興大多都會表現(xiàn)出下眼瞼上揚、嘴巴變長、臉頰上升等。因此驚訝和高興表情的識別正確率較高。從圖中還可以看出,本文方法在兩個數(shù)據(jù)集上對生氣表情的識別正確率最低,分別為13%和4%。另外可以很明顯地發(fā)現(xiàn),本文方法很容易將生氣表情識別為厭惡表情,這種情況在兩個數(shù)據(jù)集中分別高達50%和61%,并且在厭惡表情的識別中,仍舊有不可忽視的一部分誤識別為生氣表情。通過觀察發(fā)現(xiàn),兩個數(shù)據(jù)集中生氣和厭惡表情的樣例特征較為相似,都出現(xiàn)了相似程度的皺眉、皺鼻和嘴巴鼓起,給識別工作帶來了一定的難度,因此混淆矩陣給出的結果相對合理。
圖9 JAFFE混淆矩陣
圖10 CK+混淆矩陣
本文提出了一種基于注意力機制的人臉表情識別遷移學習方法。該方法主體為兩個相同且參數(shù)共享的卷積神經(jīng)網(wǎng)絡,其使用已標記的源域數(shù)據(jù)輔助訓練未標記的目標域數(shù)據(jù),且利用SGE模塊將特征分組并使每個單獨的特征組自主增強其學習表達,提高了網(wǎng)絡的特征提取能力。最后在目標函數(shù)中構造了一個基于log-Euclidean距離的損失項,并將其與多分類損失一起作為優(yōu)化目標來實現(xiàn)源域和目標域之間的相關對齊,提高了表情分類能力。實驗結果表明,本文方法能夠在自主增強人臉表情特征學習的同時,還能成功將源域知識遷移到目標域上,最終使目標域表情數(shù)據(jù)正確分類。