郁 錢,路金曉,柏基權,范洪輝
(1.江蘇理工學院 計算機工程學院,江蘇 常州 213001;2.江蘇理工學院 機械工程學院,江蘇 常州 213001)
從有限的輸入中重建三維物體是計算機視覺和計算機圖形學領域重要的研究課題。為了便于計算機處理,三維物體通常用一些方式來表征,主要包括點云、體素、隱域場和網格4種,其它的表征方式都可以等價為這4種。三維物體重建的方法可以分為基于多視圖幾何理論的方法[1]和基于學習方式的方法兩類。基于多視圖幾何理論的方法一般需要輸入大量不同的視圖,才能重構出物體的整體結構,但是不需要大量的數據來進行訓練,重建出的初步結果一般是點云。在實際環境下,視圖之間的匹配會受到光照等因素的嚴重影響,從而導致匹配不準。此時,基于多視圖幾何理論的三維重建方法便失效。基于學習方式的三維物體重建方法,可以輸出具有不同表征的重建結果,應用面較廣。與基于多視圖幾何理論的方法相比,該方法可充分利用機器學習和推斷能力,從單張圖片或少量信息中推斷出物體的結構,但是需要大量的訓練數據和運算量。
本文主要對基于深度學習的三維物體重建方法進行了綜述。首先,描述了三維物體的主要表征形式,討論了基于多視圖幾何理論的三維物體重建方法和基于深度學習的三維物體重建方法,簡要分析了兩種方法相結合的三維物體重建。其次,討論了利用深度學習方法進行三維物體重建時的損失函數、網絡架構和數據集。最后,探討了關于深度學習方法在三維物體重建運用方面的研究趨勢。
三維物體的表征方式主要包括點云、體素、隱域場和網格等。點云由均勻分布在三維物體表面的點構成,是表示三維物體最直接和便捷的方式;可通過激光雷達等設備掃描物體或在已有的三維模型上采樣獲取,因而也是最容易獲取的三維表征方式。但是,點云具有不規則性和離散性,存在點之間相鄰拓撲關系缺失的問題,因此還需在后處理步驟中將點云變成顯式的網格表示。
為了獲取三維物體的三維體素表征,需要將三維物體所在的空間柵格化,柵格化得到的最小單元被稱為體素。如果體素落在物體內部或者與物體表面相交,那么就是有效的,通常賦值為1,落在物體外部的為0。三維體素表征通常分為密集體素和稀疏體素。稀疏體素表征不能細致地刻畫三維物體,而密集體素表征則需要大量的存儲資源。
隱域場是三維物體的一種隱式表征,表示空間中任何一點在物體的內部還是外部,或者到物體表面的距離。隱域場也可以離散化為非二值的體素,用Marching Cubes[2]算法生成網格結構。隱域場一般可由神經網絡來學習和表示。
三維物體的網格表征可看成是一個顯式的圖表示。相對于其它3種表征,網格的表征最逼真,也有利于三維物體的渲染。圖1展示了三維物體常見的表征方式。從表征角度看,三維物體重建就是實現從二維表征到三維表征,或者從一種三維表征到其他三維表征的過程。

圖1 三維物體的常見表征方式
基于多視圖幾何理論三維物體重建的代表性方法為SFM(Structure from Motion)和MVS(Multi View Stereo)。SFM是一類基于視圖的代表性稀疏重建方法[4-5],是指從不同視角拍攝的圖像中,利用多視圖幾何方法計算出攝像機的參數,重建三維物體結構的方法;其流程包括二維局部特征的匹配、攝像機參數和三維結構信息的初始值計算、Bundle adjustment[6-7]及數據擬合。薛俊詩等人[8]提出的混合式SFM重建方法,首先對場景進行聚類,接著重建每個子場景,最后將重建的子場景進行組合。因為SFM構建的三維物體模型往往是稀疏的,所以需要利用MVS來建立三維物體的稠密模型。
MVS是利用攝像機拍攝的圖像集合重建完整的3D物體稠密模型。繆君等人[9]提出基于稀疏點云的分段平面場景MVS重建方法,能夠獲得物體的三維結構。王偉等人[10]提出快速、魯棒的分段平面MVS重建算法。基于多視圖幾何理論的三維物體重建方法的重要應用之一是Visual SLAM(Simultaneous Localization and Mapping),SFM和MVS是其重要的三維重建方法[11]。
在利用SFM重建三維物體形狀時,二維局部特征的匹配是成敗的關鍵。實際情況下,由于不同視圖之間的重疊較小、物體紋理缺失或物體存在光照反射,因此二維局部特征的匹配往往會出現嚴重的錯誤。另外,由于基于多視圖幾何理論的三維重建方法缺乏推斷的能力,不能解決輸入信息較少情況下三維物體結構補全的問題,而深度學習方法具有很好的學習和推斷能力,所以基于深度學習的三維重建方法越來越受到人們的關注。
2.2.1 基于點云的三維物體重建
Fan等人[12]首次提出從單視圖到三維點云的重建方法,而不是直接生成三維結構的體素和網格表征。該方法首次建立了復雜的三維點云生成網絡(Point Set Generation Network)。另外,為了解決單視圖三維重建的不適定問題,該方法使用了變分自編碼器來生成可能的三維形狀。Yang等人[13]提出了FoldingNet,將二維單位元的網格點用兩段多層感知器進行類似折疊的變換來生成點云;但是,FoldingNet的生成結果容易受到二維單位元網格點相鄰拓撲關系的影響。Pang等人[14]提出了TearingNet,通過剪裁二維單位元的網格面,從而避免初始網格點的拓撲關系對生成點云的影響。為了能夠較好地生成三維點云,對抗損失也被引入到三維物體重建中。Achlioptas等人[15]首次將對抗生成網絡[16]引入到三維點云的生成和重建中。Jiang等人[17]提出了幾何對抗損失函數,以保證重建的三維點云與真實物體保持一致。三維點云的補全也可以看成是基于點云的三維物體重建的特殊情況。Yu等人[18]首次將Transformer[19]應用到三維點云的補全問題中,取得了非常好的效果。
三維形狀的點云表征與體素表征相比,需要的存儲資源少;與網格表征相比,不要考慮點之間的關系;與隱域場表征相比,不需要后繼顯式網格生成的步驟。因此,三維形狀的點云表征更加便捷,應用場景也較多,比如自動駕駛等。但是,三維物體的點云表征相對粗糙,點與點之間的真實相鄰關系很難確定,在點數不夠多的情況下,物體的細節信息也很難被表達出來。因此,如何有效保持點云重建的細節信息和點之間的相鄰拓撲關系,是值得探索和研究的問題。
2.2.2 基于體素的三維物體重建
Yan等人[20]提出無監督的三維體素重建方法,能夠實現輸入二維圖像,輸出其某個視角三維結構的投影,再通過加入輸入、輸出相等的約束,預測出物體的三維體素結構。Tulsiani[21]提出類似的方法,利用多視圖約束實現三維體素的重建。Yang等人[22]提出半監督的單視圖三維體素重建方法,對輸入的圖像加入了有限的姿勢信息后,三維形狀重建的精度得到進一步提升。
一般情況下,單視圖的三維重建存在形狀先驗信息的不確定性,很難得到較好的物體結構,因此學者們嘗試將單視圖和多視圖的三維重建統一到一個方法框架中。Kar等人[23]提出多視圖立體視覺機器,提升了方法重建物體細節的能力。Choy等人[24]利用三維遞歸神經網絡處理視圖序列,從而得到三維物體的體素。H?ne等人[25]提出層次化的曲面重建方法,能夠得到更高分辨率的體素表達。
為了能夠在有限的體素下實現高精準的三維物體重建,研究者引入了新的技術。Wu等人[26]用對抗生成網絡將形狀先驗信息加入三維物體的體素生成過程,很好地解決了基于單視圖三維體素重建的不適定問題。Ma等人[27]提出分離通道時空卷積網絡,并首次將注意力機制引入到三維體素的重建中。Yang等人[28]提出基于記憶機制的三維體素重建方法。該方法首先預存儲三維體素的特征;然后,找到與輸入圖像相似的體素特征并將其輸入到長短記憶網絡,得到融合后的特征;最后,利用該特征解碼出物體的三維體素結構。這種基于記憶的方法充分利用了已有三維物體的體素信息來優化重建,但是當三維體素的分辨率升高時,該方法同樣面臨著存儲資源消耗巨大的問題。
雖然以上方法能夠利用輸入的信息重建與之對應的三維物體體素結構,但是受到三維體素分辨率的限制,重建結果存在細節信息缺失嚴重、分辨率較低的問題。
2.2.3 基于隱域場的三維物體重建
OccNet[29]是一種占有網絡,用其表示三維物體的隱域場時,它的一個等值面可看作物體的表面。在該方法中,首先提取輸入信息的特征表示,然后將空間中的任意一點和輸入特征拼接后,輸入由多個全連接殘差網絡構成的占有網絡中,計算出輸入點是在物體的表面還是其外部。與OccNet類似,IM-NET[30]是一個跨連接的多層感知器,可用來學習任意一個空間點隱域場的值,因此OccNet和IM-NET被看作是一個二分類器。
為了使傳統的模型也能夠實現三維物體的重建,學者們提出了Deep level sets[31]和deep marching cubes[32]等方法。這些方法能夠很好地建模三維物體的隱域場,但是利用輸入的局部信息對重建結果的優化卻不夠。為此,ConvOccNet[33]和IFNet[34]被提了出來。在這兩個模型里,首先建立一個特征空間,然后在檢索點位置提取該點的局部特征,最后將這些特征信息輸入神經網絡,用于隱域場的學習和重建。當輸入信息是二維圖像時,要有效提取檢索點的局部特征并用于計算檢索點隱域場的值,是一個非常困難的問題。Xu等人[35]將已有的攝像機參數作為一部分訓練信息,訓練一個計算攝像機矩陣的網絡;用訓練后的矩陣對檢索點進行變換,將變換后的檢索點所對應的各層卷積特征全部提取出來作為檢索點的特征。Remelli等人[36]和Lin等人[37]充分利用物體的輪廓信息來優化重建的隱域場,取得了很好的重建效果。
以上方法都是將物體的曲面看作等值面,因此重建的物體模型在細節方面可能存在不足。Liu等人[38]首次將八叉樹神經網絡O-CNN和滑動最小二乘(Moving least-squares)結合起來,提出了IMLSNet[39]。該網絡用O-CNN提取葉子節點的信息,用滑動最小二乘模型擬合三維物體曲面,在O-CNN足夠深的情況下,能夠重建出更加平滑和細節較好的物體表面。為了使隱域場模型能夠適用于非剛性物體及場景的重建,人們提出了各種局部隱域場模型[40-42]。另外,Mildenhall[43]提出的神經輻射場NRF(Neural Radiance Fields)可用于三維物體的視圖合成,也可以認為是一種更加復雜的隱域場。
2.2.4 基于網格的三維物體重建
如果增加三維體素的分辨率,三維形狀的體素表征則會消耗大量的存儲資源和處理時間,而點云和隱域場表征最終都要轉化為網格結構,才能表示物體的表面結構。三維形狀的網格表征不僅能和紋理結合表示真實物體的表面結構,而且能極大降低對存儲資源的需求,加快三維形狀的處理速度,因此基于網格的三維物體重建就成為了研究的熱點。Kar等人[44]首次基于學習的方法在單視圖三維重建方面取得進展,但是輸出的三維網格結構比較粗糙。Kato等人[45]提出從視覺圖像到三維網格的神經網絡渲染器(Neural 3D Mesh Renderer),從一個具有642點的球面網格開始,通過不斷的迭代改變網格上每個點的位置,使最終的網格趨向于物體的結構。在迭代過程中,生成的網格被渲染到圖像上,與真實的渲染圖像作對比,使渲染后的圖像盡量與真實圖像一致。Wang等人[46]提出一種迭代模型Pixel2Mesh,從具有156點的球面網格開始,利用圖卷積網絡和感知特征池化技術計算出每個點的新特征和位置,并且使用反池化技術不斷提高網格的頂點數,取得了很好的重建效果。Wang等人[47]還提出一種類似三維形變的網絡,能夠從任意網絡出發,通過不斷形變生成目標網格。
如果重建的物體與初始網格具有相同的拓撲結構,那么通過以上迭代方法生成的重建結果將具有較高的精度。但是,大多物體的拓撲結構與初始網格不一樣,在這種情況下,基于網格的三維物體重建在細節信息方面將可能發生嚴重的錯誤。因此,在基于網格的三維重建中,如何使網格的拓撲結構具有自適應能力,就成為一個值得研究的問題。為了解決網格重建中的拓撲變化,Groueix等人[48]提出了AtlasNet。該網絡由若干個多層感知器構成,每個多層感知器負責生成三維形狀的一部分點云結構。從實驗結果看,AtlasNet取得了很好的點云和網格重建效果。但是,Atlas-Net中的多層感知器對應的生成區域具有不確定性,并且生成的網格塊與塊之間存在不連續性。
2.2.5 深度學習與多視圖幾何相結合的方法
深度學習和多視圖方法結合起來進行三維重建的主要途徑有兩種:(1)用深度學習對基于多視圖幾何的三維重建算法中的深度圖進行計算[49-51];(2)用深度學習實現端到端的多視圖三維物體重建。基于神經網絡端到端的MVS系統結合深度學習,可以得到MVS的深度信息[49-51]。Wen等人[52]提出的Pixel2Mesh++可完全替代SFM和MVS的過程。與傳統方法相比,深度學習和多視圖幾何方法的結合使得深度圖的計算更加方便,準確度也更高,且具有一定的推斷能力,但是該方法同樣需要輸入大量的視圖。
2.2.6 基于深度學習三維物體重建的網絡架構
多層感知器(Multi-layer Perceptron,MLP)是用于三維物體重建的最主要神經網絡,代表性網絡包括點云生成的FoldingNet[3]、隱域場生成的IM-NET[30]和DeepSDF[53],以及網格生成的Atlas-Net[48]。其它一些模型也是基于多層感知器設計而來,例如提取點云特征的PointNet[54],以及具有反饋機制的TearingnNet[14]。循環神經網絡也被用來進行三維體素的重建[23]和結構化的分析[55]。卷積神經網絡,如AlexNet[56]、VGGNet[57]、GoogleNet[58]、ResNet[59],一般用于提取輸入圖像和視頻的特征。基于卷積操作設計的神經網絡模塊也被運用到三維物體的重建中,例如卷積神經網絡循環單元[23]和用于三維點云特征提取的八叉樹卷積網絡[38]。圖卷積神經網絡[60-61]首次被應用到Pixel2Mesh[46]中,以實現對網格的漸進改變。
2.2.7 基于深度學習三維物體重建的損失函數
神經網絡的訓練離不開損失函數,訓練的過程就是最小化損失函數的過程。損失函數表示重建的三維物體與真實物體的差異。目前,用于三維物體重建的損失函數主要分為以下三類:
(1)點云距離損失。當用點云表示三維物體時,常 用 搬 土 距 離(Earth Mover’s Distance,EMD)[12]和倒角距離(Chamfer Distance,CD)[12]作為損失函數。EMD指兩個集合點與點距離之和的最小值。CD指重建點云與真實點云點與點最近距離的平均值。
(2)對抗損失。對抗損失主要包括生成損失和判別損失兩個部分。生成損失可以使生成的三維物體和真實的三維物體盡可能相似,而判別損失的作用恰恰相反。
(3)其它損失。為了進一步提升三維物體重建的精度,Jin等人[62]提出了一種可微分的視覺相似度量損失函數(DR-KFS),從各個視角保證生成物體與真實物體的一致性。
三維物體的信息很難獲取,因此能夠被用于三維重建的數據集并不是很多。常見3D數據集如表1所示,其中ShapeNet[56]和PartNet[58]常用于三維重建,ModelNet[57]常用于三維物體分類。

表1 常見3D數據集的主要特征
ShapeNet[63]數據集由物體的三維CAD模型組成,是目前為止包含豐富注釋的最大三維模型數據集。它包含超過300萬個模型,其中22萬個模型被歸為3 135個類別。ModelNet[64]數據集是當前規模較大、模型類別較多的一個大型CAD數據集,收集了各類3D CAD網站的660類共計151 125個CAD模 型。Mo等人[65]提出 的PartNet數據 集 是 一個一致的、大規模的3D物體數據集,使用了細粒度、實例級和層次化的3D零件信息進行注釋。該數據集由573 585個零件實例和26 671個3D模型組成,涵蓋了24個類別。IKEA[66]數據集包括從Flickr網站收集的代表典型室內場景的圖像和從谷歌3D倉庫收集的3D模型,提供了800張圖像和225個3D模型,用90個不同的3D模型對800張圖像進行了充分的注釋。Pix3D[67]是一個大規模數據集,包含真實圖像和具有精確2D-3D對齊的真實形狀;包括9個類別395個3D形狀,每個形狀都與一組在不同環境中拍攝的精確物體的圖像關聯。PASCAL 3D+[68]是基于PASCAL VOC2012[69]的12種剛體類別生成的三維物體數據集,每類平均有3 000個左右的物體實例。該數據集主要用于三維物體的檢測和姿勢估計,也可用于三維物體的重建。
近年來,深度學習技術開始應用于非剛性物體的重建。Kokkinos等人[70]基于非剛性物體SFM[71]來自我監督單目三維類別的重建,通過運動的循環損失強制三維重建的一致性。Yang等人[72]提出從單目視頻中進行關節形狀重建的方法,不需要先驗模板或類別信息,可利用密集的兩幀光流來克服非剛性結構和運動估計問題中的固有模糊性。相比其它非剛性物體,人體的重建具有更大的實用價值。Yang等人[73]將行人的形狀、姿勢等表示為直接從數據中學習的神經隱函數,無需擬合人體參數身體模型,就能夠處理行人的各種形狀和姿勢。該方法能夠處理更廣泛的人體幾何形狀和拓撲結構。Wan等人[74]提出的基于視頻3D人體形狀和姿勢估計的多級注意力編碼器-解碼器網絡,包括一個時空編碼器和一個運動拓撲解碼器,在一個統一的框架中對多級注意力進行建模。
對現實中的物體或場景進行三維重建已廣泛應用于虛擬現實、文物保護、醫療診斷、自動駕駛等領域。這些重建不僅要得到物體和場景的形狀信息,更需要獲得包括紋理在內的真實感信息。在最近的研究中,Zhang等人[75]認為現實世界絕大多數場景都是由定義明確的表面組成,因此引入基于神經輻射場的隱式模型來模擬表面,通過學習與球體微分同胚的封閉表面神經形狀表示,就能保證重建的質量。Henderson等人[76]提出的紋理3D網格生成模型允許在沒有任何3D信息的情況下從2D圖像集合中重建具有真實感的物體。Reizenstein等人[77]提出的“3D通用對象”大規模數據集包含了真實的多視圖圖像,并用相機姿勢和地面實況的3D點云注釋;同時,也提出了一種新穎的神經渲染方法,可利用強大的Transformer模型,在給定少量視圖的情況下重建對象。
為了重建出更加精細的三維物體,并學習到三維物體中的部分語義信息,一些結構化重建方法被人們提出。Deng等人[78]采用一種近似幾何的方法,將三維物體看作一組凸多邊形組合,并引入網絡結構來表示。Paschalidou等人[79]提出可同時重建三維物體幾何形狀和潛在層次結構的方法。Mezghanni等人[80]在幾何或視覺合理性的基礎上,考慮了物理或結構的約束,引入一個學習框架和一個損失框架,以保證生成物體的連接性和物理穩定性。Mo等人[81]通過符號部分樹來表示并生成三維點云幾何形狀。Wu等人[55]通過順序零件裝配模型和PQ-NET自動編碼器,將零件特征序列編碼成一個潛在的、固定大小的特征向量,解碼器再利用該向量重建出三維零件形狀序列,最后將這些序列組裝成一個完整的三維物體。目前,結構化三維重建面臨的問題是缺乏大量的標注數據,解決這個問題的可能方法是將分離表征[82]和結構化三維重建相結合。
由于三維監督信息的獲取昂貴、費時,因此一些人致力于通過無監督學習來進行三維物體的重建。Wu等人[83]提出無監督單視圖的學習方法,首先利用自編碼器將輸入圖像分解為深度、反照率、視點和光照,然后利用物體對稱的假設,通過預測對稱概率圖來完成對物體的建模。該方法可從單視圖中精確地重建出人臉、貓臉和汽車的三維形狀,但是只適用于對稱物體。Ho等人[84]提出了不受對稱性約束的無監督方法,可用于更多物體的三維重建,而且采用了一種新的反照率損失,以改善重建的細節和真實性。此外,Pan等人[85]嘗試通過迭代策略,利用GAN圖像流形中不同視角和照明變化的信息,以無監督的方式從單個二維圖像中恢復人臉、汽車和建筑等的高精度三維形狀。目前,自監督學習已經在傳統的計算機視覺和自然語言處理中取得了出色成績[86],它是無監督學習的一類重要方式。如何將自監督學習應用到三維重建并提高重建質量,將是一個非常值得研究的問題。
本文根據三維物體表征方式的不同,對基于深度學習的三維物體重建方法進行了分類綜述,分析了已有方法的特點及不足,凝練了四種重要的研究趨勢。值得注意的是,一些與三維物體重建相關的重要問題,如三維數據的補全和采樣、三維重建質量的評判、基于遷移學習的三維重建、三維場景重建、三維物體和場景的理解等,同樣值得深入研究。