張 豪,張 強,李勇祥,邵思羽
(1.空軍工程大學(xué) 研究生院,西安 710038;2.空軍工程大學(xué) 防空反導(dǎo)學(xué)院,西安 710038;3.中國人民解放軍95261部隊,廣西 柳州 545000)
通過單一圖像建立其三維模型一直是研究領(lǐng)域的一個熱點。由于一個視圖可能對應(yīng)多種可能的形狀,大多數(shù)情況對應(yīng)的形狀都是不合實際的,單視圖的3D形狀建模具有很高的挑戰(zhàn)性。目前主流的三維模型重建方法有2種,一種是使用第3方三維模型庫,例如OpenGL,VTK(visualization toolkit),這些第3方庫內(nèi)部封裝了大量的三維圖形處理函數(shù),可以很方便地繪制三維圖像,但缺點是需要人為繪制三維圖像,費時費力;第2種方法是基于深度學(xué)習(xí)的三維模型重構(gòu),通過神經(jīng)網(wǎng)絡(luò)提取出其深度圖像[1-4],再通過這些圖像還原三維模型。
在2016年的NIPS會議上,3D-GAN[5]的概念被首次提出,其原理是使用深度卷積網(wǎng)絡(luò)的表征能力來解決形狀不符合實際的問題,生成對抗網(wǎng)絡(luò)(generative adversarial network,GAN)學(xué)習(xí)2D圖像到3D模型的映射。生成網(wǎng)絡(luò)負責(zé)生成3D模型,對抗網(wǎng)絡(luò)判斷這些模型的真假。但是由于3D模型庫的訓(xùn)練樣本不足,且整個模型不具有很好的泛化能力,3D-GAN并沒有在單視圖三維模型重建方面取得很好的效果。2018年,文獻[6]提出把ShapeHD三維重構(gòu)模型運用到3D-GAN的思想,通過將深度生成模型與對抗學(xué)習(xí)的形狀先驗相結(jié)合,超越單視圖形狀補全和重建的極限,它將學(xué)習(xí)到的先驗知識作為正則化懲罰項,并在其輸出脫離現(xiàn)實而非簡單的偏離實際形狀時對模型進行懲罰,通過這種思想,解決了前面提到的三維建模存在的問題。該方法在多個真實數(shù)據(jù)集的形狀重建方面都遠遠超過了現(xiàn)有最高水平。
目前基于深度學(xué)習(xí)的三維重建方法大多都是將預(yù)測的形狀與真實的三維模型進行比較,通過損失函數(shù)最小化使得預(yù)測的形狀越來越精確。由于模型的多維性,在訓(xùn)練過程中,網(wǎng)絡(luò)很難學(xué)習(xí)到有用的細節(jié)。以前的工作大多使用了不同的損失函數(shù),在預(yù)測形狀模塊上添加先驗知識,或使用額外的監(jiān)督訓(xùn)練使預(yù)測的三維模型接近真實形狀。例如最近的2種方法:ShapeHD(shape priors for single-view 3D completion and reconstruction)算法和AtalsNet(Papier-Mache approach to learning 3D surface generation)算法,都使用不同的表示、損失函數(shù)以及訓(xùn)練策略來解決網(wǎng)絡(luò)學(xué)習(xí)的問題。圖1為ShapeHD模型示意圖,通過提取深度圖像建立重構(gòu)的三維模型,取得了很好的效果。圖2為AtlasNet模型,該模型受歐幾里得平面拓撲空間啟發(fā),提取輸入圖像潛在特征以及在單位正方形中均勻采樣的二維點作為輸入,通過K個多層感知器(multi-layer perceptron,MLP)使其在曲面上生成一個單點,最終映射到三維形狀的表面來局部地近似目標表面,從而完成重構(gòu)。
圖1 ShapeHD模型示意圖Fig.1 Schematic diagram of ShapeHD model
圖2 AtlasNet模型示意圖Fig.2 Schematic diagram of AtlasNet model
三維物體相較于二維多了一個維度, 基于體素的重建隨著重建分辨率的增加, 物體體積成立方體增長, 使其受限于計算和內(nèi)存,分辨率的重建結(jié)果是非常粗糙的。并且當輸入的單視圖圖像清晰度不高時,模型的深度圖像提取效果差,進而影響三維模型的建立。
雖然目前的單圖像三維重建方法在多個數(shù)據(jù)集上取得了很好的效果,但依然存在很多缺陷。本文主要針對目前主流的基于深度學(xué)習(xí)的單圖像三維重建方法進行優(yōu)化,提出的算法結(jié)構(gòu)主要有以下特點:①在網(wǎng)絡(luò)的最前端加入超分辨率模塊,使得對輸入圖像的清晰度要求降低;②在深度圖像提取模塊引入跨層鏈接UNET++的思想,去除了歸一化層,使其提取的深度圖像效果更好;③首次在三維重建中引入投影映射,強制生成的三維形狀與深度圖像對齊,以聯(lián)合優(yōu)化超分辨率模塊與深度圖像估計模塊。并在判別模塊使用了Wasserstein GAN,不再需要平衡生成器和判別器的訓(xùn)練程度,使訓(xùn)練變得更加穩(wěn)定。實驗結(jié)果表明,本文模型相較傳統(tǒng)的單圖像三維重構(gòu)方法建立的三維模型細節(jié)更多,更加逼真。
這一部分使用了編碼器-解碼器(Autoencoder)網(wǎng)絡(luò)結(jié)構(gòu)來估計單圖像的深度圖像。Autoencoder是神經(jīng)網(wǎng)絡(luò)的一種,其目標是找到隨機映射,使輸入輸出差異最小。使用Autoencoder結(jié)構(gòu),能夠很好捕捉圖片的有效特征,提取出效果較好的深度圖像。
2.1.1 編碼器
原始的深度輪廓編碼器是一個深度殘差網(wǎng)絡(luò)[7](Resnet),這是微軟實驗室何凱明團隊在2015年提出的一種深度卷積網(wǎng)絡(luò)。Resnet的提出解決了網(wǎng)絡(luò)深度變深以后性能退化的問題,為一些復(fù)雜的特征提取和分類提供了可行性。但是在實際的訓(xùn)練中,Resnet存在著訓(xùn)練困難,圖像分割細節(jié)不夠好的問題。所以,在Resnet網(wǎng)絡(luò)的基礎(chǔ)上引入了UNet++的網(wǎng)絡(luò)結(jié)構(gòu)。
(1)
(1)式是UNet++網(wǎng)絡(luò)結(jié)構(gòu)的核心思想,H()表示一個卷積和一個激活函數(shù);u()表示一個上采樣層;[]表示連接層,例如x1,2就是由x1,0,x1,1和上采樣后的x2,1拼接之后,再經(jīng)過一次卷積層和relu激活函數(shù)層得到[8-9]。
UNet++結(jié)構(gòu)不僅對Resnet的跨層鏈接進行改進,還引入了DSN(deeply-supervised nets)思想,即網(wǎng)絡(luò)的loss函數(shù)是由不同層得到的分割圖的loss平均,使圖像分割結(jié)果的細節(jié)更多,深度圖的提取效果更好。DSN的損失函數(shù)為
(2)
2.1.2 解碼器
解碼器輸出相應(yīng)的深度圖像,它包含4組5×5全卷積層和relu層,4組1×1卷積層和relu層。
本文研究的是單個RGB圖像的三維模型建立,由于拍攝的照片可能由于對焦、搖晃等外界因素導(dǎo)致分辨率不夠清晰,從而影響深度圖像的提取,導(dǎo)致建立的三維模型效果欠佳。在網(wǎng)絡(luò)前端加入超分辨率模塊能很好地解決這個問題[10-11]。
超分辨率模塊基于SRCNN(super-resolution convolutional neural networks)進行改進,SRCNN是首個使用CNN(convolutional neural network)結(jié)構(gòu)的端到端的超分辨率算法,由3個卷積層構(gòu)成。該網(wǎng)絡(luò)訓(xùn)練層數(shù)少,訓(xùn)練速度慢,沒有足夠的視野域,在放大高倍數(shù)的圖像中表現(xiàn)不盡如人意。
本文在SRCNN的結(jié)構(gòu)基礎(chǔ)上增加了網(wǎng)絡(luò)的層數(shù),增大了網(wǎng)絡(luò)的感受野。使用殘差塊,在增加網(wǎng)絡(luò)層數(shù)的同時,提高學(xué)習(xí)率,加快網(wǎng)絡(luò)收斂速度。結(jié)構(gòu)如圖3。在訓(xùn)練數(shù)據(jù)集方面,將放大系數(shù)為(2x,3x,4x)的數(shù)據(jù)集混合訓(xùn)練,達到共享參數(shù)的目的,減少網(wǎng)絡(luò)工作量。當圖像分辨率達到一定的程度時,深度圖像的提取效果就不會隨著清晰度而提高,使用太大的放大因子并不能使提取效果變好,反而會增加訓(xùn)練的難度。該模塊最終使用3x放大因子對輸入圖像進行超分辨重構(gòu)。
圖3 超分辨率網(wǎng)絡(luò)結(jié)構(gòu)示意圖Fig.3 Super resolution network structure diagram
引入超分辨率模塊,使得輸入任意清晰度的單視圖圖像,整個網(wǎng)絡(luò)結(jié)構(gòu)對深度圖像的提取都能達到很好的效果。
為了解決估計的三維形狀和深度圖像之間的一致性差的問題,本文將深度圖像作為輸入,投影映射得到三維模型的表面形狀來解決該問題。深度圖像投影示意圖如圖4。目前,將投影技術(shù)應(yīng)用于單圖像三維重構(gòu)領(lǐng)域還處于初步階段,還有很大的發(fā)展空間[9-11]。
圖4 深度圖像投影示意圖Fig.4 Schematic diagram of depth image projection
本文使用vx,y,z表示三維形狀,其中x,y,z表示三維體素網(wǎng)格中的位置;dx,y表示估計的深度圖像。在投影過程中,確保具有深度的體素為1,其他的網(wǎng)格則設(shè)為0(見圖5)以保證估計的三維形狀與深度圖像的一致性。
定義投影的損失函數(shù)為
(3)
求導(dǎo)的梯度為
(4)
圖5 投影一致性原理圖Fig.5 Schematic diagram of projection consistency
判別模塊是一個3D生成對抗網(wǎng)絡(luò),生成器由5個帶有relu激活函數(shù)的卷積層構(gòu)成,隨機合成一個三維形狀。判別器由5個帶有l(wèi)eaky relu激活函數(shù)的卷積層構(gòu)成(如圖6),將生成的形狀與實際形狀區(qū)分開來。該模塊借鑒了3D-GAN的思想,使判別器能夠?qū)铣傻娜S模型的真實性進行判斷,建立更逼真的三維模型。
由于三維圖形的高維度特性,訓(xùn)練GAN網(wǎng)絡(luò)會變得高度不穩(wěn)定。為了解決這個問題,本文的損失函數(shù)使用了Wasserstein GAN[12-13]的思想,不再需要小心平衡生成器和判別器的訓(xùn)練程度。為判別模塊的損失函數(shù)
(5)
(5)式中:D代表判別器;Pg,Pr分別代表生成的三維形狀和真實的三維形狀;λ是懲罰項。
圖6 判別器結(jié)構(gòu)示意圖Fig.6 Structure diagram of discriminator
整個訓(xùn)練過程分為3部分,首先是訓(xùn)練超分辨率網(wǎng)絡(luò),這里用到的數(shù)據(jù)集是Div2k數(shù)據(jù)集。Div2k是用于圖像恢復(fù)高分辨率的數(shù)據(jù)集,包括800張訓(xùn)練圖像,100張驗證圖像和100張測試圖像。為了增強訓(xùn)練效果,本文對原有的Div2k數(shù)據(jù)集進行了擴充,采用了隨機水平翻轉(zhuǎn)和90°旋轉(zhuǎn)來增加訓(xùn)練的數(shù)據(jù)集,并在訓(xùn)練之前對圖像進行了預(yù)處理,對Div2k數(shù)據(jù)集的每一張圖像都減去了整個數(shù)據(jù)集的平均RGB值。
第2部分是訓(xùn)練編碼器和解碼器,也就是深度圖像提取模塊。這里用到的是含有6 000張圖像的數(shù)據(jù)集,包括2 000張常見的RGB圖像(例如椅子,汽車,飛機等),2 000張與其對應(yīng)的深度圖像,2 000張與其對應(yīng)的輪廓圖像。同樣也要在訓(xùn)練之前對圖像進行減RGB均值的預(yù)處理。
第3部分是對投影以及判別模塊進行訓(xùn)練,這里用到的是ShapeNet數(shù)據(jù)集。此數(shù)據(jù)集包含了55種常見的物品類別以及對應(yīng)的513 000個三維模型[14-15]。但是,由于設(shè)備的限制以及3D模型訓(xùn)練的困難性,這里只對部分ShapeNet的數(shù)據(jù)集進行訓(xùn)練。
在評價深度圖像提取效果方面,我們使用了真實圖像和輸出圖像二維交并比(IoU)作為衡量依據(jù)。如(6)式,其中A表示預(yù)測圖像,B表示真實圖像,IoU的值越高表示預(yù)測效果越好。
(6)
本文采用IoU和倒角距離(chamfer distance,CD)作為衡量三維重建效果的指標。其表達式為
(7)
(7)式是三維體素重構(gòu)模型與實際三維模型之間的體素相交部分。(7)式中,i,j,k表示體素位置,I()表示指標函數(shù),t是體素化閾值[16]。
由于深度圖像無法提供形狀內(nèi)部信息,只通過IoU來衡量重建效果是不全面的,所以本文引入另一種評價指標,倒角距離。倒角距離的計算公式為
(8)
(8)式中:S1,S2分別表示從預(yù)測和真實三維形狀的表面采樣點的集合。通過計算預(yù)測點到真實點的平均距離,能較好地評價三維模型的重建效果。
為了驗證本模型在拍攝圖像不清晰時三維重構(gòu)的效果優(yōu)于現(xiàn)有的單圖像三維模型重構(gòu)方法,首先對深度圖像進行提取。表1、表2分別給出了輸入為低分辨率和高分辨率圖片的IoU。從表1可以看出,通過我們的改進模型,在輸入為低分辨率圖像時,4種類別的深度圖像提取評價IoU值高于現(xiàn)有方法13.5%。而從表2能看出,在輸入為高分辨率時,改進模型提取效果也優(yōu)于ShapeHD模型。圖7和圖8為提取的部分深度圖像,能更直觀地進行對比。
表1 輸入為低分辨圖片的IoU
表2 輸入為高分辨圖片的IoU
AtlasNet模型與本文三維模型重構(gòu)對比如圖9。圖10 給出了AtlasNet模型與本文模型重建IoU值對比。由圖10可知,本文三維模型重構(gòu)IoU指標在各類別的訓(xùn)練中都高于現(xiàn)有的主流模型AtlasNet。由于只用IoU衡量重建效果不全面,在實驗過程中我們還引入了倒角距離作為另一種衡量指標。表3是部分類別測試的倒角距離,通過計算預(yù)測點到真實點的平均距離,能較好地評價三維模型的重建效果。由表3可看出,本文模型在與現(xiàn)有方法的對比中,倒角距離都表現(xiàn)得更好,預(yù)測點與真實點更為接近。圖11為輸入分辨率不同圖像時,ShapeHD模型與本文三維模型重構(gòu)效果對比。由圖11,充分驗證了本文模型在單視圖三維重構(gòu)的潛力。
圖7 輸入為高分辨率圖像時深度圖像提取效果Fig.7 Extraction effect of high resolution image
圖8 輸入為低分辨率圖像時深度圖像提取效果Fig.8 Extraction effect of low resolution image
表3 三維模型倒角距離測試結(jié)果
圖9 AtlasNet模型與本文三維模型重構(gòu)對比Fig.9 Comparison between AtlasNet model and our model
圖10 AtlasNet模型與本文模型重建IoU值對比Fig.10 Comparison of the reconstruction IoU value between AtlasNet and our model
圖11 分辨率不同時單視圖三維模型重建效果對比Fig.11 Effect comparison of 3D model reconstruction with different resolution
從實驗結(jié)果可以看出,本文的改進模型實現(xiàn)了清晰度低的單圖像三維重構(gòu)效果優(yōu)于目前主流的三維模型重構(gòu)方法,并通過加入投影手段,對深度圖像和重構(gòu)的三維模型進行對齊,實現(xiàn)了各模塊的訓(xùn)練一致性。但是三維模型的維度較高,訓(xùn)練的難度較大,由于仿真設(shè)備的條件限制,本文只對椅子、沙發(fā)、飛機等幾種常見模型進行了訓(xùn)練。另外現(xiàn)在的三維模型數(shù)據(jù)庫還不夠完善,用此方法進行三維模型重構(gòu)非常重要的一點就是需要大量的真實三維模型進行訓(xùn)練,但目前最大的三維數(shù)據(jù)庫只有幾十種常見的模型,還遠遠達不到任意單視圖三維重建的目標要求。