今天小編分享的科學經驗:一張圖重建3D人物新思路:完美復刻復雜動作和寬松衣物,遮擋也不在話下,歡迎閲讀。
在計算機視覺領網域,我們用一張人像直接打造3D 數字人最大的挑戰是什麼?
或許就是兼顧穩定性和自由度。
也就是人物無論擺出多麼復雜的姿勢、所穿衣服有多寬松、飄逸或個性,我們都能将它全部逼真地重建為 3D 姿态。
像下面的例子,就很尴尬:
姿勢是夠穩,但衣服都缺塊了。
現在,來自CVPR ’ 23的一篇 Highlight 論文——《ECON: Explicit Clothed humans Optimized via Normal integration》,專門解決了這個問題。
它所用方法既能逼真重建各種復雜 pose,也能把衣服從整體版型到細節褶皺都完美復刻出來。
即使是帶遮擋的多人重建任務,也可放心地 " 包在它身上 "。
如何做到?
以下為投稿作者第一人稱角度自述。
既要姿态魯棒,又要拓撲靈活
在《CVPR 2022 | ICON: 提高三維數字人重建的姿勢水平》中( [ 1 ] 注:作者知乎專欄文章),我在 " 把我批判一番 " 段落,講了一下 ICON(注:作者去年得標 CVPR 的 3D 數字人重建算法)的問題,其中最突出的,就是 " 穩定性 vs 自由度 " 的左右兩難,魚和熊掌不可得兼。
這裏的魚,就是姿态穩定性 ( Pose Robustness ) ,這裏的熊掌,就是拓撲靈活度 ( Topological Flexibility ) 。
翻譯成大白話,就是 ICON 能在難的姿勢下較好地重建,但寬松的衣服就不行。
幾何先驗 ( SMPL Body ) 的引入固然帶來了姿态的穩定性,但卻有損拓撲的靈活度。
在同樣使用 SMPL 作為幾何先驗的其他工作中,比如 PaMIR ( [ 2 ] ) ,這個 tradeoff 也普遍存在。
夠穩定就不夠靈活,這不光是個問題,還是個非常令人尴尬的問題。
PIFu ( HD ) 的大火,導致整個領網域内大家紛紛開始卷 Implicit Function ( IF ) ,就是因為它能做到自由拓撲。
以前 mesh-based 方法揪不出來的衣服褶皺、頭發紋路、開衫夾克、寬松裙子等,上了 IF 就都能搞出來了。
而 ICON 雖然号稱比 PIFuHD 擁有更好的泛化性,但這僅僅體現在姿态上,卻以犧牲寬松衣服重建效果為代價,相當于忘記了 Clothed Human Reconstruction 這個問題的 " 初心 "。
因此,如何在不犧牲姿态穩定性的情況下,盡量保證靈活拓撲,就成為繞不過去的問題。
更具體,就是得想個轍,對 SMPL-X 取其精華去其糟粕," 潤物細無聲 " 地将它融入到整個重建過程中。
在這篇文章中,我們還提到了ICON 的另一個問題,那就是 " 幾何不如法向好 "。
因此,在 ICON 的開源代碼中,我們引入了一個後處理模塊 ( -loop_cloth ) ,對于 ICON 直出的 mesh,用從影像中估計的 normal 進行 " 二次抛光 ",這個沒寫在論文中,但實際效果還不錯,抛光後的 mesh 較 ICON 直出的結果,擁有了更加自然的褶皺細節面片拓撲也更規整。
當然,也額外多費一點時間。
△ 圖片 -normal estimate-ICON 直出 -ICON 抛光
但抛光僅僅就是抛光,它依舊不能解決拓撲的問題。
裙子裂了,再抛光也不過就是" 擁有更真實褶皺細節的、裂開的裙子 "。
可是 normal 看起來質量是真的好,那麼有沒有可能,讓法向圖 ( Normal map ) 來主導整個重建過程,而不僅僅用來做二次抛光呢?
之前的抛光," 主 " 是粗糙的幾何," 輔 " 是 normal。
如果主輔易位,normal 作為 " 主 ",而粗糙幾何 SMPL body 作為 " 輔 ",這個問題會不會有更好的解法?
這就是 ECON 的思維起點。
△ ICON vs ECON 先做衣服,再把人塞進去
上面這個想法讓人很自然聯想到 Normal Integration 這個技術路線,這是個挺古早的技術了,但本身是個 ill-posed problem,即如果:
normal map 有懸崖,即存在不連續區網域(discontinuity),這在關節幾何(articulated objects)中很常見:
1、懸崖落差未知,即 boundary condition 不明确;
2、normal map 本身又是有噪聲的;
3、那麼 normal 就很難通過優化過程,唯一确定 depth,換句話説,此時 normal 與 depth,是一對多的關系。
但我們知道,人體是一個有很強先驗信息的 articulated object。
比如上面思考者,盡管雙腿之間的距離是未知的,但如果被拉的過遠,也是不符合人體結構的,所以如果可以将人體先驗,即 SMPL-X depth,作為一個幾何軟約束 ( soft geometric constrain ) ,加入到整個 Normal Integration 的優化方程中。那麼不光懸崖落差有了一個大致的初始值,normal 中的噪聲也被約束住了,避免因 normal noise 幹擾整個積分過程,導致表面突刺 ( artifacts ) 。
同時,對于在 normal map 上連續,但 SMPL-X depth 上不連續的區網域,比如兩腿中間的裙子(有 normal 覆蓋,沒 SMPL-X depth 覆蓋),可以僅在 normal 上積分的同時,盡量與 nearby surface 保持連貫性。這就是文章中提到的 d-BiNI ( depth-aware BiNI ( [ 3 ] ) ) 。
整個優化過程,有一個更形象的解釋——把裸體模特 ( SMPL-X body ) 慢慢地塞進一套做好的衣服 ( Normal map ) 中,把衣服撐起來。
好了,現在正反兩面的衣服已經被人體 " 撐起來 " 了,這個時候我們會注意到,正反兩面的間隙,尤其是側面,有縫,這就好比旗袍開叉開到了嘎吱窩。所以接下來我們要做的,就是補全這個裂縫。
在 ECON 中,我們提供了兩種補全策略,一種是用類似 IF-Nets 的思路(如下圖),輸入 SMPL-X body 和 d-BiNI 優化出來的正反面,implicitly 做幾何補全,稱為 IF-Nets+,其結果我們标記為 ECONIF。
△ IF-Nets+
另一種策略則不需要 data-driven 地去學這種補全策略,而是直接 register SMPL-X body into front&back surfaces,其結果我們标記為 ECONEX。
換言之,就是将 SMPL-X 直接進行顯式形變 ( explicit deformation ) ,直到其與 d-BiNI 優化出來的正反面完全重合。這種方法扔掉了 DL 模塊,整個 pipeline 更幹淨,但缺乏補全未知區網域的 " 想象力 "。
正反面完整時,一切正常,但遇到遮擋(下圖 234),優化出來的正反面本身就會有缺陷,因此形變後的 ECONEX 結果,遮擋邊界處幾何不連貫,遮擋處則顯得 " 赤裸裸 "。
△ Implicit completion vs. Explicit Completion
如果輸入圖片沒有遮擋,我比較推薦 explicit 的策略 ( use_ifnet: False ) ,因為快且穩定,而如果有遮擋,就不得不上 IF-Nets+ ( use_ifnet: True ) 。
另外,幾何補全 ( shape completion ) 本身就是一個研究課題,這塊不是我的專長,ECON 僅提供了兩種比較直覺的補全思路,大家如果有更優雅的解決,可以在評論區留言或者 pull request。
△ Overview of ECON
以上就是 ECON 的完整思路了,三步走,一個 normal estimation,咳~,一個 normal integration,一個 shape completion,訓練有素,simple yet effective,既沒有引入新的網絡設計,也沒有增加訓練數據,連 normal estimator 都是從 ICON 繼承過來的。
如果説 ICON 是将 feature encoder 簡化為七維度的手工特征,ECON 就是将 encoder + implicit regressor 合并為一個 explicit optimizer,這樣問題本身,就從 data-driven learning,轉化為一個純優化問題。
從此我們只需要關注用什麼方法可以拿到更好的 normal map,就可以了。
"Make everything as simple as possible, but not simpler." —— Albert Einstein.
不同于 implicit-based methods, ECONEX 沒有任何 implicit 模塊,這也是标題的立意,單目穿衣人重建這個問題,不是非要上 implicit 才能保住細節,explicit 也可以的,一個數字人,顯式隐式各自表述。
而且 ECON 的三明治結構,也适用于通用物體,比如去年 3DV Best Paper Honourable Mention,Any-shot GIN ( [ 4 ] ) ,大同小異。
這種三明治設計簡化了重建,正反面搞定了,九成的物體幾何信息就有了,留給補全模塊的工作量就小很多。同時,補全能 " 填縫 ",也能應對大面積遮擋,所以 ECON 天然地可以處理多人遮擋場景。
同時,由于優化還是基于 SMPL-X 幾何先驗,所以 ECON 的結果,已經内嵌了一個嚴絲和縫的 SMPL-X 參數化模型,所以接下來,無論是要做皮膚裸露部位(手,臉)的替換,還是做驅動動畫,都很容易。
△ 對裸露部分,比如臉和手,可以直接用 SMPL-X 替換
這裏我和李傑鋒同學一起合作搞了一個 demo,先用 HybrIK-X ( [ 5 ] ) 從視頻中做視覺動捕,得到的動作序列,直接驅動 ECON 的重建。
不夠完美,有些 jitter,還有 global trans 不準确導致的地板穿模問題,同時,紋理只有正面,因為看起來很别扭,我就把紋理全扔掉了,但這個問題肯定是要解決的,先開個坑,之後搞定了會過來填。
不完美之處
ECON 也有一些問題,比如:
A. SMPL-X 對于直立站姿的預測結果往往會屈腿,這會 " 帶壞 "ECON 的重建
B. SMPL-X 的手腕旋轉如果預測錯誤,直接替換就會出現圖示的 stitching artifacts
D. 極端寬松的衣服下,目前 normal 預估的質量無法保證,伴随着 ECON 的重建也會有破洞
至于 C,人體和衣服之間往往是有距離的,而 ECON 的優化過程,目前沒有考慮衣服的緊合度 tightness(具體實現中,我們手工設定了 thickness=2cm),導致在一些極端的情況下,人會看起來扁扁的,這個問題,或許可以通過額外預測 tightness,并将其引入到 d-BiNI 優化過程中來解決。
△ Failure cases
盡管有以上各種問題,(但個人認為),ECON 依舊是目前為止,泛化性最好的,單圖穿衣人重建算法,我們在 AMT 上花了六百歐做了上千組 perception study,最後的結論是——除了在 fashion images 上和 PIFuHD 打了個平手,其他所有的 hard cases,challenging poses or loose clothing,ECON 的重建質量一騎絕塵。
而 fashion images 上打平手的主要原因,主要還是因為這個屈腿的問題,所以,只要 SMPL-X estimate 可以解決掉屈腿的問題(比如像 BEDLAM ( [ 6 ] ) 那樣造 synthetic data,然後用 perfect SMPL-X gt 而不是 pseudo SMPL-X gt 做訓練),那麼 ECON 就是六邊形戰士,單目穿衣人重建界的馬龍(只要限定詞足夠多,就沒人可以打敗我)。
ECON paves the path towards large-scale human digitization from internet data
最後,多虧了開源社區小夥伴的幫助,ECON 提供了全家桶。
Windows Ubuntu 都支持,Google Colab, HuggingFace Demo,Docker Image 一應俱全,除此之外,我們還支持了 Blender 插件。
所以,無論你是 reseacher,engineer,artist/animator,還是只想嘗鮮不想配環境的吃瓜群眾,只要你想用,總有一款适合你。
後續有興趣讨論的,可以 Github 上提 issue,或者加入我們的 Discord 讨論組 ( Avatarizer ) 。
祝大家使用愉快。
One More Thing
附作者攜 ECON 參加 China3DV 會議時做的一個宣傳視頻,魔改了《讓子彈飛》中的片段,也是相當有趣~
論文地址:
https://arxiv.org/abs/2212.07422
項目主頁:
https://xiuyuliang.cn/econ/
參考鏈接:
[ 1 ] ICON: https://zhuanlan.zhihu.com/p/477379718
[ 2 ] PaMIR: Parametric Model-conditioned Implicit Representation for image-based human reconstruction ( T-PAMIR ’ 21 ) https://github.com/ZhengZerong/PaMIR
[ 3 ] Bilateral Normal Integration ( ECCV ’ 22 ) https://github.com/xucao-42/bilateral_normal_integration
[ 4 ] Any-Shot GIN: Generalizing Implicit Networks for Reconstructing Novel Classes ( 3DV ’ 22 ) https://virtualhumans.mpi-inf.mpg.de/gin/
[ 5 ] HybrIK-X: Hybrid Analytical-Neural Inverse Kinematics for Whole-body Mesh Recovery ( arXiv ’ 23 ) https://jeffli.site/HybrIK-X/
[ 6 ] BEDLAM: A Synthetic Dataset of Bodies Exhibiting Detailed Lifelike Animated Motion ( CVPR ’ 23, Highlight ) https://bedlam.is.tue.mpg.de/