黨宏社 王 淼* 陸馨蕊 王汝明
1(陜西科技大學(xué)電氣與控制工程學(xué)院 陜西 西安 710021)2(濰坊英軒實業(yè)有限公司 山東 濰坊 262400)
人臉表情是人類交流過程中表達(dá)情感最自然、最直觀的方式之一,且55%的有用信息是通過表情來傳達(dá)的[1]。因此,近年來人臉表情逐漸成為圖像處理領(lǐng)域研究的熱門,在教育、陪伴機(jī)器人、偵察、醫(yī)療等領(lǐng)域具有廣泛的應(yīng)用價值和深遠(yuǎn)的研究意義。
傳統(tǒng)的人臉表情識別方法主要是在人為手動提取特征的基礎(chǔ)上,再使用支持向量機(jī)(SVM)進(jìn)行表情分類。如LBP(Local Binary Pattern)、Gabor、梯度方向直方圖(HOG)等,但這種手工特征的表示能力較差,且光照、性別、個體差異及人為干擾等因素對其影響較大[2]。目前深度學(xué)習(xí)在許多領(lǐng)域取得了較好的結(jié)果,并在某些任務(wù)中超越了傳統(tǒng)方法。所以研究者開始將深度學(xué)習(xí)應(yīng)用于表情識別中[3]?;谏疃葘W(xué)習(xí)的方法可以自動學(xué)習(xí)到人臉圖像中復(fù)雜的特征描述,具有較強(qiáng)的魯棒性且可以避免人為手工提取特征造成的誤差,使得深度學(xué)習(xí)成為人臉表情識別領(lǐng)域的研究熱潮。但有監(jiān)督學(xué)習(xí)需要大量的帶標(biāo)簽樣本進(jìn)行網(wǎng)絡(luò)訓(xùn)練以保證模型的效果,無法直接在數(shù)據(jù)量較小的樣本中得到較好的結(jié)果,然而在實際中,利用人工標(biāo)記大量表情數(shù)據(jù)是非常費(fèi)時耗力的事情。在面對海量無標(biāo)記的數(shù)據(jù)時,無監(jiān)督的特征學(xué)習(xí)正逐漸成為研究的新熱點[4]。文獻(xiàn)[5]將生成對抗網(wǎng)絡(luò)(GAN)應(yīng)用于人臉表情識別中。文獻(xiàn)[6]在表情識別中使用了去噪自編碼器、稀疏自編碼器、自編碼器構(gòu)成了5層的堆?;旌鲜阶跃幋a器。
受文獻(xiàn)[7]的啟發(fā),本文在傳統(tǒng)自編碼器網(wǎng)絡(luò)的基礎(chǔ)上,將卷積變分自編碼器引入人臉表情識別中,提出一種基于卷積變分自編碼器的人臉表情識別方法,首先利用卷積神經(jīng)網(wǎng)絡(luò)構(gòu)建卷積變分自編碼器。然后利用人臉識別領(lǐng)域中大量的無標(biāo)簽的人臉樣本作為特征學(xué)習(xí)所需的數(shù)據(jù),對卷積變分自編碼器進(jìn)行無監(jiān)督訓(xùn)練;然后將變分自編碼器中編碼網(wǎng)絡(luò)部分輸出的低維特征輸入到卷積神經(jīng)網(wǎng)絡(luò)中,構(gòu)成表情識別網(wǎng)絡(luò);最后使用表情數(shù)據(jù)集對表情識別網(wǎng)絡(luò)進(jìn)行有監(jiān)督訓(xùn)練,得到訓(xùn)練好的完整的表情識別網(wǎng)絡(luò)。
圖1 基于變分自編碼器的人臉表情識別系統(tǒng)框架
表情識別主要分為表情特征提取和特征分類兩步,而表情特征提取作為表情識別的關(guān)鍵步驟,直接影響著識別結(jié)果的好壞,為了提高表情特征提取能力,本文采用變分自編碼器的思想,通過變分自編碼器中解碼網(wǎng)絡(luò)不斷重構(gòu)編碼網(wǎng)絡(luò)輸出的隱變量,使得重構(gòu)圖像盡可能地接近輸入的原始圖像,從而提高特征提取能力。
(1) 無監(jiān)督訓(xùn)練變分自編碼器:在對變分自編碼器進(jìn)行無監(jiān)督訓(xùn)練階段,使用無表情標(biāo)簽的CelebA人臉數(shù)據(jù)集作為網(wǎng)絡(luò)輸入,通過變分自編碼器將輸入的高維數(shù)據(jù)映射為均值向量μ和標(biāo)準(zhǔn)差向量σ,利用重參數(shù)技巧Z=μ+εσ,ε~N(0,1)得到隱變量特征Z,再利用解碼器將低維隱特征變量Z還原成高維特征得到重構(gòu)的人臉圖像,通過不斷地優(yōu)化原始人臉圖像和重構(gòu)的人臉圖像之間的誤差,使重構(gòu)的人臉圖像盡可能地還原原始人臉圖像,從而保障隱變量Z中包含的原始人臉特征信息通過解碼網(wǎng)絡(luò)后能盡可能還原出原始人臉圖像。利用變分自編碼器的無監(jiān)督特征學(xué)習(xí)過程為表情識別網(wǎng)絡(luò)提供良好的初始參數(shù),從而達(dá)到提高網(wǎng)絡(luò)的特征提取能力的目的。
(2) 有監(jiān)督訓(xùn)練卷積網(wǎng)絡(luò):使用帶表情標(biāo)簽的人臉表情數(shù)據(jù)經(jīng)過編碼器得到的低維特征和表情標(biāo)簽對卷積網(wǎng)絡(luò)部分進(jìn)行有監(jiān)督訓(xùn)練,通過反向傳播算法調(diào)整網(wǎng)絡(luò)權(quán)重,最終得到訓(xùn)練好的表情識別網(wǎng)絡(luò)。
(3) 人臉表情圖像分類:輸入表情數(shù)據(jù)集的測試數(shù)據(jù),使用已經(jīng)訓(xùn)練好的完整的表情識別網(wǎng)絡(luò)進(jìn)行表情分類識別。
本文提出一種基于VAE的表情識別方法,該方法是在VAE的基礎(chǔ)上設(shè)計一種新的表情識別網(wǎng)絡(luò),該表情識別網(wǎng)絡(luò)由變分自編碼器中的編碼網(wǎng)絡(luò)和卷積神經(jīng)網(wǎng)絡(luò)兩部分組成。
變分自編碼器(VAE)是Kingma等[8]提出的,VAE是采用兩個神經(jīng)網(wǎng)絡(luò)建立了兩個模型,分別是Encoder和Decoder。本文設(shè)計的變分自編碼器的網(wǎng)絡(luò)結(jié)構(gòu)如圖2所示,其中:h、w、c分別表示輸入輸出圖像的高、寬、通道數(shù);k表示卷積核的大小;s、p分別表示步長及填充。變分自編碼器的編碼網(wǎng)絡(luò)的輸入是128×128大小的人臉圖像,自編碼器中有5個卷積核大小為4、步長為2、邊界填充1的卷積層,其中每個卷積層后均采用批量歸一化(BN)和LeakyReLU激活函數(shù);卷積層后連接兩個全連接層,第一個全連接層有512個神經(jīng)元,第二個全連接層輸出通過重參數(shù)技巧得到的256維隱變量Z。為了能夠還原出128×128大小的人臉圖像,解碼網(wǎng)絡(luò)中先連接一個具有8 192個神經(jīng)元的全連接層,然后是5個與卷積操作作用相反的卷積核大小是為4、步長為1的反卷積層組成,每個反卷積層后采用BN和激活函數(shù)ReakyReLU。當(dāng)輸入為128×128大小的人臉圖像經(jīng)過編碼網(wǎng)絡(luò)后得到均值向量μ和標(biāo)準(zhǔn)差向量σ,經(jīng)過重參數(shù)技巧后得到256維的隱變量特征Z,然后再經(jīng)過解碼網(wǎng)絡(luò)還原出128×128大小的人臉圖像。
圖2 VAE網(wǎng)絡(luò)結(jié)構(gòu)示意圖
在對VAE使用無監(jiān)督訓(xùn)練完成后,使用訓(xùn)練好的VAE實現(xiàn)的人臉表情識別網(wǎng)絡(luò),如圖3所示該網(wǎng)絡(luò)由變分自編碼器的編碼部分和卷積神經(jīng)網(wǎng)絡(luò)兩部分組成。將預(yù)訓(xùn)練后的卷積變分自編碼網(wǎng)絡(luò)中編碼網(wǎng)絡(luò)輸出的隱變量Z作為卷積神經(jīng)網(wǎng)絡(luò)的輸入,構(gòu)建完整的表情識別網(wǎng)絡(luò),使用帶表情標(biāo)簽的人臉表情數(shù)據(jù)對表情識別網(wǎng)絡(luò)中的卷積神經(jīng)網(wǎng)絡(luò)部分進(jìn)行有監(jiān)督訓(xùn)練。128×128×1的原始人臉圖像經(jīng)過編碼網(wǎng)絡(luò)后得到256維的特征,將256維的一維特征使用Reshape函數(shù)重構(gòu)成16×16×1的矩陣,然后將其作為卷積神經(jīng)網(wǎng)絡(luò)的輸入。卷積神經(jīng)網(wǎng)絡(luò)部分包括兩個卷積核為5×5、步長為1的卷積層,兩個池化窗口為2×2、步長為2的最大池化層,以及神經(jīng)元個數(shù)為1 024的全連接層和神經(jīng)元個數(shù)為7的Softmax層。為了防止過擬合,在全連接層加入了參數(shù)設(shè)置為0.25的Dropout層。
圖3 使用VAE改進(jìn)的表情識別網(wǎng)絡(luò)
實驗采用的深度學(xué)習(xí)軟件框架是PyTorch,實驗的硬件平臺為Intel(R) Xeon(R)CPU E5-2680 v2,內(nèi)存為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]。其中無表情標(biāo)簽的CelebA數(shù)據(jù)集用來對卷積變分自編碼器進(jìn)行無監(jiān)督特征學(xué)習(xí),JAFFE和CK+人臉表情數(shù)據(jù)集均用來驗證基于卷積變分自編碼器的人臉表情識別算法的表情分類性能。
CelebA人臉數(shù)據(jù)集中包含10 177個名人的202 599幅人臉圖像,圖像大小均為218×178,CelebA數(shù)據(jù)集是用來訓(xùn)練卷積變分自編碼器。
JAFFE數(shù)據(jù)集共213幅,是在實驗室環(huán)境下對10名日本女性所表現(xiàn)出的7種基本表情采集構(gòu)成的數(shù)據(jù)集。
CK+數(shù)據(jù)集是表情識別中比較常用的數(shù)據(jù)庫,此數(shù)據(jù)庫包含了采集自123名測試人員的593段表情圖片序列,顯示了表情從平靜到劇烈,選取每段表情序列的最后1至3幀圖像構(gòu)成表情識別數(shù)據(jù)集。
在實驗前,需要對用到的所有數(shù)據(jù)集進(jìn)行預(yù)處理,將所有圖像的尺寸均縮放到128×128大小作為網(wǎng)絡(luò)的輸入。
為驗證卷積變分自編碼器有較好的重建人臉圖像的能力,使用CelebA人臉數(shù)據(jù)集分別對卷積變分自編碼器和卷積自編碼器進(jìn)行無監(jiān)督訓(xùn)練,然后將重建的人臉圖像可視化。自編碼器將輸入的高維人臉數(shù)據(jù)直接通過編碼部分得到低維的隱向量,然后隱向量通過解碼部分重構(gòu)成原始圖像,這個過程類似于數(shù)據(jù)壓縮。而變分自編碼器是基于變分貝葉斯推斷的生成式網(wǎng)絡(luò)。
如圖4和圖5所示,分別為自編碼器和卷積變分自編碼器重建的人臉圖像,其中第一行是原始的CelebA圖像,第二行是重建的人臉圖像。通過對比重建的人臉圖像的清晰度可以看出卷積變分自編碼器重建人臉圖像的能力優(yōu)于自編碼器,即隱層變量能包含更多的原始人臉特征信息,所以文中用卷積變分自編碼器來進(jìn)行特征提取。
圖4 原始圖像與AE器重建的人臉圖像的對比
圖5 原始圖像與VAE重建的人臉圖像的對比
本文的評價準(zhǔn)則是表情分類的準(zhǔn)確率,定義見式(1)。
式中:Ni為第i類表情的樣本量;ni為第i類中識別正確的樣本數(shù)量。
為了測試和評估人臉表情識別模型的分類效果,分別將預(yù)處理好的JAFFE和CK+數(shù)據(jù)集作為測試數(shù)據(jù),圖6和圖7所示分別是在CK+數(shù)據(jù)集和JAFFE數(shù)據(jù)集上表情識別結(jié)果的混淆矩陣。
圖6 CK+數(shù)據(jù)集上的混淆矩陣
圖7 JAFFE數(shù)據(jù)集上的混淆矩陣
圖6和圖7中對角線部分是各類表情的識別率,其余部分?jǐn)?shù)據(jù)為某表情被誤分為其他類別的概率。通過對比各類表情的識別率得:無論是CK+數(shù)據(jù)集還是JAFFE數(shù)據(jù)集,本文算法在高興(Happy)表情上的識別正確率最高;在JAFFE數(shù)據(jù)集中,厭惡和害怕這兩種表情上的正確率明顯偏低,而在CK+數(shù)據(jù)集上自然(Neutral)的識別率偏低。通過對數(shù)據(jù)集中原表情圖像分析得:高興表情的表情特征更加明顯,而其他表情的表情特征有相似之處,所以更容易分類錯誤。
為了進(jìn)一步驗證本文算法的識別效果,設(shè)計了以下對比實驗:
實驗1:直接使用表情數(shù)據(jù)集訓(xùn)練一個7層的卷積神經(jīng)網(wǎng)絡(luò)。
實驗2:使用變分自編碼器的編碼部分進(jìn)行特征提取,然后直接對提取的特征輸入Softmax分類層分類。
實驗3:本文算法。
表1中列出了幾個對比實驗分別在JAFFE和CK+數(shù)據(jù)集上的識別率,在對比實驗1中采用的CNN網(wǎng)絡(luò)的網(wǎng)絡(luò)結(jié)構(gòu)和參數(shù)與本文算法相同,分析表1中數(shù)據(jù)發(fā)現(xiàn),使用變分自編碼器后在CK+和JAFFE數(shù)據(jù)集上的識別率比未使用自編碼器的識別率分別提高了9.99百分點和14.75百分點;但將變分自編碼器編碼網(wǎng)絡(luò)的輸出特征直接輸入到Softmax進(jìn)行分類和與本文算法相比,本文算法的識別率略勝一籌。
表1 對比實驗的實驗結(jié)果(%)
表2中列舉了不同表情識別方法在JAFFE和CK+數(shù)據(jù)集上識別率的對比結(jié)果,如:文獻(xiàn)[5]中利用GAN的博弈思想不斷增強(qiáng)特征提取能力和分類能力;文獻(xiàn)[12]中使用卷積神經(jīng)網(wǎng)絡(luò)CNN提取人臉特征,并使用最大池化方法降維,Softmax進(jìn)行分類;文獻(xiàn)[14]中將改進(jìn)的AlexNet應(yīng)用于表情識別中。對比表中數(shù)據(jù),無論是傳統(tǒng)方法還是基于CNN的表情識別方法均取得了一定的效果,但是相比較而言,本文方法的識別效果更好。人臉表情識別部分結(jié)果示例如圖8所示,圖8(a)為識別正確的結(jié)果圖。圖8(b)為識別錯誤的結(jié)果圖。圖8(b)中左側(cè)圖像的表情標(biāo)簽是厭惡,但是從右側(cè)的柱形圖中可以看出,該表情被識別成傷心的概率最大。
表2 不同方法在JAFFE數(shù)據(jù)集和CK+數(shù)據(jù)集上對比(%)
(a) 識別正確的結(jié)果圖
針對由于樣本不足導(dǎo)致網(wǎng)絡(luò)模型難以訓(xùn)練,從而影響識別結(jié)果的情況,本文提出的基于變分自編碼器改進(jìn)的人臉表情識別方法,通過無監(jiān)督學(xué)習(xí)的方式使變分自編碼網(wǎng)絡(luò)有良好的特征提取能力,從而為表網(wǎng)絡(luò)提供良好的初始參數(shù),在一定程度上解決了因樣本不足而導(dǎo)致的過擬合問題。通過實驗驗證了本文方法在表情識別方面是有效的。下一步將以野外表情數(shù)據(jù)集作為研究的對象,使網(wǎng)絡(luò)在野外表情識別方面具有較好的識別能力。