現有的單視角三維物體重建方法透過採用不同的幾何形狀表達方式取得了不同程度的成功,但它們都難以重建出拓撲複雜的物體形狀。為此,華南理工大學,香港中文大學(深圳)以及微軟亞研院聯合提出一種以骨架(meso-skeleton)為橋梁融合多種形狀表達方式優點的深度學習演演算法,非常有效地解決了這一難題。
為了能夠準確地抓住物體的拓撲結構,本文引入了骨架做為橋梁,因其具有保護拓撲而又易於學習的優點。為了能夠從圖片中準確地推斷出對應物體的骨架,他們設計了一個全新的骨架合成網路架構,利用平行雙分支結構分別合成曲線狀和曲面狀骨架。
同時,他們採用了分階段學習的方式以融合多種形狀表達方式(體素,點雲,三角網格)各自的優點。影象的多階段層級利用有助於減小各階段學習時累計的預測誤差。實驗結果表明,這一方法在定量和視覺化對比均優於現有的重建方法。這項工作受到會議評審者的一致好評,三位評審者均給出了強烈接(Strong Accept)的意見,已收錄為 CVPR 2019 Oral 論文。
Introduction
從單張圖片恢復出三維物體形狀這一研究課題在許多應用中扮演著重要的角色,例如增加現實,影象編輯。但是由於物體的拓撲結構複雜多變,這一課題也頗具挑戰性。目前,基於體素表達的方法受限於三維摺積網路計算和記憶體的限制而難以得到高解析度的輸出。基於點雲表達的方法又很難生成平滑而又乾凈的錶面。
三角網格表達對物體形狀提供了一種更有效,更自然的離散化逼近方式。最近的一些方法嘗試直接從輸入影象中恢復物體的網格表達。這些方法本質上是在對一個給定拓撲連線關係的初始網格變形,比較有代表性的初始網格有單位平面,球。儘管它們有一定的效果,但是仍然難以恢復具有複雜拓撲結構的物體錶面,例如圖 1 所表示的具有細長的桿的椅子。
▲ 圖1. 本文提出的方法能從單視角影象中重建完整的三維物體,而且能正確地恢復拓撲
因此,本文提出了一種基於骨架表達的分階段學習方法,來實現從單張圖片恢復物體錶面網格表達,對於重構桌子椅子這些具有細長結構的物體效果尤為顯著。他們引入了骨架,因其能很好地保護拓撲,而且相比於複雜的錶面更易於學習。
他們的方法具體分為以下三個階段:
第一階段是從輸入影象中學習生成骨架點雲。為此他們設計了平行的雙分支網路架構,被命名為 CurSkeNet 和 SurSkeNet,分別用於曲線狀和曲面狀骨架點雲的合成。為了 CurSkeNet 和 SurSkeNet 的訓練,他們針對 ShapeNet 的物體模型處理了骨架資料集來當做 ground truth 用於訓練。
在第二個階段,他們透過將合成的骨架點雲體素化,然後用三維摺積網路對粗糙的骨架體素進行修複提取出一個初始網格。此處為了減小高畫質體素輸出時的網路複雜度,採取了用全域性結構引導分塊體素修複的方式。
最後一個階段使用圖摺積神經網路來對前面獲得的初始網格進行變形以得到最後錶面網格表達。
Approach
▲ 圖2. 演演算法流程圖總覽
Overview
圖 2 展示了他們方法的整個流程圖。輸入物體的單視角影象 I , 本文的標的是重構出網格表達的完整物體形狀,同時能正確地抓住三維物體的拓撲結構。為瞭解決這一難題,本文基於骨架表達,提出了以下分三個階段的物體重構過程。
在第一階段,他們採用編碼器-解碼器的網路結構從輸入圖片 I 學習出對應的骨架 K,它本質上是一個更簡潔緊湊的點雲表達。
在第二個階段,他們把獲得的骨架 K 先轉成一個粗糙的體素表達的 Vk,然後用三維摺積神經網路對其進行修複,得到一個更精細化的體素 V。
在最後一個階段,他們先從體素 M 中提取出一個粗糙的初始網格 Mb,然後再用圖神經網路對網格的頂點位置進一步最佳化,得到最後的輸出網格 M。每個階段都有一個影象編碼器來提取所各自需要的資訊,因此輸入圖片 I 引導著三個階段的學習過程。
Learning of Meso-Skeleton
CurSkeNet 和 SurSkeNet:給定輸入影象 I,他們採用 ResNet-18 做為編碼器將提取的特徵對映成高維空間的向量,然後設計譯碼器同於生成骨架點雲,而譯碼器的網路架構是基於 CurSkeNet 和 SurSkeNet 的平行雙分支結構。
這樣的設計方法,可使曲線狀和曲面狀的骨架區域的合成得以獨立完成,互不幹擾。SurSkeNet 透過對一些 2D 平面進行變形,來逼近曲面狀骨架。CurSkeNet 對一些 1D 直線進行變形,透過實施仿射變換來形成曲線,然後學習如何將這些曲線聚整合曲線狀的骨架部分。
Network Training:本文用曲線狀和曲面狀的骨架點雲分別去訓練 CurSkeNet 和 SurSkeNet,所以採用 Chamfer Distance(CD 距離)做為損失函式的一部分,其定義如下:
為了保證變形的區域性一致性,防止出現過大的變形,他們還在骨架學習過程中加上了拉普拉斯平滑正則化項。它被定義為:
From Skeleton to Base Mesh
▲ 圖3. 高畫質體素表達的骨架合成方法流程圖
Sub-volume Synthesis with Global Guidance:為了保護骨架 K 所抓住的拓撲結構以及得到粗糙的初始網格,他們需要將 K 進行修複以得到一個高解析度的體素表達。
具體地做法如下,先把骨架K體素化,得到兩種解析度下的體素表達,被記做,,解析度為。
如圖 3 所示,他們採用兩個三維摺積網路用於骨架體素的全域性結構和區域性子塊合成。全域性結構合成網路用於對的修複,產生一個解析度為的骨架體素表達。區域性子塊合成網路用從中均勻切割出來的子塊做輸入,對這些子塊獨立地進行修複。當修複每個子塊的時候,全域性網路的輸出中對應的對應的子塊也被一起輸入,使得每個子塊修複後的結果仍然保持全域性一致性。
▲ 圖4. (a) 輸入圖片(b) 學習到的骨架點雲 (c) 只分子塊進行修複 (d) 加上全域性結構引導 (e) 加上影象的引導
Image-guided Volume Correction:為了糾正在骨架生成階段時的預測誤差,我們再次利用輸入影象 I,從中學習一個低解析度的骨架體素表達,將其整合到我們前面提到的全域性結構合成網路,得到一個更準確的全域性結構 。這最終將有助於我們得到一個更好的修複結果 V。如圖 4 所示,影象 I 的使用大大提高了修複後的骨架體素 V 的效果。
Base Mesh Extraction:得到修複後的體素 V 後,我們用 Marching Cubes 演演算法來產生初始網格 Mb,它仍然保留著和骨架 K 一樣的拓撲結構。為了減輕後續的計算負擔,我們對 Mb 進行了簡化。
Mesh Refinement
▲ 圖5. 三角網格變形網路
到目前為止他們獲得了抓住潛在物體拓撲結構的初始網格 Mb,但是還缺乏物體錶面的細節。他們利用圖摺積神經網路結合輸入影象對粗糙的初始網格進行變形,達到在 Mb 的錶面處補充細節的目的。
圖 5 所示是他們的網格變形網路。本文的圖神經卷積網路由一些圖摺積層組成,每個層對 Mb 的每個頂點以及其區域性鄰域實施空間濾波操作。圖摺積層的定義如下:
與 Pixel2Mesh 類似,我們也將從影象 I 提取出來的特徵結合到對應的頂點位置上來促進學習過程。關於損失函式選擇,此階段再次使用了 CD 距離來訓練。同時加上了平滑正則項來規範網格變形過程。一個是 edge regularization,用於防止邊長過長,避免大的變形,造成形狀畸變。另外一個是 normal loss,用於保證輸出物體錶面的平滑。
Experiments
Single-view Reconstruction
為證明所提出方法在單視角重構這個任務上的有效性,本文挑選了 ShapeNet 中有代表性的五個物體種類(plane, bench, chair, table, firearm)來進行實驗說明。
Qualitative results
▲ 圖6
圖 6 展示了我們方法與現有方法的視覺對比結果。 可以看出,我們的方法(f)已經超過了其他方法(b-e),因為我們生成的是完整的物體形狀網格表達,而且能抓住正確的拓撲結構,以及刻畫更多的細節。
Quantitative Results
透過使用網格上採出具有 10000 個點的點雲,本文采用 CD 和 EMD 來評估重建質量。表 1 展示了與其他方法量化對比的結果。
▲ 表1. 單視角重建方法的 CD EMD 對比結果
Generalization on real images
圖 7 所示是我們的方法在三張真實圖片上的重構結果。 可以看到重建結果的質量與合成圖片的結果十分相似。特別是圖 7(a) 所示,該圖片雖然與 ShapeNet 無關,但是我們仍然能將看不到的細桿很好地重構出來。這一結果也證明瞭我們方法優秀的泛化能力。
▲ 圖7. 真實影象測試結果
Evaluation on Skeleton Inference
在這一節,我們對我們骨架學習方法的幾個變種進行比較,用此來說明我們最後所選用的模型是最優的。
它們是:1)“Point-only fitting”方式直接採用PointSetGeneration 去回歸骨架點坐標;2)“Line-only fitting”方式移除了我們方法中的面擬合分支,只通過對多根直線變形來逼近骨架;3)“Square-only fitting”方式則移除了線擬合分支,只通過對多個平面變形來逼近骨架 ;4)“Line-and-Square fitting”則是隻用一個 MLP 來同時學習線和麵的變形;5)“Ours w/o laplacian”代表我們的模型但沒有加拉普拉斯平滑項。
Quantitative Results
▲ 表2. 骨架學習方法的CD對比結果
由表 2 可以看出我們最終的骨架學習模型比其它的幾個變種方法更優。另外一個發現是我們的拉普拉斯正則化項有助於骨架預測得更加準確。
Qualitative Results
▲ 圖8
圖 8 用一個例子展示了這些骨架學習方法的視覺對比結果。由此圖可以觀察到利用雙平行預測分支用於曲線狀和曲面狀骨架獨立合成這一設計方法和拉普拉斯平滑項的有效性。
總結
從單個視角恢復一個物體的三維形狀是計算機視覺領域中一項基礎性而又具有挑戰性的任務。本文提出的框架將這一任務分成三個階段,它首先恢復點雲表達的 3D 骨架,然後這些骨架點被轉為體素表達,透過三維摺積網路合成一個更
可靠的體素用於提取粗糙的初始網格。最後,一個圖神經網路被用於學習網格變形來產生錶面細節。正如文中的實驗所示,這一方法在視覺化和量化上均優於現有其他方法。但是這也有兩個將來可以改進的方向:1)如何將全部流程整合成一個端到端訓練的網路;2)在骨架學習,體素生成,網格變形每個過程嘗試使用對抗學習,以更一步提高最後輸出結果的質量。