王海涌,梁紅珠
蘭州交通大學(xué) 電子與信息工程學(xué)院,蘭州730070
人類感情多數(shù)通過面部的表情進行傳遞[1],利用圖像處理技術(shù)對人臉面部表情進行表情識別意義重大。人臉表情識別在人機交互、公共安全監(jiān)控、日常監(jiān)護、心理分析、娛樂產(chǎn)業(yè)等都有更加廣泛的應(yīng)用。目前大多數(shù)研究者對人臉表情識別基本上采用背景簡單、無遮擋的正面人臉圖像進行識別工作。但在實際生活中,由于各種原因造成面部存在遮擋物的情況,比如戴眼鏡、圍巾或者頭發(fā)等其他遮擋都是很常見的,這些遮擋會影響表情特征的提取,從而造成表情識別率有所降低。
目前針對局部遮擋人臉表情識別,通常采用傳統(tǒng)方法(即非深度學(xué)習(xí)的方法),其思路總體上分為舍棄法和填補法兩種。舍棄法是通過一些算法將遮擋部分的信息簡化或者丟棄,然后根據(jù)未遮擋部位進行表情識別。有研究者提出基于稀疏表[2]的方法來實現(xiàn)遮擋人臉表情識別。但是由于人面部的一些重要部件包含有大量的表情信息,比如嘴巴、眼睛、鼻子等,所以這些部位被遮擋的情況下,直接舍棄明顯不合理。填補法則是先對遮擋部分進行修復(fù),然后再對其進行識別。薛雨麗等人[3]采用魯棒主成分分析法和顯著性檢測法重構(gòu)被遮擋像素,然后由權(quán)值更新的AdaBoost 分類器對去除遮擋的人臉圖像進行表情識別。但是該方法的修復(fù)結(jié)果并不理想,所以識別率也不理想。有研究者利用卷積神經(jīng)網(wǎng)絡(luò)[4-5]進行有遮擋的人臉表情識別,提高識別算法的魯棒性,但是對于大面積遮擋,準確率則會迅速下降。
將GAN 和卷積神經(jīng)網(wǎng)絡(luò)(CNN)結(jié)合起來得到深度卷積生成對抗網(wǎng)絡(luò)[6](DCGAN),其特征表達能力強,使用得到的特征表示進行圖像分類,效果較好。Yeh R等人[7]直接使用該模型在人臉數(shù)據(jù)集上進行了圖像填補實驗,但是該方法得到的圖像整體連貫性較差,適用性受限。Denton 等人提出了將GAN 的鑒別器由原來的二分類改為一個多分類器[8-9],該模型可以實現(xiàn)半監(jiān)督分類,但是由于前期修復(fù)模型是基于簡單的GAN,所以修復(fù)效果不是很好,容易造成識別階段識別率不高,甚至誤判。
針對上述方法的局限性,本文提出一種基于雙鑒別網(wǎng)絡(luò)的深度生成對抗網(wǎng)絡(luò)模型,對遮擋人臉進行表情識別。模型前期通過生成器和兩個鑒別器進行對抗學(xué)習(xí),對遮擋圖像進行修復(fù),由于加入了局部鑒別器和全局鑒別器兩個鑒別器,所以該模型在修復(fù)圖像時能夠在細節(jié)和全局上更好地恢復(fù)遮擋圖像,使得修復(fù)的人臉圖像更加真實逼真。對人臉進行修復(fù)之后再對其進行表情識別,識別部分在全局鑒別器的基礎(chǔ)上,使用其部分卷積和池化層,再添加多分類層來構(gòu)成表情分類器。生成器的輸出樣本也發(fā)揮了擴充樣本數(shù)量的作用,從而提高分類模型的泛化能力。
生成對抗網(wǎng)絡(luò)(Generative Adversarial Networks,GAN)是當前人工智能領(lǐng)域的一大研究熱點,GAN中包含兩個部分,生成器(Generator)和鑒別器(Discriminator)。生成器主要用來學(xué)習(xí)真實圖像分布使得自身生成的圖像更加真實,以騙過判別器[10]。而判別器則需要對接收的圖片進行真假判別。經(jīng)典GAN 模型的結(jié)構(gòu)圖如圖1所示。
GAN 模型主要有兩部分組成:第一部分是生成圖像的生成器G,它接收一個隨機噪聲Z ,通過這個隨機噪聲生成圖片;第二部分是鑒別圖像真?zhèn)蔚蔫b別器D,判別一張圖片是不是“真實的”。在整個過程中,生成器盡可能地生成更加真實的圖像,而判別器則努力地去識別出圖像的真假。隨著時間的推移,生成器和判別器在不斷地進行對抗博弈,直到兩個網(wǎng)絡(luò)達到最終的動態(tài)均衡狀態(tài),即鑒別器無法識別生成器生成的圖像的真假。
GAN 的目標函數(shù)很好地體現(xiàn)了對抗的思想,目標函數(shù)如下:
整個式子由兩項構(gòu)成。 x 表示真實圖片,z 表示輸入G網(wǎng)絡(luò)的噪聲,而G( z )表示G 網(wǎng)絡(luò)生成的圖片。 D( x)表示D 網(wǎng)絡(luò)判斷真實圖片是否真實的概率,而D(G ( z))是D 網(wǎng)絡(luò)判斷G 生成的圖片是否真實的概率。然后把生成圖像G( )
z 和真實圖像x 輸入鑒別器D 中,訓(xùn)練鑒別器D 的鑒別能力,使得鑒別網(wǎng)絡(luò)D 輸出的概率D(G ( z ))趨于0,而D( x )趨于1。將這個誤差反饋給生成器,生成器根據(jù)這個誤差來調(diào)整參數(shù),從而調(diào)整自己生成更加接近真實圖像的圖像,去欺騙鑒別器,使得D(G ( z ))接近于1。隨著不斷的訓(xùn)練,生成器與鑒別器在對抗迭代中達到了一種平衡,即D( G ( z ))趨于0.5。這時候,在固定生成器的情況下,目標函數(shù)式在式(2)得到鑒別器的最優(yōu)解:
在這種情況下,鑒別器不能判斷出生成圖像是真實的還是訓(xùn)練生成的,因為生成對抗網(wǎng)絡(luò)通過大量的特征學(xué)習(xí)和訓(xùn)練,很好地學(xué)習(xí)到同類圖像數(shù)據(jù)集中的圖像特征,因此生成了更加逼真的圖像。
本文基于生成對抗網(wǎng)絡(luò)提出一種遮擋表情識別模型,模型分為兩個模塊,即遮擋人臉圖像修復(fù)部分和表情識別部分,如圖2 所示。該模型與傳統(tǒng)GAN 不同之處在于,修復(fù)網(wǎng)絡(luò)的輸入是遮擋圖像,而不是一組隨機噪聲。同時在該模型中特別采用了雙鑒別器,即局部鑒別器和全局鑒別器,引入局部鑒別器可以更好地修復(fù)遮擋部分的細節(jié),全局鑒別器則用來負責鑒別破損區(qū)域修復(fù)后的整幅圖像是否真實且具有連貫性。通過這兩個鑒別器和生成器對抗訓(xùn)練,可以產(chǎn)生比較好的修復(fù)效果。而識別部分是在全局鑒別器的基礎(chǔ)上使用了其部分卷積層和池化層,將其作為特征提取器,額外增加兩層全連接層和Softmax層,構(gòu)成了一個表情分類器。
生成器G 被設(shè)計為一個自動編碼器,以生成新的內(nèi)容給輸入的缺失圖像,首先通過編碼器將模型輸入映射到一個隱含層,其中包含了原遮擋圖像中已知區(qū)域和缺失區(qū)域兩者之間的隱藏關(guān)系,解碼器利用這些隱含信息生成填補內(nèi)容,不同于原始GAN,本文生成器G 的輸入不再是隨機噪聲,而是被遮擋的人臉圖像。生成器的網(wǎng)絡(luò)結(jié)構(gòu)將基于VGG19網(wǎng)絡(luò)“conv1”到“pool3”架構(gòu)[11],在此基礎(chǔ)上再疊加兩個卷積層和一個池化層,再添加一個全連接層將其作為編碼器。編碼器的輸入維度是128×128,每個卷積層都采用3×3的卷積核,且在每個卷積層后都緊接一個Leaky ReLU激活層。在池化層中進行最大池化,窗口大小為2×2。解碼器則是與解碼器對稱的結(jié)構(gòu),通過卷積層Conv()和上采樣層Upsampling()逐步恢復(fù)人臉圖像,在編碼器和解碼器之間采用了兩層神經(jīng)元個數(shù)1 024的全連接層作為中間層。
僅用生成器生成的圖像,只能捕捉到缺失人臉組件的粗糙形狀或生成錯誤的像素。為了得到更加清楚真實的圖像,本文將采用兩個鑒別器D,即局部鑒別器和全局鑒別器。如果只采用一個局部鑒別器,它有一定的局限性,首先不能規(guī)范人臉的全局結(jié)構(gòu),不能保證遮擋區(qū)域和非遮擋區(qū)域內(nèi)外的一致性和全局畫面的連貫性。其次當新生成的像素受到周圍環(huán)境的制約時,由于解碼器的“逆池化”結(jié)構(gòu)。在反向傳播的過程中,局部鑒別器很難對遮擋區(qū)域以外的區(qū)域產(chǎn)生直接的影響,沿邊界區(qū)域的像素值的不一致性十分明顯。因此,采用了兩個判別器來對生成圖片的細節(jié)進行完善,使得生成的圖片更加真實。
局部鑒別網(wǎng)絡(luò)的輸入維度是64×64,整個網(wǎng)絡(luò)結(jié)構(gòu)為卷積核大小為3×3和4×4交叉使用的全卷積網(wǎng)絡(luò),共有11 個卷積層,且前10 個卷積層每一層后面都緊接著一個Leaky ReLU激活層,最后一個卷積層后面則使用tanh激活層,這樣可以更好地訓(xùn)練網(wǎng)絡(luò)。多個卷積層與非線性的激活層交替的結(jié)構(gòu)使得其特征提取能力較強,模型深度、性能等方面也較適合,因此本文基于此構(gòu)建了局部鑒別器。
全局鑒別網(wǎng)絡(luò)的輸入維度是128×128,該網(wǎng)絡(luò)則借鑒vgg16 網(wǎng)絡(luò)結(jié)構(gòu),共有16 層,13 層卷積和3 層全連接層。且前每個層后面都緊接著一個Leaky ReLU 激活層,最后一個全連接層后面則使用tanh激活層。為了讓鑒別器和分類器的特征提取部分整合起來,所以采取了結(jié)構(gòu)較深的網(wǎng)絡(luò)結(jié)構(gòu)。
圖2 基于雙鑒別網(wǎng)絡(luò)的遮擋表情識別模型
為了完成表情識別的訓(xùn)練,需要大量的帶表情標簽的訓(xùn)練數(shù)據(jù),但是已有的表情數(shù)據(jù)集的數(shù)據(jù)有限,特別是本文引入深度神經(jīng)網(wǎng)絡(luò)后則需要更大量的數(shù)據(jù)去支持,因為數(shù)據(jù)過少會造成模型在訓(xùn)練過程中容易達到過擬合,不能展現(xiàn)模型本身的能力。CK+數(shù)據(jù)集[12](The Extended Cohn-Kanade AU-Coded Database)僅含有327個帶標簽的峰值表情圖像,即使將部分非峰值表情圖像也加入訓(xùn)練仍然不夠。但是在人臉填補部分,模型的訓(xùn)練數(shù)據(jù)并不需要標簽,因此可以利用現(xiàn)有的大量的人臉圖像數(shù)據(jù)進行訓(xùn)練,鑒別器在訓(xùn)練過程不斷加強人臉特征提取能力,利用鑒別器得到的特征表示可進行表情分類。因此分類器共享了鑒別器的部分卷積層和池化層來提取特征,總體上由特征提取層、兩層全連接層和Softmax分類層構(gòu)成,本質(zhì)上是一個卷積神經(jīng)網(wǎng)絡(luò)。
首先在生成器中引入了重構(gòu)損失Lr,即生成器的輸出圖像和原始圖像之間的Lr距離。只有Lr時,生成的內(nèi)容往往是模糊和平滑的。其原因是Lr損失過度懲罰了異常值,并且該網(wǎng)絡(luò)可以避免過度懲罰。通過使用兩個鑒別器,本文采用了對抗損失函數(shù),這反映了生成器如何最大限度地欺騙了鑒別器,以及鑒別器如何區(qū)分真?zhèn)?。它被定義為:
其中pdata( x )和pz( z )分別表示噪聲變量z 和真實數(shù)據(jù)的分布。這兩個判別網(wǎng)絡(luò){a1,a2}對損失函數(shù)的定義相同。唯一的不同是,局部鑒別器僅為缺失區(qū)域提供損失梯度,而全局鑒別器則是在整個圖像中反向傳播損失梯度。
在分類器中,采用交叉熵損失Lc來訓(xùn)練表情多分類,交叉熵描述了預(yù)測的概率分布q( )x 和真實概率分布p( )x 之間的距離。Lc定義為:
綜上所述,整個模型的損失函數(shù)定義如下:
其中λ1,λ2,λ3為平衡不同損失影響的權(quán)重因子。
為了驗證本文修復(fù)方法的效果,本文對圖像修復(fù)進行了多輪的實例驗證。實驗的平臺是Windows 10,Python3.6 和TensorFlow 結(jié)合的編程環(huán)境,Intel 4.20 GHz CPU時鐘頻率,內(nèi)存16.0 GB。
本模型中用到兩個數(shù)據(jù)集,分別是CeleA人臉數(shù)據(jù)集[13]和CK+人臉數(shù)據(jù)集。
(1)在修復(fù)過中,CelebA 人臉數(shù)據(jù)集作為本文基礎(chǔ)訓(xùn)練數(shù)據(jù)集,其來源于香港中文大學(xué),包含10 177 個名人的202 599 張人臉圖像。但是為了得到更好的實驗效果,需要裁剪出人臉部分的圖像,盡量選取正面人臉圖像,用于修復(fù)圖像的訓(xùn)練。因此得到162 700 張圖像,隨機選擇其中的7/10 作為訓(xùn)練集,剩余的3/10 數(shù)據(jù)用于測試模型生成器的填補能力以及鑒別器的真假判別能力。
(2)在表情識別的過程中選擇使用CK+人臉數(shù)據(jù)集,它包括123 個人共595 例的表情序列,該樣本共3 559 張表情樣本,其中876 張中性表情,260 張悲傷表情,627 張快樂表情,482 張憤怒表情,417 張厭惡表情,640張驚訝表情,257張恐懼表情。
為了進一步擴大樣本量,并解決各類表情樣本數(shù)量不均衡的問題,對數(shù)據(jù)集中的數(shù)據(jù)進行鏡像翻轉(zhuǎn)、旋轉(zhuǎn)等操作,擴展后共有10 000 張表情圖像,各類表情圖像的數(shù)量在1 300 張左右。隨機選擇其中的1/5 作為測試集,其余4/5為訓(xùn)練集,同時滿足測試集和訓(xùn)練集的人物信息不交叉。
(3)雖然盡量選取了正面圖像,但是為了樣本數(shù)量不減少,還是有部分圖像的人臉有所偏轉(zhuǎn),所以為了避免其不同姿勢對實驗結(jié)果的影響,使用基于Open Face[14]的人臉對齊算法,對齊人臉圖像,校準后統(tǒng)一將圖像的大小調(diào)整為128×128。
(4)現(xiàn)實中的遮擋由各種各樣的原因造成,所以目前沒有一個通用的、成熟的、標準的遮擋人臉表情數(shù)據(jù)集。因此在本模型訓(xùn)練過程中,對于圖像填補部分,將對訓(xùn)練數(shù)據(jù)采用模擬系統(tǒng)進行遮擋,遮擋部分的圖像大小為64×64,遮擋位置隨機。
在測試過程中將選取不同遮擋面積的圖像,為了測試不同遮擋面積下的表情識別率和修復(fù)效果。隨機遮擋10%、20%、30%、40%、50%用于模擬位置不固定的臨時遮擋,遮擋后的圖像如圖3 所示,本文認為遮擋面積超過50%時,表情識別意義不大,故不做分析。
本文的訓(xùn)練將分為兩個部分,分別是人臉修復(fù)和表情識別的訓(xùn)練。
模型首先在CelebA 數(shù)據(jù)集上訓(xùn)練人臉修復(fù)網(wǎng)絡(luò),人臉修復(fù)網(wǎng)絡(luò)的訓(xùn)練的過程分為三個階段。第一階段:利用重構(gòu)損失訓(xùn)練生成網(wǎng)絡(luò),來獲模糊的內(nèi)容。第二階段:加入局部鑒別器損失來微調(diào)生成模型。第三階段:用全局鑒別器損失來調(diào)整生成模型參數(shù)。這樣可以避免訓(xùn)練開始階段判別器的作用過強。當GAN模型接近納什均衡,二分類準確率大約0.5時,鑒別器幾乎不能判斷輸入樣本的真假,完成修復(fù)階段,此時不再使用CelebA數(shù)據(jù)集。
此時開始識別階段,在CK+數(shù)據(jù)集上進行微調(diào),同時加入了表情分類器的訓(xùn)練,起初通過設(shè)置樣本權(quán)重,讓模型使用填補圖像和無遮擋圖像各一半訓(xùn)練二分類器,而僅使用無遮擋圖像訓(xùn)練多分類器,經(jīng)過100 次迭代后,將填補圖像也加入到多分類器的訓(xùn)練。
圖3 圖像預(yù)處理和遮擋模擬
模型使用Adam 優(yōu)化器,初始學(xué)習(xí)率為0.000 1,剩余的Adam 超參數(shù)設(shè)置為默認值,100 次迭代后學(xué)習(xí)率下降一個量級。
4.3.1 本文模型修復(fù)結(jié)果分析
本文模型的填補效果如圖4 所示。遮擋面積是隨機遮擋,其中第一行是遮擋前的原始圖像,第二行是遮擋后的人臉圖像,第三行是人臉填補修復(fù)后的結(jié)果。
圖4 本文模型修復(fù)結(jié)果
由圖4 可以看出,經(jīng)過人臉填補修復(fù),整個人臉圖像看上去真實連貫,未遮擋區(qū)域可能發(fā)生細微變化,但一般不會影響人臉圖像的表情類別。由于PCA+SVM方法和SRC 以及CNN 方法直接對遮擋圖像進行識別,因此將只對比DCGAN+CNN方法和本文方法的修復(fù)效果,如圖5所示。
圖5 本文模型與DCGAN+CNN方法修復(fù)結(jié)果對比圖
圖5 中對比了不同遮擋面積下兩種方法的修復(fù)結(jié)果,本文方法的修復(fù)效果更加真實流暢,而DCGAN+CNN 方法的修復(fù)效果使得人臉看起來不合常理,很奇怪,不夠真實,這樣就使得識別效果不佳,識別率下降。通過這個對比也可以從側(cè)面證明本文方法的有效性和優(yōu)勢。
4.3.2 填補前后人臉圖像識別率對比
將填補后的人臉圖像輸入到表情分類網(wǎng)絡(luò)中,對表情進行判別,實驗結(jié)果如圖6所示。為了對比填補前后人臉表情識別效果,在填補前直接采用分類器對遮擋人臉圖像進行了表情識別??梢钥闯?,人臉填補模型整體上提升了遮擋表情識別的準確率,當遮擋面積小于50%時,模型整體識別率還在80%以上,較直接使用卷積神經(jīng)網(wǎng)絡(luò)提升了接近20%,而在遮擋面積較小的情況下,模型的識別準確率提升幅度較小??紤]模型的處理時間、系統(tǒng)資源等方面因素,在遮擋面積小于面部面積10%時,可不進行填補,直接使用卷積神經(jīng)網(wǎng)絡(luò)進行簡單分類識別。
圖6 遮擋前后識別率的對比實驗
4.3.3 與其他方法對比
本文選取了文獻[15]的PCA+SVM方法、文獻[2]的稀疏表示方法(Sparse Representation based Classification,SRC)以及CNN、DCGAN+CNN 方法來進行對比,DCGAN+CNN方法中DCGAN用于填補遮擋人臉圖像,CNN 同為微調(diào)的VGG 模型,用于人臉表情分類所有方法都在CK+數(shù)據(jù)集上進行了實驗,結(jié)果如表1所示。從表中可以看出,無論人臉圖像是否存在遮擋,本文方法的人臉表情識別率都較高,雖然基于DCGAN+CNN 的方法也對人臉圖像進行了填補,但是修復(fù)之后的圖像連貫性較差,因此影響了表情識別的準確率,尤其是遮擋面積小于40%,該方法的表情識別準確率甚至小于僅用CNN 的準確率。而本文方法生成的圖像真實連貫,對表情識別的影響很小,所以在人臉遮擋面積50%時,仍能達到80%以上的識別準確率。
表1 與其他算法的對比實驗(識別準確率)%
實際應(yīng)用中局部遮擋問題導(dǎo)致表情識別的準確率不夠理想,與在標準人臉表情數(shù)據(jù)集上取得的高識別率差距明顯。本文提出了一種基于雙鑒別網(wǎng)絡(luò)的GAN模型來實現(xiàn)遮擋表情識別,雙鑒別網(wǎng)絡(luò)結(jié)構(gòu)能夠在人臉修復(fù)階段生成真實連貫的高質(zhì)量圖像,這樣在識別階段能夠達到很高的識別率。在修復(fù)階段利用人臉圖像數(shù)據(jù)集Celeb A對其權(quán)重參數(shù)進行預(yù)訓(xùn)練,最后在CK+數(shù)據(jù)集上進行微調(diào)得到了很好的分類結(jié)果。經(jīng)實驗證明,本文方法在修復(fù)的人臉圖像更加真實連貫,修復(fù)后再對其進行表情識別,識別率較其他方法都更高。但是本文方法也存在一定的缺陷,對于大面積遮擋特別是超過50%遮擋的圖像修復(fù)效不是特別理想,修復(fù)結(jié)果的誤差率較大,還有GAN 網(wǎng)絡(luò)的訓(xùn)練比較自由,訓(xùn)練比較難以控制,這主要是由于其對抗函數(shù)造成,所以下一步的工作計劃主要是研究改進本文方法存在的缺陷。