胡曉瑞,林璟怡,李 東,章 云
廣東工業大學 自動化學院,廣州 510000
人類面部信息的提取和分析在計算機視覺領域有著非常廣泛的應用,例如常見的人臉表情識別[1]、人臉檢測[2]、身份識別[3]、帶屬性條件的人臉圖片生成[4]等任務。隨著生成對抗網絡[5]的提出,人臉圖像生成的相關研究日益增多,例如Bulat等人[6]提出利用圖像退化學習過程的思想實現人臉超分辨任務,對于輸入單張低分辨率人臉圖片生成對應的高分辨率圖片;Song等人[7]利用人臉幾何信息來輔助人臉補全的模型對人臉圖像缺失部位進行以假亂真的圖像補全與修復;He等人[8]提出一種面部屬性編輯生成網絡,通過控制表示不同的,如發色、性別、年齡等面部屬性的一維向量,從而在不改變原圖人物其他身份紋理信息的情況下生成對應的符合條件屬性的人臉圖像;除此之外,人臉面部表情的感知是除語言交流外重要的核心信息,Choi等人[9]提出的StarGAN網絡基于RaFD數據集[10],生成了由傷心、憤怒、厭惡、開心等8個二值標簽控制的人臉表情圖像。
但是,目前人臉圖像的表情類別標簽往往都采用較為單一的常見8種表情,這對于表情豐富的人臉來說是遠遠不夠的,尤其是自發產生的微表情更是需要一個更好的表情編碼方式。由于面部表情是面部各個肌肉聯合和協調行動的結果,瑞典解剖學家卡爾赫爾曼基于心理學和生物學開發出一套面部動作編碼系統(Facial Action Coding System,FACS)[11],這是一種以人臉面部各個肌肉群作為動作單元(Action Units,AUs)對其不同運動類別進行編碼分類的系統,通過將面部不同肌肉群標記為30個AU模塊,且每個模塊激活程度分為5個幅度等級,從而利用7 000 多種不同的AU 組合表示不同的人臉面部表情,例如人類憤怒的表情主要有如下幾個動作單元激活產生:眉毛下垂(AU4)、上眼瞼提升(AU5)、眼瞼收緊(AU7)、下顎下垂(AU26)[12]。根據每個動作單元對應肌肉收縮程度大小,對應相應標注編碼幅值的大小,從而該面部單元組合的表情會相對傳遞一定程度的憤怒表情。
本文基于面部動作表情編碼系統提出了一種創新的人臉表情合成方法,通過控制表示不同面部動作單元激活程度的一維目標條件向量,對輸入的單張人臉圖像,在保持圖中人物信息和其他部分不變的情況下,只改變目標條件向量對應部位紋理,生成與目標表情編碼一致的人臉圖像。本文還提出一種新的網絡結構,利用編碼解碼模塊實現生成對抗網絡,同時解碼模塊通過融合注意力機制[13],可以讓網絡在訓練過程中更好地關注每個動作單元對應的面部位置,此外本文設計了一種可以更好指導人臉表情生成的目標函數,在BP4D人臉數據集上獲得了較為真實的人臉表情生成圖像。
主要介紹基于面部動作編碼系統的人臉表情生成對抗網絡的網絡結構和原理。如圖1所示,網絡主要分為編碼器Genc和解碼器Gdec組成的生成模塊,以及圖2判別器D和分類器C組成的判別模塊。假設輸入的RGB人臉圖像為Ia∈?H×W×3,其對應的表示N個AU是否激活的二值一維AU屬性標簽向量為a=(a1,a2,…,aN)T,將原圖的標簽向量a編輯為目標AU 屬性標簽向量b=(b1,b2,…,bN)T,經過生成模塊處理后可輸出一張符合屬性b的編輯圖像Ib∈?H×W×3。下面將詳細介紹網絡架構和訓練過程。
在生成模塊中,給定帶有AU屬性標簽向量a的人臉表情圖像Ia,將Ia輸入到編碼器Genc中,得到隱含特征向量z,編碼器結構采用文獻[8]中的網絡結構,用公式可表示為:

圖1 生成模塊網絡架構

圖2 判別模塊網絡架構

其次,利用解碼器Gdec將隱含特征向量z和目標AU標簽向量解碼為輸出圖像Ibˉ,所得Ibˉ即為符合目標AU 標簽屬性向量b的人臉表情圖像,且該生成圖像保留與原標簽相比未發生變化的AU 標簽對應的原圖像人臉區域和身份信息不變??杀硎緸椋?/p>

從上述生成網絡結構來看,編碼器的目的在于用隱含特征向量z學習到圖片中充足的信息細節,從而使得當z和AU屬性標簽向量送入解碼器時,z用來提供原圖充足的信息,而AU屬性標簽向量用于表情圖像生成條件的控制。換言之,如果編碼器輸入的是z和原圖像AU屬性標簽向量,那么最終生成的圖像Iaˉ應該盡可能近似于原圖,即表示為:

除此之外,為了更好地使得生成圖像盡可能地保留原圖的人物身份信息,本文的解碼器融合了文獻[13]中的注意力機制,使生成網絡只針對有改變的AU標簽對應的人臉圖像區域進行編輯生成,可以學習到如何重點關注每個AU 編碼對應的人臉區域,僅修改該AU 對應區域,保留原圖其他區域,如圖1所示,解碼器Gdec分為解碼出注意力特征圖A的,和解碼出紋理特征圖P的除最后一層外權值共享。最終,將注意力特征圖A和紋理特征圖P按如下公式生成輸出圖像Ibˉ:

其中,符號⊕表示注意力特征圖A和紋理特征圖P結合為最終輸出圖像,符號·表示特征圖矩陣元素對應點乘,符號+、-表示特征圖矩陣元素對應加減。最終輸出的生成圖像Ibˉ既符合目標AU屬性標簽向量b,同時保留未編輯AU標簽對應區域信息不改變,從而達到控制人物特定表情圖像生成的目的。
本文的判別模塊主要包括判別器和分類器,判別器和分類器除最后一層外其他層權值共享,不同之處為分類器最后一層為N維全連接層,而判別器最后一層為單個神經元作為判斷生成圖像是否真實的概率值輸出。其目的在于,與傳統的生成對抗網絡相比,需要所生成的最終人臉表情圖像符合對應的AU 標簽屬性向量,換言之,將生成圖像或原圖像送入分類器中得到的標簽應盡可能近似于b:

2.3.1 對抗損失
本文生成對抗損失采用WGAN[14]中的損失函數,相比于原始GAN所用的KL散度、JS散度容易導致梯度消失或者模式崩塌問題,WGAN使用了平滑的Wasserstein距離,可有利于生成模型的訓練和生成結果的多樣性:

其中,pimg表示真實圖像分布plabel表示真實AU標簽分布。公式(6)和公式(7)中D( )表示對輸入的人臉表情圖像Ia或對輸出圖像Ibˉ的判別概率。生成網絡的目標是盡可能生成真實性高的圖片去欺騙判別網絡。而判別網絡的目標是盡可能將生成的圖片和真實的圖片分別開來,即構成了一個動態博弈過程。
2.3.2 重構損失
重構損失主要用于保證隱含特征向量z保留原圖像中充足的信息細節,根據公式(3)可知,當編碼器的輸入為原圖像AU屬性標簽向量,可使用l1損失表示最終生成的圖像和原圖的距離,當該距離越小,則說明兩幅圖越相似,利用l1損失構造重構損失用公式可記為:
2.3.3 注意力損失
注意力特征圖在訓練過程中往往會出現全部趨向于最大值的問題,從而失去根據關注程度調節權重大小的作用,為了解決這一問題并且使得注意力特征圖A中的元素在訓練過程中更平滑更關注小區域信息[15-16],利用對A計算矩陣向右和向下分別平移一個像素的差方值和第二范數,構建注意力損失,使得注意力特征圖更平滑:

其中,Ai,j表示矩陣A的第i行第j列元素。λatten是用于平衡損失的超參數。
2.3.4 分類損失
如前所闡述,利用分類器C對生成圖像或原圖進行分類,可指導生成模塊所生成圖像更符合對應的AU屬性標簽向量。分類損失可用二值交叉熵損失表示分類器的分類結果與標簽的差距,交叉熵越小,則分類效果越好,越能指導生成網絡生成符合目標條件向量的表情圖像:

將對抗損失、重構損失、注意力損失和分類損失相結合,可指導網絡實現給定任意目標AU 屬性標簽,可將原圖轉化生成對應符合標簽的表情圖像的任務。對于編碼器和生成器,目標函數可表示為:

對于分類器和判別器,目標函數可表示為:

其中,λ1、λ2、λ3、λ4是用于平衡損失的超參數。通過公式(12)和公式(13)的最小化過程,即為對編碼器、生成器、分類器和判別器的優化訓練過程,最后訓練最優得到的生成模塊即能根據輸入的目標條件向量生成符合條件的人臉表情圖像。
所提出的網絡架構是在文獻[8]的基礎上進行改進的,新添加了注意力機制并設計了一個符合人臉表情動作編碼特征的損失函數。同時也將原網絡的屬性編輯任務應用到人臉表情生成任務中,并與本文結果相對比。其中,網路輸入圖像大小為224×224,批量大小為32,學習率為 0.000 2,λ1=50,λ2=0.01,λ3=20,λ4=1,λatten=0.000 1,采用Adam優化[17](β1=0.5,β2=0.999)。
算法采用的數據為常用BP4D 人臉數據集[18],共計23名女性和18名男性青年參與了視頻數據采集。每個被測試者參與8 次實驗,共計328 個視頻。每個視頻中有效的具有AU 標注的視頻幀數量從幾百到數千不等。大約14 萬張帶有AUs標簽的圖像可供使用。但是,實驗過程中發現原數據集標注的AUs標簽主觀性較大,且無論對應肌肉激活位移幅度多大都用0/1 兩種激活或被激活狀態標注,無法區分AU對應激活肌肉的位移幅度大小,且每個AU 分布出現頻率不一,差距較大,不利于網絡訓練。所以本文采用MTCNN[2]先對BP4D數據集圖像進行人臉區域裁剪,再利用Openface[19]對圖像重新進行AUs標注,標注結果用0~5表示每個AU的激活幅度,最后根據表1中每個AU的幅度閾值TAUi進行數據均衡,大于TAUi的記為激活狀態1,小于TAUi的標注記為非激活狀態0,從而每幅圖對應得到一個新的人臉表情動作編碼二值向量,表1 第二行展示了每個AU進行數據均衡后分別的正樣本數量NAUi,最終從中隨機采樣20 000張作為訓練集。
圖3 展示的是通過對數據均衡后的原屬性標簽向量a中某單個標簽置1,其他標簽不變得到b,并最終得到各個不同AU 對應表情圖像生成Ibˉ的結果。第一列為原圖像Ia,第二列為重構圖像Iaˉ,第三至第十二列為各個AU標簽對應生成圖像。

表1 AU的閾值與正樣本個數

圖3 單個AU屬性標簽控制下的表情圖像生成結果
其中,第a1和a2行展示的是根據公式(4)和文獻[13]將注意力特征圖A和紋理特征圖P結合得到表情生成圖像。從圖中可以看出,網絡已經學到了對于注意力特征圖A中顏色較暗的區域為AU關注的區域,而較亮部分為保留原圖像紋理。例如,AU1、AU2、AU4、AU7、AU45主要關注眉毛和眼部區域變化;AU9關注鼻翼和臉頰部位變化;AU12到AU26主要關注嘴巴部位變化。通過注意力特征圖,網絡可以對原圖像對應的每個區域逐像素學習到是否需要按照一定權重保留或者改變,只有與AU 標簽相關的區域才會重點進行圖像生成,其他無關區域基本維持原圖紋理不變,從而使得最終的生成圖像更好地滿足目標屬性標簽向量。
網絡訓練時,AU 屬性標簽向量為0 或1 的二值標簽。由于網絡結構中,通過目標標簽向量b控制注意力特征圖A和紋理特征圖P結合生成最終表情生成圖像Ibˉ,且不同強度的AU屬性標簽值(標簽值范圍為0至1)可以控制最終的生成結果,連續性的AU屬性標簽值控制生成不同AU 編輯程度的圖像。如圖4 所示,列舉了不同AU 標簽值:0,0.25,0.50,0.75,1 對應的生成結果。可以看出,同一行AU標簽值較小的生成結果圖像對應改變人臉部位的表情幅度較小,AU 標簽值較大的生成圖像表情幅度較大。結果表明,本網絡可達到一個使用連續AU 屬性標簽值大小控制生成圖像表情幅度強弱的良好效果。
所提出的網絡架構是在AttGAN[8]網絡框架的基礎上進行優化改進。若將AttGAN網絡架構不變,把原屬性編輯任務直接修改至人臉表情生成任務中,訓練后與本文實驗結果相對比,對于基于面部動作編碼系統的人臉表情生成任務來說,例如圖5所示,第一行表示AttGAN生成結果,第二行表示本文生成結果,可發現雖然對于部分表示嘴巴臉頰等表情變化幅度較大區域的AU 標簽來說,如 AU9、AU12、AU15、AU26對應兩種方法得到的表情生成結果十分相近,本文所提方法具有更好的局部細節編輯能力,但是AttGAN 在局部細節上較為欠缺,尤其是例如眼部、眉毛這種局部細微模塊很難學習到如何編輯改變。

圖4 連續性AU標簽值控制下的表情圖像生成結果
具體為:(1)圖5中如 AU1、AU2主要描述眉毛內測上移和眉毛外側上揚眼部微瞪的肌肉移動行為,AttGAN的結果基本沒有學習到這一變化,與原圖相比沒有發生明顯修改;但是本文所提方法根據目標AU成功生成良好結果,第三列中眉毛內測上移,且額頭會產生皺紋,第四列中眼眶變大顯示微瞪,符合目標條件向量。(2)如AU4和AU7分別為皺眉和下眼瞼上移瞇眼,AttGAN的兩幅圖像生成結果難以分辨出兩者差別表現不佳,但本文方法由于注意力機制可以更好地關注局部細節從而生成結果的針對性細節修改較為明顯,實現了眉心的明顯褶皺和眼睛的瞇起縮小。(3)將第二列重構圖中綠色和紅色方框區域放大至圖6 所示,可看出,本文所提方法重構結果牙齒邊緣清晰,胡須細節不發生變化,無明顯模糊,睫毛和黑色點痣保持與原圖基本一致,而AttGAN結果相對模糊,牙齒處有局部修改,黑色點痣與毛發不清晰,與原圖相比,AttGAN 的重構圖有明顯更大的差距。所以本文所提方法可以很好地保持無變動AU 標簽對應的不需要改變位置區域的原圖信息,使得真實性更高。

圖5 AttGAN與所提方法結果對比

圖7 AttGAN與所提方法在不同膚色圖像下的生成結果

圖6 AttGAN與所提方法局部細節圖
根據對比結果還發現,如圖7 所示,本文方法在膚色較深的人臉圖像生成結果上也保持了更好的表現,如對于AU1標簽,即使膚色較深也成功實現了眉毛內側上移,AU4和AU7分別列舉了膚色不同的人臉情況下,本文所提的方法結果都優于AttGAN,實現了皺眉和下眼瞼收縮的表情生成。除此之外,有時AttGAN無法對一些基于局部的面部動作單元進行正確修改,例如AU25對深膚色的嘴部牙齒生成和AU45對眼部閉合有時會無法達到目標效果。
綜上所述,本文所提出的網絡結構對于基于面部動作編碼系統的人臉表情生成任務來說比AttGAN 在細節上更具有細膩性和真實性,在細節上的關注與更好的局部細節編輯能力比起以往方法更適用于微表情任務,解決了現存方法中大都關注圖像整體的表情生成類別,而忽視局部細節微表情的生成效果這一問題,具有一定研究價值。
面部動作編碼系統是一種以人類面部各個肌肉群作為動作單元對其不同運動類別進行編碼分類從而描述人臉表情的系統,本文提出一種融合了注意力機制的編碼解碼生成對抗網絡,以表示面部各個動作單元激活狀態的一維向量作為屬性控制條件,對輸入的人臉圖像進行表情控制,用一種新的目標函數最終指導生成符合目標屬性的人臉表情圖像。使用BP4D 數據集進行實驗,與AttGAN 相比,所提出的網絡可以更好地關注每個動作單元對應的面部位置、身份信息和局部圖像細節保留更完整,真實性更高,證明了本文方法的有效性和先進性。本文未來研究工作主要是提高生成圖像的分辨率實現高清人臉表情圖像生成和困難人臉圖像樣本的表情生成,以及利用表情生成網絡提高人臉微表情識別準確率。