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