作者:Rishab Sharma
編譯:McGL
3D 資料簡介
人們普遍認為,從單一角度合成 3D 資料是人類視覺的基本功能。但這對計算機視覺算法來說極具挑戰性。但随着雷射雷達(LiDAR)、 RGB-D 攝像頭(RealSense、 Kinect)和 3D 掃描器等 3D 傳感器的普及和價格的降低,最新的 3D 采集技術已經取得了巨大飛躍。與廣泛使用的 2D 資料不同,3D 資料具有豐富的尺度和幾何資訊,可以幫助機器更好的了解環境。然而,與 2D 資料相比, 3D 資料的可用性相對較低,而且采內建本較高。是以,近年來許多深度學習方法被提出,可以不依賴任何 3D 傳感器,從可用的 2D 資料中合成 3D 資料。在我們深入研究這些方法之前,先了解下要處理的 3D 資料的格式。

基于 2D 輸入的 3D 合成
合成的 3D 資料根據資料的最終用途可以使用不同的格式來表示。一些常用的格式有:
- 深度圖像(Depth images)
- 點雲(Point clouds)
- 體素(Voxels)
- 網格(Meshes)
深度圖像包含場景的深度值,圖像幀中的每個像素都有距離攝像頭的距離,機關為米。這種來自場景的深度資訊對于許多任務都具有巨大的價值,比如無人駕駛汽車、增強現實和機器人等等。這樣的資訊對于一些任務非常有用,如相機掃描一個靜止的場景并在虛拟相機中生成動畫時,啟用運動視差(motion parallax),但需要強調 3D 模組化場景中的一個特定的對象時,目前最先進的技術條件下,這種資訊就顯得不充分且不準确了。
深度圖像
點雲是分布在 3D 空間中的 3D 點的集合。這些 3D 點中的每一個都有一個确定的位置,由一個确定的(x,y,z)坐标和其他屬性(如 RGB 顔色值)表示。與深度圖像不同,點雲表示保留了更多高品質的 3D 空間幾何資訊,而不需要任何離散化。然而,點雲表示的點之間沒有局部聯系,導緻點雲具有很大的自由度和高維性,使得精确合成更加困難。
點雲表示
體素(Voxel)或立體像素(volumetric pixel)是空間網格像素到立體網格體素的直接延伸。簡單來說,體素隻是 3D 空間中的一個像素。每個體素的相對位置共同定義了立體資料的獨特結構。體素可以看作是一個具有固定大小的量化點雲。然而,對于 3D 模組化來說,體素表示太過稀疏,并且在細節和計算資源之間需要進行權衡,這使得合成更加不可行。
體素表示
多邊形網格(Polygon Mesh)是一組邊、頂點和面的集合,它們共同定義了多面體的形狀和體積。網格的凸多邊形面連接配接在一起以逼近一個幾何曲面。與體素類似,網格也可以看作是從一組連續曲面上采樣的 3D 點雲集(相對較低的複雜度)。網格面可以是三角形(三角形網格)、四邊形(四邊形網格)或凸多邊形(N 邊形網格)。取決于表示的通用性,為了接近一個更真實的表示,網格也可以包括多邊形的孔或凹多邊形。表面細節對于重建表面模型很重要,和丢失了重要表面細節的體素和點雲不同,網格在很多實際應用中更為理想。是以,考慮到上述問題,一個多邊形網格看起來更真實,相比其他格式表示可以更好的合成。
多邊形網格表示
在本文中,我們将讨論三種方法,它們可以用來從 2D 資料中合成 3D 資料。在這三種方法中,一種是基于 transformer 的結構,而另外兩種分别是基于自動編碼器(autoencoder)和基于圖的卷積神經網絡。這兩種方法的關鍵差別在于,與後者不同的是,基于 transformer 的深度網絡完全依賴于一種注意力(attention)機制來描繪輸入和輸出之間的全局依賴性。
卷積神經網絡
在這一節中,我們将讨論最近提出的兩種方法,使用自動編碼器和基于圖的卷積神經網絡來合成 3D 資料。
基于自動編碼器的卷積神經網絡
為了了解這種方法,我們使用一個自動編碼器網絡來進行 3D 人臉重建和人臉對齊。
人臉重建與人臉對齊
自動編碼器利用卷積網絡将輸入的 2D 圖像降維到一個潛在空間(latent space),然後利用這個潛在空間表示重建原始的 3D 資料格式。很多研究都使用了自編碼器(基于編解碼器的體系結構)來估計 3D 人臉形變(morphable)模型系數和模型扭曲(warping)函數。這些研究的目的主要是利用這些 3D 模型扭曲函數從單幅 RGB 圖像恢複相應的 3D 形狀,進而同時提供稠密的 3D 人臉對齊和重建輸出。然而,由于人臉模型模闆定義的 3D 表示空間的局限性,這些方法的性能受到限制。類似地,像容積回歸網絡(VRN)[1]這樣的方法使用全卷積層結構來估計 3D 二值體積,作為離散版本的點雲。然而,大多數輸出點對應于無意義的非曲面點,而且這種離散化限制了輸出表示的分辨率。是以,更好的研究方向是像位置圖回歸網絡(PRN)[2]這樣的網絡,它可以利用 UV 位置和紋理圖聯合預測密集對齊并重建 3D 人臉形狀。
UV 位置和紋理圖示圖
PRN 以 UV 位置圖的形式建構 3D 人臉結構的 2D 表示。UV 位置是一個 2D 圖像,記錄面部點雲的 3D 面部坐标。這個圖在表示中每個位置還附帶了 3D 坐标的語義特征。簡單地說,UV 圖是一個 3D 資料的 2D 表示,記錄了 UV 空間中所有點的 3D 坐标。UV 空間和 UV 位置圖被研究人員頻繁地用于計算機圖形學空間領域,将 3D 空間參數化為 2D 圖像平面。PRN 的網絡結構,采用一個簡單的編解碼器結構(自動編碼器),輸入 RGB 圖像并将 2D 圖像資訊遷移到 UV 位置圖。該自動編碼器利用10個下采樣殘差塊和17個上采樣反卷積塊,最終預測出一個 256 × 256 × 3 UV 位置圖。學習到的 UV 位置圖有助于 3D 人臉合成直接回歸最終的 3D 結構和語義特征。訓練像 PRN 這樣的網絡,我們隻需要有 2D 圖像到 3D 點雲映射的資料集,這使得這種方法更加可行,因為網絡的輸出格式不受特定的 3D 模闆或 3D 形變模型線性空間的限制。
PRN 的體系結構
是以,考慮到該方法的簡單性和有效性,PRN 似乎是從 2D 圖像合成 3D 資料作為網絡輸出格式的最佳選擇之一。
基于圖的卷積神經網絡
正如在前一節所看到的,大多數傳統的基于自動編碼器的深度學習方法已經利用點雲和體素資料格式來合成 3D 資料。之是以特别強調這兩種資料格式,主要是因為目前流行的基于網格(grid)的網絡體系結構的限制。然而,正如第一節所讨論的,點雲和體素表示有它們自己的缺點。是以,為了避免體素或點雲表示的缺點,許多研究已經轉向合成 3D 多邊形網格(polygon mesh)資料,從應用的角度來看,這是一種比較理想的格式。在合成網格資料方面,一些最好的架構設計方法包括基于圖的卷積神經網絡。在本節中,我們将以 Wang 等人提出的方法為例。[3] (Pixel2Mesh)。
基于 Pixel2Mesh 的真實世界圖像重建
Pixel2Mesh 是一個基于圖的端到端深度學習架構,它采用一個 RGB 彩色圖像作為輸入,并以更理想的攝像頭坐标格式将2D 圖像轉換為3D 網格模型。基于圖的卷積神經網絡提取并利用 2D 圖像中的感覺特征,通過逐漸變形橢球體(ellipsoid)生成 3D 網格,直到達到語義正确和優化的幾何形狀。所采用的方法是由粗到細的方法,使橢球變形過程幾何上光滑和穩定。作者還定義了各種網格相關的損失函數,幫助網絡捕獲更多的屬性,保證了實體上和視覺上優秀的 3D 幾何結果。
圖像特征網絡與級聯網格變形網絡
Pixel2Mesh 的結構主要由級聯網格變形(deformation)網絡和圖像特征網絡組成。圖像特征網絡負責從輸入的 2D 圖像中提取感覺特征,并逐漸将這些特征傳遞給基于圖的級聯網格變形網絡,進而逐漸将橢球網格的幾何形狀變形為目标物體的 3D 網格。網格形變網絡的圖卷積網絡由三個變形塊和兩個中間圖上池化層組成。變形塊逐漸處理網格模型的輸入圖,而中間圖上池化層逐漸增加圖頂點,以增加圖的資訊容納能力,同時保持資料的三角形網格形成。除了結構細節,Pixel2Mesh 基于圖的架構的一個關鍵優勢是能夠同時進行形狀分析,類似于傳統的基于制圖(charting)的方法,直接針對表面流形(manifolds)進行卷積操作。該方法通過融合網格對象的自然表示(圖和表面流形) ,在基于制圖的方法和 3D 重建方法之間架起了一座橋梁。
基于Transformer的深度結構
卷積神經網絡具有端到端的學習能力,可以直接從資料中學習執行任務,不需要任何手工設計的視覺特征,是以被廣泛應用于計算機視覺任務。然而,盡管 CNN 的體系結構設計對計算要求已經很高了,但是 3D 合成的任務使得計算更加緊張,這開辟了計算優化和效率提高的廣闊空間。展望下一代的神經結構,transformers 是最好的可伸縮的視覺模型家族,不僅領域無關(domain agnostic),而且計算高效做了優化。此外,最近的研究表明,transformer 在很多基于計算機視覺的任務中已經取得了最先進的結果。為了了解 transformer 在 3D 資料合成中的工作原理,我們将以 Deepmind 的《 Polygen 》[4] 為例。
由 PolyGen 生成的樣本
Polygen 是一種直接模組化多邊形 3D 網格的方法,通過使用基于 transformer 的架構預測網格面和頂點順序。模型設計是這樣的,它可以輸入條件範圍的(目标類,體素和 2D 圖像)并機率産生輸出以捕捉模糊場景的不确定性。該網絡由頂點模型和表面模型組成。頂點模型是一個掩碼 transformer 解碼器,它無條件地表示頂點序列上的分布,進而對網格頂點進行模組化。表面模型是一種基于網絡的 transformer 指針,能夠有條件地表示可變長度輸入頂點序列上的分布,進而對網格表面進行模組化。是以,簡單地說,這兩種 transformer 模型的目标是通過首先生成網格頂點,然後利用這些頂點生成網格面來估計 3D 網格上的分布。
基于 Transformer 的 Polygen 頂點和表面模型
Polygen 使用的 transformer 結構靈感來自如 WaveNet、 PixelRNN 和指針(pointer)網絡之類的順序模型。這項工作也從 Polygon-RNN (使用多邊形進行分割)中得到了重要的啟發,而頂點模型類似于 PointGrow [8]中定制的自注意結構,使用自回歸分解(autoregressive decomposition)來建立 3D 點雲模型。與順序自回歸(order autoregressive)模型相比,PointGrow 有一個較淺的自注意力結構,通過操作固定長度的點雲輸入,利用自注意力機制預測離散坐标分布。是以,Polygen 可以被認為是一些最好的想法,通過一種新穎的基于 transformer 的網絡的均衡結合。
網格變形塊與感覺特征池操作
Polygen 的一個關鍵特征是能夠根據輸入上下文調節輸出(上下文例子如: 2D 圖像,目标類)。為了實作這種條件性,頂點和表面模型的輸入流被改變以合并上下文。對于像 2D 圖像和體素這樣的輸入格式,首先使用适用于域的編碼器對輸入進行編碼,以檢索 transformer 解碼器的上下文嵌入(embedding),進而對嵌入序列執行交叉注意力(cross-attention)。而對于像目标類這樣的輸入格式,在每個網絡塊中的自注意層之後,一個預先學習的類嵌入被投射到一個向量,這個向量被添加到中間 transformer 預測表示中。這是可能的,因為頂點模型的一般性質,使用一個簡單,有表達力和高模組化容量的 transformer 解碼器結構允許網絡模組化不同領域的資料。該 transformer 利用其高效的資訊聚合能力來捕獲網格頂點和目标幾何中存在的強非局部相關性。
總結
在本文中,我們讨論了兩種主要的 3D 合成方法,即卷積深度網絡和基于 transformer 的深度網絡。transformer 作為新一代網絡,它優化的設計更加高效,是以可以被認為領先于傳統的卷積網絡。然而,接近實時推斷的情況下,transformer 仍然有很長的路要走,不如我們在自動編碼器部分讨論的方法輕量且推理快速。然而,transformer 吸引了巨大的研究興趣,它們的注意力機制能夠有效地聚合資訊,提取輸入和輸出之間的全局依賴性,這使它們更有前途。
References:
[1] Jackson, A.S., Bulat, A., Argyriou, V., Tzimiropoulos, G., Jackson, A.S., Bulat, A., Argyriou, V., Tzimiropoulos, G.: Large pose 3d face reconstruction from a single image via direct volumetric CNN regression. In: International Conference on Computer Vision. (2017)
[2] Joint 3D Face Reconstruction and Dense Alignment with Position Map Regression Network
[3] Pixel2Mesh: Generating 3D Mesh Models from Single RGB Images (ECCV2018)
[4] PolyGen: An Autoregressive Generative Model of 3D Meshes
[5] Sun, Y., Wang, Y., Liu, Z., Siegel, J. E., and Sarma, S. E. Pointgrow: Autoregressively learned point cloud generation with self-attention. In Winter Conference on Applications of Computer Vision, 2020
【原文】: https://towardsdatascience.com/deep-learning-for-3d-synthesis-2dd57e2001f