Occupancy Networks:基於學習函數空間的三維重建表示方法


作者:Longway

來源:公眾號@3D視覺工坊

鏈接: Occupancy Networks:基於學習函數空間的三維重建表示方法

概述 

隨着深度神經網絡的到來,基於學習的三維重建方法逐漸變得流行。但是和圖像不同的是,在3D中沒有規范的表示,既能高效地進行計算,又能有效地存儲,同時還能表示任意拓撲的高分辨率幾何圖形。很多先進的基於學習的三維重建方法只能表示粗糙的三維幾何,或者限制於一個特定的領域。在這篇論文中,作者提出了占用網格,一種新的基於學習的三維重建方法。占位網絡隱式地將三維曲面表示為深度神經網絡分類器的連續決策邊界。與現有方法相比,該表示方式編碼了高分辨率的3D輸出,並且沒有過多的內存占用。同時該方法能夠高效地編碼三維結構,並且能夠從不同種類的輸入推斷出模型。實驗證明,無論是在質量上還是在數量上,對於從單個圖像、有噪聲的點雲和粗糙的離散體素網格進行三維重建,該方法都獲得了具有競爭力的結果。

簡介

和傳統多視圖立體幾何算法相比,學習模型的方法能夠編碼3D形狀空間中的豐富先驗信息,這有助於解決輸入的模糊性。生成模型的方法在高分辨率的圖像上已經取得了很好的效果,但是還沒有復制到3D領域。與2D領域相比,暫時還沒有就3D輸出表示達成一致,這種表示既能提高內存效率,又能從數據中有效推斷。現存的表示方法能夠大概分成三類:體素、網格、點雲,如下圖所示:

體素表示是直接將像素一般化的情況,隨着分辨率的提高,這種方法的內存占用將會呈指數增長,因此限制了分辨率。使用適當的損失函數,點雲和網格被引入作為深度學習的代替表示。但是點雲缺少底層網格的連接結構,從模型中提取3D幾何需要額外的過程。現存網格的表示方法大多數是基於一個模板變形,因此不允許任意的拓撲結構。在這篇文章中,作者提出了一種基於直接學習連續三維占用函數的三維重建方法,如上圖D所示。和其他方法不同的是,作者用神經網絡預測了完全占用函數,它可以在任意分辨率下評估。這篇文章的主要貢獻可以分為以下三點:1:介紹了一種基於學習連續三維映射的三維幾何表示方法;2:使用此表示法重建各種輸入類型的3D幾何圖形;3:此表示方法能夠生成高質量的網格,並且達到先進技術水平。

相關工作

現有的基於學習的三維重建工作可以根據輸出表示的不同分為基於體素的、基於點的和基於網格的三種。基於體素:由於其簡單性,體素是鑒別和生成3D任務最常用的表示。早期的工作主要集中於使用3D卷積神經網絡從一張圖像重建三維幾何,由於內存限制,分辨率不是很高,如果要達到相對較高的分辨率,需要犧牲網絡架構或者減少每次輸入的圖片數量。其他的工作用體素表示來學習三維形狀的生成模型,大多數的模型都是基於變分自動編碼器或者生成對抗網絡。為了提高分辨率,實現亞體素精度,一些研究人員提出預測截斷符號距離字段(TSDF),其中3D網格中的每個點儲存截斷符號距離到最近的3D表面。然而,與占用表示相比,這種表示通常更難學習,因為網絡必須推斷出3D空間中的距離函數,而不是僅僅將體素分類為已占用或未占用。而且,這種表示方法的分辨率仍然受到內存的限制。基於點雲:三維點雲被廣泛應用於機器人技術和計算機圖形學領域,是一種非常引人注目的三維幾何替代表示方法。Fan【1】引入點雲作為三維重建的輸出表示。然而,與其他表示不同的是,這種方法需要額外的后處理步驟來生成最終的3D網格。基於網格:網格首先被考慮用於區分三維分類或分割任務,在網格的頂點和邊跨越的圖上應用卷積,最近網格也被應用於三維重建的表示方法。不幸的是,大部分方法傾向於產生自交叉的網格,並且只能產生簡單的拓撲結構。與上述方法相比,本文的方法產生了沒有自相交的高分辨率封閉表面,並且不需要來自相同對象類的模板網格作為輸入。並且使用深度學習來獲得更有表現力的表示,可以自然地集成到端到端學習中。

方法

在本節中,作者首先介紹了作為三維幾何圖形表示的占用網絡,然后描述了如何學習從各種輸入形式(如點雲、單個圖像和低分辨率體素表示)推斷出這種表示的模型,最后,作者描述了提取高質量的三維網格的技術。1占用網絡:理想情況下,我們不僅要在固定的離散的3D位置(就像在體素表示中)考慮占用率,而且要在每一個可能的3D點p考慮占用率。稱以下函數為3D物體的占用函數:

這個函數的關鍵是,可以用一個神經網絡來近似這個3D函數,該神經網絡分配給每個位置p一個在0到1之間的占用概率。這個網絡相當於一個用於二分類的神經網絡,而我們關注的是對象表面的決策邊界。根據對物體的觀察(如圖像、點雲等),當使用這樣的網絡對物體進行三維重建時,必須以輸入作為條件。作者使用了下面的簡單的功能對等:一個函數,它接受一個觀察x作為輸入,輸出一個從點p到R的函數,這可以通過一個函數等價描述:一對(p, x)作為輸入和輸出一個實數。后一種表示可以用一個神經網絡參數化,該神經網絡以一對(p,x)作為輸入,輸出一個表示占用概率的實數:

這就是占用網絡。2訓練:為了學習神經網絡的參數,考慮在對象的三維邊界體中隨機采樣點,對於第i個樣本,采樣K個點,然后評估這些位置的小批量損失Lb如下所示:

其中xi是B批次的第i個觀測值,Oij是點雲的真實位置,L是交叉熵損失。該方法的性能取決於用於繪制用於訓練的pij位置的采樣方案,將在后面詳細討論。這個三維表示方法也可以用於學習概率潛在變量模型,定義損失函數如下:

3推論:為了提取一個新的觀測值對應的等值面,作者引入了多分辨率等值面提取算法(MISE),如下圖所示。

首先在給定的分辨率上標記所有已經被評估為被占據(紅色圓圈)或未被占據(青色方塊)的點。然后確定所有的體素已經占領和未占領的角落,並標記(淡紅色),細分為4個亞體素。接下來,評估所有由細分引入的新網格點(空圓)。重復前兩個步驟,直到達到所需的輸出分辨率。最后使用marching cubes算法【2】提取網格,利用一階和二階梯度信息對輸出網格進行簡化和細化。如果初始分辨率的占用網格包含網格內外各連通部分的點,則算法收斂於正確的網格。因此,采取足夠高的初始分辨率來滿足這一條件是很重要的。實際上,作者發現在幾乎所有情況下,初始分辨率為32的三次方就足夠了。通過marching cubes算法提取的初始網格可以進一步細化。在第一步中,使用Fast-Quadric-Mesh-Simplification算法【3】來簡化網格。最后,使用一階和二階(即梯度)的信息。為了達到這個目標,作者從輸出網格的每個面抽取隨機點pk進行采樣,並將損失最小化:

其中n(pk)為網格在pk處的法向量。4相關細節:作者使用具有5個ResNet塊的全連接神經網絡實現了占用網絡,並使用條件批處理歸一化對輸入進行條件設置。根據輸入的類型使用不同的編碼器架構。對於單視圖3D重建,使用ResNet18架構。對於點雲,使用PointNet編碼器。對於體素化輸入,使用3D卷積神經網絡。對於無條件網格生成,使用PointNet作為編碼器網絡。更多細節見原文。注:在我看來,這是一個端到端的網絡,可以理解成一個GAN網絡。前面的全連接神經網絡編碼輸入的圖像,預測每一個點被占用的概率,即該3D點是處於模型內部還是在模型的外面。通過采樣多個點,我們就可以得到一個決策邊界,這個邊界就可以近似的理解成模型的外殼,然后通過后面的算法獲得更高分辨率的模型。更多細節歡迎討論!

結果展示

連續表示(右)和不同分辨率下的體素化(左)的定性比較

上圖顯示了連續表示(純橙色線)和網格體素化(藍線)的IoU,以及兩個表示(虛線)所需的每個模型的參數數量。

單幅圖像三維重建,輸入圖像顯示在第一列中,其他列顯示與不同baselines相比該方法的結果。

這個表格顯示了該方法和在ShapeNet dataset數據集上進行單圖像三維重建的baselines的數值比較

真實數據的重建結果

基於點雲的三維重建結果比較【1】H. Fan, H. Su, and L. J. Guibas. A point set generation network for 3Dobject reconstruction from a single image. In Proc. IEEE Conf. on ComputerVision and Pattern Recognition (CVPR), 2017.【2】W. E. Lorensen and H. E. Cline. Marchingcubes: A high resolution 3D surface construction algorithm. In ACM Trans. onGraphics (SIGGRAPH), 1987. 2.【3】 M. Garland and P. S. Heckbert.Simplifying surfaces with color and texture using quadric error metrics. In Visualization’98.Proceedings, pages 263–269. IEEE, 1998.本文僅做學術分享,如有侵權,請聯系刪文。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM