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