楊靜波,趙啟軍,2,呂澤均
(1.四川大學 計算機學院,四川 成都 610065;2.西藏大學 信息科學技術學院,西藏自治區 拉薩 850000)
面部表情是一個人表達情緒最直接的形式之一。由于人機交互的發展,許多領域開始關注人臉表情識別。近幾年深度學習方法顯著提升了人臉表情識別準確率,但在實際應用中仍存在一些問題:首先,深度學習需要大量訓練數據,但現有人臉表情數據庫不足以訓練出在實際應用中能產生可靠結果的深度神經網絡;其次,不同個體的差異,如表達情緒的方式和表情強度的差異,也會給人臉表情識別帶來挑戰[1]。
現有大多數表情識別方法一般基于文獻[2]提出的6種基本表情:高興、厭惡、驚訝、悲傷、憤怒和恐懼,以及中性表情,共7種表情類型進行分類。然而,這樣分類過于離散,忽略了情緒的連續性和復雜性。情緒也會有強弱之分,如高興可以分為:微笑、開心和興奮。現有表情識別往往忽略了這一點,缺少表情強弱分布均衡的大規模數據庫。
針對上述問題,筆者提出了在Arousal-Valence空間中基于生成對抗網絡的表情圖像生成方法AV-GAN,對不均衡訓練數據進行數據增強,可提高表情識別模型的準確率。AV-GAN基于Arousal-Valence情感模型劃分表情空間[3],利用Arousal-Valence值表示表情類別以體現表情的復雜性和連續性。為了生成高質量的人臉表情圖像,AV-GAN引入了身份控制模塊和表情控制模塊,分別控制合成圖像中的身份信息和表情信息。為了解決訓練數據規模較小和數據分布不均衡的問題,基于表情在Arousal-Valence空間中的連續性,該方法使用標記分布[4]表示人臉圖像中的表情,使擁有較少甚至缺少訓練樣本的表情也能包含在訓練數據中。
量化面部情感行為的模型一般分為3類[5]:①分類模型。從情感相關類別中選取代表性的情感分類,如文獻[2]提出的6種基本表情;②維度模型。在連續的情感區域內選擇一個值來代表情緒;③面部動作編碼系統模型。所有的面部動作都由動作單元[6]表示。
Arousal-Valence情感模型是一個維度模型,從Arousal和Valence兩個維度描述情感。在Arousal-Valence空間中,Arousal代表激活度(activation),取值從-1到1代表情感從平靜到激動。Valence代表愉悅度(pleasantness),取值從-1到1代表情感從消極到積極。基于Arousal-Valence情感模型[3],根據Oulu-CASIA數據庫的實際情況,將Arousal-Valence空間按圖1進行劃分。按間距0.1將Arousal-Valence兩個維度各劃分為21類,共21×21個表情粒度,用來表示更連續和更多樣的表情。

圖1 Arousal-Valence空間劃分以及基本表情在其中分布
人臉表情編輯一直受到學者們的關注。隨著深度學習的發展,人臉表情編輯方法慢慢轉變為以基于深度學習的方法為主流。其中生成對抗網絡在近幾年越來越多地被用于人臉表情編輯。AttGAN[7]在生成對抗網絡的基礎上,加入重建部分和屬性分類器對人臉的屬性進行編輯。IA-gen[8]和Comp-GAN[9]更關注于表情編輯,但其生成的表情仍是更關注于傳統的表情類別,忽略了表情的強度。ExprGAN[10]結合條件生成對抗網絡和對抗自編碼器,提出了可控制表情強度的表情編輯模型。
與文中工作比較接近的是文獻[11]提出的連續標簽人臉表情編輯,其在ExprGAN的基礎上,引入Arousal-Valence二維空間表示表情。筆者提出的方法與之相比有如下3個特點:①實現了在小規模數據庫中的應用;文獻[11]的訓練數據來自AffectNet 數據集[5],共10 000 000個訓練樣本,而文中訓練數據來自Oulu-CASIA,共10 000萬個訓練樣本;筆者提出的方法能在小規模訓練數據上有很好的表現;②文獻[11]生成的圖像分辨率為96×96,文中方法能生成更高分辨率的圖像(128×128);③文中方法在傳統7種基本表情的基礎上對Arousal-Valence進行劃分,更有助于提升傳統表情識別的準確率。
生成對抗網絡[12]是現今主流的生成模型之一。生成對抗網絡由生成器和判別器兩個網絡組成,通過兩個網絡在訓練時相互對抗來達到最好的生成效果。生成器網絡訓練產生生成數據來欺騙判別器,讓判別器網絡以為其是真實數據,判別器網絡則在訓練中試圖區分真實數據和生成數據,這是一個博弈的過程。傳統生成對抗網絡的輸入是隨機噪聲,通過生成器生成圖像[13]等。條件生成對抗網絡在傳統生成對抗網絡的基礎上加上了約束條件[14],起到對生成對抗網絡的監督作用,用以控制輸出。數學模型可表示為
(1)
其中,G表示生成器,D表示判別器,x表示真實數據,z和y分別表示隨機噪聲和約束條件。
AV-GAN的輸入為128×128的原始人臉表情圖像xs和表情標簽fexp,輸出為保留xs身份信息擁有fexp表情信息的128×128的人臉表情圖像xt。AV-GAN的網絡結構如圖2所示。

圖2 AV-GAN網絡結構
AV-GAN首先經過編碼模塊E將人臉表情圖像xs∈R128×128×3轉化為包含身份信息的特征fid∈R50;然后將表情標簽(V,A)轉化為包含表情信息的標記分布fexp∈R42;最后,通過生成器模塊G,根據fid的身份信息和fexp的表情信息,生成圖像xt∈R128×128×3,即xt=G(fid,fexp)。同時判別器模塊D,身份控制模塊Id,表情控制模塊Ex分別被用于約束生成圖像的真實性、身份的準確性和表情的準確性。總的損失函數可表示為
(2)
其中,λ1、λ2、λ3、λ4是不同的權重參數。各個損失函數將在后續小節具體介紹。

(3)
(4)
(5)

編碼模塊E和生成器模塊G共同完成圖像生成。輸入人臉表情圖像xs,首先經E轉化為包含身份信息的低維特征fid。這一特征和標記分布fexp共同作為G的輸入,G通過解碼生成具有xs身份和表情fexp的圖像xt。圖像生成過程的損失函數Lpix2pix通過計算xs和xt之間的L1距離(平均絕對誤差)來實現:
fid=E(xs) ,
(6)
(7)
其中,L1()表示計算L1距離。
身份控制模塊Id用來確保xs和xt擁有相同的身份。Id使用預訓練好的人臉識別模型,與文獻[5]和文獻[11]相同,文中采用VGG Face模型[1]。損失函數計算前5個卷積層的特征圖之間的L1距離和:
(8)
其中,φj是VGG face前5層卷積中第j層的特征圖。
使用fexp表示表情,表情控制模塊Ex的目標是確保G學習到fexp代表的表情信息。Ex本質上是一個表情識別模型,使用在Arousal-Valence空間中用表情標記分布標注好的數據對Resnet-50模型[16]進行微調訓練后獲得。損失函數Lexp定義為
(9)
(10)
其中,MSE()表示計算均方誤差。
判別器模塊D是為了確保生成圖像的真實性而設置的,它的輸入是xs/xt,及他們對應的表情fexp。訓練D以區分生成圖像xt和真實圖像xs,而G則被訓練以欺騙D。損失函數被定義為
(11)
其中,Pdata()表示數據分布。
文中的訓練數據和測試數據均來自Oulu-CASIA數據庫[17]。Oulu-CASIA數據庫包括2 880個圖像序列,這些圖像序列來自80名被采集者,包含了6種基本情緒(高興、厭惡、驚訝、悲傷、憤怒和恐懼)。每個圖像序列由兩種成像系統捕捉,近紅外和可見光,并有3種不同光照條件。圖像序列第1幀是中性表情,最后1幀是峰值表情(情感強度最強)。文中使用VIS系統正常室內光照條件下采集的480個圖像序列。在大多數表情編輯和表情識別方法中,往往只使用最后3幀峰值表情圖像和第1幀中性表情圖像。這樣會忽略表情強度的影響。為避免這一問題,文中考慮所有幀圖像,并且人工對它們進行Arousal-Valence坐標標注,最終獲得10 347個數據樣本。數據的分布情況如圖3所示。文中基于這些數據進行四折交叉驗證表情識別實驗。實驗中,首先對所有圖像中的人臉使用MTCNN[18]進行檢測和對齊,并將其中的人臉區域裁剪出來縮放為128×128像素。

圖3 Oulu-CASIA中的表情數據在Arousal-Valence空間的分布圖
如圖2所示,AV-GAN主要由E、G、D、Id和Ex等五部分組成。E基于VGG-16網絡[19]實現,原始VGG-16網絡由5層卷積層、3層全連接層以及Softmax輸出層構成,層與層之間使用最大池化(max pooling),激活函數都采用ReLU函數。文中不使用VGG-16的Softmax,并將最后一個全連接層通道數改為80,再添加一個通道數為50的全連接層,得到身份特征fid。G包含1個全連接層和7個反卷積層,卷積核大小為3×3,步長為1。全連接層和前6個反卷積層使用ReLU激活函數,最后一個反卷積層使用tanh激活函數。D包含4個卷積層和2個全連接層,層與層之間使用批歸一化(batch normalization)。卷積層使用ReLU激活函數,第1個全連接層使用PReLU激活函數,最后輸出使用Sigmoid激活函數。在訓練E、G、D之前,先訓練好Id和Ex。Id使用VGG Face模型[15]。Ex在預訓練好的Resnet-50模型[16]上微調訓練,使用時將原始Resnet-50的Softmax去除,并添加2個全連接層,用于預測表情。得到的Ex模型在Oulu-CASIA數據庫上過擬合,雖然它的泛化能力不夠好,但是在訓練階段可以很好地約束合成圖像的表情信息的準確性,從而達到控制表情生成的目的。
在訓練時,考慮到數據規模小,可采取兩階段訓練的方法。第1階段只有G、D、Ex參與訓練,類似于CGAN,fid使用隨機噪聲代替,噪聲服從-1到1的均勻分布。G的輸入為隨機噪聲和fid。第1階段損失函數為
(12)
其中,ρ1=1,ρ2=0.01。第2階段加入所有部分,損失函數如式(2),其中,λ1=1,λ2=0.1,λ3=1,λ4=1。優化器選用Adam優化器[20],其一階矩估計的指數衰減率設為0.5,二階矩估計的指數衰減率設為0.999,兩個訓練階段的學習率均為 0.000 1,第1階段批大小為50,第2階段批大小為20。
為了驗證網絡結構的有效性,本節評估網絡中不同模塊的有效性。如圖4所示,第1行為輸入圖像(恐懼表情),第2行為使用文中提出的網絡結構AV-GAN生成圖像,第3行為訓練第2階段去除Id進行訓練生成的圖像,第4行為訓練第2階段去除Ex進行訓練生成的圖像,第5行為不使用兩階段訓練法,直接進行訓練生成的圖像(后4行從左至右為中性、高興、驚訝表情)。
由圖4可以看出,去除AV-GAN任何一部分對生成圖像的影響都很大,會出現模糊、不能識別等現象。筆者提出的方法,訓練第1階段首先讓網絡學習如何生成圖像,第3階段加入E、Id和Ex進行微調,使網絡更好地學習到身份信息和表情信息。若缺少對身份或表情的控制,則都會對生成圖像造成很大影響。缺少第1階段的訓練,由于訓練數據不足,會導致第2階段訓練無法正常生成圖像。

圖4 消融實驗視覺效果圖
本節驗證AV-GAN的表情編輯效果。圖5對比了AV-GAN與ExprGAN[10]生成的圖像。第1行為輸入的厭惡表情的圖像,下方3列圖像從左到右分別為ExprGAN生成、AV-GAN生成和真實的不同強度憤怒表情的圖像。每一列從上至下憤怒強度由弱到強。從視覺效果可以看出,筆者提出的方法能更好地學習到表情和身份信息。

圖5 表情編輯視覺效果圖
筆者提出的表情圖像生成方法的一個應用是對表情強度不均衡的表情數據集進行數據增強。如圖3所示,Oulu-CASIA數據庫中表情數據分布并不均衡,大部分數據集中分布在少數表情強度。本節驗證了AV-GAN隨機生成的圖像用于數據增強的可行性。將fid替換為隨機噪聲,與代表不同表情強度的fexp一起作為G的輸入,生成不同身份全部表情強度的圖像,如圖6所示。
圖7展示了圖6中框選區域內的圖像,這些圖像對應圖3框選區域,即訓練數據中幾乎沒有的強度區域。這些結果表明AV-GAN能學習到更豐富的表情。因此通過改變輸入的隨機噪聲就可以實現數據增強的目的。

圖6 全部表情強度圖像生成效果圖

圖7 部分表情強度生成效果圖
使用AV-GAN對Oulu-GASIA數據庫進行擴充,生成具有更豐富表情強度的訓練數據,改善訓練數據集的均衡性。為了驗證如此增強后的訓練數據對提升表情識別準確率的有效性,實驗中使用基本的VGG-19網絡[19]作為7種基本表情的識別網絡。將Oulu-CASIA中的數據根據被采集者身份按四折交叉驗證劃分為訓練和測試數據,其中60人的表情數據作為訓練數據,20人的表情數據作為測試數據。作為對比,基準方法[19]直接使用不增強的Oulu-CASIA數據進行訓練測試。表1和表2分別給出了基準方法[15]和文中方法其中一次驗證所使用的數據分布。此外,實驗中還在文獻[19]上使用了文獻[1]中提到的傳統數據增強方法(隨機鏡像、隨機旋轉、隨機裁剪)對Oulu-CASIA數據進行增強以使得數據分布與筆者提出的方法增強后的數據分布相近。AV-GAN生成的表情圖像對應的7種基本表情類別按照其Arousal-Valence坐標根據圖1中的空間劃分得到。

表1 基準方法與傳統方法數據分布
表3總結了表情識別實驗的結果。由這些結果可以看出,由于原始數據的不均衡性,基準方法下的表情識別準確率在不同表情上有很大變化,而傳統數據增強方法并不能有效解決這一問題。相反,使用文中方法進行數據增強后,這一問題能夠得到有效緩解。但因經文中方法進行數據增強后,如圖6所示,表情強度更加豐富,Arousal-Valence空間中各表情類別交叉過渡部分的數據區分度變小,如恐懼、悲傷、高興表情數據,在數據標注時接近原點的一部分數據和中性表情較為相似,其實也一定程度上增加了表情識別的難度,導致使用文中法進行數據增強后個別表情識別準確率略有下降。但得到的總體表情識別準確率明顯高于對比方法的總體表情識別準確率。
為了解決深度學習表情識別中表情訓練數據不均衡的問題,筆者提出了在Arousal-Valence空間中基于生成對抗網絡的表情圖像生成方法AV-GAN,對表情強度不均衡的訓練數據集進行數據增強。在Oulu-CASIA數據庫上的實驗結果證明,使用AV-GAN對不均衡訓練數據進行數據增強可以有效提高表情識別的準確率。