三維重建概述和基於Pixel2Mesh的3D重建技術

語言: CN / TW / HK

一、前言

客觀世界中的物體都是三維的,真實地描述和顯示客觀世界中的三維物體是計算機圖形學研究的重要內容。三維重建又是計算機圖形影象的核心技術之一,應用領域非常廣泛。例如,醫療行業可以使用生物器官的3D 模型模擬手術解剖或輔助治療;電影娛樂業可以使用3D模型實現人物和動物的動畫以及動態模擬;建築行業可以使用3D建築模型來驗證建築物和景觀設計的空間合理性、美學視覺效果等等。目前,大家大多在研究模型識別,但這只是計算機視覺的一部分,真正意義上的計算機視覺要超越二維,感知到三維環境[1]。我們生活在三維空間裡,要做到更高效的互動和感知,也須將世界恢復到三維。

二、常見三維表示方法介紹

機螢幕本身是二維平面的,我們之所以能欣賞到真如實物般的三維影象[2],是因為顯示在計算機螢幕上色彩和灰度的不同而產生錯覺,將二維螢幕感知為三維環境。由色彩學可知,三維物體邊緣的凸出部分一般顯高亮度色,而凹下去的部分由於受光線的遮擋而略顯暗色,加之人眼也有近大遠小的成像特性,就會形成3D立體感。對於如何在計算機中表示出3D模型效果,根據不同的使用需求有不同的表示方法,基本可以分為四類,深度圖(Depth Map)、點雲(Point Cloud)[3]、體素(Voxel)[4]和網格(Mesh)[5]。

2.1 深度圖(Depth Map)

image.png

Fig.1 立方體深度示意圖

深度圖是一張2D圖片,每個畫素都記錄了從視點(Viewpoint)到遮擋物表面(遮擋物就是陰影生成物體)的距離,相當於只有三維資訊裡Z軸上的資訊,這些畫素對應的頂點對於觀察者而言是“可見的”。

2.2 體素(Voxel)

image.png

Fig.2 遊戲《我的世界》

體素或立體畫素是體積畫素(VolumePixel)的簡稱,是模型資料於三維空間上的最小單位,是一種規則資料。體素概念上類似於二維影象中的畫素,其本身並不含有空間中位置的資料(即它們的座標),然而卻可以從它們相對於其他體素的位置來推敲。如圖Fig.2,是比較流行的一款PC端3D遊戲《我的世界》,玩家可以在自己的世界中將一個個體素塊任意堆疊,構建出自己專屬的、個性的3D人物和世界。

2.3 網格(Mesh)

image.png

Fig.3 海豚網格圖

多邊形網格(Polygonmesh)是三維計算機圖形學中表示多面體形狀的頂點與多邊形的集合,是一種非規則結構資料。這些網格通常由三角形、四邊形或者其它的簡單凸多邊形組成。其中,最常用的是三角網格,三角網格通常需要儲存三類資訊:頂點、邊和麵。

頂點: 每個三角網格都有三個頂點,各頂點都有可能和其他三角網格共享。

邊: 連線兩個頂點的邊,每個三角網格有三條邊。

面: 每個三角網格對應一個面,我們可以用頂點或邊的列表來表示面。

2.4 點雲(Point Cloud)

image.png

Fig.4 甜甜圈式點雲圖

點雲是指以點的形式記錄的資料。每一個點包含了豐富的資訊,包括三維座標X、Y、Z、顏色、分類值、強度值、時間等等。點雲可以將現實世界原子化,通過高精度的點雲資料可以還原現實世界。

那選哪個作為我們常用的3D模型表示呢?根據介紹我們可以知道Voxel,受到解析度和表達能力的限制,會缺乏很多細節;Point Cloud,點之間沒有連線關係,會缺乏物體的表面資訊;相比較而言Mesh的表示方法具有輕量、形狀細節豐富的特點。

三維重建技術上大體可分為接觸式和非接觸式兩種。其中,較常見的是非接觸式中基於主動視覺的如鐳射掃描法、結構光法、陰影法和Kinect技術等,和基於機器學習的如統計學習法、神經網路法、深度學習與語義法等。

三、基於主動視覺的三維重建技術[7]

3.1 鐳射掃描法

鐳射掃描法其實就是利用鐳射測距儀來進行真實場景的測量。首先,鐳射測距儀發射光束到物體的表面,然後,根據接收訊號和傳送訊號的時間差確定物體離鐳射測距儀的距離,從而獲得測量物體的大小和形狀。

3.2 結構光法

結構光法的原理是首先按照標定準則將投影裝置、影象採集裝置和待測物體組成一個三維重建系統;其次,在測量物體表面和參考平面分別投影具有某種規律的結構光圖;然後再使用視覺感測器進行影象採集,從而獲得待測物體表面以及物體的參考平面的結構光影象投影資訊;最後,利用三角測量原理、影象處理等技術對獲取到的影象資料進行處理,計算出物體表面的深度資訊,從而實現二維影象到三維影象的轉換。按照投影影象的不同,結構光法可分為:點結構光法、線結構光法、面結構光法、網路結構光和彩色結構光。

3.3 陰影法

陰影法是一種簡單、可靠、低功耗的重建物體三維模型的方法。這是一種基於弱結構光的方法,與傳統的結構光法相比,這種方法要求非常低,只需要將一臺相機面向被燈光照射的物體,通過移動光源前面的物體來捕獲移動的陰影,再觀察陰影的空間位置,從而重建出物體的三維結構模型。

3.4 Kinect技術

Kinect感測器是最近幾年發展比較迅速的一種消費級的3D攝像機,它是直接利用鐳射光散斑測距的方法獲取場景的深度資訊,Kinect感測器如下圖所示。Kinect感測器中間的鏡頭為攝像機,左右兩端的鏡頭被稱為3D深度感應器,具有追焦的功能,可以同時獲取深度資訊、彩色資訊、以及其他資訊等。Kinect在使用前需要進行提前標定,大多數標定都採用張正友標定法。

四、基於Pixel2Mesh的三維重建技術

Pixel2Mesh(Generating3D Mesh Models From Single RGB Images)

4.1 整體框架

image.png

Fig.5 網路架構圖

1.首先給定一張輸入影象:InputImage。

2.為任意的輸入影象都初始化一個固定大小的橢球體(三軸半徑分別為0.2、0.2、0.8m)作為其初始三維形狀:Ellipsoid Mesh。

3.整個網路可以分成上下兩個部分:影象特徵提取網路和級聯網格變形網路。

1上面部分負責用全卷積神經網路(CNN)[8]提取輸入影象的特徵。

2下面部分負責用圖卷積神經網路(GCN)[9]來提取三維mesh特徵,並不斷地對三維mesh進行形變,逐步將橢球網格變形為所需的三維模型,目標是得到最終的飛機模型。

4.注意到圖中的PerceptualFeature Pooling層將上面的2D影象資訊和下面的3Dmesh資訊聯絡在了一起,即通過借鑑2D影象特徵來調整3D mesh中的圖卷積網路的節點狀態。這個過程可以看成是Mesh Deformation。

5.還有一個很關鍵的組成是GraphUnpooling。這個模組是為了讓圖節點依次增加,從圖中可以直接看到節點數是由156-->628-->2466變換的,這其實就Coarse-To-Fine的體現。

4.2 圖卷積神經網路GCN

我們先來看看圖卷積神經網路[6]是如何提取特徵的。一般的,對歐幾里得空間中一維序列的語音資料和二維矩陣的影象資料我們會分別採取RNN和CNN兩種神經網路來提取特徵,那GCN其實就是針資料結構中另一種形式圖的結構做特徵提取。GCN在表示3D結構上具有天然的優勢,由前面我們知道3D mesh是由頂點、邊和麵來描述三維物件的,這正好對應於圖卷積神經網路G =(V,E,F),分別為頂點Vertex、邊Edge和特徵向量Feature。

圖卷積的公式定義如下:

image.png

其中,flp、fl+1p分別表示頂點p在卷積操作前後的特徵向量;N(p)指的是頂點的p鄰居節點;w1、w2表示待學習的引數。

圖卷積的隱藏層表示如下:

image.png

其中,f表示一種傳播規則;每個隱藏層Hi都對應一個維度為Nxfi的形狀特徵矩陣(N是圖資料中的節點個數,fi表示每個節點的輸入特徵數),該矩陣中的每一行代表的是該行對應節點的fi維特徵表徵;A是NxN的鄰接矩陣。加上第i層的權重矩陣fixfi+1,則有輸入層為Nxfi時,輸出維度為NxNxNxfixfi+1,即為Nxfi+1。在每一個隱藏層中,GCN會使用傳播規則f將這些資訊聚合起來,從而形成下一層的特徵,這樣在每個連續層中圖結構的特徵就會變得越來越抽象。

從以上兩式可以看出圖卷積神經網路的節點是根據自身特徵和鄰接節點的特徵來進行更新的。

4.3 Mesh Deformation Block

作用:輸入2D CNN特徵和3D頂點位置、形狀特徵,輸出新3D頂點位置、形狀特徵

image.png

Fig.6 MeshDeformation Block

為了生成與輸入影象中顯示物體所對應的3D mesh模型,Mesh Deformation Block需要從輸入影象中引入2D CNN特徵(即圖示P),這需要將影象特徵網路和當前網格模型中的頂點位置(Ci-1)相融合。然後將上述融合的特徵與附著在輸入圖頂點上的mesh形狀特徵(Fi-1)級聯起來,合併輸入到基於G-ResNet模組中。G-ResNet是基於圖結構的ResNet網路,為每個頂點生成新的頂點位置座標(Ci)和3D形狀特徵(Fi)。

4.4 Perceptual Feature Pooling Layer

作用:將3D頂點位置和2D CNN特徵融合

image.png

Fig.7 PerceptualFeature Pooling Layer

該模組根據三維頂點座標從影象特徵P中提取對應的資訊,然後將提取到的各個頂點特徵再與上一時刻的頂點特徵做融合。具體做法是假設給定一個頂點的三維座標,利用攝像機內參計算該頂點在輸入影象平面上的二維投影,然後利用雙線性插值將相鄰四個畫素點的特徵集中起來,就可以輸入到GCN中提取圖結構特徵。特別的是,將從“conv3_3”、“conv4_3”和“conv5_3”層提取的特徵級聯起來,得到總通道數為1280(256+512+512)。然後將該感知特徵與來自輸入網格的128維3D特徵相連線,從而得到1408的總維數。

4.5 G-ResNet

作用:用來提取圖結構中的特徵

在獲得能表徵三維mesh資訊和二維影象資訊的各頂點1408維特徵後,該模型設計了一個基於ResNet結構的GCN來預測每個頂點新的位置和形狀特徵,這需要更高效的交換頂點之間的資訊[10]。然而,如四(2)中GCN介紹,每個卷積只允許相鄰畫素之間的特徵交換,這大大降低了資訊交換的效率。為了解決這個問題,通過短連線的的方法構建了一個非常深G-ResNet網路。在這個框架中,所有block的G-ReNet具有相同的結構,由14個128通道的圖殘差網路層組成。

4.6 Graph Unpooling Layer

作用:增加GCNN的頂點數目

image.png

Fig.8 GraphUnpooling示意圖

因為每一個圖卷積block本身頂點數量是固定的,它允許我們從一個頂點較少的網格開始,只在必要時新增更多的頂點,這樣可以減少記憶體開銷併產生更好的結果。一個簡單的方法是在每個三角形的中心新增一個頂點[11],並將其與三角形的三個頂點連線。但是,這會導致頂點度數不平衡。受計算機圖形學中普遍使用的網格細分演算法中頂點新增策略的啟發,我們在每條邊的中心新增一個頂點,並將其與該邊的兩個端點連線起來(如Fig.8.a)。新新增頂點的三維特徵設定為其兩個相鄰頂點的平均值,如果將三個頂點新增到同一個三角形(虛線)上,我們還將它們連線起來。因此,我們為原始網格中的每個三角形建立4個新三角形,並且頂點的數量將隨著原始網格中邊的數量而均勻增加。

4.7 Loss

1.Chamfer Loss 倒角損失[3]

image.png

Chamfer distance倒角距離是指兩點之間的距離lc,p表示某具體節點,q為p節點的鄰居節點,目的是約束網格頂點之間的位置,將頂點回歸到其正確方位,但是並不足以產生良好的3D網格。

2.Normal Loss 法向損失

image.png

Normal loss需要頂點與其相鄰頂點之間的邊垂直於可觀測到的網格真值,優化這一損失相當於強迫區域性擬合切平面的法線與觀測值一致。

3.LaplacianRegularization 拉普拉斯正則化

image.png

Laplacian Regularization鼓勵相鄰的頂點具有相同的移動,防止頂點過於自由移動而避免網格自交,保持變形過程中相鄰頂點之間的相對位置。

4.Edge Length Regularization 邊長正則化

image.png

Edge Length Regularization作用是防止產生離群點,頂點間距離偏差過大從而約束邊長。

最終loss為:

image.png

image.png

五、小結

image.png

Fig.9 Results

受深度神經網路的限制,此前的方法多是通過Voxel和Point Cloud呈現,而將其轉化為Mesh並不是一件易事,Pixel2Mesh則利用基於圖結構的神經網路逐漸變形橢圓體來產生正確的幾何形狀。本文著重介紹了3D mesh重建的背景、表示方法和Pixel2Mesh演算法。文章貢獻歸納如下:

(1)實現了用端到端的神經網路實現了從單張彩色圖直接生成用mesh表示的物體三維資料

(2)採用圖卷積神經網路來表示3D mesh資訊,利用從輸入影象提取到的特徵逐漸對橢圓進行變形從而產生正確的幾何形狀

(3)為了讓整個形變的過程更加穩定,文章還採用Coarse-To-Fine從粗粒度到細粒度的方式

(4)為生成的mesh設計了幾種不同的損失函式來讓整個模型生成的效果更加好

image.png

Fig.10 飛機Mesh效果

image.png

Fig.11 凳子Mes h *效果*

Future work 該演算法所應用的領域是物體的3D模型重建,可以期待將其擴充套件為更一般的情況,如場景級重建,並學習多影象的多檢視重建(Piexl2Mesh++)[12]。

參考文獻:

  1. Zhiqin Chen and HaoZhang. Learning implicit fifields for generative shape modeling. In Proceedings of the IEEE Conference on Computer Visionand Pattern Recognition, pages 5939–5948, 2019.

  2. Angjoo Kanazawa,Shubham Tulsiani, Alexei A. Efros, and Jitendra Malik. Learningcategory-specifific mesh reconstruction from image collections. In ECCV, 2018.

  3. Fan, H., Su, H., Guibas,L.J.: A point set generation network for 3d object reconstruction from a singleimage. In CVPR, 2017.

  4. Choy, C.B., Xu, D., Gwak,J., Chen, K., Savarese, S.: 3d-r2n2: A unifified approach for single andmulti-view 3d object reconstruction. In ECCV, 2016.

  5. Rohit Girdhar, DavidF. Fouhey, Mikel Rodriguez, and Abhinav Gupta. Learning a predictable andgenerative vector representation for objects. In ECCV, 2016.

  6. Thomas N. Kipf and MaxWelling. Semi-supervised classifification with graph convolutional networks.In ICLR, 2016.

  7. 鄭太雄, 黃帥, 李永福, 馮明馳. 基於視覺的三維重建關鍵技術研究綜述. 自動化學報, 2020, 46(4): 631-652. doi:10.16383/j.aas.2017.c170502

  8. Lars Mescheder, MichaelOechsle, Michael Niemeyer, Sebastian Nowozin, and Andreas Geiger. Occupancynetworks: Learning 3d reconstruction in function space. In CVPR, pages 4460–4470, 2019.

  9. Peng-Shuai Wang, Yang Liu,Yu-Xiao Guo, Chun-Yu Sun, and Xin Tong. O-cnn: Octree-based convolutional neuralnetworks for 3d shape analysis. ACMTransactions on Graphics (TOG) , 36(4):72, 2017.

  10. Christian Hane,Shubham Tulsiani, and Jitendra Malik. Hierarchical surface prediction for 3dobject reconstruction. In 3DV,2017.

  11. Sunghoon Im, Hae-GonJeon, Stephen Lin, and In SoKweon. Dpsnet: End-to-end deep plane sweep stereo.In ICLR, 2018.

  12. Chao Wen and Yinda Zhangand Zhuwen Li and Yanwei Fu: Multi-View 3D Mesh Generation via Deformation. InECCV, 2019.

文章來自一點資訊AI影象圖形實驗室(AIIG)團隊