劉國柱,于 新
(青島科技大學(xué) 信息科學(xué)技術(shù)學(xué)院,山東 青島 266061)
基于圖像的三維重建是從輸入的一張或多張二維圖像中恢復(fù)出物體的三維幾何形狀的過程,是計(jì)算機(jī)視覺領(lǐng)域中非常重要的研究內(nèi)容之一。三維重建有著巨大的應(yīng)用價(jià)值,廣泛應(yīng)用在醫(yī)學(xué)診斷、城市建設(shè)、文物修復(fù)、商品展示和無人駕駛等多個(gè)領(lǐng)域。依據(jù)輸入圖像數(shù)量的不同,三維重建可以劃分為多幅圖片三維重建和單張圖片的三維重建。從單張圖像預(yù)測物體的不可見部分一直是三維重建的一大挑戰(zhàn),本工作著重介紹單幅圖像物體的三維重建方法。
基于單幅圖像的三維重建的傳統(tǒng)方法分為基于模型的重建方法和基于幾何形狀復(fù)原的重建方法兩類[1]。其中基于模型的重建方法針對特定類別的物體獲得的重建結(jié)果比較好,但該傳統(tǒng)方法很難拓展到不同類別和不同形狀的物體上;對于基于幾何形狀復(fù)原的重建方法雖具備良好的泛化性,但該方法對圖中的光照和灰度要求更高,使得很難重建出的較好質(zhì)量的效果。自2015年YANN等[2]推動(dòng)深度學(xué)習(xí)技術(shù)的發(fā)展以來,不停地涌現(xiàn)出各種各樣的基于深度學(xué)習(xí)的單幅圖像的三維重建方法,并取得了巨大的進(jìn)展,三維重建迎來了新的機(jī)遇。
為了將二維卷積神經(jīng)網(wǎng)絡(luò)更好地應(yīng)用于三維領(lǐng)域,人們探索了多種三維模型的表示形式。在計(jì)算機(jī)圖形學(xué)領(lǐng)域,傳統(tǒng)的形狀表示方法包含體素、點(diǎn)云和網(wǎng)格這些顯式[3]表示方法,因此本工作根據(jù)三維模型不同的表示方式,從體素、點(diǎn)云、網(wǎng)格三種類別分別介紹深度學(xué)習(xí)在單視圖三維重建中的研究現(xiàn)狀。本工作第一節(jié)將分別討論這三類表示方法的實(shí)現(xiàn)技術(shù)的特點(diǎn)和優(yōu)勢,第二節(jié)歸納總結(jié)三維重建研究中常用的數(shù)據(jù)集以及評價(jià)標(biāo)準(zhǔn),并對一些經(jīng)典的三維重建方法從不同指標(biāo)對比分析。第三節(jié)對該領(lǐng)域依然存在的問題及發(fā)展趨勢進(jìn)行總結(jié)與展望。因此,本工作依據(jù)不同的三維模型表示,總體分類如圖1所示。圖2用時(shí)間軸的方式總結(jié)了本工作中綜述的從2016年至今的基于深度學(xué)習(xí)的單視圖三維重建的一些里程碑方法,其中按照方法出現(xiàn)的年份分段標(biāo)注出了方法名及作者。
圖1 總體分類組織結(jié)構(gòu)圖Fig.1 Overall classification structure diagram
圖2 單視圖三維重建中基于點(diǎn)云、網(wǎng)格和體素的時(shí)間順序概述Fig.2 An overview of the time sequence based on point clouds,grids,and voxels in single-view 3D reconstruction
近年來,基于深度學(xué)習(xí)的三維重建技術(shù)的研究逐步成熟起來,EIGEN等[4]和LIU等[5]分別在2014年和2015年提出用卷積神經(jīng)網(wǎng)絡(luò)(convolutional neural networks,CNN)學(xué)習(xí)圖像到它的深度圖像信息之間的映射,使用深度圖來解釋重構(gòu)原始輸入圖片的信息,雖然深度圖像可以用來理解重建物體的三維信息,但是不夠直觀,因此出現(xiàn)了使用體素、點(diǎn)云和網(wǎng)格等形式來表示三維模型信息的大量研究。
體素類似于像素,是二維像素的自然延伸,它與卷積神經(jīng)網(wǎng)絡(luò)具有兼容性,實(shí)現(xiàn)起來具有簡單性。體素表示是基于學(xué)習(xí)的三維重建的最早的表現(xiàn)方式之一。隨著大量三維數(shù)據(jù)集的出現(xiàn)以及深度學(xué)習(xí)的發(fā)展,在基于深度學(xué)習(xí)的單張圖片的三維重建中取得了很大進(jìn)展。3D ShapeNets[6]于2015年提出,成為了最早將深度神經(jīng)網(wǎng)絡(luò)應(yīng)用在體素表示的方法之一。綜合基于體素表示的三維重建的相關(guān)文獻(xiàn)內(nèi)容,可以將體素模型的生成方法分為兩類:基于特征學(xué)習(xí)的方法和基于協(xié)同學(xué)習(xí)的方法。
1.1.1 基于特征學(xué)習(xí)的方法
大多數(shù)基于特征學(xué)習(xí)的單視圖重建方法都是使用編碼器將輸入的圖像編碼到一個(gè)潛在的空間,然后解碼器再將潛在層的向量映射到一個(gè)三維體素化模型上。實(shí)現(xiàn)過程如圖3基于特征學(xué)習(xí)的三維體素模型生成過程所示。
圖3 基于特征學(xué)習(xí)的三維體素模型生成過程Fig.3 Process of generating 3D voxelized model based on feature learning
在大多數(shù)的單視圖三維物體重建方法中,都是將輸入的圖像直接編碼到一個(gè)較低維的離散的潛在空間[7-11]。CHOY等[7]提出了一種基于標(biāo)準(zhǔn)長短時(shí)記憶(long short-term memory,LSTM)的拓展網(wǎng)絡(luò)架構(gòu)3D-R2N2,該網(wǎng)絡(luò)可以建立二維圖像特征到其對應(yīng)的三維體素模型的映射關(guān)系,首先利用卷積神經(jīng)網(wǎng)絡(luò)對原始輸入圖像編碼為低維特征,然后運(yùn)用一個(gè)反卷積網(wǎng)絡(luò)解碼,中間使用LSTM模塊過渡連接,完成從任意角度接收單個(gè)或者多個(gè)對象實(shí)例的圖像生成三維體素模型。不久,GIRDHAR等[9]設(shè)計(jì)了TL-embedding network網(wǎng)絡(luò),利用三維自編碼網(wǎng)絡(luò)和簡單的特征提取網(wǎng)絡(luò)(5個(gè)卷積層)分別提取三維體素化模型和圖像的特征,也是將輸入的圖像直接編碼到一個(gè)較低維的離散的潛在空間,同時(shí)是第一個(gè)提出將學(xué)習(xí)可生成和預(yù)測的三維模型特征作為目標(biāo)的網(wǎng)絡(luò)。
還有一些研究使用間接的方式生成三維模型,首先利用編碼器-解碼器結(jié)構(gòu)生成輸入二維圖像的中間表示,然后將中間表示編碼為一個(gè)離散的潛在空間。例如,WU等[12]提出Marr Net,將三維重建問題按照先估計(jì)2.5D的草圖再預(yù)測3D形狀方式進(jìn)行,該方法在訓(xùn)練時(shí)通過多個(gè)階段微調(diào)的方式取得了效果不錯(cuò)的三維模型。該方法利用ResNet-18編碼輸入圖像,得到多個(gè)特征圖,通過解碼器輸出對應(yīng)的中間表示,例如深度圖、輪廓圖等形式,然后將中間表示編碼為向量,最后將向量解碼為體素網(wǎng)格。類似思路的研究還有文獻(xiàn)[13-14]提出的方法。
1.1.2 基于協(xié)同學(xué)習(xí)的方法
體素化模型可以有效的預(yù)測全局形狀結(jié)構(gòu),但在拓展到高分辨率輸出時(shí),會(huì)導(dǎo)致內(nèi)存和計(jì)算量成本太大,針對這一問題,一些研究開始將重點(diǎn)放在如何生成高分辨率三維體素化模型和使用八叉樹進(jìn)行有效的空間劃分[15-18]上,使用八叉樹的獨(dú)特的數(shù)學(xué)體征結(jié)構(gòu)協(xié)同體素構(gòu)建任務(wù)完成目標(biāo)的三維重建。RIEGLER等[16]提出一種卷積網(wǎng)絡(luò)Oct Net,利用輸入數(shù)據(jù)的稀疏性,使用一系列不平衡的八叉樹來分割三維空間,由此可以更合理的使用內(nèi)存以及降低計(jì)算量。
受文獻(xiàn)[16]的啟發(fā),H?NE等[17]提出利用八叉樹的結(jié)構(gòu)表示體素,將體素分為邊界、占用以及未占用三類,使用八叉樹葉節(jié)點(diǎn)存儲(chǔ)CNN提取的圖像特征,從而節(jié)省了計(jì)算量。TATARCHENKO等[18]提出一種深度卷積解碼器結(jié)構(gòu),使用八叉樹表示法,該方法可以在有限內(nèi)存下得到更高分辨率的體素模型輸出。表1整理了近幾年一些基于體素表示的單視圖三維重建方法。
表1 基于體素表示的三維重建方法整理Table 1 3D reconstruction methods based on voxel representation
點(diǎn)云表示是以3D空間中點(diǎn)的集合的形式來表現(xiàn)物體的三維模型,3D點(diǎn)云作為一種基于表面的幾何形式,具有均勻、連接性強(qiáng)、富有表現(xiàn)力的優(yōu)勢。隨著點(diǎn)云形式在物體識(shí)別方面相關(guān)研究的出現(xiàn)以及深度網(wǎng)絡(luò)發(fā)展的推動(dòng),最近出現(xiàn)了大量基于點(diǎn)云的三維重建方法。根據(jù)監(jiān)督的類型,本節(jié)將從2D監(jiān)督和3D點(diǎn)云監(jiān)督兩類分別綜述三維重建方法。歸納基于點(diǎn)云表示的重建方法,可以發(fā)現(xiàn)大多數(shù)方法是采用編碼器-解碼器結(jié)構(gòu)進(jìn)行重建,大致處理過程見圖4。
圖4 基于點(diǎn)云的三維重建模型預(yù)測過程Fig.4 Prediction process of the 3D reconstruction model based on the point cloud
1.2.1 基于3D點(diǎn)云監(jiān)督的三維重建
早期出現(xiàn)的基于點(diǎn)云表示的方法大多數(shù)都是利用3D點(diǎn)云監(jiān)督來完成重建任務(wù)的[27-31]。FAN等[27]提出了點(diǎn)集生成網(wǎng)絡(luò)(point set generation network,PSG-Net),這是最早用深度學(xué)習(xí)研究點(diǎn)云表示點(diǎn)集生成問題,通過3D點(diǎn)云監(jiān)督完成了單幅圖像的三維重建任務(wù)。MANDIKAL等[28]擴(kuò)展了PSG-Net,同時(shí)受方法[32]中分類結(jié)構(gòu)的啟發(fā),提出了3D-PSRNet聯(lián)合訓(xùn)練分割和重建兩個(gè)任務(wù),引入位置感知分割損失訓(xùn)練網(wǎng)絡(luò)得到了更真實(shí)的重建結(jié)果。SUN等[33]使用部分點(diǎn)云數(shù)據(jù)作為監(jiān)督,在生成3D模型的同時(shí)渲染圖像數(shù)據(jù),并與輸入圖像進(jìn)行比較完成自監(jiān)督學(xué)習(xí)下的三維重建。DALAL等[34]在方法[35]的基礎(chǔ)上設(shè)計(jì)KRO Loss使用3D點(diǎn)云實(shí)現(xiàn)自監(jiān)督的三維重建網(wǎng)絡(luò)訓(xùn)練。
1.2.2 基于2D監(jiān)督的三維重建
上文提到的利用3D點(diǎn)云監(jiān)督的方式重建在訓(xùn)練時(shí)需要大量的三維數(shù)據(jù),數(shù)據(jù)不易于獲取并且昂貴,因此,研究人員嘗試?yán)枚S監(jiān)督的方式[36-39]進(jìn)行重建。LIN等[36]用一個(gè)可微的模塊即偽編碼器近似真實(shí)的渲染操作,不斷優(yōu)化合成的新的深度圖來學(xué)習(xí)密集的三維形狀,利用2D監(jiān)督實(shí)現(xiàn)重建任務(wù)。NAVANEET等[37-38]在分別開發(fā)了DIFFER和CAP-Net可微投影模塊,通過對點(diǎn)及其特征投影到二維圖像,不斷訓(xùn)練網(wǎng)絡(luò)。其中方法一[37]可以直接從單幅圖像中預(yù)測3D形狀和顏色等屬性,方法二[38]中利用多個(gè)前景掩膜作為監(jiān)督數(shù)據(jù),完成單幅圖像的三維重建任務(wù)。文獻(xiàn)[35,40]使用2D標(biāo)簽數(shù)據(jù)完成自監(jiān)督的網(wǎng)絡(luò)訓(xùn)練,并且可以實(shí)現(xiàn)較好的重建精度和分辨率表示。表2整理了近幾年一些基于點(diǎn)云表示的單視圖三維重建方法。
表2 基于點(diǎn)云表示的三維重建方法整理Table 2 3D reconstruction method based on point cloud representation
網(wǎng)格表示是一種基于點(diǎn)、邊、面的三維模型表示方法,它是計(jì)算機(jī)圖形學(xué)和計(jì)算機(jī)輔助設(shè)計(jì)中的標(biāo)準(zhǔn)形式,在三維重建的研究中變得越來越受歡迎。大多基于網(wǎng)格表示的重建方法利用變形模板網(wǎng)格的形式進(jìn)行重建,還有一些自由形式生成三維模型的方法,下面將從這兩類分別介紹一些經(jīng)典的重建方法。
1.3.1 基于模板網(wǎng)格的變形
基于模板網(wǎng)格的變形的三維重建方法,實(shí)現(xiàn)思路是通過從輸入圖像中提取的感知特征來變形模板網(wǎng)格以得到三維網(wǎng)格模型[31,43-48]。在文獻(xiàn)[43-44]中方法的啟發(fā)下,WANG等[45]提出一種端到端的深度學(xué)習(xí)框架Pixel2Mesh,該網(wǎng)絡(luò)結(jié)合提取的輸入圖像的相關(guān)特征,借助圖卷積網(wǎng)絡(luò)解碼器,實(shí)現(xiàn)輸入單張RGB圖像預(yù)測物體的三維網(wǎng)格模型,逐漸將橢球網(wǎng)格變形為三維網(wǎng)格模型。PAN等[46]在基于網(wǎng)格變形的學(xué)習(xí)方法[31]的基礎(chǔ)上,通過面修剪這種動(dòng)態(tài)方式不斷地更新可變形網(wǎng)格的拓?fù)浣Y(jié)構(gòu),使用單個(gè)球體模板網(wǎng)絡(luò)更好地捕捉了重建細(xì)節(jié)。以拓?fù)湫薷木W(wǎng)絡(luò)為例,圖5展示了大多數(shù)基于模板網(wǎng)格變形來進(jìn)行三維重建的處理過程。
圖5 拓?fù)湫薷木W(wǎng)絡(luò)的三維重建實(shí)現(xiàn)過程Fig.5 3D reconstruction process of topology modification network
1.3.2 基于自由形式的生成
在利用模板網(wǎng)格變形的方法重建時(shí),當(dāng)目標(biāo)對象擁有不同的拓?fù)浣Y(jié)構(gòu)時(shí),會(huì)導(dǎo)致較大的重建的錯(cuò)誤。與變形初始網(wǎng)格不同,最近提出了一種與二維感知相結(jié)合的三維重建方法。GKIOXARI等[49]在Mask R-CNN基礎(chǔ)上擴(kuò)展提出了Mesh R-CNN[50],不僅可以檢測圖像中的物體,并且可以預(yù)測得到目標(biāo)對象的三維網(wǎng)格模型。該方法使用Mask RCNN從單張圖像中估計(jì)圖像中物體的邊界框、類別標(biāo)簽和分割掩碼,隨后預(yù)測一個(gè)粗體素模型,然后轉(zhuǎn)換為網(wǎng)格表示,解決了任意拓?fù)涞木W(wǎng)格重建。還有一些新的基于網(wǎng)格表示的三維重建方法相繼出現(xiàn)[51-54],表3整理了近幾年一些基于網(wǎng)格表示的單視圖三維重建方法。
表3 基于網(wǎng)格表示的先進(jìn)的三維重建方法的整理Table 3 3D reconstruction method based on grid representation
為了更好的研究三維重建技術(shù),離不開大量三維模型數(shù)據(jù)集的支持。深度學(xué)習(xí)依附于大量的數(shù)據(jù)集,以實(shí)現(xiàn)算法研究、對比分析和結(jié)果評估。隨著三維重建研究的不斷推進(jìn),對三維模型數(shù)據(jù)集的需求也越來越大,目前已經(jīng)推出了多個(gè)三維模型的公開數(shù)據(jù)集,表4列出了一些常見的用于三維重建的數(shù)據(jù)集及其屬性。
表4 用于三維重建的常見數(shù)據(jù)集及介紹Table 4 Common datasets and introduction for 3D reconstruction
1)交并比(Io U):在三維重建的背景下,Io U指的是重建預(yù)測出的三維形狀體積和地面真實(shí)體積的交集與兩個(gè)體積的并集的比率,Io U值越大代表著重建結(jié)果的質(zhì)量越高。
其中,G,R表示二分類的占用圖。
2)倒角距離(CD):定義真實(shí)形狀G與重構(gòu)形狀R(均表示為點(diǎn)云)之間的倒角距離,即計(jì)算生成G與原始R之間平均的最短距離。在三維重建中,CD的值越小越好。
3)Earth Mover’s Distance(EMD):用來表示兩個(gè)分布S1和S2之間的近似程度。在三維重建中,EMD的值越小,代表重建效果越好。
4)F-Score:是指重建準(zhǔn)確率和召回率的調(diào)和平均。
其中,P(τ)表示準(zhǔn)確率,R(τ)表示召回率,τ表示給定的閾值。
圖6展示了過去4年三維重建精度的提高。其中,圖6(A)展示了使用體素表示的相關(guān)方法在Io U評價(jià)指標(biāo)下的對比結(jié)果,圖6(B)展示了使用點(diǎn)云表示的相關(guān)方法在CD評價(jià)指標(biāo)下的對比結(jié)果,圖6(C)展示了使用網(wǎng)格表示的相關(guān)方法在Io U評價(jià)指標(biāo)下的對比結(jié)果??梢钥闯?基于體素表示的單視圖重建方法的重建結(jié)果相較于基于網(wǎng)絡(luò)表示的方法Io U值偏低,這表明使用網(wǎng)格表示的重建效果上得到了明顯的提升,也驗(yàn)證了網(wǎng)格的表示形式可以更好地捕捉輸入圖像的細(xì)節(jié)?;邳c(diǎn)云表示的CD值逐年呈現(xiàn)出下降的趨勢,重建效果越來越好。于此同時(shí),通過文獻(xiàn)方法對比可以看出使用3D監(jiān)督的方法和使用2D監(jiān)督的方法兩者之間的差距正在逐漸縮小,這主要是因?yàn)?D到3D之間的映射通過使用視點(diǎn)估計(jì)[40]的方法進(jìn)行彌補(bǔ)。
圖6 一些關(guān)鍵方法在ShapeNet數(shù)據(jù)集上的表現(xiàn)Fig.6 Performance of some key methods on the ShapeNet dataset
隨著深度學(xué)習(xí)的不斷發(fā)展,基于深度學(xué)習(xí)的單視圖三維重建方法越來越多,加之大規(guī)模三維數(shù)據(jù)集的涌現(xiàn)以及三維重建廣闊的發(fā)展前景,三維重建一直是一個(gè)值得研究的課題,相比傳統(tǒng)的三維重建方法,近年來提出的基于深度學(xué)習(xí)的重建方法在重建效果上得到了明顯的提升,但是仍然存在如下問題。
1)重建結(jié)果的精度問題。三維模型相較于二維圖像多了一維的信息,使得三維模型的生成問題在計(jì)算量和內(nèi)存的需求上要求的越來越高,尤其是在高分辨率圖像輸入時(shí)。重建物體的分辨率通常是32×32×32,輸入這種分辨率圖片生成的三維模型結(jié)果是十分粗糙的,遠(yuǎn)遠(yuǎn)達(dá)不到理想的重建精度。即使針對這一問題,已經(jīng)有很多新的重建方法被提出,但是在重建效果上仍然不夠精細(xì)。接下來應(yīng)該著重改變重建網(wǎng)絡(luò)的結(jié)構(gòu)以提高重建分辨率,最大程度利用計(jì)算機(jī)內(nèi)存資源和顯存資源,提升重建結(jié)果的分辨率,得到更多細(xì)化的重建結(jié)果。
2)輸入圖片信息的不足?;趩畏鶊D像的三維重建,本身在輸入圖像時(shí)就會(huì)存在著不同的問題,同一類型的物體在材料、光照[67]等不同條件下,表現(xiàn)出不同的效果,不同類型的物體,在外形上存在著更大的差異,對于圖片中物體存在的遮擋、變形等現(xiàn)象,對于單幅圖像的三維重建無疑是巨大的挑戰(zhàn),這對三維重建算法提出更高的要求。未來要繼續(xù)研究如何利用有限的假設(shè)和先驗(yàn)知識(shí)去重構(gòu)出更高質(zhì)量的三維重建模型。
3)公共數(shù)據(jù)集較少。在三維重建任務(wù)中對數(shù)據(jù)集的需求量越來越大,數(shù)據(jù)集是網(wǎng)絡(luò)計(jì)算的基礎(chǔ),增加數(shù)據(jù)集的種類和數(shù)量能夠提高網(wǎng)絡(luò)的泛化性。與已有的二維圖像數(shù)據(jù)集相比,三維的公開數(shù)據(jù)集種類少,數(shù)量少,這對三維重建技術(shù)的研究來說是一劣勢。未來隨著深度學(xué)習(xí)的不斷發(fā)展,對于三維數(shù)據(jù)集的開發(fā)一定會(huì)越來越多。
4)三維模型的表示及評價(jià)。隨著深度學(xué)習(xí)技術(shù)的發(fā)展,涌現(xiàn)出越來越多的三維模型的表示方法,除去常見的基于體素、點(diǎn)云、網(wǎng)格的表示形式,基于隱式表示[68]和高斯表示[69]等方法都相繼出現(xiàn),對于哪一種表示方法是最好用的,現(xiàn)在仍然在持續(xù)探索。對單幅圖像的三維重建的評價(jià)指標(biāo)問題上,哪種指標(biāo)可以更好地反映出模型的重建效果,在未來仍然需要繼續(xù)研究。
在基于深度學(xué)習(xí)的單幅圖像的三維重建的研究中,是一個(gè)有價(jià)值并且值得研究的方向。本研究首先綜述了基于體素、點(diǎn)云、網(wǎng)格這三種表示形式的三維重建方法,然后對三維重建中的常用數(shù)據(jù)集及評價(jià)指標(biāo)進(jìn)行了簡要介紹,并對一些經(jīng)典方法的重建結(jié)果進(jìn)行對比分析,最后對三維重建方法存在的問題及未來的發(fā)展趨勢進(jìn)行了思考和展望。總之,深度學(xué)習(xí)為單視圖的三維重建方法帶來了新思路,取得了不錯(cuò)的研究成果,但現(xiàn)有方法仍存在著各種各樣的問題,該問題仍然是一個(gè)有待解決的研究方向。