馬普所開源ICON,顯著提高單張影像重建三維數字人的姿勢水平 | CVPR 2022

機器之心發表於2022-03-15
馬普所開源ICON,顯著提高單張影像重建三維數字人的姿勢水平 | CVPR 2022
  • 論文地址:https://readpaper.com/paper/4569785684533977089

  • GitHub 地址:https://github.com/YuliangXiu/ICON

  • Colab 地址:https://colab.research.google.com/drive/1-AWeWhPvCTBX0KfMtgtMk10uPU05ihoA?usp=sharing

  • 主頁地址:https://icon.is.tue.mpg.de/

現有三維數字人姿態重建方法的不足

首先,明確 ICON 的任務:給一張彩色圖片,將二維紙片人,還原成擁有豐富幾何細節的三維數字人

圍繞這一任務,之前有許多基於顯式表達的方法 (expliclit representation: mesh[2]、voxels[3]、depth map & point cloud[4], etc)。但直到三年前 PIFu (ICCV’19)[5] 第一個把隱式表達 (implicit representation) 用到這個問題,衣服的幾何細節才終於好到 —— 藝術家願意扔到 Blender 裡面玩一玩的地步。但 PIFu 有兩個嚴重的缺陷:速度慢和姿勢魯棒性差

我們在 MonoPort (ECCV’20)[6] 中一定程度上解決了「速度慢」這個問題,整個推理到渲染加一塊,用普通顯示卡可以做到 15FPS 的速度。後來我們把重建和 AR 做了一個結合,用 iPad 陀螺儀控制渲染的相機位姿,最後有幸獲得 SIGGRAPH Real-Time Live 的 Best Show Award。

但是「姿態魯棒性」一直沒有得到很好的解決。PIFuHD[7] 將 PIFu 做到了 4K 圖片上,把數字人的幾何細節又提了一個檔次,但還是隻能在站立 / 時裝姿勢 (fashion pose) 下得到滿意的結果。ARCH[8] 以及 ARCH++ [9] 嘗試把問題從姿態空間(pose space)轉換到標準空間(canonical space, 把人擺成「大」字)來解決。但這種轉換,首先很依賴於姿態估計 (HPS) 的準確性,其次由於轉換依賴於 SMPL 自帶的蒙皮骨骼權重(skinning weights),這個權重是寫死的且定義在裸體上,強行用到穿衣服的人上,由動作帶動的衣服褶皺細節就不那麼自然。

另外一個思路,就是加幾何先驗 (geometric prior)。通俗點說,就是我給你一個粗糙的人體幾何,然後根據影像資訊,來雕琢出來一個細緻的人體幾何。GeoPIFu (+estimated voxel)[10]、PaMIR (+voxelized SMPL)[11]、S3 (+lidar)[12] 都有做嘗試。我嘗試過直接把準確的幾何先驗 (groundtruth SMPL) 灌給 PaMIR,但 PaMIR 依舊不能在訓練集中沒見過的姿態上(比如舞蹈、運動、功夫、跑酷等)重建出滿意的結果。

馬普所開源ICON,顯著提高單張影像重建三維數字人的姿勢水平 | CVPR 2022

提高姿勢水平的重要性

提高姿勢水平是為了徹底打通基於影像的重建(image-based reconstruction)和基於掃描的建模(scan-based modeling)。

隨著 NASA[13]、SCANimate[14]、SNARF[15]、MetaAvatar[16]、Neural-GIF[17] 等一系列工作爆發,如何從動態的三維人體掃描 (3D human scan sequences / 4D scans) 中學出來一個可以被驅動的、用神經網路表達的數字人 (animatable neural avatar) 漸漸成為一個研究熱點。而高質量的動態人體掃描的獲得,費錢費人工,導致普通使用者或者沒有多視角採集裝置的團隊,很難進入這個領域。

馬普所開源ICON,顯著提高單張影像重建三維數字人的姿勢水平 | CVPR 2022

圖左為 4D 掃描裝置(MPI),圖右 Light Stage(USC-ICT)。


問題來了,有沒有可能扔掉昂貴且費時費力的掃描流程,用 PIFu 從影片中做逐幀重建(Images to Meshes),然馬普所開源ICON,顯著提高單張影像重建三維數字人的姿勢水平 | CVPR 2022後把重建結果直接扔給 SCANimate 做建模呢(Meshes to Avatar)呢?

在理論上當然是可以的,但是現實卻很骨感。癥結在於,現有的重建演算法,都沒有辦法在很多樣的姿態下保持重建的穩定性。

但是,數量足夠多且姿勢各異的三維人體卻是 SCANimate 構建高質量可驅動數字人的必要前提!這個不難理解 —— 要讓一個數字人無論怎麼動彈,衣服褲子的褶皺都很真實,如果用資料驅動的思路去做,那麼網路得先「看過足夠多」類似動作下衣服的形變,才能準確摸索出衣服形變與動作姿勢之間的關聯。

總而言之,真要把 Images-Meshes-Avatar 這條路走通,非提高姿勢水平不可。
馬普所開源ICON,顯著提高單張影像重建三維數字人的姿勢水平 | CVPR 2022

提高姿勢水平從哪些方面入手

ICON 在思路上借鑑了很多相關工作,比如 PIFuHD 裡面的法向圖(Normal Image),並和 PaMIR 一樣都用了 SMPL body 做幾何空間約束。這兩個資訊都是不可或缺的:SMPL body 提供了一個粗糙的人體幾何,而法向圖則包含了豐富的衣服褶皺細節,一粗一細,相得益彰。

馬普所開源ICON,顯著提高單張影像重建三維數字人的姿勢水平 | CVPR 2022

RGB Image - Normal Image (Body) - Normal Image (Clothed Human)

然後,問題就來了:
  • 怎麼從影像中提取出準確且細緻的 normal image?

  • 直接從影像中預測的 SMPL body 如果不準確該怎麼辦?

  • SMPL body 這個幾何約束,該怎麼用?

它們並不是三個獨立的問題,而是高度相關的。
  1. SMPL 輔助 normal 預測。pix2pix 地從 RGB 猜 normal,要在不同姿態上做到足夠泛化,就需要灌進去大量的訓練資料。但是,既然 SMPL body 已經提供了粗糙的人體幾何,這個幾何也可以渲染成 body normal 的形式,那麼如果我們把這個 body normal 和 RGB 合併一下,一塊扔進網路作為輸入, pix2pix 的問題就可以轉化為一個新問題:用 RGB 的細節資訊對粗糙的 body normal 進行形變(wraping)和雕琢(carving)最後獲得 clothed normal。而這個問題的解決,可以不依賴於大量訓練資料;

  2. normal 幫助最佳化 SMPL。既然 clothed normal 可以從影像中攫取到 SMPL body 沒有的幾何細節,那麼有沒有可能用這些資訊去反過來最佳化 SMPL body ?這樣,SMPL body 和 clothed normal 就可以相互裨益迭代最佳化,body mesh 準了,normal image 就對;normal image 對了,反過來還可以進一步最佳化 body mesh。1+1>2,實現雙贏;

  3. 捨棄 global encoder。最後,SMPL body 和 clothed normal 都有了,即人大致的體型和衣服幾何細節都有了,我們真的需要像 S3、PaMIR、GeoPIFu 那樣,使用一個巨大的全域性卷積神經網路(2D/3D global CNN)來提特徵,然後用 Implicit MLP 雕琢出穿衣人的精細外形嗎?ICON 的答案是:不需要,SDF is all you need。

效果圖

有了 SMPL body(左邊,w/ Prior)的加持,clothed normal 預測更準確。
馬普所開源ICON,顯著提高單張影像重建三維數字人的姿勢水平 | CVPR 2022

讓 clothed normal 來最佳化 SMPL(第二列),同時更好的 SMPL 也提升了 clothed normal 的質量(第三列)。

馬普所開源ICON,顯著提高單張影像重建三維數字人的姿勢水平 | CVPR 2022

下面這張圖展示了 ICON 整體處理 pipeline。先從影像中預測 SMPL body,渲染出正反 body normal,與原始影像合併起來,過一個法向預測網路,出正反 clothed normal。然後對於三維空間中的點,clothed normal 取三維,body normal 上取三維(注意,這裡是從 SMPL mesh 上用最近鄰取的,而不是從 body normal image 中取的),SDF 取一維,一共七維,直接扔進 implict MLP,Marching Cube 取一下 0.5 level-set 等值面。
馬普所開源ICON,顯著提高單張影像重建三維數字人的姿勢水平 | CVPR 2022
量化指標這裡就不放了。為了確保比較的絕對公平,我除了用原作者放的模型在測試集上跑了結果,還在 ICON 的框架內重新復現了 PIFu、PaMIR。此外,我確保除了方法本身的差異,其他部分(訓練資料、最佳化策略、網路結構)都保持一致,不引入干擾變數。實驗結論顯示,ICON 是 SOTA,在離譜的姿勢下優勢明顯,訓起來省資料。SMPL 不準的時候,加上迭代最佳化那個模組,甚至要比 PaMIR 直接在精準 SMPL 上的結果還要好。

現在放出來的程式碼只包括測試程式碼,但完整的訓練程式碼已經在路上。ICON 包括了 PIFu、PaMIR 以及 ICON 各種變種的測試 + 訓練程式碼,而且使用了 PyTorch-Lightning 框架做程式碼規範。這樣以後大家要用自己的資料在 ICON、PIFu 和 PaMIR 上做訓練和測試,只需要基於 ICON 調整就行。
馬普所開源ICON,顯著提高單張影像重建三維數字人的姿勢水平 | CVPR 2022
下面這張圖證明了 ICON 的一個特別突出的優勢,就是省錢。畢竟 RenderPeople 一個就幾百塊人民幣,實在離譜。僅僅給 1/8 的訓練資料(50 個 3D human scan),ICON 重建的質量就可以超過用接近 4000 個訓練資料訓出來的 PIFu,也超過了用 450 個資料訓出來的 PaMIR。作為一個捨棄了 global CNN 的極其 local 的模型,ICON 對訓練資料量確實不敏感。而恰恰就是這種鈍感,對於提高三維人重建的姿勢水平至關重要。
馬普所開源ICON,顯著提高單張影像重建三維數字人的姿勢水平 | CVPR 2022
為了充分測試 ICON 在非常難的姿勢上是什麼水平,我從 pinterest 上找了一些動作非常離譜的圖片,武術、跑酷、舞蹈以及體育等等。總之,這些動作從未出現在訓練集中,也不可能成為訓練集(動作轉瞬即逝,沒法穩定住用儀器進行掃描捕捉)。但結果是令人欣慰的,儘管不完美,但至少還是個人形。
馬普所開源ICON,顯著提高單張影像重建三維數字人的姿勢水平 | CVPR 2022

馬普所開源ICON,顯著提高單張影像重建三維數字人的姿勢水平 | CVPR 2022

最後,我們按照之前計劃的,把 Images-Meshes-Avatar 的流程跑了一下,結果還不錯。

馬普所開源ICON,顯著提高單張影像重建三維數字人的姿勢水平 | CVPR 2022

ICON 並不完美

ICON 確實可以提高姿勢水平,但不是盡善盡美。接下來聊聊 ICON 的劣勢。

其實原論文及補充材料中對「壞結果」的分析和呈現 (Fig.7 和 Fig.18),已然不怎麼遮掩了。雖然 ICON 在量化指標上實現了 SOTA,但對本領域相關研究者而言,「壞結果」往往比「好結果」更能揭示方法的原理和本質。

馬普所開源ICON,顯著提高單張影像重建三維數字人的姿勢水平 | CVPR 2022

ICON 現有的問題主要集中在以下幾點:
  1. 魚和熊掌不可得兼。SMPL prior 帶來了穩定性,但也破壞了 implicit function 原有的優勢 —— 幾何表達的自由性。因此,對於那些離裸體比較遠的部分,比如兩腿之間的裙子、隨風飛揚的外套,就「掛」了。而這些部分,最原始的 PIFu 不見的做的比 ICON 差,畢竟 PIFu 是沒有引入任何幾何先驗的。總之,穩定性 vs 自由度,是一個 tradeoff;

  2. 。SMPL-normal 迭代最佳化的設計思路,導致單張圖要跑 20s 才能出來不錯的結果,實時性大大折扣;

  3. 效能天花板受制於 HPS。重建結果受 SMPL 準確性影響極大,SMPL-Normal 的迭代最佳化,並不能徹底解決嚴重的姿勢估計錯誤。ICON 現在支援 PyMAF[18]、PARE[19] 以及 PIXIE[20] 三種 HPS,PARE 對遮擋好一些。PIXIE 手和臉準一些,PyMAF 最穩定,但依舊對一些很難的 case 束手無策。所以,儘管 HPS 已經做得很多了,圍繞各種 corner case 每年能出數百篇論文,但我們依然不能說這個問題解決了,也不能說這個問題沒有價值了。至少,對於 ICON 而言,HPS 的準確度是一切的基礎,HPS 掛了,再怎麼迭代最佳化也沒用;

  4. 幾何比法向差。clothed normal 的質量與最終重建的人體幾何質量之間有 gap。normal 明明看起來很好,但 geometry 的質量就打了折扣。理論上,重建人體渲染出來的 normal image 和網路預測出來的 clothed normal 不應該有那麼大差距。這塊我還在 debug,希望下一個版本可以修復。

馬普所開源ICON,顯著提高單張影像重建三維數字人的姿勢水平 | CVPR 2022

未來改進方向

基於 ICON,接下來還可以在以下幾個方向進行改進:
  • ICON++,進一步提升 ICON 的重建質量,更快更細節更穩定更泛化更通用;

  • 把 ICON 用到別的任務中,比如做動物姿態,比如用 ICON 做個資料集,基於資料集建個生成模型

  • Wildvideo-ICON、Multiview-ICON 和 Multiperson-ICON;

  • 扔掉 3D supervision、非監督、自監督,以及訓練正規化的改進,比如 E2E-ICON。

如果有同學對這些方向有興趣,我非常歡迎各種形式的合作(yuliang.xiu@tuebingen.mpg.de)。

Google Colab 支援上傳並測試你自己的圖片,最後會生成類似下圖這樣的重建影片,你可以將影片上傳到 twitter 並打上#ICON的標籤,@yuliangxiu,無論結果是好是壞,我都會轉發,對於重建任務,cherry picks 和 failure cases 都是演算法的一部分,好的爛的都放出來,才是一次完整的作品呈現,期待大家奇形怪狀的重建結果。另外,Readpaper 這個產品非常吼,大家如果有關於ICON的問題,可以直接在Readpaper上提問:https://readpaper.com/paper/4569785684533977089。

馬普所開源ICON,顯著提高單張影像重建三維數字人的姿勢水平 | CVPR 2022

Image - Normal Estimation - Reconstructed Mesh (w/o smooth, w/ smooth)

知乎原文:https://zhuanlan.zhihu.com/p/477379718

相關文章