?數(shù)字人建模和動(dòng)畫(huà)關(guān)鍵技術(shù)
導(dǎo)讀:本文將從圖形角度介紹數(shù)字人建模和動(dòng)畫(huà)關(guān)鍵技術(shù)的相關(guān)研究工作,比如人臉建模、頭發(fā)編輯、虛擬服裝等,主要包括以下幾大部分內(nèi)容:
- 人臉肖像編輯和服裝設(shè)計(jì)。
- 用于睫毛摳圖的數(shù)據(jù)集和基線(xiàn)方法。
- 基于深度學(xué)習(xí)的寬松衣服實(shí)時(shí)動(dòng)畫(huà)。
一、人臉肖像編輯和服裝設(shè)計(jì)
1、 數(shù)字化人臉視頻肖像的胖瘦調(diào)整
在 ACM Multimedia2021 上發(fā)表了視頻肖像胖瘦調(diào)整的口頭報(bào)告論文,主要是調(diào)整視頻中人臉的胖瘦,達(dá)到從視覺(jué)上看不出明顯修整的自然效果。
2、 雙下巴去除
雙下巴去除是發(fā)表在 Siggraph 2021 的論文。人臉編輯中去雙下巴是比較難的,既涉及紋理又涉及幾何。如果所示,第一排是原始的圖像,通過(guò)調(diào)節(jié)參數(shù)可以使雙下巴逐漸消失(第二排)。
3、肖像去頭發(fā)
給肖像去頭發(fā)是將給定的照片中人物的頭發(fā)去掉。可以做頭發(fā)的編輯,比如給人物換一套頭發(fā),如果保留原來(lái)的頭發(fā)會(huì)對(duì)合成的結(jié)果產(chǎn)生干擾。在數(shù)字人的三維重建中,如果保留原始頭發(fā)的話(huà),會(huì)對(duì)紋理產(chǎn)生干擾。我們的方法可以獲取沒(méi)有頭發(fā)紋理干擾的三維重建結(jié)果。
4、虛擬服裝
這是元宇宙里面的新時(shí)尚,提供一張照片,將虛擬衣服合成到人的身上,可以隨心所欲的穿新衣服。
在可持續(xù)發(fā)展當(dāng)中,時(shí)裝業(yè)存在著大量問(wèn)題。虛擬服裝提供了一個(gè)很好的解決方案。
比如,左邊是真實(shí)衣服,右邊是虛擬衣服??梢钥闯?,虛擬衣服和真實(shí)衣服是非常相近的。
2022 百度世界大會(huì)中數(shù)字人希加加的衣服模型和動(dòng)畫(huà)都是由我們提供的。
二、用于睫毛摳圖的數(shù)據(jù)集和基線(xiàn)方法
1、研究背景
上圖是電影中的數(shù)字人,以及虛擬整容的工作。
我們要研究的是如何構(gòu)建高精度的三維人臉重建方法。一類(lèi)方法是采集用戶(hù)照片,使用 MVS 來(lái)重建三維模型,但是這種方法對(duì)睫毛處理效果較差。因?yàn)榻廾糠执嬖趲缀涡畔ⅲ瑫?huì)對(duì)重建造成干擾,眼部區(qū)域不精確。
2、相關(guān)工作:高精度人臉重建
相關(guān)的研究工作非常多,比如人臉幾何和毛發(fā)重建、眼瞼眼球重建等,但是沒(méi)有一個(gè)可行方法去準(zhǔn)確地編輯睫毛。
3、圖像摳圖算法與摳圖數(shù)據(jù)集
① 基于三分圖的摳圖方法?
要編輯睫毛,可以使用摳圖把睫毛摳出來(lái),摳圖實(shí)際上是解一個(gè)病態(tài)方程,如下圖所示,這是一個(gè)基于三分圖的自然摳圖示例,能得到很好的結(jié)果。但這個(gè)方法有一個(gè)缺點(diǎn),需要輸入一個(gè)三分圖,而要構(gòu)建三分圖,是非常困難的。
② 摳圖數(shù)據(jù)集
對(duì)于摳圖數(shù)據(jù)集近幾年工作也很多,比如下圖的 CVPR2009 的一個(gè)數(shù)據(jù)集。
③ 藍(lán)幕摳圖
藍(lán)幕摳圖在電影特效里面用的非常多,通常會(huì)用綠幕或藍(lán)幕,然后通過(guò)一些三角測(cè)量方法計(jì)算前景蒙版的值。
4、用于睫毛摳圖的數(shù)據(jù)集和基線(xiàn)方法
① 數(shù)據(jù)集合基線(xiàn)方法介紹
我們要解決的是睫毛的摳圖。左邊輸入的是包含眼睫毛的照片,通過(guò)摳圖網(wǎng)絡(luò)EyelashNet,把mask的值算出來(lái)。
② 研究動(dòng)機(jī)
睫毛區(qū)域存在幾何紋理,在三維重建參數(shù)化的時(shí)候,對(duì)結(jié)果產(chǎn)生很大的干擾,效果非常不好,如果靠美工去修就非常耗時(shí)耗力,所以需要一種方法能自動(dòng)把睫毛摳出來(lái)。
③ 主要挑戰(zhàn)
如果人工移除睫毛,很費(fèi)時(shí)費(fèi)力。使用 Gabor 濾波方法,效果也仍然不好。也可以用圖像摳圖方法,但是數(shù)據(jù)集構(gòu)建非常困難。如果使用藍(lán)幕摳圖,睫毛生長(zhǎng)在眼瞼上,使得背景圖例如眼瞼和眼皮無(wú)法被分離和替換,另外人是會(huì)眨眼的,使得睫毛采集的時(shí)候難以保持靜止,那么想要采集多個(gè)嚴(yán)格對(duì)齊且顏色不同的睫毛是很困難的。
④ 睫毛數(shù)據(jù)采集
我們把睫毛涂上熒光劑,打開(kāi)UVA閃光燈,就能看到熒光效果,進(jìn)而得到睫毛的分割結(jié)果。但這還是不夠的,還需要進(jìn)一步處理。
⑤ 睫毛蒙版計(jì)算
我們使用上一步獲得的數(shù)據(jù)集作為輸入,用摳圖網(wǎng)絡(luò)去預(yù)測(cè)真正的摳圖結(jié)果。但如果只用原始數(shù)據(jù)集,效果也不是很好,而且我們沒(méi)有 ground truth。我們?cè)O(shè)計(jì)了虛擬合成的方法 Render EyelashNet 進(jìn)行預(yù)熱,再用實(shí)驗(yàn)結(jié)果去預(yù)測(cè)得到一個(gè)估計(jì)的結(jié)果,結(jié)合人工,把那些不好的結(jié)果篩選剔除,最終得到了帶有初始蒙版的數(shù)據(jù)集。之后就可以用這個(gè)數(shù)據(jù)集去訓(xùn)練,得到一個(gè)細(xì)化的結(jié)果,細(xì)化的結(jié)果放入數(shù)據(jù)集,再去訓(xùn)練,經(jīng)過(guò)迭代最后獲得一個(gè)比較好的數(shù)據(jù)集。
5、睫毛數(shù)據(jù)采集系統(tǒng)
① 采集設(shè)備
我們搭建了一套采集系統(tǒng),包括 16 個(gè)相機(jī)、365 納米的紫外閃光燈、補(bǔ)光系統(tǒng)等,具體參數(shù)可以參看截圖。
② 睫毛上色和眼部定位
我們邀請(qǐng)了很多浙大的同學(xué),給睫毛上色圖上熒光劑,人要保持不動(dòng),然后使用激光定位眼部。
打開(kāi)和關(guān)閉紫外閃光燈的結(jié)果對(duì)比:
③ 矯正對(duì)齊
理想的情況下輸入的兩個(gè)對(duì)照?qǐng)D是沒(méi)有偏移的,但是人的眼皮很容易動(dòng)的,會(huì)有偏差,我們使用FlowNet2得到一個(gè)光流場(chǎng),使用光流場(chǎng)結(jié)果對(duì)熒光睫毛進(jìn)行偏移矯正,進(jìn)而得到一個(gè)嚴(yán)格對(duì)齊的圖片,這樣就獲得了分割結(jié)果。
6、推理階段
① GCA 網(wǎng)絡(luò)
推理階段我們主要用的發(fā)表于 2020 年 AAAI 的 GCA 網(wǎng)絡(luò)。
GCA 網(wǎng)絡(luò)的輸入是 RGB 圖像和一個(gè)三分圖,輸出是睫毛蒙版,我們前面的分割結(jié)果可以作為初始的三分圖結(jié)果,從而解決了睫毛三分圖的人工構(gòu)建困難的問(wèn)題。
② 蒙版推理網(wǎng)絡(luò)
這里把三分圖換為睫毛遮罩圖像和原 RGB 圖像作為輸入,通過(guò)漸進(jìn)式訓(xùn)練的方式,結(jié)合 RenderEyelashNet 訓(xùn)練預(yù)熱網(wǎng)絡(luò),得到一個(gè)蒙版結(jié)果,然后把這個(gè)結(jié)果再加入到輸入作為訓(xùn)練集,通過(guò)人工篩選得到視覺(jué)上正確的睫毛摳圖數(shù)據(jù)集,這樣既有虛擬數(shù)據(jù)也有真實(shí)數(shù)據(jù)。用這個(gè)數(shù)據(jù)集再去訓(xùn)練和推理,最后得到預(yù)測(cè)版的睫毛蒙版。然后再放入訓(xùn)練集,再迭代,通常兩次就能打到所期望的結(jié)果。
③ 人工選擇
使用再先進(jìn)的軟硬設(shè)備也無(wú)法保證睫毛采集的準(zhǔn)確性,我們通過(guò)人工選擇把一些不好的結(jié)果去掉,確保訓(xùn)練數(shù)據(jù)的準(zhǔn)確性。
④ 基線(xiàn)網(wǎng)絡(luò)
訓(xùn)練好基線(xiàn)網(wǎng)絡(luò)后,輸入一張圖片進(jìn)行測(cè)試,得到比較好的結(jié)果。對(duì)于未知的圖像,我們并不知道它的三分圖是怎樣的,我們直接輸入一個(gè)灰度圖,一樣可以得到很好的睫毛預(yù)測(cè)結(jié)果。
7、數(shù)據(jù)集
① 訓(xùn)練數(shù)據(jù)集
我們對(duì) 12 個(gè)眼睛表情和 15 個(gè)視圖進(jìn)行睫毛數(shù)據(jù)的捕捉。
② 測(cè)試數(shù)據(jù)集
為了驗(yàn)證我們的方法,在測(cè)試的時(shí)候,既使用了我們自己采集的數(shù)據(jù),同時(shí)也使用了互聯(lián)網(wǎng)上的一些圖片數(shù)據(jù)。
我們通過(guò)漸進(jìn)式迭代兩次后,得到的結(jié)果已經(jīng)非常好了,和真值比較接近。
③ 方法對(duì)比
我們和目前最好的幾種方法做了對(duì)比,不管是視覺(jué)上還是定量上,我們的方法都顯著地好過(guò)以前的方法。
④ 消融實(shí)驗(yàn)
我們也做了消融實(shí)驗(yàn),驗(yàn)證我們的方法各個(gè)部分是不可或缺的。
⑤ 結(jié)果展示
我們用了互聯(lián)網(wǎng)上的一些照片進(jìn)行驗(yàn)證,這些照片是沒(méi)有 Ground Truth 的。但對(duì)于這些照片,我們的方法仍然能計(jì)算出比較好的睫毛摳圖結(jié)果。
⑥ 應(yīng)用
我們與騰訊 NEXT 工作室合作,把該方法用于高精度三維人臉重建,睫毛區(qū)域已經(jīng)高度逼真。
另外一個(gè)應(yīng)用是睫毛的美化編輯。獲得睫毛后,可以改變其顏色或把睫毛變長(zhǎng)。但這個(gè)方法應(yīng)用在戴眼鏡、光線(xiàn)強(qiáng)弱明顯的地方,結(jié)果會(huì)有偏差。
8、總結(jié)
我們提出了 EyelashNet,這是第一個(gè)高質(zhì)量的睫毛摳圖數(shù)據(jù)集,包含 5400 個(gè)高質(zhì)量捕獲的睫毛摳圖數(shù)據(jù)和 5272 個(gè)虛擬睫毛摳圖數(shù)據(jù)。
我們提出了一個(gè)專(zhuān)門(mén)設(shè)計(jì)的熒光標(biāo)記系統(tǒng)來(lái)捕捉高質(zhì)量睫毛圖像和遮罩。
我們的方法在睫毛摳圖上實(shí)現(xiàn)了當(dāng)前最先進(jìn)的性能。
三、基于深度學(xué)習(xí)的寬松衣服實(shí)時(shí)動(dòng)畫(huà)
這項(xiàng)工作是為了模擬寬松衣服。我們和馬里蘭大學(xué)、騰訊 NEXT 工作室合作,相關(guān)論文發(fā)表在 Siggraph2022 上。這個(gè)工作提出基于深度學(xué)習(xí)的寬松衣服實(shí)時(shí)預(yù)測(cè)方法,可以很好地處理大幅度動(dòng)作,并支持可變的模擬參數(shù)。
1、虛擬骨骼
這項(xiàng)工作的一項(xiàng)核心技術(shù)是虛擬骨骼,這是一組使用剛性變換與線(xiàn)性混合模擬方法控制服裝變形的模擬骨骼。利用虛擬骨骼,我們可以高效地模擬寬松服裝的復(fù)雜形變,而且這些骨骼可以作為輸入,引導(dǎo)服裝細(xì)節(jié)的生成。
2、工作背景
讓服裝動(dòng)起來(lái)一般有兩類(lèi)方法,一種是物理方法,這種方法計(jì)算起來(lái)費(fèi)資源;另一種方法是數(shù)據(jù)驅(qū)動(dòng)的,它通過(guò)從真實(shí)的數(shù)據(jù)中學(xué)習(xí)并去驅(qū)動(dòng),這種方法相對(duì)較快,有著很好的性能。
近幾年,機(jī)器學(xué)習(xí)和深度學(xué)習(xí)的方法越來(lái)越多,但這些方法,要么是預(yù)測(cè)靜態(tài)情況下的服裝形變,要么是預(yù)測(cè)緊身衣服的動(dòng)態(tài)形變。但實(shí)際上,像裙子之類(lèi)的很多服裝都是寬松的,盡管有些方法能預(yù)測(cè)寬松衣服形變,但對(duì)于大幅度動(dòng)作的形變預(yù)測(cè)不太好。而且目前方法都無(wú)法支持可變參數(shù)的。
3、研究貢獻(xiàn)
我們的研究主要有兩點(diǎn)貢獻(xiàn),第一個(gè)是使用深度學(xué)習(xí)方法預(yù)測(cè)寬松衣服的復(fù)雜形變,我們將服裝形變拆解為兩部分——低頻部分和高頻部分。使用虛擬骨骼表示低頻部分的形變,并使用它來(lái)推斷高頻部分;第二個(gè)貢獻(xiàn)是使用身體的動(dòng)作結(jié)合物理模擬參數(shù)作為輸入,使用該方法處理兩種輸入的異質(zhì)性。
4、概要描述
① 虛擬骨骼生成方法
先使用模擬方法得到一個(gè) ground truth 的訓(xùn)練集,對(duì)這些訓(xùn)練集做拉普拉斯順滑處理,得到低頻的 Mesh,然后做 Skin Decomposition 處理,得到虛擬骨骼和權(quán)值。
② 運(yùn)動(dòng)網(wǎng)絡(luò)
通過(guò)身體的運(yùn)動(dòng)序列得到虛擬骨骼的運(yùn)動(dòng)序列,通過(guò)運(yùn)動(dòng)網(wǎng)絡(luò)預(yù)測(cè)低頻形變信息,使用低頻的信息預(yù)測(cè)高頻的信息,最后得到模擬結(jié)果(最右邊圖形)。
③ 模擬參數(shù)變量
我們想要針對(duì)不同參數(shù)變量都能做評(píng)估,通過(guò) RBF 網(wǎng)絡(luò)預(yù)測(cè)出我們沒(méi)看到的模擬參數(shù)結(jié)果,這樣就能使用一套網(wǎng)絡(luò)即使參數(shù)不同也能做預(yù)測(cè)。
5、方法
① 數(shù)據(jù)準(zhǔn)備
首先要生成真值數(shù)據(jù),我們使用 Houdini Vellum Solver 解算器,大約模擬了四萬(wàn)幀的動(dòng)畫(huà)。我們沒(méi)有采用真人的動(dòng)捕結(jié)果,而是采用了網(wǎng)絡(luò)的視頻動(dòng)作。這是因?yàn)槲覀兿MM大幅度動(dòng)作,但真人的動(dòng)作其動(dòng)作比較小。
② Skin Decomposition
低頻形變序列我們使用蒙皮分解來(lái)獲取虛擬骨骼,得到結(jié)果是一個(gè)線(xiàn)性混合蒙皮的模型,這個(gè)模型包括一個(gè) Rest Pose 和每根骨骼對(duì)應(yīng)的蒙皮權(quán)重。還得到了每一幀虛擬骨骼的平移和旋轉(zhuǎn)。虛擬骨骼沒(méi)有層次關(guān)系,沒(méi)有父骨骼和子骨骼這樣的關(guān)系,而且每個(gè)骨骼有自己的旋轉(zhuǎn)和平移。
另外,虛擬骨骼是沒(méi)有真正的現(xiàn)實(shí)意義的,虛擬骨骼是每個(gè)特定動(dòng)畫(huà)中獲取的。我們使用 Motion Network 處理身體的輸入,每個(gè)網(wǎng)絡(luò)對(duì)應(yīng)不同的身體模擬參數(shù),輸入只有關(guān)節(jié)的旋轉(zhuǎn)和角色的平移,輸出是對(duì)應(yīng)物理參數(shù)的 Mesh 推斷結(jié)果。
③ 動(dòng)作網(wǎng)絡(luò)
動(dòng)作網(wǎng)絡(luò)依次推斷低頻和高頻部分。
- 低頻模塊
低頻部分使用循環(huán)神經(jīng)網(wǎng)絡(luò) GRU 將輸入的身體動(dòng)作轉(zhuǎn)換為虛擬骨骼的旋轉(zhuǎn)和平移,使用循環(huán)神經(jīng)網(wǎng)絡(luò)有個(gè)好處是能夠獲得之前幀的信息,這樣更好捕獲動(dòng)態(tài)效果,低頻形變可以用虛擬骨骼線(xiàn)性混合蒙皮來(lái)獲取。
- 高頻模塊
動(dòng)作網(wǎng)絡(luò)可以用來(lái)預(yù)測(cè)高頻部分,一個(gè)是 GRU 獲取高頻特征,一個(gè)是 GNN 獲得低頻部分特征,把兩部分特征通過(guò) MLP 來(lái)得到高頻信息。將高頻和低頻結(jié)果相加后得到最終結(jié)果。
- RBF 神經(jīng)網(wǎng)絡(luò)
為了處理物理模擬參數(shù)輸入,我們訓(xùn)練了很多個(gè)不同動(dòng)作的 Motion Network,相同動(dòng)作的輸出對(duì)應(yīng)的參數(shù)模擬結(jié)果,我們使用RBF神經(jīng)網(wǎng)絡(luò)把這些結(jié)果加起來(lái),加權(quán)系數(shù)取決于模擬參數(shù)和對(duì)應(yīng)網(wǎng)絡(luò)的模擬參數(shù)的距離,并在計(jì)算距離之前使用多層感知機(jī)將參數(shù)投影到一個(gè)空間里。
6、結(jié)果
在實(shí)時(shí)模擬時(shí),在不改變模擬參數(shù)的情況下,寬松衣服都可以模擬得非常好。
- 結(jié)果表現(xiàn)
左側(cè)的模擬結(jié)果和 ground Truth 是非常接近的,右側(cè)是處理可變參數(shù)的。
另外一個(gè)問(wèn)題是如何選取虛擬骨骼的數(shù)目。我們實(shí)驗(yàn)發(fā)現(xiàn),對(duì)于低頻部分,數(shù)目太少效果不好,太多也沒(méi)多大幫助,80 是比較好的結(jié)果。但對(duì)于高頻部分,虛擬骨骼的數(shù)目是越多越好,這樣可更好地表現(xiàn)細(xì)節(jié)。
- 虛擬骨骼數(shù)量
- 提升寬松部分
寬松是指衣服離人體的距離,紅色部分表示更遠(yuǎn),藍(lán)色表示緊身部分,可以看出我們的結(jié)果(最右側(cè))更好。
這是低頻和高頻情況下和真值的對(duì)比圖,我們的方法和 ground truth 更接近。
- 定性對(duì)比結(jié)果
從視覺(jué)上看不同方法的對(duì)比,我們的效果雖然和 ground truth 有一點(diǎn)點(diǎn)差異,但相對(duì)更好,不管高頻還是低頻部分,都比較接近。
- 定量對(duì)比結(jié)果
同時(shí)也做了定量的分析,例如 RMSE、STED 等指標(biāo),結(jié)果顯示明顯好于以前的方法,即使對(duì)于緊身衣服和傳統(tǒng)方法也相當(dāng)。
- RBF 消融實(shí)驗(yàn)
我們通過(guò) RBF 網(wǎng)絡(luò)做了一個(gè)消融實(shí)驗(yàn)來(lái)驗(yàn)證我們的方法。
7、未來(lái)展望和總結(jié)
在動(dòng)作非常大的情況下,模擬結(jié)果上的腿可能穿過(guò)衣服,這是因?yàn)榕鲎脖苊馐峭ㄟ^(guò)能量網(wǎng)絡(luò)加進(jìn)去的,以后也可以采用其他 skinning method 獲得更好的結(jié)果。
高精度人臉重建和動(dòng)畫(huà)在很多應(yīng)用中很重要,比如游戲、虛擬人、元宇宙,都需要實(shí)時(shí)的處理,也是一個(gè)很大的挑戰(zhàn)。另外服裝覆蓋了人體 80% 以上,也是數(shù)字人重要的組成部分。在圖形應(yīng)用中,近距離我們可能比較關(guān)注人臉,但距離稍微遠(yuǎn)一點(diǎn),我們更關(guān)注服裝。我覺(jué)得以后的發(fā)展方向是使用低成本方法構(gòu)建高度逼真、實(shí)時(shí)的數(shù)字人應(yīng)用。
四、問(wèn)答環(huán)節(jié)
Q1:如何保證虛擬骨骼的泛化性?
A1:虛擬骨骼是算出來(lái)的,換一套衣服需要重新生成新的骨骼,數(shù)目和變換也不一樣。在推理的時(shí)候是實(shí)時(shí)的計(jì)算出來(lái)的。
Q2:服裝的三維制作方便嗎?
A2:還是很方便的,之前沒(méi)學(xué)過(guò)的人經(jīng)過(guò)培訓(xùn)可以很快學(xué)會(huì)。即使從無(wú)到有設(shè)計(jì)一套衣服,可能一兩個(gè)小時(shí)就能設(shè)計(jì)一件很復(fù)雜的衣服。