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