1. 程式人生 > >12.Generating 3D Mesh Models from Single RGB Images

12.Generating 3D Mesh Models from Single RGB Images

Pixel2Mesh:

從單個RGB影象生成3D網格模型

摘要

我們提出了一種端到端的深度學習架構,該架構可以從單個彩色影象中生成三角形網格中的3D形狀。受深度神經網路性質的限制,以前的方法通常表示體積或點雲中的3D形狀,將它們轉換為更易於使用的網格模型並非易事。與現有方法不同,我們的網路在基於圖形的卷積神經網路中表示3D網格,並通過逐漸變形橢球產生正確的幾何形狀,利用從輸入影象提取的感知特徵。我們採用粗略的策略來使整個變形過程穩定,並定義各種網格相關的損失,以捕獲不同層次的屬性,以保證視覺上吸引人和物理上精確的3D幾何。大量實驗表明,我們的方法不僅可以定性地生成具有更好細節的網格模型,而且與現有技術相比,還可以實現更高的3D形狀估計精度。

關鍵詞:三維形狀生成·圖卷積神經網路·網格重構·粗到端·端到端框架

 

引言

從單一視角推斷3D形狀是一種基本的人類視覺功能,但對於計算機視覺而言極其具有挑戰性。最近,使用深度學習技術從單一彩色影象生成3D形狀的成功很好[6,9]。利用常規網格上的卷積層或多層感知,估計的3D形狀,作為神經網路的輸出,表示為體積[6]或點雲[9]。然而,兩種表示都失去了重要的表面細節,並且重建表面模型(圖1),即網格,這對於許多實際應用來說更加理想,因為它重量輕,能夠對形狀細節進行建模,因此非常容易。為動畫變形,僅舉幾例。

在本文中,我們沿著單影象重建的方向推進,並提出一種從單個彩色影象中提取3D三角形網格的演算法。我們的模型不是直接合成,而是學習將網格從平均形狀變形到目標幾何形狀。這從幾個方面使我們受益。首先,深度網路更好地預測殘差,例如空間變形,而不是結構化輸出,例如圖表。其次,可以將一系列變形加在一起,這樣可以逐步細化形狀。它還可以控制深度學習模型的複雜性和結果質量之間的權衡。最後,它提供了將任何先驗知識編碼到初始網格的機會,例如,拓撲結構。作為一項先驅研究,在這項工作中,我們特別研究了可以通過使用具有固定尺寸的橢圓體來使用具有0類的3D網格來近似的物件。在實踐中,我們發現大多數常見類別可以在此下很好地處理設定,例如汽車,飛機,桌子等。為了實現這一目標,存在一些固有的挑戰。

第一個挑戰是如何在神經網路中表示網格模型,其本質上是不規則圖形,並且仍然能夠從2D規則網格中表示的給定彩色影象有效地提取形狀細節。它需要整合從兩種資料模式中學到的知識。在3D幾何方面,我們直接在網格模型上構建基於圖的完全卷積網路(GCN)[3,8,18],其中網格中的頂點和邊直接表示為圖中的節點和連線。3D形狀的網路特徵編碼資訊儲存在每個頂點上。通過前向傳播,卷積層使得能夠跨相鄰節點進行特徵交換,並最終迴歸每個頂點的3D位置。在2D影象方面,我們使用類似VGG-16的體系結構來提取特徵,因為它已被證明可以成功完成許多工[10,20]。為了橋接這兩者,我們設計了一個感知特徵彙集層,它允許GCN中的每個節點從影象上的2D投影中彙集影象特徵,這可以通過假設已知的攝像機內部矩陣來輕鬆獲得。使用更新的3D位置在幾次卷積(即,在3.4節中描述的變形塊)之後啟用感知特徵彙集一次,因此來自正確位置的影象特徵可以與3D形狀有效地整合。

給定圖形表示,下一個挑戰是如何有效地根據標準更新頂點位置。在實踐中,我們觀察到訓練直接預測具有大量頂點的網格的網路可能在開始時出錯並且難以進行。一個原因是頂點不能有效地從具有多個邊緣的其他頂點檢索特徵,即有限的接收域。為了解決這個問題,我們設計了一個圖解拼層,它允許網路以較少數量的頂點啟動並且在前向傳播期間增加。由於在開始階段具有較少的頂點,網路學習將頂點分佈到最具代表性的位置,然後隨著頂點數量的增加而新增區域性細節。除了圖解拼層之外,我們使用由快捷連線[13]增強的深度GCN作為我們架構的支柱,它為全域性上下文和更多的移動步驟提供了更大的接收域。

在圖表中表示形狀也有利於學習過程。已知的連線性允許我們在相鄰節點上定義更高階的損失函式,這對於規範3D形狀是重要的。具體而言,我們定義表面正常損失,有利於光滑表面; 邊緣損失,以促進網格頂點的均勻分佈,以實現高召回率; 和拉普拉斯損失,以防止網格面相互交叉。所有這些損失對於生成好的網格模型是必不可少的,並且如果沒有圖形表示,它們都不能簡單地定義。

本文的貢獻主要有三個方面。首先,我們提出了一種新穎的端到端神經網路體系結構,該體系結構從單個RGB影象生成3D網格模型。其次,我們設計了將感知影象特徵包含在由GCN表示的3D幾何體中的對映層。第三,我們的網路以粗略到簡潔的方式預測3D幾何,更可靠,更容易學習。

相關工作

基於文獻中的多檢視幾何(MVG)[12],對三維重建進行了深入的研究。主要研究方向包括運動結構(SfM)[27],用於大規模高質量重建和同步定位與導航製圖(SLAM)[4]。儘管它們在這些場景中非常成功,但它們受到以下限制:1)多個檢視可以提供的覆蓋範圍和2)想要重建的目標的外觀。前一種限制意味著MVG無法重建目標的看不見的部分,因此通常需要很長時間才能獲得足夠的檢視以進行良好的重建;後一種限制意味著MVG不能重建非朗伯(例如反射或透明)或無紋理的物體。這些限制導致採用基於學習的方法。

基於學習的方法通常考慮單個或少數影象,因為它在很大程度上依賴於它可以從資料中學習的形狀先驗。早期的工作可以追溯到Hoiem等人[14]和Saxena等人[25]。最近,隨著深度學習架構的成功和大型3D形狀資料集(如ShapeNet [5]的釋出),基於學習的方法取得了很大進展。Huang等人[15]和Su等人[29]從大型資料集中檢索形狀元件,組裝它們並使組裝的形狀變形以檢視觀察到的影象。然而,從影象本身檢索形狀是一個不容忽視的問題。為了避免這個問題,Kar等人[16]為每個物件類別學習三維可變形模型並捕獲不同影象中的形狀變化。然而,重建僅限於流行類別及其重建結果通常缺乏細節。另一項研究是直接從單個影象中學習3D形狀。受流行的基於網格的深度學習架構的限制,大多數作品[6,11]輸出3D元素,由於現代GPU上的記憶體限制,3D元素通常具有低解析度。最近,Tatarchenko等人[30]已經提出了八叉樹表示,其允許以有限的記憶體預算重建更高解析度的輸出。然而,3D元素仍然不是遊戲和電影行業中的流行形狀表示。為了避免元素表示的缺點,Fan等人[9]建議從單個影象生成點雲。點雲表示在點之間沒有區域性連線,因此點位置具有非常大的自由度。因此,生成的點雲通常不靠近表面並且不能用於直接恢復3D網格。除了這些典型的3D表示外,還有一項有趣的工作[28],它使用所謂的“幾何影象”來表示3D形狀。因此,它們的網路是2D卷積神經網路,其進行影象到影象的對映。我們的工作主要與最近的兩個工作有關[17]和[24]。然而,前者採用簡單的輪廓監控,因此對於汽車,燈具等複雜物體表現不佳;後者需要一個大型模型庫來生成組合模型。

我們的基礎網路是圖神經網路[26];這種結構已被用於形狀分析[31]。同時,有基於圖表的方法直接在表面流形上應用卷積[2,22,23]進行形狀分析。據我們所知,這些架構從未被用於單個影象的三維重建,儘管圖形和表面流形是網格物體的自然表示。為了全面瞭解圖神經網路,基於圖表的方法及其應用,請參考本研究[3]。

 

方法

初步:基於圖形的卷積


我們首先提供了一些基於圖形的卷積的背景知識;更詳細的介紹可以在[3]中找到。3D網格是頂點,邊和麵的集合,用於定義3D物件的形狀;它可以用圖表M=(V,E,F)表示,其中V={vi}Ni=1是網格中N個頂點的集合,E={ei}Ei=1是一組每個連線兩個頂點的E邊緣,並且F = {fi}Ni = 1是附加在頂點上的特徵向量。基於圖形的卷積層在不規則圖上定義為:

其中flp∈Rdl,fl + 1p∈Rdl+ 1是卷積前後頂點p上的特徵向量,N(p)是p的相鄰頂點; w0和w1是應用於所有頂點的dl×dl + 1的可學習引數矩陣。注意,w1是所有邊共享的,因此(1)適用於具有不同頂點度的節點。在我們的例子中,附加的特徵向量fp是3D頂點座標,特徵編碼3D形狀和從輸入彩色影象(如果存在)中學習的特徵的連線。運行卷積更新特徵,這相當於應用變形。

 

系統總覽

我們的模型是一個端到端的深度學習框架,它將單個彩色影象作為輸入,並在相機座標中生成3D網格模型。我們的框架概述如圖2所示。整個網路包括影象特徵網路和級聯網格變形網路。影象特徵網路是2D CNN,其從輸入影象提取感知特徵,網格變形網路利用該感知特徵將橢球網格逐漸變形為期望的3D模型。級聯網格變形網路是基於圖形的卷積網路(GCN),其包含與兩個圖形解拼層相交的三個變形塊。每個變形塊採用表示當前網格模型的輸入圖,其中3D形狀特徵附加在頂點上,並生成新的頂點位置和特徵。而圖解拼圖​​層增加頂點數量以增加處理細節的能力,同時仍然保持三角形網格拓撲。從較少數量的頂點開始,我們的模型學會逐漸變形並在粗糙的網格模型中新增細節。為了訓練網路產生穩定的變形並生成精確的網格,我們擴充套件了Fan等人使用的倒角距離損失[9]。與其他三個網格特定損失 - 表面正常損失,拉普拉斯正則化損失和邊長損失。本節的其餘部分介紹了這些部分的詳細資訊。

 

初始橢圓體

我們的模型不需要任何3D形狀的先驗知識,並且總是從初始橢圓體變形,平均尺寸放置在相機座標的公共位置。橢圓體位於相機前方0.8m處,以三軸半徑0.2m,0.2m,0.4m為中心。網格模型由Meshlab[7]中的隱式曲面演算法生成,包含156個頂點。我們使用這個橢球來初始化我們的輸入圖,其中初始特徵僅包含每個頂點的3D座標。

 

網格變形塊

網格變形塊的結構如圖3(a)所示。為了生成與輸入影象中顯示的物件一致的3D網格模型,變形塊需要從輸入影象中彙集特徵(P)。這是結合影象特徵網路和給定當前網格模型中頂點(Ci-1)的位置的感知特徵池化層來完成的。然後將經過池化的感知特徵與附加在輸入圖(Fi-1)的頂點上的3D形狀特徵連線,並餵給一系列基於圖的ResNet(G-ResNet)。G-ResNet也作為網格變形塊的輸出產生每個頂點的新座標(Ci)和3D形狀特徵(Fi)。

感知特徵池化層我們使用VGG-16架構直到將conv5_3層作為影象特徵網路,因為它已被廣泛使用。給定頂點的3D座標,我們使用相機內在函式計算其在輸入影象平面上的2D投影,然後使用雙線性插值從四個附近畫素彙集該特徵。特別地,我們連線從層'conv3_3','conv4_3'和'conv5_3'中提取的特徵,這導致總維度為1280.然後,此感知特徵與來自輸入網格的128維3D特徵連線在一起,其總尺寸為1408.這在圖3(b)中示出。請注意,因為在開始時沒有學習形狀特徵,在第一個塊中,感知特徵與三維特徵(座標)連線在一起。

G-ResNet在獲得從3D形狀和2D影象資訊表徵的每個頂點的1408維特徵之後,我們設計了基於圖形的卷積神經網路來預測每個頂點的新位置和3D形狀特徵。這需要在頂點之間有效地交換資訊。然而,如(1)中所定義的,每個卷積僅使相鄰畫素之間的特徵交換成為可能,這嚴重損害了資訊交換的效率。這相當於2D CNN上的小接收域問題。

為了解決這個問題,我們建立了一個具有快捷連線的非常深的網路[13],並將其表示為G-ResNet(圖3(a))。在這項工作中,所有塊中的G-ResNet具有相同的結構,其由14個圖形殘差卷積層和128個通道組成.G-ResNet塊的序列產生新的128維3D特徵。除了特徵輸出,有一個分支,它將額外的圖形卷積層應用於最後一層特徵,並輸出頂點的3D座標。

圖解拼層

解拼層的目的是增加GCNN中的頂點數量。它允許我們從具有較少頂點的網格開始,僅在必要時新增更多,這樣可以降低記憶體成本併產生更好的結果。一種簡單的方法是在每個三角形的中心新增一個頂點,並將其與三角形的三個頂點連線(圖4(b)基於面)。然而,這導致不平衡的頂點層級,即頂點上的邊緣數量。受計算機圖形學中普遍存在的網格細分演算法的頂點新增策略的啟發,我們在每個邊緣的中心新增一個頂點並將其與該邊緣的兩個端點連線(圖4(a))。新新增的頂點的3D特徵被設定為其兩個鄰居的平均值。如果將三個頂點新增到同一個三角形(虛線),我們也會連線三個頂點。因此,我們為原始網格中的每個三角形建立4個新三角形,並且頂點數量增加原始網格中的邊數。這種基於邊緣的解拼均勻地對頂點進行上取樣,如圖4(b)所示。基於邊緣。

 

損失

我們定義了四種損失來約束輸出形狀和變形過程的性質以保證得到好的結果。我們採用倒角損失[9]來約束網格頂點的位置,正常的損失來強制表面法線的一致性,拉普拉斯正則化以在變形期間保持相鄰頂點之間的相對位置,以及邊緣長度正則化以防止異常值。這些損失在中間和最終網格上施加相同的權重。

除非另有說明,否則我們將p用於預測網格中的頂點,q用於標準網格中的頂點,對於p的相鄰畫素使用N(p),直到本節結束。


倒角損失倒角距離測量每個點到另一個點的距離

將頂點回歸到其正確位置是相當不錯的,但是效率不高(參見圖1中Fan等人的結果[9])。


正常損失我們進一步確定表面法線上的損失以表徵高階特性:

其中q是在計算倒角損失時找到的p的最近頂點,k是p的相鄰畫素,h·,i是兩個向量的內積,nq是從標準情況中觀察到的曲面法線。

基本上,這種損失要求頂點與其鄰居之間的邊緣垂直於來自標準情況的觀察。 除非在平面上,否則可以發現該損失不等於零。然而,優化這種損失相當於迫使區域性疊加的切平面的法線與觀察結果一致,這在我們的實驗中實際上很有效。 此外,這種正常損失是完全可區分的並且易於優化。

正則化即使在倒角損耗和正常損耗的情況下,優化也很容易陷入區域性最小值。 更具體地說,網路可能會產生一些超大變形以支援某些區域性一致性,這在估計遠離標準時開始時尤其有害,並導致飛行頂點(圖5)。


拉普拉斯正則化為了解決這些問題,我們首先提出拉普拉斯項,以防止頂點過於自由移動,這可能避免網格自相交。 拉普拉斯術語用作區域性細節保持運算元,其鼓勵相鄰頂點具有相同的移動。在第一個變形塊中,它的作用就像一個表面平滑度項,因為這個塊的輸入是一個平滑的橢圓體; 從第二個塊開始,它可以防止3D網格模型變形太多,因此只有細粒度的細節才會新增到網格模型中。為了計算這種損失,我們首先將每個頂點p的拉普拉斯座標定義為


並且拉普拉斯正則化定義為:llap =

其中δ~p和δp是變形塊之後和之前的頂點的拉普拉斯座標。


邊長正則化。為了懲罰通常導致長邊的浮點頂點,我們加上邊長正則化損失:

總損失是所有四個損失的加權和,lall = lc +λ1ln+ λ2llap+λ3lloc,其中λ1= 1.6e-4,λ2= 0.3和λ3= 0.1是超引數,它們平衡了所有實驗的損失和固定。

 

實驗

在本節中,我們對我們的模型進行了廣泛的評估。除了與之前的3D形狀生成工作進行比較以評估重建精度之外,我們還分析了模型中每個元件的重要性。 合成影象和真實影象的定性結果進一步表明,我們的模型生成具有光滑表面的三角形網格,並且仍然保持輸入影象中描繪的細節。

 

實驗裝置

資料。我們使用Choy等人提供的資料集[6]。該資料集包含屬於ShapeNet [5]的13個物件類別的50k模型的渲染影象,這是根據WordNet層次結構組織的3D CAD模型的集合。從各種相機視點渲染模型,並記錄相機內在和外在矩陣。 為了公平比較,我們使用與Choy等人相同的訓練/測試分組[6]。

評估指標。我們採用標準的3D重建指標。我們首先從結果和基本事實中統一抽樣點。我們通過檢查預測或標準情況中的點的百分比來計算精度和召回率,這些點可以在特定閾值τ內找到彼此的最近鄰居。然後計算F-score[19]作為精度和召回的調和平均值。我們還報告倒角距離(CD)和地球移動距離(EMD)。對於F-Score,越大越好。對於CD和EMD,越小越好。

另一方面,我們意識到形狀生成的常用評估指標可能無法徹底反映形狀質量。 它們通常捕獲佔用率或逐點距離而不是表面屬性,例如連續性,平滑度,高階細節,在文獻中幾乎沒有標準評估指標。因此,我們建議注意定性結果,以便更好地理解這些方面。

基線。我們將所提出的方法與最新的單影象重建方法進行比較。具體而言,我們將比較兩種最先進的方法Choy等人[6](3D-R2N2)產生3D體積,而Fan等人[9](PSG)產生點雲。由於指標是在點雲上定義的,我們可以直接在其輸出上評估PSG,通過在表面上均勻取樣來評估我們的方法,通過從使用Marching Cube [21]方法建立的網格中均勻取樣點來評估3D-R2N2。

我們還比較了神經三維網格渲染器(N3MR)[17],它是迄今為止唯一一種基於深度學習的網格生成模型,公共程式碼可用。為了公平比較,使用相同的時間量使用相同的資料訓練模型。

訓練和執行。我們的網路接收大小為224×224的輸入影象,以及具有156個頂點和462個邊緣的初始橢球。該網路在Tensorflow中實施,並使用具有權重衰減1e-5的Adam進行優化。批量大小為1;訓練輪總數為50;學習率初始化為3e-5,並在40個時期後降至1e-5。在Nvidia Titan X上,總訓練時間為72小時。在測試過程中,我們的模型需要15.58ms才能生成一個2466個頂點的網格。

 

與現有技術的比較

表格1顯示了具有不同方法的不同閾值的F-score。我們的方法優於除技術以外的所有類別的其他方法。值得注意的是,在較小的閾值τ下,我們的結果顯著優於所有類別中的其他結果,顯示至少10%的F-score改善。N3MR表現不佳,其結果比我們的差50%左右,可能是因為他們的模型只能從影象中有限的輪廓訊號中學習,而且缺乏對3D網格的明確處理。

我們還在表格2中顯示所有類別的CD和EMD。我們的方法在大多數類別中優於其他方法,並達到最佳平均分。主要競爭對手是PSG,它產生點雲並擁有最大的自由度;這種自由導致較小的CD和EMD,但是如果沒有適當的正則化,不一定會導致更好的網格模型。為了證明這一點,我們展示了定性結果,以分析為什麼我們的方法優於其他方法。圖8顯示了視覺結果。為了比較網格模型的質量,我們使用標準方法將體積和點雲轉換為網格[21,1]。正如我們所看到的,3D-R2N2產生的3D體積結果由於解析度低而缺乏細節,例如,在椅子示例中缺少腿,如圖8的第4行所示。我們嘗試了基於八叉樹的解決方案[30]增加了體積解析度,但發現仍然難以像我們的模型那樣恢復表面水平細節。PSG產生稀疏的3D點雲,從中恢復網格是非常重要的。這是由於應用的倒角損失就像迴歸損失一樣,為點雲提供了太多的自由度。N3MR產生非常粗糙的形狀,這可能足以完成某些渲染任務,但無法恢復複雜的物體,如椅子和桌子。相比之下,我們的模型通過利用網格表示,感知特徵的整合以及訓練期間精心定義的損失而不會遇到這些問題。由於記憶體預算有限,我們的結果不受解析度的限制,並且包含平滑連續的表面和區域性細節。

 

消融研究

現在我們進行對照實驗來分析模型中每個元件的重要性。表格3通過從完整模型中刪除一個元件來報告每個模型的效能。同樣,我們認為這些常用的評估指標並不一定反映出所涵蓋的3D幾何的質量。例如,沒有邊長度正則化的模型在所有情況下都達到了最佳效能,但實際上產生了最差的網格(圖5,最後的第2列)。因此,我們使用定性結果圖5來顯示我們系統中每個元件的貢獻。

圖解.我們首先刪除圖解拼層,因此每個塊具有與我們完整模型的最後一個塊中相同數量的頂點。據觀察,變形在開始時使錯誤變得容易,後來無法修復。 因此,在物件的某些部分中存在一些明顯的偽像。

G-ResNet我們刪除G-ResNet中的快捷方式連線,並使其成為常規GCN。 從表格3中可以看出,所有四個測量指標都存在巨大的效能差距,這意味著優化倒角距離的失敗。主要原因是在非常深的2D卷積神經網路中觀察到的退化問題。 當向適當深度模型新增更多層時,這種問題會導致更高的訓練誤差(從而導致更高的測試誤差)[13]。實際上,我們的網路有42個圖形卷積層。因此,在我們的深度圖神經網路實驗中也觀察到了這種現象。

損失條款除了倒角損失之外,我們還評估每個附加條款的功能。從圖5中可以看出,去除正常損失會嚴重損害表面光滑度和區域性細節,例如:座椅靠背上; 移除拉普拉斯項導致交叉幾何,因為區域性拓撲改變,例如, 把手放在椅子上; 去除邊長項會導致頂點和表面浮動,這完全破壞了表面特徵。這些結果表明,這項工作中提出的所有元件都有助於實現最終效能。

變形塊數.我們現在分析塊數的影響。圖6(左)顯示了關於塊數的平均F-score(τ)和CD。結果表明,增加塊的數量有所幫助,但是有益的是越來越多的塊,例如,在我們的實驗中,我們發現4個塊會導致頂點和邊緣太多,這會大大減慢我們的方法,即使它在評估指標上提供了更好的準確性。因此,我們在所有實驗中使用3個塊來實現效能和效率的最佳平衡。 圖6(右)顯示了每個變形塊後模型的輸出。注意如何使用更多頂點來確定網格的密度,並新增新的細節。

 

重建真實世界的影象

繼Choy等人[6]之後,我們在Online Products資料集和Internet影象上測試我們的網路,以便對真實影象進行定性評估。我們使用從ShapeNet資料集訓練的模型,直接在沒有微調的真實影象上執行,並在圖7中顯示結果。可以看出,我們在合成數據上訓練的模型很好地概括了各種類別的真實世界影象。

 

結論

我們提出了一種從單個影象中提取三維三角網格的方法。我們利用網格演示可以為我們帶來的關鍵優勢,以及解決成功所需的關鍵問題。前者包括表面法線約束和沿邊緣的資訊傳播;後者包括從影象中提取的感知特徵作為指導。 我們精心設計了我們的網路結構,並提出了一個具有“快捷”連線的非常深的級聯圖卷積神經網路。網格經過我們的網路端到端訓練,具有倒角損耗和正常損耗,可逐步確定網格。我們的結果顯著優於使用其他形狀表示(如3D體積或3D點雲)的先前狀態。因此,我們認為網格表示是這個方向的下一個重點,我們希望在我們的工作中發現的關鍵元件可以支援後續工作,這將進一步推進單個影象的直接3D網格重建。

未來的工作我們的方法只生成與初始網格具有相同拓撲的網格。將來,我們將把我們的方法擴充套件到更一般的情況,例如場景級重建,並從多個影象中學習多檢視重建。