董 翠 羅曉曙 黃苑琴
(廣西師范大學(xué)電子工程學(xué)院 桂林 541000)
人們情感的表達(dá)方式主要有:語言、聲音、肢體行為以及面部表情等。在這些行為方式中,面部表情所攜帶的表達(dá)人類內(nèi)心情感活動(dòng)的信息最為豐富,據(jù)研究表明,人類的面部表情所攜帶的內(nèi)心活動(dòng)的信息在所有的上述的形式中比例高達(dá)[1]55%。1978 年,F(xiàn)riesen 和Ekman[2],首次對人臉面部表情做了詳細(xì)的定義,包括六種基本面部表情:憤怒、厭惡、恐懼、高興、悲傷、驚訝,同時(shí)對不同的面部表情建立了不同的面部表情圖像數(shù)據(jù)庫。由于不同的面部表情,可以反映出在不同情景下人們的情緒變化以及心理的變化,對于研究人類行為和心理活動(dòng),具有極高的意義。隨著計(jì)算機(jī)視覺的快速發(fā)展、深度學(xué)習(xí)的興起和機(jī)器學(xué)習(xí)等相關(guān)理論體系的完善,人臉表情識(shí)別作為人機(jī)交互的橋梁,引起了國內(nèi)外越來越多的研究學(xué)者的關(guān)注。研究學(xué)者使用不同的算法來對人臉表情特征進(jìn)行提取,從而更好的利用情感信息將表情識(shí)別技術(shù)進(jìn)行應(yīng)用,如:圖像分割[3~4]、目標(biāo)檢測[5~6]、醫(yī)療系統(tǒng)[7]、人臉表情識(shí)別[8~10]、自然語言處理[11]、智能家居[12]、風(fēng)格遷移[13]等領(lǐng)域。
對人臉表情的識(shí)別最為重要的是如何有效的提取人臉表情特征。傳統(tǒng)的一些人臉表情特征的提取方式主要依靠研究人員進(jìn)行手工的提取,如Gabor 算法、HOG 算法等,該方法不僅費(fèi)時(shí)費(fèi)力,而且嚴(yán)重依賴于研究人員的經(jīng)驗(yàn)。隨著計(jì)算機(jī)技術(shù)的飛速發(fā)展、深度學(xué)習(xí)的興起,出現(xiàn)大批基于卷積神 經(jīng) 網(wǎng) 絡(luò) 的 識(shí) 別 架 構(gòu)(CNN),如VGG-Net[14]、GoogleNet[15]、Resnet[16]等。卷積神經(jīng)網(wǎng)絡(luò)由于其自動(dòng)提取人臉表情特征、計(jì)算迅速、識(shí)別率高的優(yōu)勢,正在逐漸替代傳統(tǒng)的手工提取方式。如何設(shè)卷積神經(jīng)網(wǎng)絡(luò)來提取更加全面和更深層次的人臉表情特征,仍是當(dāng)下人臉表情識(shí)別研究的熱點(diǎn)。針對這個(gè)問題,本文使用VGG16 網(wǎng)絡(luò)作為人臉表情特征提取的基礎(chǔ)網(wǎng)絡(luò),再進(jìn)行研究改進(jìn),以提高網(wǎng)絡(luò)對人臉表情的識(shí)別率。首先將VGG16 網(wǎng)絡(luò)的三個(gè)全連接層中的前兩個(gè)全連接層改為卷積層,減少網(wǎng)絡(luò)模型的參數(shù),在卷積層前添加上下文感知金字塔模塊[17],擴(kuò)大網(wǎng)絡(luò)模型的感受野,增強(qiáng)人臉表情特征表達(dá),同時(shí)引入類別注意力[18],產(chǎn)生類別損失函數(shù),關(guān)注有利于人臉表情識(shí)別的特征區(qū)域,與交叉熵?fù)p失函數(shù)一起作為網(wǎng)絡(luò)模型訓(xùn)練的損失函數(shù)。實(shí)驗(yàn)表明,在人臉表情數(shù)據(jù)集FERPLUS 和RAF-DB 上相比于VGG16網(wǎng)絡(luò)具有更高的識(shí)別率。
VGG-Nets[14]是由牛津大學(xué)VGG(Visual Geometry Group)提出。VGG-Nets 的原始輸入是224×224 彩色三通道圖像,圖像通過一堆卷積(轉(zhuǎn)換)層,進(jìn)行特征信息的提取,卷積層使用的是3×3 的卷積(這是捕捉左/右,上/下,中心概念的最小尺寸),步長設(shè)置為1 個(gè)像素,填充設(shè)置為1 個(gè)像素。卷積層后有批歸一化層(BN Layer)與激活函數(shù)(Relu),池化使用的是最大池化(MaxPool),在2×2像素窗口上執(zhí)行,步長為2。在卷積層后是三個(gè)全連接層(FC Layer),前兩個(gè)全連接層每個(gè)具有4096個(gè)通道,第三個(gè)全連接層進(jìn)行類別的分類。全連接層的參數(shù)配置在所有網(wǎng)絡(luò)中都是相同的。在網(wǎng)絡(luò)的最后連接的是softmax,再接入分類器進(jìn)行分類。VGG16 網(wǎng)絡(luò)共有16 層,其中包括13 個(gè)3×3 的卷積層,3 個(gè)全連接層。在每個(gè)卷積層后面有激活層和BN層,VGG16網(wǎng)絡(luò)如圖1所示。
圖1 VGG16網(wǎng)絡(luò)結(jié)構(gòu)圖
由于現(xiàn)有的卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行人臉表情識(shí)別時(shí),在網(wǎng)絡(luò)訓(xùn)練時(shí)僅使用交叉熵?fù)p失函數(shù)進(jìn)行訓(xùn)練,導(dǎo)致網(wǎng)絡(luò)對數(shù)據(jù)集不能很好的擬合,使得卷積神經(jīng)網(wǎng)絡(luò)對人臉表情識(shí)別的準(zhǔn)確率不高。因此,本文使用VGG16 網(wǎng)絡(luò)作為人臉表情特征提取的基礎(chǔ)網(wǎng)絡(luò),引入類別注意力,產(chǎn)生類別損失函數(shù),與交叉熵?fù)p失函數(shù)一起作為網(wǎng)絡(luò)訓(xùn)練的損失函數(shù),對輸入的人臉表情數(shù)據(jù)進(jìn)行訓(xùn)練,從而更好的擬合人臉表情數(shù)據(jù),同時(shí)使用上下文感知金字塔模塊,擴(kuò)大網(wǎng)絡(luò)的感受野,增強(qiáng)人臉表情特征表達(dá),提升網(wǎng)絡(luò)對人臉表情的識(shí)別率。網(wǎng)絡(luò)的總體結(jié)構(gòu)如圖2所示。
圖2 改進(jìn)后的網(wǎng)絡(luò)結(jié)構(gòu)
不同類別、不同特征具有不同的語義值,因此會(huì)生成不同的特征關(guān)注點(diǎn)。例如對于人臉表情的識(shí)別分類,悲傷的表情圖像與開心的表情圖像在面部的嘴角會(huì)有比較大的差異性,使用類別注意力機(jī)制形成類別的特征映射,有利于網(wǎng)絡(luò)關(guān)注并提取不同類別的特征關(guān)注點(diǎn),更有利于網(wǎng)絡(luò)對人臉表情的識(shí)別分類。本文僅使用VGG16 網(wǎng)絡(luò)最后一個(gè)全連接層進(jìn)行網(wǎng)絡(luò)的分類,將VGG16 網(wǎng)絡(luò)的前兩個(gè)全連接層改為兩個(gè)卷積核大小為L1(xi)的卷積層,如圖3 所示,進(jìn)一步對人臉表情特征進(jìn)行提取,在加深了網(wǎng)絡(luò)的深度同時(shí),避免了全連接層過多導(dǎo)致網(wǎng)絡(luò)參數(shù)量增加的問題。
圖3 VGG16卷積層結(jié)構(gòu)
本文將VGG16 網(wǎng)絡(luò)的前兩個(gè)全連接層(FC Layers)改為上下文感知金字塔和卷積層(Convolution Layers)的結(jié)合,用于進(jìn)一步地對人臉表情特征信息的提取。在卷積層之前,添加上下文感知金字塔模塊,擴(kuò)大由卷積網(wǎng)絡(luò)提取后的特征圖的感受野。如圖2 所示,將一張人臉表情圖像L1(xi)輸入到改進(jìn)后的網(wǎng)絡(luò)中,進(jìn)入基礎(chǔ)卷積層進(jìn)行人臉表情特征的提取,得到特征圖L1(xi),該特征圖的維度為L1(xi),在提取的特征圖進(jìn)入全連接層之前,將其送入更改后的卷積層進(jìn)行進(jìn)一步的特征提取。為了得到類別注意特征圖L1(xi),在卷積層后使用L1(xi)卷積將維度L1(xi)的特征圖轉(zhuǎn)換為維度L1(xi)的特征圖,其中k 為類別數(shù)量,得到類別特征映射,之后將輸出分為兩個(gè)分支,一個(gè)分支使用L1(xi)卷積進(jìn)行通道的適配,之后再經(jīng)由自適應(yīng)池化后經(jīng)過softmax 函數(shù)產(chǎn)生概率值,然后送入網(wǎng)絡(luò)中使用交叉熵?fù)p失函數(shù)進(jìn)行訓(xùn)練得到L1(xi)。另外一個(gè)分支通過與L2(xi)內(nèi)核進(jìn)行卷積,生成L2(xi)特征圖L2(xi),將通過softmax 函數(shù)歸一化的L2(xi)特征圖用作注意機(jī)制的注意特征圖,感知分支(Attention branch)通過從特征提取器接收注意力和特征圖來輸出每個(gè)類別的最終概率,如式(1)、(2)所示,以殘差的形式先與原始輸入特征相乘,再相加得到新的特征圖L2(xi) ,最后將得到的特征圖通過分類器和softmax 函數(shù)得到概率值,得到類別損失函數(shù)L2(xi) 。最后得到總體的損失函數(shù)g'(xi)=M(xi)?g(xi),更有利于網(wǎng)絡(luò)的訓(xùn)練,提高了網(wǎng)絡(luò)對人臉表情的識(shí)別分類可靠性。網(wǎng)絡(luò)的總體的損失函數(shù)如式(3)所示:
圖2 中,上下文感知金字塔特征提取模塊使用多尺度高層次特征映射來獲得豐富的上下文特征信息。現(xiàn)有卷積神經(jīng)網(wǎng)絡(luò)將多個(gè)卷積層疊加起來,逐步增加接收的感受野生成高級(jí)語義信息,在分類任務(wù)中有著至關(guān)重要的作用,然而卷積神經(jīng)網(wǎng)絡(luò)的池化操作,縮小了特征映射的大小,使得提取的特征信息不能夠充分表達(dá)。在VGG16 網(wǎng)絡(luò)中,原始輸入為224×224 的圖片大小,而大的圖像會(huì)增加計(jì)算機(jī)內(nèi)存的負(fù)擔(dān),但是一味縮減圖像大小會(huì)導(dǎo)致圖像的分辨率降低、網(wǎng)絡(luò)對圖像的識(shí)別率下降。例如,將112×112 大小的人臉表情圖像送入原始VGG16 網(wǎng)絡(luò)中進(jìn)行特征信息的提取,在經(jīng)過一系列的卷積與池化操作之后,網(wǎng)絡(luò)提取出的特征圖的大小逐漸減小,在經(jīng)過VGG16 網(wǎng)絡(luò)的卷積層之后,所輸出的特征圖的大小只有3×3,相對于原始VGG16 網(wǎng)絡(luò)在224×224 大小的輸入情況下,特征圖的大小縮減了一半,因此會(huì)存在網(wǎng)絡(luò)提取的人臉表情特征不夠全面的情況,導(dǎo)致特征信息不能夠充分的表達(dá),最后會(huì)使得網(wǎng)絡(luò)的人臉表情識(shí)別率下降。
本文將下文感知金字塔模塊用于網(wǎng)絡(luò)與改進(jìn)后的卷積層疊加,進(jìn)一步的提取人臉表情特征信息。由于該模塊由四個(gè)擴(kuò)張卷積率分別為1,3,5,7 的空洞卷積層組成,因此在層次上形成一種類似于金字塔的結(jié)構(gòu)。對于擴(kuò)張卷積來說,不同的擴(kuò)張卷積率在不增加多余的計(jì)算量的同時(shí)可以擴(kuò)大視覺寬度,即感受野的大小。在卷積神經(jīng)網(wǎng)絡(luò)中,感受野是一個(gè)矩形區(qū)域,如果卷積核長寬都相等,則對應(yīng)感受野就是正方形區(qū)域。輸出特征圖中每個(gè)位置都對應(yīng)輸入圖像一個(gè)感受野區(qū)域,所有位置的感受野在輸入圖像上以固定步長進(jìn)行的方式平鋪。在一般的任務(wù)中,要求感受野越大越好,如圖像分類中最后卷積層的感受野要大于輸入圖像,網(wǎng)絡(luò)深度越深感受野越大性能越好。在本文使用的上下文感知金字塔模塊中,假設(shè)膨脹率為ds,使用的卷積核大小為3×3,則使用膨脹卷積的感受野大小為3+2×2×(ds-1),對應(yīng)的感受野增大3×3,7×7,11×11。因此該模塊便于捕獲多尺度的感受野,加強(qiáng)網(wǎng)絡(luò)提取具有更豐富的上下文信息的人臉表情特征,并且經(jīng)過該模塊后的特征圖,通過跨通道連接組合來自不同的空洞卷積層的特征映射和1×1 維度減少特征,獲得具有上下文感知信息的不同比例的特征,特征圖的大小不發(fā)生改變,但是特征圖所攜帶的信息卻得到了加強(qiáng),所以該模塊有助于來提取尺度、形狀和位置不變性的特征。上下文感知金字塔模塊的結(jié)構(gòu)如圖4所示。
圖4 上下文感知金字塔模塊
RAF-DB[19]:人臉表情數(shù)據(jù)集RAF-DB 含有三萬張帶有注釋的面部圖像。有七個(gè)基本表情(中性、幸福、驚奇、悲傷、憤怒、厭惡、恐懼)。該數(shù)據(jù)集中的圖片共12271張用于訓(xùn)練,3068張用于測試。
FERPlus[20]:人臉表情數(shù)據(jù)集FERPlus 共有八個(gè)類別,分別為驚訝、恐懼、厭惡、快樂、悲傷、憤怒、中性、蔑視。實(shí)驗(yàn)中采用投票機(jī)制來選擇訓(xùn)練集和測試集和它們的基本表情標(biāo)簽,去掉票數(shù)為1 的噪聲投票,若圖像在某基類上得票超過剩余總票數(shù)的一半,則歸為該基類,去除未知類和非人臉類,得到24586 張訓(xùn)練集圖像、3152 張公有、3083 張私有測試圖像。本文在共有測試集上進(jìn)行實(shí)驗(yàn)。
為了防止網(wǎng)絡(luò)過擬合現(xiàn)象的產(chǎn)生,在訓(xùn)練過程中,對數(shù)據(jù)進(jìn)行隨機(jī)的翻轉(zhuǎn)、切割、水平或者角度性的旋轉(zhuǎn),這種方式稱作數(shù)據(jù)增強(qiáng)。對RAF-DB數(shù)據(jù)集,原人臉表情圖像大小是100×100,實(shí)驗(yàn)中將原100×100 圖像隨機(jī)裁減為90×90,進(jìn)行隨機(jī)鏡像處理,處理后的圖像送入網(wǎng)絡(luò)進(jìn)行訓(xùn)練。在測試階段,采用十倍裁減的方式,將圖像在左上角,左下角,右上角,右下角,中心進(jìn)行裁減,使得圖片數(shù)量擴(kuò)大了10 倍,同時(shí)使用鏡像操作,對處理后的圖片再進(jìn)行測試,然后對得到的概率取均值,得到一個(gè)最大的輸出值為對應(yīng)的表情,這樣降低了分類錯(cuò)誤率。對人臉表情數(shù)據(jù)集FERPLUS,由于圖像的原始大小是48×48,而VGG16網(wǎng)絡(luò)的原始輸入圖像大小224×224,為了保持圖片的分辨率,也為了減少網(wǎng)絡(luò)訓(xùn)練時(shí),對計(jì)算機(jī)內(nèi)存的運(yùn)算負(fù)擔(dān),先將圖片放大到128×128,再將圖片隨機(jī)裁減到112×112,將圖像進(jìn)行隨機(jī)鏡像處理,送入網(wǎng)絡(luò)中進(jìn)行訓(xùn)練。
操作系統(tǒng):Ubuntu16.04,
GPU:GTX 1080TIi顯卡,128g
CPU:E5-2637 v4,GPU
加速庫:CUDA9.0
編程語言:Python3.6
深度學(xué)習(xí)框架:PyTorch0.4
5.2.1 在RAF-DB數(shù)據(jù)集上的實(shí)驗(yàn)結(jié)果與分析
由表1得出,原VGG16網(wǎng)絡(luò)在人臉表情數(shù)據(jù)集RAF-DB上的識(shí)別率為81.68%,在相同的參數(shù)設(shè)置與實(shí)驗(yàn)條件下,改進(jìn)后網(wǎng)絡(luò)在人臉表情數(shù)據(jù)集RAF-DB上的識(shí)別率為83.25%,在測試時(shí)添加了十倍裁減和訓(xùn)練時(shí)加載在ImageNet 上預(yù)訓(xùn)練過后的網(wǎng)絡(luò)參數(shù),再進(jìn)行實(shí)驗(yàn),最終改進(jìn)后網(wǎng)絡(luò)在人臉表情數(shù)據(jù)集的識(shí)別率為86.70%。從表2 與其他方法與在該數(shù)據(jù)集上的識(shí)別率的對比得出,改進(jìn)后網(wǎng)絡(luò)在該數(shù)據(jù)仍有較高的人臉表情識(shí)別率。
表1 VGG16網(wǎng)絡(luò)與改進(jìn)后網(wǎng)絡(luò)人臉表情識(shí)別率對比
表2 改進(jìn)VGG16網(wǎng)絡(luò)與其它網(wǎng)絡(luò)的人臉表情識(shí)別率對比
表3 VGG16網(wǎng)絡(luò)與改進(jìn)后網(wǎng)絡(luò)人臉表情識(shí)別率對比
本文在人臉表情數(shù)據(jù)集RAF-DB 上的實(shí)驗(yàn)的混淆矩陣圖如圖5、6所示。
圖5 VGG16在RAF_DB上的混淆矩陣
圖6 改進(jìn)后網(wǎng)絡(luò)在RAF_DB上的混淆矩陣
5.2.2 在FERPLUS數(shù)據(jù)集上的實(shí)驗(yàn)結(jié)果與分析
由表4 得出,在相同的參數(shù)設(shè)置下,原VGG16網(wǎng)絡(luò)在人臉表情數(shù)據(jù)FERPLIUS 上的識(shí)別率是87.28%,改進(jìn)后網(wǎng)絡(luò)在該數(shù)據(jù)集上的識(shí)別率為88.26%,在測試時(shí)添加了十倍裁減和訓(xùn)練時(shí)加載在ImageNet 上預(yù)訓(xùn)練過后的網(wǎng)絡(luò)參數(shù),再進(jìn)行實(shí)驗(yàn),最終改進(jìn)后網(wǎng)絡(luò)在人臉表情數(shù)據(jù)集的識(shí)別率為89.63%,比原網(wǎng)絡(luò)提升了2.4%。由表4與現(xiàn)有方法對該數(shù)據(jù)集的識(shí)別率的對比得出,改進(jìn)后網(wǎng)絡(luò)仍有較高的識(shí)別率。本文在人臉表情數(shù)據(jù)集FERPLUS上的實(shí)驗(yàn)的混淆矩陣圖如圖7、8所示。
表4 改進(jìn)VGG16網(wǎng)絡(luò)與其它網(wǎng)絡(luò)的人臉表情識(shí)別率對比
圖7 VGG16在FERPLUS上的混淆矩陣
圖8 本文網(wǎng)絡(luò)在FERPLUS上的混淆矩陣
本文將類別注意力引入VGG16 網(wǎng)絡(luò),產(chǎn)生類別注意力損失函數(shù),將該損失函數(shù)與交叉熵?fù)p失函數(shù)一起作為網(wǎng)絡(luò)訓(xùn)練時(shí)的損失函數(shù),同時(shí)使用上下文感知金字塔模塊擴(kuò)大網(wǎng)絡(luò)提取的特征的感受野,在不改變網(wǎng)絡(luò)結(jié)構(gòu)的情況下、沒有增加網(wǎng)絡(luò)的復(fù)雜性的同時(shí),提高了網(wǎng)絡(luò)在人臉表情數(shù)據(jù)集RAF-DB和FERPLUS 上的識(shí)別率,在這兩個(gè)數(shù)據(jù)集上的識(shí)別率分別達(dá)到了86.70%和89.63%。實(shí)驗(yàn)結(jié)果表明,對比VGG16 網(wǎng)絡(luò),改進(jìn)后的網(wǎng)絡(luò)在一定程度上提升了對人臉表情的識(shí)別效果。