隨海亮 馬軍山 李麗瑩



摘要:為實(shí)現(xiàn)從單張圖片合成連續(xù)變化的目標(biāo)表情,提出一種基于生成對(duì)抗網(wǎng)絡(luò)(GAN)和面部表情編碼系統(tǒng)FACS(Facial Action Coding System)的表情合成方法。通過(guò)提取面部表情AU(Action Unit)作為生成表情的一種約束,利用生成對(duì)抗算法合成目標(biāo)表情,這種結(jié)合表情編碼的合成更具合理性。同時(shí)在網(wǎng)絡(luò)中引入注意力機(jī)制,使網(wǎng)絡(luò)在特征提取階段更關(guān)注表情變化。實(shí)驗(yàn)表明,該方法能夠克服圖像中的光照和背景影響,合成表情具備連續(xù)性和真實(shí)性。該合成表情方法可應(yīng)用于數(shù)字娛樂(lè)、影視制作等領(lǐng)域。
關(guān)鍵詞:面部表情合成;GAN;FACS;動(dòng)作單元;注意力
DOI:10.11907/rjdk.192325 開(kāi)放科學(xué)(資源服務(wù))標(biāo)識(shí)碼(OSID):
中圖分類號(hào):TP317.4文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1672-7800(2020)006-0235-05
0 引言
關(guān)于面部合成表情的研究很多。傳統(tǒng)的人臉建模主要通過(guò)3D人臉建模,還有一些通過(guò)在模型上綁定骨骼模型塑造變化的人臉表情,但這種建模方式成本高、周期長(zhǎng)。生成對(duì)抗網(wǎng)絡(luò)可生成不存在的數(shù)據(jù),應(yīng)用更廣。如Pix2Pix,只需要成對(duì)的數(shù)據(jù)就可從簡(jiǎn)筆畫生成一幅真實(shí)的圖片;CycleGAN則可擺脫成對(duì)數(shù)據(jù)的訓(xùn)練,應(yīng)用更廣,例如可以把馬變成斑馬,改變?nèi)四樀膶傩匀缧詣e、年齡、表情等。但是類似的生成對(duì)抗網(wǎng)絡(luò)架構(gòu)都只能合成離散的表情變換。圖1為離散的表情變換,從左到右依次是:自然表情、生氣表情、害怕表情、開(kāi)心表情、驚訝表情,如果要從一種表情連續(xù)變化到另外一種表情還有難度。
基于現(xiàn)有方法的短板,本文將生成對(duì)抗網(wǎng)絡(luò)和面部動(dòng)作編碼系統(tǒng)(FACS)結(jié)合,合成連續(xù)變化的表情,合成的表情對(duì)于光照和背景具有更強(qiáng)的魯棒性。
本文建立了一種具FACS表達(dá)能力的表情合成系統(tǒng),能夠生成連續(xù)的表情動(dòng)畫,并且符合人體解剖學(xué)在連續(xù)域的感知表達(dá)。這種方法不需要獲取人臉的任何landmark點(diǎn)信息。實(shí)驗(yàn)數(shù)據(jù)從YouTube上爬取,提取出視頻序列中的人臉,最后得到的數(shù)據(jù)集由20多萬(wàn)張面部表情組成,同時(shí)利用OpenFace工具對(duì)數(shù)據(jù)集中的人臉進(jìn)行AU標(biāo)注。構(gòu)建一個(gè)新的GAN網(wǎng)絡(luò)架構(gòu),以一維向量為條件提取面部動(dòng)作單元值,只要是帶有激活的AU圖像就可通過(guò)無(wú)監(jiān)督方式訓(xùn)練這個(gè)架構(gòu)。將合成表情問(wèn)題分成兩個(gè)階段:①期望表達(dá)式生成目標(biāo)表情,合成新的表情圖像;②把合成的表情渲染回原始的輸入表情。因此,渲染回的圖像可以和輸入的表情圖像進(jìn)行比較,最后通過(guò)損失值評(píng)估生成圖像的真實(shí)感。
基于生成對(duì)抗網(wǎng)絡(luò)和FACS構(gòu)建的表情合成系統(tǒng),彌補(bǔ)了其它GAN只能合成離散表情的短板,通過(guò)建立注意力掩膜機(jī)制,很好地克服了圖像中變化的背景和光照因素,合成的表情在視覺(jué)質(zhì)量上也有很大提升。圖2是結(jié)果示例,輸入一張圖像,通過(guò)改變AU的激活程度,生成連續(xù)變化的微笑表情。
1 相關(guān)工作
1.1 生成對(duì)抗網(wǎng)絡(luò)
生成對(duì)抗網(wǎng)絡(luò)GAN(Generative Adversarial Networks)是一種基于博弈論的生成模型。一個(gè)典型的GAN優(yōu)化包括生成網(wǎng)絡(luò)和判別網(wǎng)絡(luò)兩個(gè)部分。生成網(wǎng)絡(luò)輸入的是一組隨機(jī)數(shù)z,輸出的是一幅圖像,生成網(wǎng)絡(luò)就是生成假樣本。假樣本要盡可能地逼近真實(shí)樣本的數(shù)據(jù)分布,讓判別網(wǎng)絡(luò)不能區(qū)分是真樣本還是假樣本。判別網(wǎng)絡(luò)輸人的是一幅圖像,輸出的是一個(gè)概率值(概率值大于0.5就是真樣本,小于0.5就是假樣本),用于判別輸入的樣本是真樣本還是假樣本。GAN網(wǎng)絡(luò)結(jié)構(gòu)已經(jīng)證明可以用于生成逼真的高細(xì)節(jié)圖像,成功應(yīng)用于圖像轉(zhuǎn)換、圖像超分辨、室內(nèi)場(chǎng)景見(jiàn)建模等,圖2是一個(gè)用GAN網(wǎng)絡(luò)生成的人臉圖像。
生成網(wǎng)絡(luò)和判別網(wǎng)絡(luò)是交替訓(xùn)練的。在交替訓(xùn)練過(guò)程中,生成網(wǎng)絡(luò)生成的假樣本越來(lái)越逼近真實(shí)數(shù)據(jù)的分布。生成網(wǎng)絡(luò)生成的假樣本輸入到判別網(wǎng)絡(luò)后,判別網(wǎng)絡(luò)給出的判別結(jié)果是一個(gè)接近0.5的值,判別真假的閾值就是0.5,此時(shí)判別網(wǎng)絡(luò)已經(jīng)難辨樣本真假,這就是納什平衡。
人臉圖像處理是計(jì)算機(jī)視覺(jué)和生成模型研究的熱點(diǎn),大多數(shù)人臉研究都是人臉屬性的編輯任務(wù),修改屬性類別,如添加眼鏡、改變頭發(fā)顏色、性別交換和生成老化處理的人臉等。在面部表情合成方面,早期的方法比較依賴三維建模,這種方法在邊緣附近容易產(chǎn)生偽影,無(wú)法對(duì)光照變化進(jìn)行建模。本文提出的方法是通過(guò)把面部肌肉的運(yùn)動(dòng)單元嵌入到GAN模型中,合成連續(xù)自然變化的面部表情。
1.2 面部動(dòng)作編碼系統(tǒng)FACS
國(guó)際著名心理學(xué)家Paul Ekman&Friesen開(kāi)發(fā)了Facial Action Coding System(FACS),它描述了人臉不同肌肉和表情之間的對(duì)應(yīng)關(guān)系。面部動(dòng)作編碼系統(tǒng)根據(jù)人臉肌肉的解剖學(xué)結(jié)構(gòu)將其劃分成若干相互獨(dú)立又互相聯(lián)系的運(yùn)動(dòng)單元AU(Action Unit),不同AU控制的面部肌肉運(yùn)動(dòng)區(qū)域不同,并將不同的表情與對(duì)應(yīng)的AU建立起聯(lián)系。雖然動(dòng)作單元數(shù)量較少(發(fā)現(xiàn)30個(gè)AU在解剖學(xué)上與特定的面部肌肉收縮有關(guān)),但已經(jīng)觀察到的AU組合已經(jīng)超過(guò)7000種。如圖3所示,AUl控制內(nèi)眉提升,AU4控制上眼瞼提升,AU7控制上眼瞼收緊。
不同表情由不同的AU組合而成,只要控制AU是否存在于面部和AU的激活強(qiáng)度,就可對(duì)應(yīng)不同的面部表情。例如恐懼的面部表情通常是通過(guò)內(nèi)眉提升(AUl)、外眉提升(AU2)、上眼瞼提升(AU4)、下眼瞼收緊(AU5)、上眼瞼收緊(AU7)、唇拉伸(AU20)和下頜下垂(AU26)產(chǎn)生的。根據(jù)AU激活程度,表情會(huì)或多或少地傳遞出恐懼情緒,如果AU激活的強(qiáng)度不同也可能會(huì)組成另外一種表情。
2 算法概述
該網(wǎng)絡(luò)結(jié)構(gòu)能合成目標(biāo)表情,或者說(shuō)建立原始表情和目標(biāo)表情的一種映射關(guān)系。每張輸入圖像是RGB圖像,表情是任意的,可以定義為Iyr∈R;每一表情都是由N個(gè)動(dòng)作單元組成的,動(dòng)作單元值大小對(duì)應(yīng)該動(dòng)作單元激活的強(qiáng)度。N個(gè)動(dòng)作單元編碼成少yr=(y1,y2,…yN)T,以目標(biāo)動(dòng)作單元y.作為輸入條件,輸出目標(biāo)圖片Iyg。建立輸入到輸出的映射關(guān)系。目標(biāo)動(dòng)作單元向量yg隨機(jī)生成,訓(xùn)練數(shù)據(jù)不需要同一個(gè)人的多張不同面部表情圖片,也不需要目標(biāo)表情圖片Iyg,因此是無(wú)監(jiān)督訓(xùn)練方式。
3 算法設(shè)計(jì)
3.1 注意力掩膜機(jī)制
TLGAN等表情合成都存在一個(gè)共同問(wèn)題,即很容易受背景和光照等因素影響,導(dǎo)致合成的表情出現(xiàn)模糊、扭曲、偽影等不可控元素。為消除這種影響,本文在網(wǎng)絡(luò)架構(gòu)中引入注意力掩膜機(jī)制。注意力掩膜相當(dāng)于提取人臉動(dòng)作單元特征(包括動(dòng)作單元強(qiáng)度),這樣生成網(wǎng)絡(luò)就可更多關(guān)注人臉的表情特征而忽略復(fù)雜的背景和光照變化帶來(lái)的影響。GA生成網(wǎng)絡(luò)就是生成注意力掩膜GA(Iyr|yg),生成器的另一條支路GI用于生成變化后表情的顏色信息。注意力掩膜、顏色掩膜和輸入圖像結(jié)合之后得到合成的目標(biāo)表情,合成表達(dá)式如下:
2 網(wǎng)絡(luò)架構(gòu)
判別器以第一個(gè)生成器的輸出Iyg和yr作為輸入。判別器分成DI和Dy兩部分,DI用于判斷真實(shí)圖片Iyr,和新的表情圖片Iyg,也就是判斷生成圖片的真實(shí)性;Dy用來(lái)回歸輸出圖像Iyg的目標(biāo)動(dòng)作單元,使合成新的表情和目標(biāo)表情的動(dòng)作單元越來(lái)越接近。網(wǎng)絡(luò)基于WGAN評(píng)估合成的表情圖片質(zhì)量和動(dòng)作單元接近程度。圖7生成網(wǎng)絡(luò)和判別網(wǎng)絡(luò)構(gòu)造如圖5、圖6所示。
3.3 損失函數(shù)設(shè)計(jì)
網(wǎng)絡(luò)架構(gòu)中共設(shè)計(jì)4項(xiàng)損失:①對(duì)抗損失使生成圖像的分布和訓(xùn)練圖像的分布不斷逼近;②注意力損失促進(jìn)掩膜平滑,防止其飽和;③條件損失是計(jì)算圖像的動(dòng)作單元和目標(biāo)動(dòng)作單元的形式性,或者說(shuō)是二者表情的相似性;④一致性損失有利于保持人物表情紋理的同一性。
對(duì)抗損失的作用是使生成圖像的分布不斷逼近訓(xùn)練圖像的分布,這樣生成的圖像更具有真實(shí)性。這個(gè)損失設(shè)計(jì)是在WGAN基礎(chǔ)上所做的修改,而沒(méi)有采用原始GAN損失,因?yàn)樵糋AN用JS(Jensen-Shannon)散度作為損失函數(shù),會(huì)導(dǎo)致網(wǎng)絡(luò)很難訓(xùn)練,而且容易出現(xiàn)梯度消失或梯度爆炸現(xiàn)象。現(xiàn)在定義的對(duì)抗損失能夠很好地應(yīng)對(duì)這些問(wèn)題。另外對(duì)抗損失中還加入了梯度懲罰項(xiàng),使梯度控制在一定范圍內(nèi)。
(1)對(duì)抗損失定義為:
其中,Iyr是輸入圖像,yg是輸入條件,也就是目標(biāo)動(dòng)作單元向量,Pdata為輸入圖像的數(shù)據(jù)分布,Pg為隨機(jī)的數(shù)據(jù)插值分布。
(2)表情損失。分別把原始輸入圖像和生成器生成的圖像輸入到判別器中,分別計(jì)算得到生成圖像和表情向量的groundtrue值。這部分損失很重要,在AU條件作用下使生成的圖像更具有AU表現(xiàn)力,其整體思路是優(yōu)化生成器和判別器,使目標(biāo)表情動(dòng)作的單元與輸入動(dòng)作單元條件不斷逼近。
表情損失定義為:
(3)注意力損失。如果注意力機(jī)制生成的A飽和到l,即生成器Iyr=G(Iyr|yg),注意力機(jī)制就會(huì)失去作用。為防止這種狀況發(fā)生,對(duì)A作L2權(quán)值懲罰,得到注意力損失為:
最后,通過(guò)不斷交替迭代訓(xùn)練生成器和判別器網(wǎng)絡(luò),使目標(biāo)函數(shù)不斷優(yōu)化,得到最優(yōu)模型。
4 實(shí)現(xiàn)細(xì)節(jié)
網(wǎng)絡(luò)架構(gòu)中的生成器建立在Johnson等網(wǎng)絡(luò)基礎(chǔ)之上,對(duì)其作了一定的修改,生成器最后用兩個(gè)平行的卷積層替換,一個(gè)用于回歸顏色mask C,另外一個(gè)用于生成注意力mask A。通過(guò)實(shí)例代替生成器中的批歸一化處理,以提高訓(xùn)練的穩(wěn)定性。
該模型的訓(xùn)練數(shù)據(jù)集通過(guò)YouTube收集視頻,視頻內(nèi)容主要是一個(gè)人的獨(dú)白畫面,一共200多個(gè)視頻,每個(gè)視頻長(zhǎng)度30s-60s,幀率為25fps。分離出所有視頻幀,通過(guò)人臉識(shí)別提取人臉圖片,然后對(duì)所有人臉圖片裁剪對(duì)齊,最后得到的人臉數(shù)據(jù)集大概有20萬(wàn)個(gè)。由于公開(kāi)數(shù)據(jù)集中每張圖片人臉都是獨(dú)立的,相互之間沒(méi)有關(guān)聯(lián),也沒(méi)有時(shí)間軸上的變化,因此訓(xùn)練出的模型在時(shí)間軸上不具有連續(xù)性,合成表情容易出現(xiàn)偽影;而視頻具有時(shí)間上的連續(xù)性,訓(xùn)練的表情數(shù)據(jù)集同樣具有時(shí)間軸上的連續(xù)變化,最終訓(xùn)練模型合成表情更穩(wěn)定,同時(shí)減少了偽影的出現(xiàn)。
模型訓(xùn)練的參數(shù)設(shè)置:學(xué)習(xí)率lr=0.000l,betal=0.5,beta2=0.999,batch_size為16。整個(gè)模型訓(xùn)練周期為30epoch。在訓(xùn)練期間,先固定生成器,判別網(wǎng)絡(luò)訓(xùn)練5step,然后固定判別器,生成網(wǎng)絡(luò)訓(xùn)練1step。損失函數(shù)的權(quán)重設(shè)置為:λg=10,λA=0.1,λy=4000。實(shí)驗(yàn)訓(xùn)練平臺(tái)在Ubuntu系統(tǒng)服務(wù)器上,服務(wù)器搭載兩塊GeForceGTX1080Ti GPU,訓(xùn)練時(shí)間大概2天。
5 實(shí)驗(yàn)評(píng)估
對(duì)合成不同的表情進(jìn)行測(cè)試,或者說(shuō)對(duì)不同AU進(jìn)行測(cè)試。測(cè)試分成對(duì)單AU的測(cè)試和對(duì)不同AU組合的測(cè)試。單個(gè)AU的變化只改變目標(biāo)表情動(dòng)作單元向量中的某一個(gè)AU的強(qiáng)度變化,其余AU值保持不變。目標(biāo)表情只有一個(gè)區(qū)域發(fā)生變化,可以通過(guò)調(diào)整AU激活強(qiáng)度,控制AU對(duì)應(yīng)區(qū)域表情變化的幅度。
多個(gè)AU同時(shí)變化,就是控制一組AU同時(shí)變化。例如微笑的表情是面部表情的多個(gè)AU組合,當(dāng)對(duì)應(yīng)的多個(gè)AU同時(shí)激活時(shí)就會(huì)呈現(xiàn)微笑表情。修改表情向量中的多個(gè)AU值以及變化程度參數(shù)(AU激活強(qiáng)度),就可得到一組線性插值的連續(xù)變化表情。
模型存在一定的限制,圖7是一些失敗的案例。左邊是輸入的原始測(cè)試圖片,右邊是輸出的表情變化圖片,可以看到失敗案例中的表情會(huì)出現(xiàn)一定的偽影和變形,這可能是測(cè)試圖片中的人臉有遮擋所導(dǎo)致,如頭發(fā)遮擋。有些特別夸張的表情測(cè)試效果也不是很好,可能是由于訓(xùn)練數(shù)據(jù)集不足引起的。
6 結(jié)語(yǔ)
基于GAN和FACS的面部表情合成是一個(gè)新的網(wǎng)絡(luò)結(jié)構(gòu),可用于連續(xù)變化表情的生成。傳統(tǒng)的面部表情合成系統(tǒng),例如Face2Face,非常依賴3D面部重建模型,建模成本高、建模時(shí)間長(zhǎng),限制了它的應(yīng)用時(shí)間與范圍。本文提出的模型以解剖結(jié)構(gòu)意義上的肌肉運(yùn)動(dòng)為條件,模型通過(guò)AU參數(shù)化,與解剖學(xué)面部變形達(dá)成一致。此外可以通過(guò)改變AU值激活強(qiáng)度實(shí)現(xiàn)連續(xù)表情變換,為表情合成變換帶來(lái)更多應(yīng)用。通過(guò)在GAN網(wǎng)絡(luò)中引入動(dòng)作單元,對(duì)面部表情合成進(jìn)行改進(jìn),提升表情合成效果。本文方法也存在一定的缺陷,如有些合成的表情會(huì)出現(xiàn)偽影,很難達(dá)到實(shí)時(shí)的表情合成等。未來(lái)還需要不斷提高模型魯棒性和合成表情的時(shí)效性,正確引入一些先驗(yàn)知識(shí)以提升表情合成性能。