黨宏社 王 淼* 陸馨蕊 王汝明
1(陜西科技大學電氣與控制工程學院 陜西 西安 710021)2(濰坊英軒實業(yè)有限公司 山東 濰坊 262400)
人臉表情是人類交流過程中表達情感最自然、最直觀的方式之一,且55%的有用信息是通過表情來傳達的[1]。因此,近年來人臉表情逐漸成為圖像處理領域研究的熱門,在教育、陪伴機器人、偵察、醫(yī)療等領域具有廣泛的應用價值和深遠的研究意義。
傳統(tǒng)的人臉表情識別方法主要是在人為手動提取特征的基礎上,再使用支持向量機(SVM)進行表情分類。如LBP(Local Binary Pattern)、Gabor、梯度方向直方圖(HOG)等,但這種手工特征的表示能力較差,且光照、性別、個體差異及人為干擾等因素對其影響較大[2]。目前深度學習在許多領域取得了較好的結果,并在某些任務中超越了傳統(tǒng)方法。所以研究者開始將深度學習應用于表情識別中[3]。基于深度學習的方法可以自動學習到人臉圖像中復雜的特征描述,具有較強的魯棒性且可以避免人為手工提取特征造成的誤差,使得深度學習成為人臉表情識別領域的研究熱潮。但有監(jiān)督學習需要大量的帶標簽樣本進行網(wǎng)絡訓練以保證模型的效果,無法直接在數(shù)據(jù)量較小的樣本中得到較好的結果,然而在實際中,利用人工標記大量表情數(shù)據(jù)是非常費時耗力的事情。在面對海量無標記的數(shù)據(jù)時,無監(jiān)督的特征學習正逐漸成為研究的新熱點[4]。文獻[5]將生成對抗網(wǎng)絡(GAN)應用于人臉表情識別中。文獻[6]在表情識別中使用了去噪自編碼器、稀疏自編碼器、自編碼器構成了5層的堆棧混合式自編碼器。
受文獻[7]的啟發(fā),本文在傳統(tǒng)自編碼器網(wǎng)絡的基礎上,將卷積變分自編碼器引入人臉表情識別中,提出一種基于卷積變分自編碼器的人臉表情識別方法,首先利用卷積神經(jīng)網(wǎng)絡構建卷積變分自編碼器。然后利用人臉識別領域中大量的無標簽的人臉樣本作為特征學習所需的數(shù)據(jù),對卷積變分自編碼器進行無監(jiān)督訓練;然后將變分自編碼器中編碼網(wǎng)絡部分輸出的低維特征輸入到卷積神經(jīng)網(wǎng)絡中,構成表情識別網(wǎng)絡;最后使用表情數(shù)據(jù)集對表情識別網(wǎng)絡進行有監(jiān)督訓練,得到訓練好的完整的表情識別網(wǎng)絡。

圖1 基于變分自編碼器的人臉表情識別系統(tǒng)框架
表情識別主要分為表情特征提取和特征分類兩步,而表情特征提取作為表情識別的關鍵步驟,直接影響著識別結果的好壞,為了提高表情特征提取能力,本文采用變分自編碼器的思想,通過變分自編碼器中解碼網(wǎng)絡不斷重構編碼網(wǎng)絡輸出的隱變量,使得重構圖像盡可能地接近輸入的原始圖像,從而提高特征提取能力。
(1) 無監(jiān)督訓練變分自編碼器:在對變分自編碼器進行無監(jiān)督訓練階段,使用無表情標簽的CelebA人臉數(shù)據(jù)集作為網(wǎng)絡輸入,通過變分自編碼器將輸入的高維數(shù)據(jù)映射為均值向量μ和標準差向量σ,利用重參數(shù)技巧Z=μ+εσ,ε~N(0,1)得到隱變量特征Z,再利用解碼器將低維隱特征變量Z還原成高維特征得到重構的人臉圖像,通過不斷地優(yōu)化原始人臉圖像和重構的人臉圖像之間的誤差,使重構的人臉圖像盡可能地還原原始人臉圖像,從而保障隱變量Z中包含的原始人臉特征信息通過解碼網(wǎng)絡后能盡可能還原出原始人臉圖像。利用變分自編碼器的無監(jiān)督特征學習過程為表情識別網(wǎng)絡提供良好的初始參數(shù),從而達到提高網(wǎng)絡的特征提取能力的目的。
(2) 有監(jiān)督訓練卷積網(wǎng)絡:使用帶表情標簽的人臉表情數(shù)據(jù)經(jīng)過編碼器得到的低維特征和表情標簽對卷積網(wǎng)絡部分進行有監(jiān)督訓練,通過反向傳播算法調整網(wǎng)絡權重,最終得到訓練好的表情識別網(wǎng)絡。
(3) 人臉表情圖像分類:輸入表情數(shù)據(jù)集的測試數(shù)據(jù),使用已經(jīng)訓練好的完整的表情識別網(wǎng)絡進行表情分類識別。
本文提出一種基于VAE的表情識別方法,該方法是在VAE的基礎上設計一種新的表情識別網(wǎng)絡,該表情識別網(wǎng)絡由變分自編碼器中的編碼網(wǎng)絡和卷積神經(jīng)網(wǎng)絡兩部分組成。
變分自編碼器(VAE)是Kingma等[8]提出的,VAE是采用兩個神經(jīng)網(wǎng)絡建立了兩個模型,分別是Encoder和Decoder。本文設計的變分自編碼器的網(wǎng)絡結構如圖2所示,其中:h、w、c分別表示輸入輸出圖像的高、寬、通道數(shù);k表示卷積核的大小;s、p分別表示步長及填充。變分自編碼器的編碼網(wǎng)絡的輸入是128×128大小的人臉圖像,自編碼器中有5個卷積核大小為4、步長為2、邊界填充1的卷積層,其中每個卷積層后均采用批量歸一化(BN)和LeakyReLU激活函數(shù);卷積層后連接兩個全連接層,第一個全連接層有512個神經(jīng)元,第二個全連接層輸出通過重參數(shù)技巧得到的256維隱變量Z。為了能夠還原出128×128大小的人臉圖像,解碼網(wǎng)絡中先連接一個具有8 192個神經(jīng)元的全連接層,然后是5個與卷積操作作用相反的卷積核大小是為4、步長為1的反卷積層組成,每個反卷積層后采用BN和激活函數(shù)ReakyReLU。當輸入為128×128大小的人臉圖像經(jīng)過編碼網(wǎng)絡后得到均值向量μ和標準差向量σ,經(jīng)過重參數(shù)技巧后得到256維的隱變量特征Z,然后再經(jīng)過解碼網(wǎng)絡還原出128×128大小的人臉圖像。

圖2 VAE網(wǎng)絡結構示意圖
在對VAE使用無監(jiān)督訓練完成后,使用訓練好的VAE實現(xiàn)的人臉表情識別網(wǎng)絡,如圖3所示該網(wǎng)絡由變分自編碼器的編碼部分和卷積神經(jīng)網(wǎng)絡兩部分組成。將預訓練后的卷積變分自編碼網(wǎng)絡中編碼網(wǎng)絡輸出的隱變量Z作為卷積神經(jīng)網(wǎng)絡的輸入,構建完整的表情識別網(wǎng)絡,使用帶表情標簽的人臉表情數(shù)據(jù)對表情識別網(wǎng)絡中的卷積神經(jīng)網(wǎng)絡部分進行有監(jiān)督訓練。128×128×1的原始人臉圖像經(jīng)過編碼網(wǎng)絡后得到256維的特征,將256維的一維特征使用Reshape函數(shù)重構成16×16×1的矩陣,然后將其作為卷積神經(jīng)網(wǎng)絡的輸入。卷積神經(jīng)網(wǎng)絡部分包括兩個卷積核為5×5、步長為1的卷積層,兩個池化窗口為2×2、步長為2的最大池化層,以及神經(jīng)元個數(shù)為1 024的全連接層和神經(jīng)元個數(shù)為7的Softmax層。為了防止過擬合,在全連接層加入了參數(shù)設置為0.25的Dropout層。

圖3 使用VAE改進的表情識別網(wǎng)絡
實驗采用的深度學習軟件框架是PyTorch,實驗的硬件平臺為Intel(R) Xeon(R)CPU E5-2680 v2,內存為16 GB,GPU為10 GB的NVIDIA GeForce RTX 2080Ti。
本文采用的數(shù)據(jù)集有CelebA(CelebFaces Attribute)人臉數(shù)據(jù)集[9]、JAFFE表情數(shù)據(jù)集[10]和CK+數(shù)據(jù)集[11]。其中無表情標簽的CelebA數(shù)據(jù)集用來對卷積變分自編碼器進行無監(jiān)督特征學習,JAFFE和CK+人臉表情數(shù)據(jù)集均用來驗證基于卷積變分自編碼器的人臉表情識別算法的表情分類性能。
CelebA人臉數(shù)據(jù)集中包含10 177個名人的202 599幅人臉圖像,圖像大小均為218×178,CelebA數(shù)據(jù)集是用來訓練卷積變分自編碼器。
JAFFE數(shù)據(jù)集共213幅,是在實驗室環(huán)境下對10名日本女性所表現(xiàn)出的7種基本表情采集構成的數(shù)據(jù)集。
CK+數(shù)據(jù)集是表情識別中比較常用的數(shù)據(jù)庫,此數(shù)據(jù)庫包含了采集自123名測試人員的593段表情圖片序列,顯示了表情從平靜到劇烈,選取每段表情序列的最后1至3幀圖像構成表情識別數(shù)據(jù)集。
在實驗前,需要對用到的所有數(shù)據(jù)集進行預處理,將所有圖像的尺寸均縮放到128×128大小作為網(wǎng)絡的輸入。
為驗證卷積變分自編碼器有較好的重建人臉圖像的能力,使用CelebA人臉數(shù)據(jù)集分別對卷積變分自編碼器和卷積自編碼器進行無監(jiān)督訓練,然后將重建的人臉圖像可視化。自編碼器將輸入的高維人臉數(shù)據(jù)直接通過編碼部分得到低維的隱向量,然后隱向量通過解碼部分重構成原始圖像,這個過程類似于數(shù)據(jù)壓縮。而變分自編碼器是基于變分貝葉斯推斷的生成式網(wǎng)絡。
如圖4和圖5所示,分別為自編碼器和卷積變分自編碼器重建的人臉圖像,其中第一行是原始的CelebA圖像,第二行是重建的人臉圖像。通過對比重建的人臉圖像的清晰度可以看出卷積變分自編碼器重建人臉圖像的能力優(yōu)于自編碼器,即隱層變量能包含更多的原始人臉特征信息,所以文中用卷積變分自編碼器來進行特征提取。

圖4 原始圖像與AE器重建的人臉圖像的對比

圖5 原始圖像與VAE重建的人臉圖像的對比
本文的評價準則是表情分類的準確率,定義見式(1)。
式中:Ni為第i類表情的樣本量;ni為第i類中識別正確的樣本數(shù)量。
為了測試和評估人臉表情識別模型的分類效果,分別將預處理好的JAFFE和CK+數(shù)據(jù)集作為測試數(shù)據(jù),圖6和圖7所示分別是在CK+數(shù)據(jù)集和JAFFE數(shù)據(jù)集上表情識別結果的混淆矩陣。

圖6 CK+數(shù)據(jù)集上的混淆矩陣

圖7 JAFFE數(shù)據(jù)集上的混淆矩陣
圖6和圖7中對角線部分是各類表情的識別率,其余部分數(shù)據(jù)為某表情被誤分為其他類別的概率。通過對比各類表情的識別率得:無論是CK+數(shù)據(jù)集還是JAFFE數(shù)據(jù)集,本文算法在高興(Happy)表情上的識別正確率最高;在JAFFE數(shù)據(jù)集中,厭惡和害怕這兩種表情上的正確率明顯偏低,而在CK+數(shù)據(jù)集上自然(Neutral)的識別率偏低。通過對數(shù)據(jù)集中原表情圖像分析得:高興表情的表情特征更加明顯,而其他表情的表情特征有相似之處,所以更容易分類錯誤。
為了進一步驗證本文算法的識別效果,設計了以下對比實驗:
實驗1:直接使用表情數(shù)據(jù)集訓練一個7層的卷積神經(jīng)網(wǎng)絡。
實驗2:使用變分自編碼器的編碼部分進行特征提取,然后直接對提取的特征輸入Softmax分類層分類。
實驗3:本文算法。
表1中列出了幾個對比實驗分別在JAFFE和CK+數(shù)據(jù)集上的識別率,在對比實驗1中采用的CNN網(wǎng)絡的網(wǎng)絡結構和參數(shù)與本文算法相同,分析表1中數(shù)據(jù)發(fā)現(xiàn),使用變分自編碼器后在CK+和JAFFE數(shù)據(jù)集上的識別率比未使用自編碼器的識別率分別提高了9.99百分點和14.75百分點;但將變分自編碼器編碼網(wǎng)絡的輸出特征直接輸入到Softmax進行分類和與本文算法相比,本文算法的識別率略勝一籌。

表1 對比實驗的實驗結果(%)
表2中列舉了不同表情識別方法在JAFFE和CK+數(shù)據(jù)集上識別率的對比結果,如:文獻[5]中利用GAN的博弈思想不斷增強特征提取能力和分類能力;文獻[12]中使用卷積神經(jīng)網(wǎng)絡CNN提取人臉特征,并使用最大池化方法降維,Softmax進行分類;文獻[14]中將改進的AlexNet應用于表情識別中。對比表中數(shù)據(jù),無論是傳統(tǒng)方法還是基于CNN的表情識別方法均取得了一定的效果,但是相比較而言,本文方法的識別效果更好。人臉表情識別部分結果示例如圖8所示,圖8(a)為識別正確的結果圖。圖8(b)為識別錯誤的結果圖。圖8(b)中左側圖像的表情標簽是厭惡,但是從右側的柱形圖中可以看出,該表情被識別成傷心的概率最大。

表2 不同方法在JAFFE數(shù)據(jù)集和CK+數(shù)據(jù)集上對比(%)

(a) 識別正確的結果圖
針對由于樣本不足導致網(wǎng)絡模型難以訓練,從而影響識別結果的情況,本文提出的基于變分自編碼器改進的人臉表情識別方法,通過無監(jiān)督學習的方式使變分自編碼網(wǎng)絡有良好的特征提取能力,從而為表網(wǎng)絡提供良好的初始參數(shù),在一定程度上解決了因樣本不足而導致的過擬合問題。通過實驗驗證了本文方法在表情識別方面是有效的。下一步將以野外表情數(shù)據(jù)集作為研究的對象,使網(wǎng)絡在野外表情識別方面具有較好的識別能力。