盧官明 朱海銳 郝 強(qiáng) 閆靜杰
(南京郵電大學(xué)通信與信息工程學(xué)院,南京,210003)
在人類交流過程中,人臉表情不僅可以呈現(xiàn)交流者的情緒狀態(tài),更能傳遞交流者的情感信息。如何讓機(jī)器像人類一樣能夠理解和表達(dá)情感,從而實(shí)現(xiàn)人和機(jī)器的智能交互,是當(dāng)前人工智能領(lǐng)域的重要研究課題。人臉表情識(shí)別作為情感計(jì)算的關(guān)鍵技術(shù),在患者情緒狀態(tài)分析、疲勞檢測(cè)、抑郁癥的嚴(yán)重程度和疼痛程度評(píng)估[1]等方面有著廣闊的應(yīng)用前景。
在基于傳統(tǒng)機(jī)器學(xué)習(xí)的表情識(shí)別系統(tǒng)中,面部表情的特征提取與分類器設(shè)計(jì)是分離的,要想獲得好的識(shí)別性能,須要提取出具有良好鑒別能力的特征,同時(shí)又要設(shè)計(jì)合適的分類器。國內(nèi)外學(xué)者在這兩方面都進(jìn)行了大量的研究,提出了基于Gabor小波變換[2]、方向梯度直方圖(Histogram of oriented gra?dients,HOG)[3]、局部二值模式(Local binary pattern,LBP)[4-5]、流形學(xué)習(xí)[6]的特征提取方法,以及基于支持向量機(jī)(Support vector machine,SVM)[7]的分類器等。由于人臉表情具有高維、非剛性、多尺度變化、易受光照和角度影響等特點(diǎn),基于傳統(tǒng)機(jī)器學(xué)習(xí)的表情識(shí)別算法的性能依賴于人工提取特征的優(yōu)劣,人為干擾因素較大,算法的魯棒性和識(shí)別精度有待提高。
近年來,深度卷積神經(jīng)網(wǎng)絡(luò)(Deep convolutional neural network,DCNN)在圖像分類和識(shí)別等領(lǐng)域取得了突破性的進(jìn)展[8]。2014年,牛津大學(xué)視覺幾何組(Visual Geometry group,VGG)提出的VGGNet模型[9]在ILSVRC比賽中將Top-5錯(cuò)誤率降到了7.32%。Google團(tuán)隊(duì)提出的GoogLeNet模型(又稱In?ception模型)及其后續(xù)版本[10-13],將ImageNet數(shù)據(jù)集上的Top-5錯(cuò)誤率降低至4.8%。然而,隨著網(wǎng)絡(luò)深度的增加,訓(xùn)練網(wǎng)絡(luò)時(shí)由于會(huì)出現(xiàn)梯度消失或梯度爆炸的問題而使訓(xùn)練變得困難。為了解決上述問題,何愷明等人提出了深度殘差網(wǎng)絡(luò)ResNet[14]。該網(wǎng)絡(luò)采用殘差學(xué)習(xí)單元作為基本組成部分,在原始卷積層外部加入捷徑連接(Shortcut connections)支路構(gòu)成基本殘差學(xué)習(xí)單元,通過順序疊加殘差學(xué)習(xí)單元成功地緩解了DCNN難以訓(xùn)練和性能退化問題,在2015年的ILSVRC比賽中奪得冠軍,將Top-5錯(cuò)誤率降低至3.57%。在ResNet推出后不久,Google團(tuán)隊(duì)就借鑒了ResNet的思想,提出了Inception V 4和Inception-ResNet-V 2兩種網(wǎng)絡(luò)模型[15],并通過融合這兩種網(wǎng)絡(luò)模型,在ILSVRC比賽中將Top-5錯(cuò)誤率降到了3.08%??梢姡琑esNet及其思想具有很強(qiáng)的推廣性。
DCNN在圖像分類和識(shí)別領(lǐng)域取得的突破性進(jìn)展,也為研究表情識(shí)別提供了基礎(chǔ)與借鑒。盧官明等人[16]設(shè)計(jì)了一種用于人臉表情識(shí)別的卷積神經(jīng)網(wǎng)絡(luò)(CNN)模型,其中包括3層卷積層、2層池化層、1層全連接層和1層Softmax層,將表情特征提取和表情分類兩個(gè)步驟結(jié)合在一起,同時(shí)采取Dropout和數(shù)據(jù)集擴(kuò)增策略緩解了網(wǎng)絡(luò)的過擬合問題,在擴(kuò)充的Cohn-Kanade人臉表情數(shù)據(jù)集(The Extended Cohn-Kanade database,CK+)上進(jìn)行了實(shí)驗(yàn),取得了84.55%的平均識(shí)別準(zhǔn)確率。李勇等人[17]提出了一種跨連接LeNet-5卷積神經(jīng)網(wǎng)絡(luò)用于人臉表情識(shí)別,在CK+表情數(shù)據(jù)集上取得了83.74%的平均識(shí)別準(zhǔn)確率。然而,目前大多數(shù)用于人臉表情識(shí)別的DCNN模型都是在CK+等表情數(shù)據(jù)集上訓(xùn)練得到的,由于CK+表情數(shù)據(jù)集上的圖像都是正面拍攝的圖像,與實(shí)際應(yīng)用場(chǎng)景中采集的人臉圖像有較大的差別,而且每類表情圖像的樣本數(shù)量有限,所以,在CK+表情數(shù)據(jù)集上訓(xùn)練得到的模型容易產(chǎn)生過擬合現(xiàn)象,會(huì)導(dǎo)致模型的泛化能力很弱。為了提高網(wǎng)絡(luò)模型的泛化能力,本文從KDEF(Karolinska direct?ed emotional faces)和CK+兩種表情數(shù)據(jù)集上選取表情圖像樣本組成混合數(shù)據(jù)集以用于訓(xùn)練網(wǎng)絡(luò),提出了一種基于殘差學(xué)習(xí)單元的深度殘差網(wǎng)絡(luò),探索提高人臉表情識(shí)別準(zhǔn)確率和魯棒性的新途徑。
從在ILSVRC比賽中取得的成績來看,卷積神經(jīng)網(wǎng)絡(luò)在圖像分類識(shí)別任務(wù)上的性能在很大程度上得益于較深的網(wǎng)絡(luò)模型。那么,是否可以簡單地通過增加卷積層數(shù)就能提高卷積神經(jīng)網(wǎng)絡(luò)的特征學(xué)習(xí)能力和分類識(shí)別性能?文獻(xiàn)[18]指出如果單純地通過堆疊卷積層來增加網(wǎng)絡(luò)深度,那么當(dāng)卷積層數(shù)增加到某個(gè)值后,分類識(shí)別的準(zhǔn)確率反而會(huì)下降。為了解決隨卷積層數(shù)的增加而引起的性能退化問題,文獻(xiàn)[14]提出一種深度殘差學(xué)習(xí)框架,其基本思想是在構(gòu)建卷積神經(jīng)網(wǎng)絡(luò)時(shí)通過加入捷徑連接(Short?cut connections)支路構(gòu)成基本殘差學(xué)習(xí)單元,利用堆疊的非線性卷積層來擬合一個(gè)殘差映射。假設(shè)期望的網(wǎng)絡(luò)層映射為H(x),殘差映射R(x):=H(x)-x,其中,x 為輸入信號(hào),則H(x)=R(x)+x,即期望得到的實(shí)際映射H(x)不是傳統(tǒng)神經(jīng)網(wǎng)絡(luò)中的輸入的映射,而是輸入的映射(即殘差映射R(x))和輸入x的相加。通過殘差學(xué)習(xí)單元將卷積層對(duì)H(x)的學(xué)習(xí)轉(zhuǎn)化為對(duì)R(x)的學(xué)習(xí)。這里假設(shè)對(duì)殘差映射R(x)進(jìn)行學(xué)習(xí)可能會(huì)比直接對(duì)期望的實(shí)際映射H(x)進(jìn)行學(xué)習(xí)更加容易。
殘差學(xué)習(xí)單元的結(jié)構(gòu)示意圖如圖1所示。圖1中的捷徑連接執(zhí)行一個(gè)簡單的恒等映射(Identity mapping),既沒有引入新的參數(shù),也沒有增加計(jì)算復(fù)雜度。將殘差學(xué)習(xí)單元應(yīng)用于深度卷積神經(jīng)網(wǎng)絡(luò)可以有效緩解網(wǎng)絡(luò)模型訓(xùn)練時(shí)反向傳播中的梯度消失問題,進(jìn)而解決了深層網(wǎng)絡(luò)難以訓(xùn)練和性能退化的問題。
圖1 殘差學(xué)習(xí)單元的結(jié)構(gòu)示意圖Fig.1 Building block for residual learning
本文提出的深度殘差網(wǎng)絡(luò)的結(jié)構(gòu)如圖2所示,包括依次相連的卷積層、批歸一化(Batch normalization)層、修正線性單元(Rectified linear unit,ReLU)激活函數(shù)層、殘差學(xué)習(xí)模塊1、殘差學(xué)習(xí)模塊2、殘差學(xué)習(xí)模塊3、全局池化層、全連接層和Softmax分類層。輸入圖像首先經(jīng)過4個(gè)3×3的卷積核進(jìn)行卷積操作,步長為1,填充為1。全局池化層在32×32窗口內(nèi)進(jìn)行平均池化操作,步長為1。全連接層的輸出神經(jīng)元數(shù)設(shè)為7,對(duì)應(yīng)7種不同的表情類別,輸出1個(gè)7維向量。最后通過Softmax分類器輸出分類結(jié)果。
殘差學(xué)習(xí)模塊1的結(jié)構(gòu)如圖3所示,包括若干個(gè)依次相連的具有相同結(jié)構(gòu)的殘差學(xué)習(xí)單元A。
殘差學(xué)習(xí)模塊2的結(jié)構(gòu)如圖4所示,包括1個(gè)殘差學(xué)習(xí)單元B和若干個(gè)依次相連的具有相同結(jié)構(gòu)的殘差學(xué)習(xí)單元A。
殘差學(xué)習(xí)模塊3的結(jié)構(gòu)如圖5所示,包括1個(gè)殘差學(xué)習(xí)單元B和若干個(gè)個(gè)依次相連的具有相同結(jié)構(gòu)的殘差學(xué)習(xí)單元A。
3個(gè)不同殘差學(xué)習(xí)模塊中的殘差學(xué)習(xí)單元A的結(jié)構(gòu)都相同,如圖6所示,其區(qū)別在于殘差學(xué)習(xí)單元A中卷積層所用的卷積核的數(shù)量有所不同。
圖2 深度殘差網(wǎng)絡(luò)的結(jié)構(gòu)示意圖Fig.2 A block diagram of the deep residual network
圖3 殘差學(xué)習(xí)模塊1的結(jié)構(gòu)示意圖Fig.3 A block diagram of the module-1 for residual learning
圖4 殘差學(xué)習(xí)模塊2的結(jié)構(gòu)示意圖Fig.4 A block diagram of the mod?ule-2 for residual learning
圖5 殘差學(xué)習(xí)模塊3的結(jié)構(gòu)示意圖Fig.5 A block diagram of the mod?ule-3 for residual learning
圖6 殘差學(xué)習(xí)單元A的結(jié)構(gòu)示意圖Fig.6 A building block-A for residual learning
圖7 殘差學(xué)習(xí)單元B的結(jié)構(gòu)示意圖Fig.7 A building block-B for residual learning
同樣,殘差學(xué)習(xí)模塊2和殘差學(xué)習(xí)模塊3中的殘差學(xué)習(xí)單元B的結(jié)構(gòu)是相同的,如圖7所示,其區(qū)別在于殘差學(xué)習(xí)單元B中卷積層所用的卷積核的數(shù)量有所不同。
例如,當(dāng)殘差學(xué)習(xí)模塊1、殘差學(xué)習(xí)模塊2和殘差學(xué)習(xí)模塊3分別包含6個(gè)殘差學(xué)習(xí)單元時(shí),殘差網(wǎng)絡(luò)的深度為38層;當(dāng)殘差學(xué)習(xí)模塊1、殘差學(xué)習(xí)模塊2和殘差學(xué)習(xí)模塊3分別包含12個(gè)殘差學(xué)習(xí)單元時(shí),殘差網(wǎng)絡(luò)的深度為74層。這里所指的殘差網(wǎng)絡(luò)的深度是指卷積神經(jīng)網(wǎng)絡(luò)中不考慮捷徑連接支路所包含的卷積層和全連接層的總層數(shù)。
網(wǎng)絡(luò)模型參數(shù)的初始化是一件很重要的事情。傳統(tǒng)的固定方差的高斯分布初始化,是使權(quán)重初始值滿足給定均值和標(biāo)準(zhǔn)差的高斯分布,但網(wǎng)絡(luò)層數(shù)增加使模型很難收斂。Xavier初始化方法[19]是為了讓網(wǎng)絡(luò)前向傳播和反向傳播時(shí)每一層方差盡量一致的一種方法,在推導(dǎo)的時(shí)候假設(shè)激活函數(shù)是線性的。而本文的深度殘差網(wǎng)絡(luò)采用ReLU非線性激活函數(shù),因此,優(yōu)先考慮采用基于ReLU設(shè)計(jì)的msra初始化方法[20]。msra初始化方法讓每個(gè)卷積層的權(quán)重初始值滿足均值為0、標(biāo)準(zhǔn)差為 2/Nl高斯分布,其中Nl是第l層輸入的個(gè)數(shù)。全連接層中所有權(quán)重初始值為0。
CNN本質(zhì)上實(shí)現(xiàn)一種輸入到輸出的映射關(guān)系,能夠?qū)W習(xí)大量輸入與輸出之間的映射關(guān)系,不需要任何輸入和輸出之間的精確數(shù)學(xué)表達(dá)式,只要用已知的模式對(duì)CNN加以訓(xùn)練,就可以使網(wǎng)絡(luò)具有輸入輸出之間的映射能力。CNN執(zhí)行的是有監(jiān)督訓(xùn)練,訓(xùn)練過程分為前向傳播和反向傳播兩個(gè)階段,其中前向傳播階段就是利用隱層提取特征的過程,主要是卷積和池化操作;反向傳播階段采用反向傳播(BP)算法傳遞誤差,更新權(quán)重參數(shù)。
(1)前向傳播階段。從訓(xùn)練集中隨機(jī)選取24個(gè)小批量(Mini-batch)樣本,同時(shí)輸入到網(wǎng)絡(luò),逐層傳播下去,最后Softmax分類層輸出24個(gè)7維向量,向量中的每個(gè)元素分別代表輸入樣本被分到對(duì)應(yīng)表情類別的概率。
(2)反向傳播階段,也稱為誤差傳播階段。首先根據(jù)交叉熵(Cross-entropy)損失函數(shù)計(jì)算出損失值,然后使用文獻(xiàn)[21]的算法更新網(wǎng)絡(luò)中每個(gè)可訓(xùn)練的權(quán)重參數(shù)使得損失值最小化,以優(yōu)化整個(gè)網(wǎng)絡(luò)。
本文實(shí)驗(yàn)是在開源深度學(xué)習(xí)框架Caffe上完成的。實(shí)驗(yàn)硬件平臺(tái)為Intel(R)Core(TM)i5-6500 CPU,主頻為 3.2 GHz,內(nèi)存為 8 GB,操作系統(tǒng)為Ubuntu16.04 LTS版本,搭載Linux內(nèi)核,同時(shí)借助NVIDIA GTX 1080TIGPU進(jìn)行加速處理。
本文采用KDEF(The Karolinska Directed Emotional Faces)[22]和CK+(The extended Cohn-Kanade Dataset)[23]兩個(gè)表情數(shù)據(jù)集。KDEF表情數(shù)據(jù)集包含了20歲至30歲年齡段的70位業(yè)余演員(35位女性和35位男性)的7類表情圖像,共有4 900幅,其中,有表情類別標(biāo)簽的圖像有4 898幅,每類表情圖像的數(shù)量如表1所示。拍攝角度包括左側(cè)面(Full left profile)、半左側(cè)面(Half left profile)、正面(Straight)、半右側(cè)面(Half right profile)、右側(cè)面(Full right profile)。
CK+表情數(shù)據(jù)集包括了123位受試者的593個(gè)視頻序列,其中有327個(gè)視頻序列的最后一幀標(biāo)記了表情的標(biāo)簽,每類表情圖像的數(shù)量如表2所示。
由于CK+和KDEF表情數(shù)據(jù)集中的表情類別不完全一致,實(shí)驗(yàn)中我們從CK+表情數(shù)據(jù)集中舍棄了類別標(biāo)簽為輕蔑的18幀表情圖像,從KDEF和CK+表情數(shù)據(jù)集中選取了7類表情共5170幅表情圖像,其中每類表情圖像的數(shù)量如表3所示。
表1 KDEF表情數(shù)據(jù)集中每類表情圖像的數(shù)量Tab.1 The number of images for each expression clas?sification on the KDEF dataset
表2 CK+表情數(shù)據(jù)集中每類表情圖像的數(shù)量Tab.2 The number of images for each expression clas?sification on the CK+dataset
表3 實(shí)驗(yàn)中使用的每類表情圖像的數(shù)量Tab.3 The number of used images for each expres?sion classification in experiment
實(shí)驗(yàn)中先將所有圖像剪裁成128像素×128像素大小,如圖8所示,并對(duì)像素值進(jìn)行歸一化操作。為了提高識(shí)別結(jié)果的可靠性,實(shí)驗(yàn)中采用十折(10-fold)交叉驗(yàn)證方法,即將每類表情圖像平均分成10份,每次實(shí)驗(yàn)使用其中的1份用作測(cè)試樣本集,其余的9份用作訓(xùn)練樣本集,并采用鏡像翻轉(zhuǎn)的方式對(duì)訓(xùn)練樣本進(jìn)行擴(kuò)充,將訓(xùn)練樣本數(shù)擴(kuò)充1倍,即共有9 306幅圖像。這樣的識(shí)別實(shí)驗(yàn)重復(fù)10次,最后取10次的平均識(shí)別率。
圖8 實(shí)驗(yàn)中使用的7類表情圖像的樣例Fig.8 Samples of seven classifications of facial expression images used in the experiment
為了比較帶有殘差學(xué)習(xí)單元的深度殘差網(wǎng)絡(luò)(ResNet)與不帶殘差學(xué)習(xí)單元的DCNN以及不同網(wǎng)絡(luò)深度所具有的表情識(shí)別性能,實(shí)驗(yàn)對(duì)比了20,38,56,74層帶有殘差學(xué)習(xí)單元的ResNet與相同深度但不帶殘差學(xué)習(xí)單元的DCNN的識(shí)別準(zhǔn)確率,其結(jié)果如圖9所示。其中,74層ResNet的表情識(shí)別混淆矩陣如表4所示。在對(duì)比實(shí)驗(yàn)中,所謂的不帶殘差學(xué)習(xí)單元的DCNN,是指僅僅把帶有殘差學(xué)習(xí)單元的深度殘差網(wǎng)絡(luò)中的捷徑連接支路刪除后的堆疊DCNN,其他各層的操作都是一樣的。
由圖9可知,當(dāng)采用不帶殘差學(xué)習(xí)單元的普通堆疊DCNN時(shí),隨著網(wǎng)絡(luò)深度從20層增加到38層,表情識(shí)別準(zhǔn)確率相應(yīng)地從87.02%增加到87.20%,提升不明顯;但隨著網(wǎng)絡(luò)深度從38層進(jìn)一步增加到56,74層時(shí),表情識(shí)別準(zhǔn)確率并不會(huì)隨著層數(shù)的增加而增加,反而從87.20%降低到86.71%、86.23%,出現(xiàn)了識(shí)別性能的退化現(xiàn)象,收斂性較差。反之,當(dāng)采用帶有殘差學(xué)習(xí)單元的ResNet時(shí),隨著網(wǎng)絡(luò)深度從20層增加到38層、56層、74層,表情識(shí)別準(zhǔn)確率相應(yīng)地從86.77%增加到88.97%、89.48%、90.79%,沒有出現(xiàn)識(shí)別性能的退化現(xiàn)象,收斂性較好。實(shí)驗(yàn)結(jié)果表明采用殘差單元構(gòu)建的深度卷積神經(jīng)網(wǎng)絡(luò)可以解決網(wǎng)絡(luò)深度和模型收斂性之間的矛盾,隨著網(wǎng)絡(luò)深度的加深,能夠?qū)W習(xí)到鑒別能力更強(qiáng)的表情特征,可提升表情識(shí)別的準(zhǔn)確率和魯棒性。
圖9 不同結(jié)構(gòu)神經(jīng)網(wǎng)絡(luò)的表情識(shí)別準(zhǔn)確率比較Fig.9 Comparison among different neural networks in term of expression recognition accuracy
表4 74層ResNet的表情識(shí)別混淆矩陣Tab.4 Confusion matrix for ResNet with 74 layers%
由表4可知,當(dāng)采用74層的ResNet時(shí),中性和高興這兩類表情的識(shí)別準(zhǔn)確率分別達(dá)到96.14%和97.89%,憤怒、厭惡、悲傷和驚訝4類表情的識(shí)別準(zhǔn)確率也分別達(dá)到了88.92%、90.93%、86.39%和92.69%。害怕和驚訝兩種表情容易被混淆,驚訝表情被誤判為害怕表情的概率為5.77%,而害怕表情被誤判為驚訝表情的概率為5.56%。另外,憤怒表情也容易被誤判為厭惡表情,誤判概率為5.00%。
深度卷積神經(jīng)網(wǎng)絡(luò)通過組合多層神經(jīng)元,提取不同層次的特征,不斷迭代組合成更高層次的抽象特征,相比傳統(tǒng)的人工設(shè)計(jì)特征具有更強(qiáng)的特征表達(dá)能力和泛化能力。但是,隨著卷積神經(jīng)網(wǎng)絡(luò)深度的加深,一方面由于在訓(xùn)練網(wǎng)絡(luò)時(shí)會(huì)出現(xiàn)梯度消失或梯度爆炸的問題而使訓(xùn)練變得困難,另一方面由于網(wǎng)絡(luò)模型結(jié)構(gòu)越來越復(fù)雜,隨之帶來的不利因素就是更大的計(jì)算量和更高的內(nèi)存需求,這會(huì)極大地影響模型對(duì)輸入圖像的處理速度。針對(duì)深度卷積神經(jīng)網(wǎng)絡(luò)隨著卷積層數(shù)增加而導(dǎo)致網(wǎng)絡(luò)模型難以訓(xùn)練和性能退化等問題,本文提出了一種基于深度殘差網(wǎng)絡(luò)的人臉表情識(shí)別方法。實(shí)驗(yàn)結(jié)果驗(yàn)證了所提出的方法的有效性,但仍然存在有待進(jìn)一步研究之處。一方面,深度神經(jīng)網(wǎng)絡(luò)是一種數(shù)據(jù)驅(qū)動(dòng)的監(jiān)督學(xué)習(xí)模型,需要從海量樣本數(shù)據(jù)中學(xué)習(xí)數(shù)據(jù)特征,只有通過大量的有標(biāo)簽樣本數(shù)據(jù)訓(xùn)練后才會(huì)獲得理想的識(shí)別效果;而目前本文所用的表情數(shù)據(jù)集還不夠充足,當(dāng)網(wǎng)絡(luò)深度進(jìn)一步加深時(shí),需要學(xué)習(xí)的權(quán)重參數(shù)過多會(huì)導(dǎo)致過擬合等問題。另一方面,本文對(duì)所提出的深度殘差網(wǎng)絡(luò)采用基于端到端的訓(xùn)練,訓(xùn)練過程復(fù)雜,在計(jì)算能力有限的實(shí)驗(yàn)平臺(tái)條件下,再增加網(wǎng)絡(luò)深度有一定難度。然而,有研究表明,基于遷移學(xué)習(xí)(Transfer learning)的方法可以將從某一任務(wù)中學(xué)習(xí)到的特征遷移到新任務(wù)中,比如在Ima?geNet等大規(guī)模數(shù)據(jù)集上預(yù)先訓(xùn)練學(xué)習(xí)到的特征,在其他很多圖像識(shí)別任務(wù)中也取得了很好的結(jié)果。因此,下一步的研究工作將嘗試使用預(yù)先訓(xùn)練的深度殘差網(wǎng)絡(luò)ResNet-101、ResNet-152作為特征提取器,以解決因訓(xùn)練樣本數(shù)量不足而導(dǎo)致網(wǎng)絡(luò)模型出現(xiàn)過擬合問題。