高 翔 黃法秀 劉春平 陳 虎*
1(四川大學計算機(軟件)學院 四川 成都 610065)2(四川川大智勝軟件股份有限公司 四川 成都 610045)3(四川大學視覺合成圖形圖像技術國防重點學科實驗室 四川 成都 610064)
具有真實感的人臉表情生成方法目前已經被廣泛應用到各個行業,在電影動畫、虛擬人物、商業服務、醫學美容等方面都有了具體的應用場景。特別是在動畫電影方面,逼真的人臉和人體動畫、表情豐富的虛擬人物,能有效增強人物與場景的真實感和觀看人的沉浸感。此外,二維人臉識別受圖像中的光照條件、人臉姿態和表情等可變因素影響巨大,動態環境下局限性較大,且防偽性能不好[2]。三維人臉識別方案能夠解決現有的這些問題,例如Apple公司利用三維結構光建模的人臉識別技術。從早期的利用手工構建三維人臉參數模型,到現在主流的利用二維圖像生成三維人臉模型技術,利用三維人臉建模技術,生成動態逼真的人臉表情具有較高的實用價值。如何快速、健壯地生成自然逼真的人臉表情更加是急需解決的熱點問題。
本文提出了一種基于二維單目攝像頭的實時真實感人臉表情遷移方法,可以在具有二維單目攝像頭的計算機設備上,實現人臉的自動捕捉、目標人臉估算、三維人臉的重建和自動渲染,并達到實時效果。圖1為遷移算法的流程。

圖1 人臉表情遷移算法流程
人臉重建與表情遷移技術,在計算機圖形學和計算機視覺領域有著悠久的歷史,本文主要關注基于外部設備的實時表情遷移方法。參考Rousselle等[3]針對人臉表情捕獲進展和Zollh?fer等[4]關于單眼三維人臉重建、跟蹤和應用的最新報告,對使用受控采集設備具有高質量結果進行了概述。由于面部表情的復雜多樣性,使得高真實感的人臉表情的合成具有較大難度,1987年Waters等[5]根據人臉表情的組成根本,提出肌肉驅動模型來模擬表情生成過程,在這基礎上和Lee等[6]合作提出生理模型,可以生成更為真實自然的面部表情。Koch等[7]則利用有限元的方法來模擬人臉的生理結構,提出的表情生成模型可以準確地模擬表情產生過程中臉部機構的受力情況。Williams等[8]采用行為驅動的方法從采集的視頻畫面中獲取人臉的紋理、形狀等信息,然后利用可變形的網格驅動人臉。Liu等[9]提出從視頻序列中恢復人臉紋理的方法,解決表情合成方法不能恢復人臉形變的缺點。Isola等[10]利用對抗生成網絡根據圖像特征從像素級直接生成對象的部分真實紋理,具有借鑒意義,也成為最近表情遷移的熱門技術。
近年來國內的研究人員也著手于人臉表情合成技術的研究,并取得了許多有效的成果。晏潔等[11]在模擬表情、紋理映射等領域有較為深入的研究,早期提出了基于人臉模型變形方法,在三維虛擬特定人臉生成方面做出探索。梅麗等[12]采用參數化驅動方式驅動三維人臉模型,忽略了人臉表情皺紋等紋理信息。姜大龍等[13]對人臉表情合成領域的相關技術問題展開相應研究,通過使用局部表情比率圖(partial expression ratio image,PERI)與MPEG-4中人臉動畫參數相結合的方法實現人臉動畫中細微表情特征的參數化表示,并提出了具有參考意義的優化措施。周坤等[14]通過使用變形導向的GAN,生成從二維人臉圖像直接驅動的目標人臉表情,得到了較為優秀的結果。搜狗實驗室最近也發布了全球第一個虛擬主持人,相信在接下來的時間國內外在人臉表情合成、遷移等領域會有更加優秀的進展。
結合前人的工作經驗[15]可知,目前真實感人臉表情的研究還存在問題,例如:大多數技術只能應用到虛擬動畫,并不能應用到真實人臉,表情動態過度僵硬,不具有個性化;人物動作僵硬,對輸入的視頻有較大的依賴性,無法自動生成目標人臉個性表情;無法應對頭部的動作變化,只能應對人臉表情的修改。因此,本文提出一種基于3DMM與GAN結合的實時人臉表情遷移方法來解決上述問題。
本文方法是多個組件的協作。圖1描述了該方法的基本流程,將表演者與目標人臉作出區分,目標人物必須按照表演者的表演動作做出一系列的模仿。參與人員通過人臉跟蹤檢測,獲取其人臉關鍵點,本文使用的是人臉的hog特征和級聯分類器作為分類方法。為了將表演者與目標人臉做出映射,使用pix2pix[16]的對抗生成網絡,通過表演者的表情自動生成目標人臉的表情關鍵點。使用Ruiz等[17]深度學習的方法,對二維人臉坐標點進行三維姿態的估計,渲染出不同姿態的可視化二維人臉。利用3DMM[18]三維人臉重建方法,用生成的目標人臉二維坐標點結合目標人臉紋理,實時擬合出三維人臉模型。使用泊松圖像融合[19]的方法將當前表演者的人臉與目標人臉融合,生成最終的表情遷移人臉。在此過程中為了達到實時渲染的要求,同時利用多線程編程對整個人臉坐標采集、三維人臉生成、實時渲染、面部表情融合等過程進行了加速。
本文方法最關鍵的一部分就是目標人臉關鍵點的生成,在這個過程中,通過使用二維單目攝像頭采集表演人臉和目標人臉的一系列不同表情視頻,然后利用pix2pix對抗生成網絡成對訓練表演人臉和目標人臉的映射關系,最終達到了生成目標人臉關鍵點的需求。另外使用紋理融合算法對表演人臉和目標人臉的部分紋理進行部分融合。
在構建目標用戶的面部模型之前,首先需要捕捉一組預先定義的圖像序列,這些圖像由用戶一組不同的表情面部圖像組成,借鑒Cao等[20]的方法將人體頭部運動分為剛性運動和非剛性運動兩個部分。如圖2所示,第一部分為剛性運動,要求捕獲人臉15個不同的姿態,這些姿態由頭部的不同的角度組成并且人臉帶有中性表情。這些轉動使用歐拉角(yaw,pitch,roll)來表示,其中:yaw從-90°到90°,每隔30°為旋轉尺度共6個姿態;pitch從-30°到30°每隔15°為旋轉尺度共4個姿態;roll和pitch的旋轉尺度保持同樣的分布,為4個姿態。圖2第一行為其中部分姿態:從左至右為0°、yaw30°、pitch30°、roll60°、yaw-60°、yaw-90°。用戶只需要近似匹配上述標準,無需精準測量上述尺度。第二部分是旋轉尺度保持在-30°到30°之間的15個不同人臉表情的非剛性人臉集合。包括:微笑,皺眉,厭惡,擠左眼,擠右眼,憤怒,張嘴,咧嘴,抬下巴,撅嘴巴,漏斗形嘴,鼓臉,閉眼睛,左撇嘴,右撇嘴。圖2第2行所示分別為:微笑,張嘴,厭惡,咧嘴,閉眼,皺眉。

圖2 人臉剛性運動和非剛性運動采集示意圖
最終,為表演人臉和目標人臉分別捕獲并挑選了825幅圖片,每個不同的姿態和不同的表情分別25幅。使用的設備為普通的二維單目攝像頭,采集目標距離設備1米。為了達到較高的對齊效果以完成下面的任務,要求測試人員盡量保持亮度一致,以達到較高的對齊效果。
基于二維圖像的三維人臉建模需要從圖像中提取出相關的人臉特征信息,其中包含人臉位置、人臉的關鍵點以及人臉的顏色信息提取,提取上述信息需要對人臉進行檢測、人臉對齊等操作。針對前面所獲取的人臉數據集,采用人臉對齊的方法為它們自動標定68個關鍵點,分別位于人臉的眉毛、眼睛、鼻子、嘴唇和臉部邊緣位置,其中0~16位于人臉邊緣,17~21為左眉毛,22~26為右眉毛,27~35為鼻子,36~41,42~47分別為左右眼睛,48~67為嘴巴,標注如圖3所示。現在二維人臉對齊技術[21-22]已經很成熟,可以任意完成上述對齊,這里使用的為開源人臉對齊基于ERT(Ensemble of Regression Tress)算法[21]。ERT展示了如何使用回歸樹集合直接從像素強度稀疏子集估計面部的關鍵點位置,通過高質量的預測展示了實時性能。

圖3 人臉關鍵點標注示意圖
使用上述方法對數據集中825對圖像進行人臉關鍵點的對齊,并且將關鍵點畫至黑色背景圖形,歸一化人臉大小后形成對抗生成網絡的數據集。
2.3.1準備訓練數據集
根據表演和目標人臉數據集的人臉關鍵點的標定結果,形成成對包含825組的人臉關鍵點數據集,數據點描繪在黑色背景上,如圖4所示,A為目標人臉畫出的對應人臉的關鍵點示意圖,B為表演人臉數據,均歸一化為512×256大小的成對人臉關鍵點數據集作為網絡訓練數據。將數據集的75%作為訓練集,25%作為測試集,使用pix2pix的對抗生成網絡[10],自動生成目標人臉的68個關鍵點。

圖4 目標人臉和表演人臉對應人臉關鍵點圖片
2.3.2目標函數
GAN[23]是一種生成模型,用來學習一組z(隨機噪聲)向量到y(目標圖片)的映射:y:G:z→y。相比之下,條件GAN學習觀測圖像x和隨機噪聲z到y的映射關系,y:G:{x,z}→y。
在此pix2pix的訓練模型為GAN網絡的變形,損失函數為:
LCGAN(G,D)=Ex,y[logD(x,y)]+Ex,z[log(1-
D(x,G(x,z)))]
(1)
式中:G目的是最小化該函數值,D目的為最大化該函數值,即G*=arg minGmaxDLCGAN(G,D)。
為了對比效果,同時訓練一個普通GAN,只讓D(判別網絡)判斷是否為真實圖像。
LGAN(G,D)=Ey[logD(y)]+Ex,z[log(1-
D(G(x,z)))]
(2)
對于圖像生成任務而講,G(生成網絡)的輸入和輸出之間共享信息,比如上色任務。因而為了保證輸入和輸出圖像之間的相似度,加入L1 loss:
(3)
匯總的損失函數為:
G*=arg minGmaxDLCGAN(G,D)+λLL1(G)
(4)
(1) 生成網絡G。常見的編解碼網絡(Encoder-decoder)輸入和輸出之間會共享很多信息,如果使用普通的卷積神經網絡會導致每一層都承載保存者所有信息,這樣的神經網絡容易出錯,所以使用U-Net[24]網絡來進行減負,結構如圖5(b)所示。U-Net的區別是加入跳線鏈接,對應的feature maps和decode之后的同樣大小的feature maps按通道拼(concatenate)一起,用來保留不同分辨率下像素級的細節信息。

圖5 Encoder-decoder和U-Net網絡結構對比
(2) 判別網絡D。用來保證局部圖形的精準性,通過Patch-D[10]實現,將生成圖像切分為固定大小的Patch輸入進入判別網絡進行判斷。
將歸一化后的訓練數據送進網絡中,在訓練過程中,G(生成網絡)、D(判別網絡)交替進行訓練,可有效地生成目標人臉的人臉關鍵點位置,如圖6所示。將關鍵點的位置提取出來,作為生成三維人臉模型的輸入。從圖6中可以看出,生成的目標人臉的關鍵點位置,比表演人臉臉型更為纖細(目標人臉為圖1流程圖對應人臉),帶有目標人臉的特征表現,可以作為驅動目標人臉三維模型生成的輸入數據。

圖6 使用GAN生成目標人臉的關鍵點位置
為了通過二維人臉關鍵點得到和目標人臉相似的三維人臉模型,本文使用了基于3DMM的人臉三維模型擬合框架。薩利人臉模型是3D形變模型包含了PCA形狀模型和PCA顏色模型,而且每個模型擁有不同分辨率級別以及對應的元數據,例如二維的紋理信息和對應的人臉坐標信息。
3DMM主要是在獲得薩利掃描模型的基礎上,利用單幅人臉圖片的二維坐標點,通過IMDR算法[25]多次逼近求得二維坐標到多分辨率三維人臉模型的稠密對應關系,達到二維到三維重建的效果。該方法使得人臉的三維重建模型實時性顯著提高。
首先通過對數據庫中的掃描三維人臉點云模型進行PCA主成分的提取。這里將形狀模型表示為點坐標(x,y,z)的向量集合S∈R3N和顏色模型表示為(RGB)顏色信息的向量集合T∈R3N,N表示模型中點的數量。每個PCA模型表示為:

(5)
式中:v∈R3N為樣本的均值;V為樣本的主成分的集合V=[v1,v2,…,vn-1]∈R3N×(n-1);σ∈Rn-1為樣本集合的標準差;n為用來構建模型的掃描次數。
通過計算得出新的面部模型:
(6)
式中:m≤n-1是主成分的數量;a∈RM是PCA形狀空間中的實際坐標,為式(5)計算得出標準差集合。PCA顏色模型也服從于上述坐標向量的分布,可通過類似計算方式得出。
通過上述的方法得到了一個三維人臉的平均模型,在三維人臉模型擬合的過程中,首先對二維人臉圖片進行人臉關鍵點的檢測,然后通過采用仿射攝像機模型,實現了黃金標準算法[26],找到給定的一定數量的二維-三維點對的攝像機矩陣的最小二乘近似。
得到人臉關鍵點的二維坐標后,通過使用二維到三維坐標的形狀稠密對應算法[25],找到和二維坐標最為接近的PCA坐標向量,代價函數為:
(7)


圖7 人臉可變模型框架生成三維人臉模型
根據目標人臉的關鍵點坐標生成對應的三維人臉模型,根據二維人臉關鍵點位置估計出三維空間內的攝像機矩陣,調整三維目標人臉的視角,渲染出對應姿態的目標人臉。通過薩利模型擬合出的三維人臉不包含口腔模型,因此渲染出的人臉無法構建目標人臉說話過程,不存在舌頭以及牙齒的變化,針對眼睛的動態也無法根據單張二維人臉進行合成。由于系統是根據檢測表演人臉動作姿態和表情去生成目標人臉,目標人臉和表演人臉在動作過程中,頭部姿態和臉部表情基本處于同步狀態。本文使用人臉關鍵點定位算法定位到表演人臉和生成人臉圖像的嘴巴和眼睛位置,將當前表演人臉的眼睛和嘴巴紋理圖像,根據目標人臉的特點進行變形,使用泊松紋理融合[19]方法復制到目標人臉對應的眼睛和嘴巴的位置,填充眼睛和嘴巴的動態紋理,彌補光照和顏色的差異。
首先通過對目標人臉進行臉部關鍵點的對齊,找到對應的眼睛和嘴巴的位置,在人臉關鍵點分布在如圖8中對應的眼睛鼻子所對應的位置,創建一個黑色蒙版用于找到需要融合位置的區域。然后對表演人臉圖片蒙版圖片和目標人臉圖片進行歸一化,將待融合位置進行對應,通過泊松融合得到最終的目標人臉。圖9為紋理融合過程。

圖8 紋理融合位置

圖9 渲染后的人臉圖像和表演人臉的融合過程
本文實現了基于3DMM的三維人臉表情遷移:輸入目標人臉和表演人臉的特定視頻,對視頻進行分幀提取臉部關鍵點信息,利用生成對抗網絡進行表演人臉和目標人臉關鍵點進行映射,自動生成目標人臉的臉部關鍵點;利用生成的人臉關鍵點進行三維人臉的擬合,生成目標人臉三維模型同時做紋理映射,在此基礎上融合表演人臉的五官特點,最終生成人臉遷移結果,如圖10所示。可以看出,本文結果對比單純的三維人臉建模的結果更具有真實性,可以較為真實地遷移表演人臉表情至目標人臉,能夠展示眼睛,嘴巴的動態效果。如圖11所示,生成人臉能較為生動地模仿目標人臉的表情動態和部分神情,對嘴部和眼睛的表情融合有較好的效果,從感官上能夠達到分辨出不同表情的區別。

圖10 生成各種姿態表情表演人臉對比

圖11 目標人臉和生成人臉表情對比
人臉表情仿真和遷移領域并無統一的質量評價測試方法,無法模式化量化最后的結果,故參考文獻[28],設計了一套比對方法。通過對The Extended Cohn-Kanade Dataset(CK+)數據庫[29]中不同人臉表情和生成的對應人臉表情兩組實驗數據進行挑選,并結合本實驗的實現條件,使用Tuputech[30]網站提供的在線人臉表情打分功能分別對兩組數據進行打分比對,驗證本文方法的遷移效果。
本文設計了對比驗證實驗共涉及10個不同人臉對象的圖片,共80幅人臉圖片包含來自于(CK+)數據庫女性8種不同人臉表情:中性、憤怒、蔑視、厭惡、恐懼、高興、悲傷、驚訝。通過Tuputech網站系統[30]對(CK+)數據庫中不同表情人臉進行預測試,發現并不能準確對部分表情打分,部分打分效果如圖12所示。從中選擇打分在70分以上的圖12(b)、(f)以及一幅中性表情圖片作為對比標準,來統計兩組數據的分數分布。對10個不同對象人臉的自然表情和生成表情,包括喜悅、驚訝、中性進行打分比對。部分結果如圖13所示。

圖12 數據集中7種不同表情打分情況

圖13 部分自然人臉表情和生成人臉表情對比打分情況
通過對比實驗,最終得到10個人臉對象,自然人臉表情和生成人臉表情的三種不同表情的打分分布如表1所示。

表1 Tuputech系統對自然表情和生成表情打分情況
通過對結果樣本進行表情識別,系統可以識別喜悅和驚恐表情種類并進行打分,并有效模仿出每個對象的表情,但由于無法準確識別出中性表情,故本文選擇喜悅和驚恐表情作為對比參數。通過本文方法遷移生成表情能夠達到模仿人臉自然表情的效果,基本接近自然表情的打分結果。但光照問題會造成臉部有明顯合成痕跡以及五官的模糊情況,臉部細節處理不到位,說明本文算法需要在光照一致性上進一步改進。
在一臺CPU為Core(TM)i7-8700,主頻3.70 GHz,內存16 GB的電腦中,系統通過CPU多線程完成人臉采集、三維模型擬合、人臉表情融合和渲染過程生成連續的人臉表情畫面,最快可以達到15.2幀/s,達到實時視頻的標準,使用GPU對渲染部分進行加速可以得到更好的效果。
本文通過對同一個人的部分視頻進行訓練,并設計以逼真演化目標的算法,將表演人臉表情遷移到目標人臉表情。本文方法可以實現實時人臉表情遷移,對于需要用到虛擬人物化身,人臉識別數據的拓展有一定作用。嘗試使用GAN和三維建模技術結合,生成更為逼真的三維人臉表情,但在進行最終的人臉表情融合過程中,細節處理不夠完美。由于需要進行人臉紋理信息的采集,表演人員需要在特定環境下(光照穩定充足)進行演示,無法應對復雜環境光的問題,而且紋理受采集設備的影響會出現部分模糊。系統正常使用前,需要對表演和目標人臉進行一段時間的視頻采集,這也需要進一步改進。整個程序使用多線程編程,存在計算機資源搶占過程,容易產生渲染畫面的跳幀卡頓。下一步,會針對以上已知問題進行進一步的研究,如pix2pixHD自動生成目標人臉紋理,使用聲紋驅動目標人臉,優化人臉容融合算法,使用更高精度的人臉采集設備,提升紋理融合的精度等。