陳文緒,薛曉軍,許江淳,史鵬坤,何曉云
(昆明理工大學(xué) 信息工程與自動化學(xué)院,昆明 650500)
未來人工智能將會越來越受到重視,服務(wù)業(yè)也會加入人工智能的元素,比如在醫(yī)學(xué)、心理學(xué)以及服務(wù)性機(jī)器人等領(lǐng)域。由于在真實(shí)大自然場景下,攝像頭的拍攝會受到光線等因素的影響,故而如何使人臉與過曝的背景分離,并分析出此時(shí)的人臉表情信息是一個(gè)巨大的考驗(yàn)。
早在2002年,文獻(xiàn)[1-2]首次使用獨(dú)立分量分析法(independent component analysis,ICA)和特征臉主分量分析法(principal component analysis,PCA)[3]在美國軍方FERET(face recognition technology)數(shù)據(jù)集上對人臉表情進(jìn)行實(shí)驗(yàn),其識別率分別接近90%和85%。后來文獻(xiàn)[4]通過線性分類器并結(jié)合隱馬爾科夫模型法(hidden markov model,HMM)對人臉面部特征進(jìn)行學(xué)習(xí)分類,之后通過該算法在CK+數(shù)據(jù)集上進(jìn)行測試,人臉表情識別率為90.9%??煽闯鲈缙诘娜四槺砬樽R別方法在準(zhǔn)確率方面存在不足。在2012年的ImageNet之后出現(xiàn)了許多經(jīng)典的神經(jīng)網(wǎng)絡(luò)模型,文獻(xiàn)[5]使用了AlexNet模型進(jìn)行人臉表情識別,并對該模型進(jìn)行參數(shù)的優(yōu)化,在CK+數(shù)據(jù)集上的7種表情的識別率為94.4%。為了增加網(wǎng)絡(luò)的深度和廣度,且提高研究對象的識別率,文獻(xiàn)[6]對VGGNet模型改進(jìn)為FaceNetExpNet模型,此網(wǎng)絡(luò)模型在CK+數(shù)據(jù)集上的8種表情識別率為96.8%。文獻(xiàn)[5]采用GoogLeNet模型在CK+數(shù)據(jù)集上的識別率為95%,其提出的基于神經(jīng)網(wǎng)絡(luò)的PPDN(peak-piloted deep network)方法在CK+數(shù)據(jù)集上的表情識別率為97.3%。
以上神經(jīng)網(wǎng)絡(luò)在對研究對象識別時(shí)均有一個(gè)特點(diǎn),首先是對研究對象的特征進(jìn)行提取,其次對所需要的特征進(jìn)行學(xué)習(xí),最后則是對選擇后的特征進(jìn)行分類,這樣便形成了一個(gè)一個(gè)端到端的識別過程。關(guān)于特征識別的神經(jīng)網(wǎng)絡(luò)一般由5個(gè)部分組成:卷積、激活函數(shù)、池化、全連接以及分類。卷積在數(shù)學(xué)中的作用主要用來對輸入函數(shù)進(jìn)行加權(quán)累加,在神經(jīng)網(wǎng)絡(luò)中主要用來對輸入圖片的特征進(jìn)行提取,所提取特征的數(shù)量和種類取決于卷積核數(shù)量和種類。但是卷積操作之后如果不進(jìn)行激活操作,那么前面的卷積操作就只是一個(gè)簡單的線性擬合問題。傳統(tǒng)的激活函數(shù)常用sigmoid函數(shù),但是sigmoid激活函數(shù)只能保證在0附近時(shí)函數(shù)的斜率才會很大,根據(jù)梯度調(diào)整后參數(shù)才符合要求。但遠(yuǎn)離0的部分,斜率變化會趨近于0,這樣會導(dǎo)致梯度消失,進(jìn)而影響參數(shù)的調(diào)整。為了解決這些問題,研究者們使用了Relu激活函數(shù)。由于人臉表情識別需要多種特征,則需要多種卷積核,這樣會導(dǎo)致通道數(shù)變得很多,最后會大大增加網(wǎng)絡(luò)的計(jì)算量。這時(shí)則可以使用池化操作對特征進(jìn)行降維,同時(shí)池化操作還具有特征擁有平移不變形的性質(zhì),盡量減少特征在處理過程中的損失。由于全連接層的參數(shù)眾多,許多學(xué)者目前在尋求一個(gè)替代全連接層的方案。
基于以上問題,本文提出在VGGNet16網(wǎng)絡(luò)的側(cè)面加入一些側(cè)輸出層(監(jiān)督模塊),通過上采樣的方法放大特征圖像,然后將網(wǎng)絡(luò)從低級到高級進(jìn)行特征融合,這樣能夠確保特征復(fù)用,進(jìn)而減少參數(shù)量以及特征在卷積過程中的損失,并且緩解了梯度消失等問題,從而提高表情的識別率。
以VGGNet16網(wǎng)絡(luò)結(jié)構(gòu)為主,上采樣和下采樣操作為輔的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu),該結(jié)構(gòu)中使用上采樣操作中的去卷積方法,從而實(shí)現(xiàn)輸入任意大小的圖片保證輸出符合要求,然后再結(jié)合下采樣操作使本層特征減小一半。具體操作方法如圖1。該方法在減小特征損失的同時(shí),又大幅度減少了網(wǎng)絡(luò)的參數(shù)量。并且使用下采樣方法使側(cè)輸出層的特征圖縮小一半,然后與下一層的側(cè)輸出層的特征圖進(jìn)行融合操作,這樣能夠使上層的特征圖的一些特征能夠盡可能保留下來。
圖1中的C表示特征融合操作,卷積核后面的數(shù)字表示卷積核的個(gè)數(shù),2個(gè)卷積核的堆疊表示進(jìn)行了2次卷積操作。D表示下采樣操作,U表示上采樣操作,GLOBAL表示全局特征卷積操作,并對GLOBAL進(jìn)行up×32操作,LOCAL表示局部特征卷積操作,SCORE表示對全局特征和局部特征進(jìn)行加權(quán)融合操作。圖中的3×3和5×5等卷積核是為了豐富特征映射,1×1的卷積核則是為了降低參數(shù)量,提高網(wǎng)絡(luò)的計(jì)算效率。使用不同的卷積核來豐富網(wǎng)絡(luò)的特征,并通過上采樣方法(圖中的粗箭頭)把下層側(cè)輸出層的特征圖放大2倍,這樣使不同級之間的特征圖大小保持一致,方便后面的融合操作。其中2×2 pooling為池化中的最大池化操作。
圖1 基于多級細(xì)節(jié)信息融合方法結(jié)構(gòu)圖Fig.1 Structure diagram based on multi-level detail information fusion method
圖1第1列(VGGNet16)中,輸入的圖像經(jīng)過卷積之后得到的特征圖分為2路,一路到輸出層,另一路進(jìn)入池化層。進(jìn)入池化層的這一路經(jīng)過多次的卷積和池化之后得到的特征圖,最終進(jìn)入GLOBAL層進(jìn)行卷積操作。第2列中每個(gè)模塊有2個(gè)卷積層,該卷積層的主要作用是進(jìn)行特征的提取操作,豐富從低級到高級的空間特征信息。第3、第4層的側(cè)輸出層都由2層卷積核組成,卷積后的特征圖一路與上一層下采樣操作后的特征圖進(jìn)行融合,另一路則與下一層上采樣操作后的特征圖進(jìn)行融合。第5層同樣通過2層卷積核進(jìn)行卷積。
下采樣的融合算法表示為
(1)
上采樣的融合算法表示為
(2)
第l層側(cè)輸出層的激活值用Oside表示,更新后的側(cè)輸出層激活值被定義為Nside。
(3)
fusion loss函數(shù)可表示為
(4)
(4)式中:h()表示標(biāo)準(zhǔn)的softmax loss;P表示所有標(biāo)準(zhǔn)網(wǎng)絡(luò)層參數(shù)的集合;Nside是第1層側(cè)輸出的激活值。
測試階段中融合多個(gè)特征映射圖,由融合層產(chǎn)生的預(yù)測值計(jì)算可以表示為
(5)
(5)式中,σ()表示softmax函數(shù)。
CK+人臉表情數(shù)據(jù)集,是一個(gè)擁有2 000個(gè)左右灰度照片的人臉表情數(shù)據(jù)集。該數(shù)據(jù)集主要是在實(shí)驗(yàn)室中采集的,包含了其中基本的面部表情(中性、蔑視、高興、悲傷、生氣、厭惡、驚訝、害怕)。
RAF-DB[7]人臉表情數(shù)據(jù)集,由北京郵電大學(xué)的鄧偉洪教授等人于2017年建立的。該數(shù)據(jù)集共收集了29 672張從真實(shí)的自然界中拍攝的照片,并不僅限于實(shí)驗(yàn)室和統(tǒng)一的灰度圖像。這些圖片中主要有7種基本面部表情、復(fù)合面部表情和一些研究人臉其他屬性的標(biāo)簽圖片(人的年齡范圍和性別等),故而在研究人臉時(shí)具有很高的價(jià)值。
實(shí)驗(yàn)所用電腦Intel i7,系統(tǒng)Ubuntu 16.04 Linux,語言Python,使用的神經(jīng)網(wǎng)絡(luò)模型為Tensorflow和Keras,未使用GPU加速。
Tensorflow是Google開源的深度學(xué)習(xí)機(jī)構(gòu),其具有節(jié)省時(shí)間,應(yīng)用廣泛,研究團(tuán)隊(duì)技術(shù)實(shí)力強(qiáng)等優(yōu)點(diǎn),且該架構(gòu)支持目前常用的LSTM(long short-term memory)、CNN(convolutional neural networks)和RNN(recurrent neural network)等算法。
Keras神經(jīng)網(wǎng)絡(luò)框架比較容易上手,能夠堆積python中關(guān)于Keras的庫,且能和Tensorflow框架配合使用。
神經(jīng)網(wǎng)絡(luò)訓(xùn)練之前必須對參數(shù)進(jìn)行初始化。為了避免簡單的鏈?zhǔn)接?jì)算法在進(jìn)行一些具有復(fù)雜結(jié)構(gòu)的神經(jīng)網(wǎng)絡(luò)時(shí)不能達(dá)到理想的效果,本文將在鏈?zhǔn)椒▌t中采用隨機(jī)梯度計(jì)算算法。
將權(quán)重初始化為接近于0的值,即保持初始參數(shù)為很小的值。由于當(dāng)神經(jīng)元初始參數(shù)是隨機(jī)的但不相等,所以這樣可以保證參數(shù)在更新后也不相同,近而保證網(wǎng)絡(luò)的各個(gè)部分都不相同。其中權(quán)重的更新實(shí)現(xiàn)方法表示為
(6)
(6)式中:α表示訓(xùn)練過程中的學(xué)習(xí)率;W表示訓(xùn)練過程中的權(quán)重;J(W,b)表示整體損失代價(jià)函數(shù)。
對偏置進(jìn)行初始化,通常會把偏置初始化為0。其中偏置的更新方法表示為
(7)
(7)式中,b表示偏置。
對于神經(jīng)網(wǎng)絡(luò)中的參數(shù)訓(xùn)練,主要參數(shù)有:初始學(xué)習(xí)速率(initial learning rate,ILR)、當(dāng)前迭代次數(shù)(iterations)、批量大小(batch_size)、權(quán)重衰減(weight decay,WD)、數(shù)據(jù)集輪訓(xùn)次數(shù)(epoch)、慣性沖量(momentum)等。初始時(shí)學(xué)習(xí)速率設(shè)置α為0.01,并且在學(xué)習(xí)過程中通過漸變下降的方法不斷更新學(xué)習(xí)速率的大小。其變化方法表示為
v=βv-αdx
(8)
x←x+v
(9)
(10)
(8)—(10)式中:β表示中慣性沖量;ηd表示學(xué)習(xí)速率衰減;v表示由3個(gè)參數(shù)量(梯度、慣性沖量、學(xué)習(xí)速率)決定的幅度;η0表示初始學(xué)習(xí)速率;s表示當(dāng)前訓(xùn)練過程中的迭代次數(shù)。
對于參數(shù)batch_size的選定,用改進(jìn)的網(wǎng)絡(luò)模型在CK+數(shù)據(jù)集進(jìn)行實(shí)驗(yàn),首先設(shè)置最大迭代次數(shù)為50,并保持該值在訓(xùn)練過程中不變,研究batch_size的大小對訓(xùn)練總時(shí)間和收斂速度的影響,以及保證在指標(biāo)相同的情況下該神經(jīng)網(wǎng)絡(luò)模型找到最優(yōu)值所需要的迭代次數(shù),并選擇8個(gè)batch_size進(jìn)行實(shí)驗(yàn),實(shí)驗(yàn)結(jié)果如表1。由表分析可得,該算法的batch_size合適值應(yīng)為128左右。
表1 關(guān)于參數(shù)batch_size的選定實(shí)驗(yàn)
對于epoch的選定,在CK+數(shù)據(jù)集上進(jìn)行實(shí)驗(yàn),首先將CK+數(shù)據(jù)集的五分之四用來作為訓(xùn)練數(shù)據(jù)集,五分之一作為測試數(shù)據(jù)集。然后選定epoch為70,對該數(shù)據(jù)集進(jìn)行實(shí)驗(yàn),發(fā)現(xiàn)當(dāng)epoch的值為40以后訓(xùn)練誤差train loss幾乎沒有改變,實(shí)驗(yàn)結(jié)果如圖2。
圖2 訓(xùn)練過程中的Epoch參數(shù)的選取Fig.2 Selection of Epoch parameters during training
由以上實(shí)驗(yàn)結(jié)果可得主要參數(shù)設(shè)置如表2。
表2 網(wǎng)絡(luò)相關(guān)參數(shù)設(shè)置
2.4.1 在CK+人臉表情數(shù)據(jù)集進(jìn)行實(shí)驗(yàn)
使用本文模型在CK+人臉表情數(shù)據(jù)集進(jìn)行實(shí)驗(yàn),得到驗(yàn)證結(jié)果如圖3。圖中的數(shù)字分別代表0-生氣,1-蔑視,2-惡心,3-害怕,4-高興,5-悲傷,6-驚訝。圖中左側(cè)的0到6表示樣本中含有每種表情的實(shí)際樣本值,下側(cè)的0到6表示預(yù)測值,預(yù)測值表示訓(xùn)練模型在測試樣本中測試出的每種表情所占的比例。圖3中的混合矩陣表示訓(xùn)練模型預(yù)測出的每種表情在實(shí)際表情樣本中所占的比例。通過圖3中數(shù)據(jù)可以分析出,生氣和蔑視等表情的識別率相對較低。圖中顏色越深表示表情識別率越高,顏色越淺表示表情識別率越低。
圖3 CK+表情分類混合矩陣Fig.3 CK+ expression classification hybrid matrix
使用本文改進(jìn)算法與其他算法在CK+數(shù)據(jù)集的實(shí)驗(yàn)結(jié)果進(jìn)行對比,結(jié)果如表3。
本文模型與其他模型在CK+數(shù)據(jù)集上實(shí)驗(yàn)的迭代一次時(shí)間對比如表4。
由表3和表4可看出本文方法在保證速率的情況下,識別率超過常用的人臉表情識別方法。
表3 常見模型與本文模型在CK+數(shù)據(jù)集上的結(jié)果對比
表4 常見模型與本文模型時(shí)間對比
2.4.2 在RAF-DB數(shù)據(jù)集進(jìn)行實(shí)驗(yàn)
使用本文模型在RAF-DB數(shù)據(jù)集進(jìn)行實(shí)驗(yàn),得到實(shí)驗(yàn)結(jié)果的表情識別率如圖4。
圖4 RAF-DB表情分類混合矩陣Fig.4 RAF-DB expression classification hybrid matrix
通過圖4中數(shù)據(jù)可以看出,高興的準(zhǔn)確率比較高,惡心和害怕在幅度較淺時(shí)比較類似,故這幾種表情的識別率較低。
對比本文算法在RAF-DB數(shù)據(jù)集上的準(zhǔn)確率與目前主流算法在RAF-DB數(shù)據(jù)集上的識別率,結(jié)果如表5。
表5 常用算法與本文算法識別率對比
通過以上對比分析可以發(fā)現(xiàn),本文的算法在人臉表情識別方面具有一定的優(yōu)勢。
本文提出基于VGGNet16改進(jìn)的多級細(xì)節(jié)信息融合的人臉表情識別方法,選擇2種人臉表情數(shù)據(jù)集CK+(在實(shí)驗(yàn)室中采集的)和RAF-DB(來自于真實(shí)的大自然中),通過分析和查閱文獻(xiàn)選擇合適的網(wǎng)絡(luò)參數(shù),使用本文方法在這2種人臉表情數(shù)據(jù)集上進(jìn)行實(shí)驗(yàn),使得出的結(jié)果與常用方法在數(shù)據(jù)集上的實(shí)驗(yàn)結(jié)果進(jìn)行比對。最終實(shí)驗(yàn)結(jié)果表明,本文所提出的方法能夠提高人臉表情匹配的識別率。但是,目前的算法對實(shí)驗(yàn)的硬件和軟件環(huán)境有一定的要求,且缺少與微表情相關(guān)的數(shù)據(jù)集,所以下一步應(yīng)該試著解決這些問題,更加豐富對人類表情的研究。