張 豪 ,張 強 ,邵思羽 ,丁海斌
(1. 空軍工程大學研究生院,西安710038; 2. 空軍工程大學防空反導學院,西安710038;3. 陸軍工程大學訓練基地,江蘇徐州221004)
近年來,計算機視覺和機器學習領域的研究者們在單圖像的三維重建方面取得了令人矚目的進展。按照模型重建方法的不同,可以分為傳統(tǒng)重建方法和基于深度學習的重建方法兩類。傳統(tǒng)的三維重建方法主要基于第三方模型庫,這些第三方庫內部封裝了大量的三維圖形處理函數(shù),能夠輕易繪制三維圖形。但這種方法的先驗知識在模型的設計階段就已經被設定好,很難擴展到其他類別物體上,生成的模型只能沿著特定類別的變化而變化。隨著深度學習在三維領域的發(fā)展,單幅圖像三維重建的方法開始逐漸增多。周繼來等[1]提出了一種基于曲度特征的三維模型算法,解決了復雜曲面三維模型的問題。朱俊鵬等[2]運用卷積神經網絡處理深度圖像,重建出了三維視差圖。3D ShapeNets[3]是較早提出的一種基于深度學習的三維重建網絡,通過輸入深度圖像[4-5],利用深度卷積網絡提取信息,將三維幾何模型表示為三維體素上的二值分布,預測外形類型并填補未知的體素來完成三維重建,取得了一定的效果。
目前基于深度學習的三維重建方法大多都是將預測的形狀與真實的三維模型進行比較,通過損失函數(shù)最小化使得預測的形狀越來越精確。由于模型的多維性,網絡在訓練的過程中很難學習到有用的細節(jié)[6]。以前的工作大多使用了不同的損失函數(shù),在預測形狀的模塊上添加了先驗知識,或是使用額外的監(jiān)督訓練使預測的三維模型接近真實形狀。例如最近的兩種方法:DRC(Differentiable Ray Consistency)算法[7]和AtalsNet 算法[8],使用了不同的表示、損失函數(shù)以及訓練策略來解決網絡學習的問題。圖1 是兩種模型在椅子類別的訓練集上進行訓練和測試的結果,可以看出當輸入的圖像為椅子類別時,兩個模型建立的三維模型效果都比較好。但是,如果輸入的圖像不是來自椅子訓練集,這兩種方法都無法給出合理的預測,而是給出與訓練的數(shù)據集相似的輸出。Henderson等[9]使用LSI模型將網格作為輸出表示,運用光照參數(shù)和陰影信息從圖像中重構三維模型,效果優(yōu)于以往大多數(shù)工作。Kato 等[10]通過LVP 算法訓練鑒別器來學習視圖的先驗知識,成功解決了生成三維形狀模糊性的問題。但從某種程度上看,現(xiàn)有的三維重建技術只是基于訓練的三維數(shù)據集進行篩選,挑選出數(shù)據集中最接近輸入圖像的三維模型,泛化能力弱。
本文針對三維模型重建問題提出了一種基于深度圖像估計、球面投影映射、三維對抗生成網絡相結合的算法模型。該算法模型的主要特點有:1)采用模塊化設計,強制網絡的每個模塊使用前一個模塊的特性,而不是直接記住訓練數(shù)據集中的形狀;每個模塊預測的結果與輸入的圖像具有相同的尺寸,這樣可以得到更規(guī)則的映射。2)現(xiàn)有的三維重建算法在輸入圖像分辨率低時很難重建出精細的三維模型,本文模型通過引入超分辨率模塊能很好地解決這個問題。
仿真實驗結果表明,與目前主流的三維重建技術相比,本文算法模型在訓練類別外的單圖像三維形狀重建中取得了理想的效果,解決了當前模型存在的泛化能力弱的問題。
圖1 不同輸入下DRC與AtlasNet模型測試結果Fig. 1 DRC and Atlasnet model test results with different inputs
單圖像三維重建算法通過學習某種函數(shù),將二維圖像映射到三維形狀。本文針對目前三維重建技術泛化能力差的問題進行研究,以MarrNet[11]網絡模型作為基礎,提出了一個改進算法模型。如圖2,首先通過一個單視圖深度估計器從輸入的二維圖像中預測其深度信息;然后深度圖像投影到球形網格中,并對球形圖進行精修;最后引入一個體素重建網絡估計三維形狀。該算法的神經網絡模塊只需要通過球形圖來重建對象的幾何模型,而不必學習幾何投影,增強了模型的通用性;同時通過在判別模塊引入正則化參數(shù)來解決模型泛化能力差的問題。下面介紹每個模塊的具體實現(xiàn)細節(jié)。
圖2 本文模型結構示意圖Fig. 2 Structure diagram of the proposed model
深度圖像的來源可以追溯到計算機視覺的早期,類似于灰度圖像,它的每個像素值是傳感器距離物體的實際距離。多年來,研究人員一直在探索如何從紋理、陰影或彩色圖像中恢復2.5D 草圖。近年來,隨著深度學習的發(fā)展,很多人開始用神經網絡來估計圖像的深度、表面法線。Wu等[11]提出了一種名為MarrNet的單圖像三維重構模型,將深度圖像估計器作為重建網絡中的一個模塊。但MarrNet 的深度估計器的缺點在于當輸入的圖像清晰度低時,提取的深度圖像效果不佳,進而會影響圖像三維重建的效果。本文采用的深度圖像估計器與現(xiàn)有的深度圖像估計方法相比,能解決輸入圖像分辨率低導致深度信息丟失以及訓練困難的問題。
深度估計器模塊由超分辨率重構網絡及編碼器-解碼器(AutoEncoder,AE)結構組成。由于拍攝的二維圖像可能由于對焦、搖晃等外界因素導致分辨率不夠清晰,從而對深度圖像的提取造成影響,導致建立的三維模型效果欠佳[12]。在整個網絡結構的最前端加入一個超分辨率重構的網絡模塊(Enhanced Super-Resolution Generative Adversarial Network,ESRGAN)[13]有助于提高圖像清晰度,使深度圖像提取效果更佳,建立的三維模型更真實。AE 的目標是找到隨機映射,使輸入輸出差異最小。通過編碼解碼的過程使模型學習到數(shù)據的分布和特征,能夠有效捕捉圖像的有效特征,提取出效果較好的深度圖像。
1.1.1 超分辨率重構模塊
增強型超分辨率生成對抗網絡ESRGAN是本文估計器的核心結構,這是一種單圖像超分辨率改進算法結構。如圖3所示,此模型由卷積層、采樣層和4個殘差塊構成。
圖3 ESRGAN結構示意圖Fig. 3 Structure diagram of ESRGAN
與其他超分辨率模塊不同的是,ESRGAN 在殘差塊中移除了歸一化(Batch Normalization,BN)層,圖4是傳統(tǒng)殘差塊與ESRGAN 中殘差塊對比。BN 層通過在訓練中使用一批數(shù)據的均值和方差規(guī)范化特征并且在測試時通過使用在整個訓練集上預估后的均值和方差規(guī)范化測試數(shù)據。當訓練集和測試集的統(tǒng)計結果相差甚遠時,BN 層常常趨向于引入一些偽影并且限制了模型的泛化能力。通過移除BN 層能夠有效地提高性能并且減少模型的計算復雜度。低分辨率的圖像經過卷積、采樣等操作能得到分辨率較高的圖像。
圖4 傳統(tǒng)殘差塊和ESRGAN殘差塊的對比Fig. 4 Comparison of traditional residual block and ESRGAN residual block
1.1.2 編碼器-解碼器
在最近的深度圖像提取器研究中,編碼器主要采用18 層的深度殘差網絡(Residual neural Network,ResNet)。這是微軟實驗室何凱明團隊在2015 年提出的一種深度卷積網絡。ResNet相較普通網絡,在每兩層間增加了短路機制,形成殘差學習,ResNet 的提出解決了網絡深度變深以后性能退化的問題,為一些復雜的特征提取和分類提供了可行性[14]。
但是在實際的訓練中,ResNet存在著訓練較為困難、圖像分割細節(jié)不夠好的問題,本文在ResNet 的基礎上引入U 型網絡結構(nested U-Net architecture,UNet++),在網絡中間添加更多的跳轉連接,以更好地結合圖像的信息進行分割[15]。
式(1)是UNet++網絡結構的核心思想,其中:H()表示一個卷積和一個激活函數(shù);u()表示一個上采樣層;[]表示連接層。例如x1,2就是由x1,0、x1,1和上采樣后的x2,1拼接之后,再經過一次卷積和線性激活函數(shù)層(Rectified Linear Unit,ReLU)得到的。
解碼器包含四組5×5全卷積層和激活函數(shù)ReLU 層,然后是四組1×1 卷積層和ReLU 層。解碼器輸出相應的深度圖像信息。
球面投影這一概念近幾年被證明在三維形狀的重構上起到了不錯的效果。文獻[16-17]中研究了球面投影上可微的球面卷積,目的是使模塊中神經網絡輸出的投影能夠保持旋轉不變性。這項技術需要在有限頻帶的頻譜域中進行卷積,這樣就會導致高頻信息的混疊和丟失,而形狀重建的質量很大程度上依賴于高頻分量[18]。目前,將球面投影這項技術應用于單圖像三維重構領域還處于初步階段,還有很大的發(fā)展空間。
本文將深度圖像作為輸入,如圖5 使用攝像機參數(shù)將深度信息轉換成點云的形式,然后用立方體算法將它們轉換成表面信息。立方體算法是體素重建中的經典算法,該算法的基本思想是逐個處理三維模型數(shù)據中的立方體,找出與等值面相交的立方體,采用線性插值計算出等值面與立方體邊的交點。根據立方體每一頂點與等值面的相對位置,將等值面與立方體邊上的交點按一定方式連接生成等值面,作為等值
面在該立方體內的一個逼近表示。
圖5 球面投影示意圖Fig. 5 Schematic diagram of spherical projection
假設P(x,y,z)是立方體中的任意一點,根據線性插值運算,可得該點處的函數(shù)值,如式(2):
其中:系數(shù)ai(i= 0,1,…,7)為立方體中8個定點的函數(shù)值,若等值面閾值為c,則聯(lián)立方程組為式(3),就可以計算出等值面與立方體邊界上的交線。
將得到的表面信息通過單位球面的每個U軸、V軸投射到球體中心來生成球面表示,整個過程是不可微的。圖6 展示了整個球面投影模塊的結構,深度估計器模塊輸出的深度圖像作為輸入,通過球面投影轉換為三維模型。
圖6 球面投影模塊結構Fig. 6 Structure of spherical projection moduale
由于球面投影的局限性,當圖像中的物體發(fā)生自遮擋時,曲面信息會丟失,通過深度圖像投影產生的三維模型在細節(jié)上會存在嚴重的丟失。引入三維對抗生成網絡中的判別模塊能較好地解決這個問題。
判別器由5個帶有ReLU 激活函數(shù)的卷積層構成,將球面投影得到的三維形狀與實際形狀區(qū)分開來。為了提升模型的泛化能力,在損失函數(shù)中加入了正則化懲罰項。這個模塊借鑒了三維對抗生成網絡(3D-Generative Adversarial Network,3D-GAN)的思想,使判別器能夠對合成的三維模型的真實性進行判斷,建立更逼真的三維模型[19]。
式(4)是判別模塊的損失函數(shù),其中:Pg、Px分別代表不同圖像數(shù)據集生成的三維形狀,Pr則為對應的真實三維形狀,D表示判別器,λ是懲罰項。判別模塊通過訓練使損失函數(shù)值減小,恢復重建的三維模型更多細節(jié)[20-21]。
2.1.1 深度估計器
在深度估計器模塊,本文將MarrNet網絡中的深度提取器作為基準,分別對不同二維圖像提取出的深度圖像進行對比分析。
在評價指標方面,使用真實圖像和輸出圖像二維交并比(Intersection-over-Union ,IoU)與均方誤差(Mean Squared Error,MSE)作為衡量指標。計算方法如式(5)、(6)所示:
其中:A表示預測圖像,B表示真實圖像。IoU值越高則預測效果越好。
2.1.2 三維重建指標
在評價三維重建效果方面,本文以目前單視圖重建效果最優(yōu)的兩種網絡DRC 和AtalsNet 作為基準,采用IoU 值和倒角距離(Chamfer Distance,CD)值作為衡量三維重建效果的指標。式(7)是三維體素重建模型與實際三維模型之間的體素相交部分,其中:i、j、k表示體素位置,I()表示一個指標函數(shù),t為體素化閾值。
由于深度圖像和球面圖都無法提供形狀內部信息,只通過IoU 來評價重建效果是片面的,因此引入倒角距離作為另一種評價指標。式(8)為倒角距離的計算公式,其中:S1、S2分別表示從預測和真實三維形狀的表面采樣點的集合,通過計算預測點到真實點的平均距離衡量三維模型的重建效果。
本文使用Shapenet 數(shù)據集進行網絡培訓和測試,此數(shù)據集包含了55 種常見的物品類別以及對應的51 300 個三維模型。在此數(shù)據集的基礎上,本文還增加了部分類別的真實深度圖像用于深度估計器的訓練。對于所有的模型,本文挑選了汽車、椅子、飛機這三種類別進行訓練。將訓練完成的模型在其他類別上進行測試,用來評估模型的泛化能力。
2.3.1 深度估計器
本文分別將分辨率為72 和分辨率為300 的圖像作為輸入,對椅子等四個類別的圖像來測試本文深度估計器提取效果。從表1 可以看出,當輸入圖像為低分辨率時,本文模型IoU 指標較Marrnet 模型提高了0.189。圖7 是低分辨率圖像提取的深度圖像對比,可以明顯看出本文的模型提取的深度圖像細節(jié)更多。如圖8 所示,當輸入圖像為高分辨率時,本文模型提取的深度圖像效果也略優(yōu)于Marrnet。從結果上看,本文采用的深度估計器模塊在提取效果上優(yōu)于目前主流的模型。圖9是各類別預測結果的MSE值,從中可以看出在汽車、飛機等數(shù)據集上訓練深度估計器,本文模型訓練結果可以推廣到預測新的類別深度圖像。訓練集與新測試類別的MSE值區(qū)別并不是特別明顯,足以證明本文深度估計器的優(yōu)秀泛化能力。
表1 不同分辨率圖像的IoU值對比Tab. 1 Comparison of IoU values of images with different resolutions
圖7 輸入為低分辨率圖像的深度圖像提取效果Fig. 7 Depth image extraction effect when inputting LR image
圖8 輸入為高分辨率圖像的深度圖像提取效果Fig. 8 Depth image extraction effect when inputting HR image
圖9 各類別預測結果的MSE值Fig. 9 MSE values of prediction results of different classes
2.3.2 三維模型重建
為了驗證本文提出的模型具有較好的泛化能力,整個訓練過程中只用到了飛機、汽車、椅子三個數(shù)據集進行訓練。在最后的測試中,分為了兩個部分:一是對訓練數(shù)據集進行測試,二是對訓練數(shù)據集以外的圖像進行測試,以驗證模型的泛化能力。
表2 是在訓練集類別模型測試的倒角距離。從表中可以看出,在訓練集(椅子、汽車、飛機)上測試,AtlasNet 模型在倒角距離的表現(xiàn)略優(yōu)于本文模型,但從圖10 的模型重構的實際結果上看,AtlasNet 模型并沒有預測出符合實際的結果形狀。經過分析,在訓練集的CD 值表現(xiàn)弱于AtlasNet 是由于此模型是從訓練庫中挑選與輸入圖像最為接近的三維形狀作為預測結果,而CD 值計算的是預測點和真實點的平均距離,因此AtlasNet 表現(xiàn)較好。但從結果上看,AtlasNet 部分預測結果偏離實際,沒有參考價值。
在訓練集之外,將本文模型與目前主流模型進行了實驗對比,從表3 的結果可以看出在訓練集外,本文模型所有類別的倒角距離表現(xiàn)都優(yōu)于對比模型。預測的部分三維形狀如圖11 所示。從各模型輸出的三維形狀結果可以看出,現(xiàn)有模型在訓練集外三維重建上效果不佳,重建的形狀與真實形狀相差甚遠,泛化能力弱。而本文模型重建的效果相較于現(xiàn)有模型有明顯提升,盡管在細節(jié)方面還需要改進,但本文模型生成的三維形狀最符合客觀事實,驗證了模型的高泛化能力。
表2 訓練集類別各模型倒角距離測試結果Tab. 2 Test results of chamfer distance of training set classes obtained by different models
表3 訓練集外類別各模型倒角距離測試結果Tab. 3 Test results of chamfer distance of classes outside training set obtained by different models
圖10 輸入為訓練集圖像的三維模型預測結果Fig. 10 3D model prediction results with inputting training set images
圖11 輸入為訓練集外圖像的三維模型預測結果Fig. 11 3D model prediction results with inputting images outside training set
圖12 是現(xiàn)有主流模型與本文模型在六種常見物體的三維重建IoU 評價指標對比。從圖中可以看出,不論是在訓練集還是在非訓練集上測試,本文模型預測結果和真實三維模型的IoU 指標都優(yōu)于對比的模型。但本文模型在部分物體的IoU 指標上提升并不明顯,這是由于IoU 指標的局限性導致的,單一的IoU 指標并不能直觀地表現(xiàn)三維重建的客觀真實性,所以本文在評價指標上還引入了CD 值作為參考。從圖11 的重建效果也可以看出本文模型的優(yōu)勢??偟膩碚f,本文模型三維重建的效果更優(yōu),更加接近真實三維形狀,尤其是在非訓練集上的測試,更是證明了本文模型具有較強的泛化能力。
圖12 現(xiàn)有模型與本文模型重建IoU值對比Fig. 12 Reconstruction IoU comparison of existing models and the proposed model
針對目前單視圖三維重建泛化能力差,以及當輸入圖像分辨率低時,重建的三維模型細節(jié)丟失的問題,本文提出了一個基于深度學習的三維重構框架,通過引入超分辨率模塊,AutoEncoder 網絡結構很好地對深度圖像進行了提取。為了保證重構三維模型的細節(jié)和泛化能力,模型加入球面投影以及判別模塊,使得訓練結果不會太過依賴數(shù)據集,解決了過擬合的問題。從實驗結果可以看出,本文模型在重構細節(jié)和泛化能力上優(yōu)于目前主流的三維模型重構方法;并且當輸入圖像清晰度低時,本文模型依舊能通過提取較好深度圖像,建立符合客觀現(xiàn)實的三維重建模型。但由于三維模型數(shù)據庫還不夠完善,且三維模型的維度較高、訓練難度較大,本文模型只在簡單的物體類別上進行了訓練和驗證,如何通過單圖像建立復雜的三維模型是目前需要解決的一個問題,也是我們今后進一步研究的方向。