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