胡北辰
(安徽電子信息職業(yè)技術(shù)學(xué)院信息與智能工程系,安徽 蚌埠 233000)
隨著人工智能和機器學(xué)習(xí)(尤其是深度神經(jīng)網(wǎng)絡(luò))技術(shù)的發(fā)展,人臉圖像識別也隨之發(fā)展。而且,現(xiàn)有的人臉識別精度已經(jīng)超過人眼。人臉表情識別(Facial Expression Recognition,FER)作為人臉識別技術(shù)中的一個關(guān)鍵部分,近年來在各個領(lǐng)域均得到了廣泛的關(guān)注。情感的聲音、手勢、面部表情等構(gòu)成人類情感的因素。在上述因素中,面部表情在情感分析中起著最重要的作用[1]。自動FER系統(tǒng)通常接收以靜止圖像或者一系列幀作為輸入,并輸出多種基本普遍情感(例如,憤怒、厭惡、恐懼、幸福、悲傷、驚奇和中立)。FER的常規(guī)方法都使用機器學(xué)習(xí)分類器對提取的內(nèi)容進行分類(例如,Gabor小波系數(shù)[2]、局部二進制模式的直方圖(LBP)[3]、定向梯度的直方圖(HOG)[4]等)。由于上述的方法對計算能力的需求較大,而且模型較大,因此很少能滿足實時要求。本研究基于輕量級的OpenCV軟件庫,設(shè)計人臉表情圖像識別系統(tǒng)。
系統(tǒng)主要包括兩部分,如圖1所示。
圖1 系統(tǒng)框架
圖像的預(yù)處理可能會因各種因素而異,例如采集設(shè)備的性能或插圖條件的變化。數(shù)據(jù)預(yù)處理是一個重要的過程,數(shù)據(jù)預(yù)處理的一般目的是消除噪聲,并對圖像的灰度值進行歸一化和集中化處理,從而為后續(xù)的分類和識別提供堅實的基礎(chǔ)。但是,大量的圖像預(yù)處理可能需要大量的運行時成本,因此實時系統(tǒng)需要在保持準(zhǔn)確性的同時減少預(yù)處理工作量。
1.1.1 人臉檢測
系統(tǒng)中的離線和實時人臉檢測是基于OpenCV的Haar級聯(lián)分類器[5]實現(xiàn)的。在加載了進行預(yù)訓(xùn)練的面部XML分類器后,系統(tǒng)將輸入圖像轉(zhuǎn)換為灰度模式。當(dāng)分類器檢測到人臉后,則返回人臉矩形感興趣區(qū)域(ROI)的四個坐標(biāo)。然后,使用這四個頂點來裁剪面,以刪除不相關(guān)的背景。
1.1.2 數(shù)據(jù)增強
由于CNN的訓(xùn)練過程本身會合并大量數(shù)據(jù),因此在CNN的訓(xùn)練過程中通常會使用數(shù)據(jù)增強。系統(tǒng)首先在Tensor Flow中使用輕量級庫將裁剪后的臉部變形,然后將其輸入到CNN中。每個裁剪的面都是通過對隨機變形邊界框進行隨機采樣得到的。采樣斑塊的面積是原始圖像的[0.85,1],生成圖像的數(shù)量為100。此外,在重新縮放后,系統(tǒng)采用OpenCV中的filp()函數(shù)對圖像進行水平隨機翻轉(zhuǎn)以生成兩倍數(shù)據(jù)。最后,數(shù)據(jù)集的大小將增加200倍。
1.1.3 重縮放
由于CNN訓(xùn)練輸入必須為正方形,因此數(shù)據(jù)增強后的所有裁剪圖像都將使用OpenCV中的resize()函數(shù)重新縮放為48×48像素的圖像。選擇此48×48重縮放參數(shù)的原因是要與FER-2013數(shù)據(jù)集的分辨率保持一致。重新縮放后,數(shù)據(jù)被歸一化為[-1,1]的范圍。
系統(tǒng)所采用的CNN架構(gòu)是MobileNet的第一個版本(即MobileNet v1),以實現(xiàn)離線和實時的人臉識別。MobileNet v1架構(gòu)既注重訓(xùn)練速度和模型大小,又易于調(diào)整資源和準(zhǔn)確性。MobileNet v1的核心是將標(biāo)準(zhǔn)卷積解耦為深度卷積和1×1點式卷積。與其他流行的CNN基準(zhǔn)測試(例如Alex Net,GoogleNet,VGG16,SqueezeNet)相比,MobileNet v1所具有的體積小、復(fù)雜度低和精確度高的特點使FER任務(wù)可以在速度和準(zhǔn)確性之間保持良好的平衡。
基于CNN的FER的主要問題是大多數(shù)現(xiàn)有面部表情數(shù)據(jù)集的大小不足?;贑NN的方法學(xué)習(xí)和提取特征并獲得高精度的分類結(jié)果需要數(shù)以百萬計的訓(xùn)練數(shù)據(jù),但大多數(shù)面部表情數(shù)據(jù)集的大小僅為數(shù)百或數(shù)千。使用有限的數(shù)據(jù)量來訓(xùn)練深度模型非常具有挑戰(zhàn)性,因為有限的訓(xùn)練數(shù)據(jù)可能會引起過擬合問題。另外,在不利用預(yù)訓(xùn)練模型的情況下從頭開始訓(xùn)練非常耗時。解決此問題的常用方法之一是使用歸納遷移學(xué)習(xí),即微調(diào)策略。首先使用一組預(yù)訓(xùn)練的權(quán)重來初始化網(wǎng)絡(luò),然后為另一個新的目標(biāo)任務(wù)重新訓(xùn)練這些參數(shù)。這些預(yù)訓(xùn)練的權(quán)重適用于初始化CNN的隱藏層。為了在微調(diào)期間進一步彌補CK+和JAFFE數(shù)據(jù)集的小規(guī)模并克服目標(biāo)任務(wù)和源任務(wù)之間的差異,系統(tǒng)使用FER-2013數(shù)據(jù)集。系統(tǒng)的CNN訓(xùn)練方案采用了“兩階段”微調(diào),而不僅僅是執(zhí)行“一步”微調(diào)。如圖1所示,該技術(shù)是一種“從粗到精”的訓(xùn)練過程。為了利用大型FER-2013數(shù)據(jù)集,首先通過使用源域中ILSVRC-2012的預(yù)訓(xùn)練權(quán)重初始化網(wǎng)絡(luò),在目標(biāo)域中微調(diào)相對較小的數(shù)據(jù)集FER-2013。考慮到FER任務(wù)和對象分類(目標(biāo)和源)之間的距離,將此第一階段微調(diào)稱為“粗略”微調(diào)。從FER-2013獲得最佳訓(xùn)練模型后,通過將這些預(yù)訓(xùn)練權(quán)重集傳輸?shù)骄W(wǎng)絡(luò),將第二階段微調(diào)步驟應(yīng)用于JAFFE和CK+數(shù)據(jù)集。由于目標(biāo)和源任務(wù)在此過程中相同,因此將其稱為“精煉”微調(diào)。
對于這兩種微調(diào)方案,最后一個完全連接的層都被一個新的分類層所取代,該分類層對7個類別進行了分類。對于“粗略”微調(diào)階段,從高斯分布中隨機初始化第一卷積層的權(quán)重集,因為預(yù)處理后圖像的輸入大小為48×48,而原始Mobile Net v1為224×224。第一階段微調(diào)的初始學(xué)習(xí)率相對較小,設(shè)置為0.001,以便從ImageNet調(diào)整網(wǎng)絡(luò)早期層的預(yù)訓(xùn)練權(quán)重。對于“精煉”微調(diào),由于輸入大小相同,即48×48,因此從FER-2013開始將第一層的預(yù)訓(xùn)練權(quán)重直接設(shè)置為初始設(shè)置。將初始學(xué)習(xí)率設(shè)置為一個較大的值(如,0.045)以“鎖定”早期層的權(quán)重,并且重新學(xué)習(xí)特定數(shù)據(jù)集的高級功能。
在訓(xùn)練過程中,中心損失(Center Loss)的作用是通過增加特征與其樣本的相應(yīng)類中心之間的距離約束來減少類內(nèi)差異。中心損失的計算如式(1)所示:
其中x i代表在最終分類層之前提取的第i個深層特征,而c y i代表第y i類的學(xué)習(xí)中心。在每次迭代中使用小批量策略更新中心,并通過取相應(yīng)類的深層特征的平均值進行計算。此外,還使用0.001的超參數(shù)α來控制每次迭代內(nèi)更新期間這些中心的學(xué)習(xí)率,如式(2):
系統(tǒng)中,中心損失與常規(guī)softmax損失一起受到監(jiān)督,用于網(wǎng)絡(luò)優(yōu)化的總損失由公式(3)計算:
其中,λ(λ=0.001)是平衡兩個損失函數(shù)的超參數(shù)。系統(tǒng)采用隨機梯度下降(SGD)來優(yōu)化神經(jīng)網(wǎng)絡(luò),以穩(wěn)定更新并大大加快收斂速度。平均池化層層之后提取的深層特征用于計算中心損失,最后一個完全連接層之后提取的那些元素用來計算softmax損失。算法1總結(jié)了學(xué)習(xí)過程的細節(jié)。初始化后,首先在每次迭代期間計算總損失。然后,通過計算反向傳播誤差的梯度來更新網(wǎng)絡(luò)的權(quán)重和參數(shù)。
系統(tǒng)使用了兩個常用的標(biāo)準(zhǔn)數(shù)據(jù)集:CK+和JAFFE。另外,系統(tǒng)采用的另一個數(shù)據(jù)集是FER-2013,這是目前最大的面部表情數(shù)據(jù)集之一。評估中,用于評估的數(shù)據(jù)不會進行數(shù)據(jù)擴充。為了進行評估,分別對JAFFE和CK+數(shù)據(jù)集中的圖像進行了隨機打亂。然后在CNN訓(xùn)練期間將每個數(shù)據(jù)集分為五組,其中四組用于訓(xùn)練,一組用于驗證。對于FER-2013數(shù)據(jù)集,分別使用整個訓(xùn)練集和公共測試集進行訓(xùn)練和驗證。在反向傳播過程中,使用SGD優(yōu)化器優(yōu)化了總損失函數(shù),minibatch的大小為64。第一階段和第二階段微調(diào)的初始學(xué)習(xí)率分別設(shè)置為0.01和0.045。對于“精細”微調(diào),初始學(xué)習(xí)率設(shè)置為比“粗略”微調(diào)稍大。每15個訓(xùn)練周期,學(xué)習(xí)率就會指數(shù)下降0.94倍。為了減少過度擬合的發(fā)生,系統(tǒng)在平均池化層使用丟棄策略。
首先,進行第一個實驗以展示采用這種兩階段微調(diào)訓(xùn)練策略的有效性。比較以下兩種情況:第一個是直接基于ImageNet從預(yù)訓(xùn)練權(quán)重進行微調(diào),第二個是使用FER-2013數(shù)據(jù)集對CK+和JAFFE數(shù)據(jù)集進行兩階段微調(diào)。
對于基于ImageNet的FER-2013的第一階段微調(diào),該方法在公開測試集上的準(zhǔn)確度為67.03%,在私有測試集上的準(zhǔn)確度為68.31%。基于FER-2013的最佳預(yù)訓(xùn)練模型,然后對CK+和JAFFE數(shù)據(jù)集進行第二階段的微調(diào)。為了驗證這種兩階段微調(diào)方法的有效性,直接基于ImageNet對CK+和JAFFE數(shù)據(jù)集進行微調(diào)以進行比較。表1中顯示了兩種情況的準(zhǔn)確率比較。從表1中可以看出,采用兩階段微調(diào)策略可以提高準(zhǔn)確性。
表1 兩階段微調(diào)的對比
該實驗評估中心損失對于改善結(jié)果的優(yōu)越性。對JAFFE和CK+數(shù)據(jù)集進行了比較,中心損失的λ和α固定為0.001。比較了采用聯(lián)合監(jiān)督情況以及僅使用softmax損失進行監(jiān)督的一種情況。表2中列出了兩種情況下獲得的準(zhǔn)確度和準(zhǔn)確度的提高,這表明使用中心損失作為額外的監(jiān)督信號可以提高準(zhǔn)確性。
表2 聯(lián)合監(jiān)督的有效性實驗
表3呈現(xiàn)了本系統(tǒng)與現(xiàn)有文獻在JAFFE數(shù)據(jù)集上的比較結(jié)果。與采用幾何或外觀特征提取技術(shù)的常規(guī)方法(如參考文獻[3,4]提出的方法)相比,本系統(tǒng)不僅不需要人工進行特征提取,而且可以超過先前工作的最大準(zhǔn)確性。盡管先前的一項研究[6](也應(yīng)用了DCNN)達到了98.12%的準(zhǔn)確率,略高于我們的結(jié)果,但分類的時間成本卻比我們高得多。
表3 JAFFE數(shù)據(jù)集的對比結(jié)果
接下來評估本系統(tǒng)在數(shù)據(jù)集CK+上的性能,表4呈現(xiàn)了不同分類數(shù)量下本系統(tǒng)的準(zhǔn)確度。如表4所示,當(dāng)需要評估的類數(shù)量增加,目標(biāo)任務(wù)變得更加復(fù)雜,因此準(zhǔn)確性會略有下降。
表4 CK+數(shù)據(jù)集的實驗結(jié)果
利用了遷移學(xué)習(xí)和聯(lián)合監(jiān)督策略,提出了基于OpenCV實現(xiàn)的人臉表情圖像識別系統(tǒng)。所提出的系統(tǒng)優(yōu)于傳統(tǒng)的機器學(xué)習(xí)方法,消除了復(fù)雜的特征提取所需的大量人力,并且在獲得最新結(jié)果時不需要大量的預(yù)處理過程。在未來的工作中,我們將考慮頭部姿勢變化對人臉識別的影響。