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