GauHuman開源:基于Gaussian Splatting,高質(zhì)量3D人體快速重建和實(shí)時(shí)渲染框架
- 論文名稱:GauHuman: Articulated Gaussian Splatting from Monocular Human Videos
- 論文下載地址:https://arxiv.org/abs/2312.02973
- 項(xiàng)目主頁:https://skhu101.github.io/GauHuman
- 代碼開源:https://github.com/skhu101/GauHuman
背景
3D 數(shù)字人重建對(duì)于一系列應(yīng)用場(chǎng)景,比如虛擬現(xiàn)實(shí)和輔助現(xiàn)實(shí),有著非常大潛在性的影響。基于人體神經(jīng)輻射場(chǎng),現(xiàn)有方法可以從 sparse-view 的視頻甚至單張圖片中恢復(fù)出 3D 數(shù)字人。然而這些方法往往需要昂貴的計(jì)算時(shí)間(高達(dá) 10 小時(shí))和資源去完成訓(xùn)練和渲染,極大限制了他們?cè)诂F(xiàn)實(shí)場(chǎng)景中的應(yīng)用。為了加速建模過程,可泛化三維人體建模方法采用預(yù)訓(xùn)練加微調(diào)(pretrain-finetune)的范式。這類方法通常需要幾個(gè)小時(shí)的預(yù)訓(xùn)練去獲取可泛化的 3D 人體表征,再對(duì)每一個(gè) 3D 數(shù)字人額外微調(diào)一個(gè)小時(shí)完成建模。由于這類方法依賴的輸入圖片只能提供有限的信息,3D 人體重建的質(zhì)量還有待提升。另一類研究針對(duì)人體建模引入更加高效的 3D 人體表征,比如多精度的哈希表征(multi-resolution hash encoding)或者 neural volumetric primitives。多精度的哈希表征提升了訓(xùn)練收斂速度,但渲染速度限制了他們的實(shí)際應(yīng)用;neural volumetric primitives 提升了渲染速度,但訓(xùn)練速度和最終渲染質(zhì)量還有提升的空間。得益于 Gaussian Splatting 在靜態(tài)和動(dòng)態(tài)場(chǎng)景中的實(shí)時(shí)渲染特性,本方法針對(duì)單目人體視頻提出基于 Gaussian Splatting 的快速訓(xùn)練(1~2 分鐘)和實(shí)時(shí)渲染(高達(dá) 189 幀每秒)的 3D 人體建模框架。
圖2 基于一段單目人體視頻,GauHuman可以快速訓(xùn)練(1~2分鐘)和實(shí)時(shí)渲染(高達(dá)189幀每秒)高質(zhì)量的3D人體。
基本原理
利用 Gaussian Splatting 對(duì)單目人體視頻中的 articulated 3D 人體進(jìn)行建模,我們需要解決兩個(gè)難點(diǎn)問題:1)如何將單目人體視頻中的 articulated 3D 人體信息引入 Gaussian Splatting 的框架;2)如何實(shí)現(xiàn)高效優(yōu)化 articulated Gaussian Splatting。針對(duì)以上的問題,一個(gè)比較容易想到的方案是利用 Gaussian Splatting 對(duì)標(biāo)準(zhǔn)空間(canonical space)下的 3D 人體進(jìn)行建模,并利用線性蒙皮算法(Linear Blend Skinning, LBS)將 3D 高斯球從標(biāo)準(zhǔn)空間轉(zhuǎn)換到目標(biāo)空間,從而渲染得到目標(biāo)空間下的圖像并構(gòu)建損失函數(shù)。以上方案存在的一個(gè)問題是線性蒙皮算法定義的是3D人體頂點(diǎn)(vertex)的旋轉(zhuǎn)和偏移,如何從人體先驗(yàn)比如SMPL中不準(zhǔn)確的LBS系數(shù)和姿態(tài)(pose)信息中去學(xué)習(xí)標(biāo)準(zhǔn)空間中3D高斯球的旋轉(zhuǎn)和偏移仍是一個(gè)難點(diǎn)問題。此外,現(xiàn)有的 Gaussian Splatting 方法利用 Structure-from-Motion(SFM)或隨機(jī)初始化產(chǎn)生的點(diǎn)云去初始化 3D 高斯球的中心坐標(biāo)。這一初始化方式主要是針對(duì)靜態(tài)場(chǎng)景設(shè)計(jì),忽略了人體的結(jié)構(gòu)信息,不適用于快速人體建模。針對(duì)建模過程中出現(xiàn)的 over-reconstruction 和 under-reconstruction 現(xiàn)象,Gaussian Splatting 論文提出分裂(split)和克隆(clone)的操作來動(dòng)態(tài)控制 3D 高斯球的數(shù)目。盡管以上操作可以顯著提升重建的質(zhì)量,它也產(chǎn)生了大量數(shù)目的 3D 高斯球,限制了優(yōu)化的效率并占用了大量的硬盤空間(比如對(duì)一個(gè)靜態(tài)場(chǎng)景需要 734MB 的存儲(chǔ)空間)。另一個(gè)值得關(guān)注的點(diǎn)是,現(xiàn)有的Gaussian Splatting框架包含了大量冗余的3D高斯球,留給了我們進(jìn)一步提升優(yōu)化效率的空間。
針對(duì)以上提到的一些難點(diǎn)問題,我們從建模框架和快速優(yōu)化算法兩個(gè)方面去考慮解決。【將單目人體視頻中的 articulated 3D 人體信息引入 Gaussian Splatting 的框架】受到之前人體神經(jīng)輻射場(chǎng)(Human NeRF)的啟發(fā),我們利用 Gaussian Splatting 對(duì)標(biāo)準(zhǔn)空間(canonical space)下的 3D 人體進(jìn)行建模,并將 3D 高斯球從標(biāo)準(zhǔn)空間轉(zhuǎn)換到目標(biāo)空間。基于高斯函數(shù)的變換性質(zhì),我們可以通過 LBS 算法將 3D 高斯球從標(biāo)準(zhǔn)空間旋轉(zhuǎn)和偏移變換到目標(biāo)空間。以上變換涉及到如何估 LBS 系數(shù)的問題,直接用神經(jīng)網(wǎng)絡(luò)來估計(jì) LBS 系數(shù)往往需要很長(zhǎng)時(shí)間的優(yōu)化,最后渲染得到的效果也是差強(qiáng)人意。為了快速得到較為準(zhǔn)確的 LBS 系數(shù),我們 1)基于 SMPL 的 LBS 系數(shù),并利用神經(jīng)網(wǎng)絡(luò)來提供一個(gè)偏置值;2)對(duì)人體的姿態(tài)(pose)信息基于訓(xùn)練數(shù)據(jù)進(jìn)行糾正。當(dāng)渲染一張 1024p 的圖片時(shí),以上建模框只需要對(duì)有限數(shù)目(比如 13k)的 3D 高斯球進(jìn)行滾雪球處理,然而之前的人體神經(jīng)輻射場(chǎng)需要對(duì)整個(gè) 3D 空間內(nèi)百萬級(jí)的采樣點(diǎn)就行體渲染操作。這極大降低了在訓(xùn)練和渲染中的計(jì)算資源耗費(fèi)。【高效優(yōu)化 articulated Gaussian Splatting】1)3D 高斯球初始化。我們利用 3D 人體先驗(yàn)比如 SMPL 對(duì) 3D 高斯球進(jìn)行初始化,極大提升了優(yōu)化的效率。2)分裂/克隆/合并。通過實(shí)驗(yàn)分析,我們發(fā)現(xiàn)分裂和克隆操作忽略了將3D高絲球之間距離作為度量指標(biāo)。基于以上分析,我們引入3D高絲球的Kullback-Leibler (KL)散度去約束分裂和克隆操作。對(duì)于大量冗余的3D高斯球,我們提出了一個(gè)合并操作去有效減小這部分3D高斯球。3)剪枝。考慮到 3D 人體有著特定的結(jié)構(gòu),我們將遠(yuǎn)離 3D 人體的 3D 高斯球進(jìn)行剪枝操作。基于以上的快速優(yōu)化算法,我們可以用大約 13k 的 3D 高斯球(大約占用 3.5MB 的硬盤空間)在一到兩分鐘內(nèi)完成對(duì) 3D 人體的建模。
圖3 GauHuman框架原理圖。GauHuman首先基于人體先驗(yàn)SMPL去初始化3D高斯球位置,緊接著基于LBS系數(shù)偏差和人體姿態(tài)糾正模塊去學(xué)習(xí)3D高斯球從標(biāo)準(zhǔn)空間轉(zhuǎn)換到目標(biāo)空間的轉(zhuǎn)換矩陣。在后續(xù)優(yōu)化過程中,GauHuman基于tile的可微分渲染器去快速渲染圖片,并利用人體先驗(yàn)和KL散度去約束分裂,克隆,合并和剪枝操作,以達(dá)到有效控制3D高斯球數(shù)目的目的。
結(jié)果比較
本文在ZJU_MoCap和MonoCap兩個(gè)單目人體數(shù)據(jù)集上進(jìn)行了實(shí)驗(yàn)。該研究對(duì)比了對(duì)比了多個(gè)先進(jìn)的3D人體重建方法:NB,AN, AS, HumanNeRF, DVA, InstantNVR, InstantAvatar, PixelNeRF和NHP,并在peak signal-to-noise ratio (PSNR),structural similarity index (SSIM),以及Learned Perceptual Image Patch Similarity (LPIPS)指標(biāo)上進(jìn)行了比較。如下圖所示,GauHuman可以快速重建(1~2分鐘)和實(shí)時(shí)渲染(高達(dá)189幀每秒) 3D人體,并在性能指標(biāo)上超越了之前的方案。
應(yīng)用前景
在游戲電影制作,虛擬現(xiàn)實(shí)增強(qiáng)現(xiàn)實(shí)或者其他需要數(shù)字人建模的場(chǎng)景,用戶可通過輸入一段單目人體視頻,以及該角度下相機(jī)的參數(shù)和相應(yīng)的人體動(dòng)作體形參數(shù)(SMPL),就可以達(dá)到重建該 3D 數(shù)字人的目的。
結(jié)語
本文提出一種基于 Gaussian Splatting 的高質(zhì)量 3D 人體快速重建 (1~2 分鐘) 和實(shí)時(shí)渲染 (高達(dá) 189 幀每秒) 框架 GauHuman。可以承認(rèn)的是,本文依然存在一定的缺陷。首先,如何從 3D 高斯中提取人體 mesh 還有待進(jìn)一步研究。其次,從單目人體視頻中恢復(fù) 3D 人體細(xì)節(jié),比如說衣服皺褶,依舊是一個(gè)很難的問題。一個(gè)可行的方案是在 3D 人體重建中引入衣物物理仿真模型。最后,我們的代碼已經(jīng)全部開源,歡迎大家下載玩耍!