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

圖1 生成模塊網(wǎng)絡(luò)架構(gòu)

圖2 判別模塊網(wǎng)絡(luò)架構(gòu)

其次,利用解碼器Gdec將隱含特征向量z和目標(biāo)AU標(biāo)簽向量解碼為輸出圖像Ibˉ,所得Ibˉ即為符合目標(biāo)AU 標(biāo)簽屬性向量b的人臉表情圖像,且該生成圖像保留與原標(biāo)簽相比未發(fā)生變化的AU 標(biāo)簽對應(yīng)的原圖像人臉區(qū)域和身份信息不變。可表示為:

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

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

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

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

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

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

將對抗損失、重構(gòu)損失、注意力損失和分類損失相結(jié)合,可指導(dǎo)網(wǎng)絡(luò)實現(xiàn)給定任意目標(biāo)AU 屬性標(biāo)簽,可將原圖轉(zhuǎn)化生成對應(yīng)符合標(biāo)簽的表情圖像的任務(wù)。對于編碼器和生成器,目標(biāo)函數(shù)可表示為:

對于分類器和判別器,目標(biāo)函數(shù)可表示為:

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

表1 AU的閾值與正樣本個數(shù)

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

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

圖5 AttGAN與所提方法結(jié)果對比

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

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