楊 碩,謝曉堯,劉 嵩
(貴州師范大學(xué) 貴州省信息與計算科學(xué)重點實驗室,貴陽 550000)
多視圖幾何(multi-view stereo, MVS)利用大量已校準的圖片進行物體3D特征重建,是計算機視覺領(lǐng)域一個極其重要的研究方向,廣泛應(yīng)用于三維重建、增強現(xiàn)實 (augmented reality, AR)、自動駕駛、逆向工程等場景[1-10]。傳統(tǒng)三維重建方法通常使用差的平方和 (sum of squared differences, SSD)、圖像的相關(guān)性 (normalized cross correlation, NCC)、自適應(yīng)加權(quán) (adaptive support weight, ASW)等來計算顏色一致性。
傳統(tǒng)的基于圖像三維重建算法從幾何學(xué)角度來解決問題[11-13]。隨著深度學(xué)習(xí)的不斷發(fā)展,卷積神經(jīng)網(wǎng)絡(luò)(convolutional neural networks, CNN)在計算機視覺領(lǐng)域的應(yīng)用越來越廣泛,2D卷積神經(jīng)網(wǎng)絡(luò)也使得MVS的表現(xiàn)能力得到進一步提高。
DeepMVS網(wǎng)絡(luò)[3]把計算幾何與深度學(xué)習(xí)方法相結(jié)合生成深度圖,在面對紋理信息較少區(qū)域和稀疏結(jié)構(gòu)時比其他算法效果更好,但也存在不能正確判斷包含樹木或草地的植被區(qū)域、整體速度易受卷積量和模型深度影響等問題?;谏疃葘W(xué)習(xí)的多視圖幾何方法可顯著改進傳統(tǒng)計算幾何在弱紋理、稀疏結(jié)構(gòu)、反射面和透明面存在的局限性。文獻[4-5]提出了一種端到端的MVSNet神經(jīng)網(wǎng)絡(luò)模型,通過2D CNN特征提取網(wǎng)絡(luò)得到成本量,然后通過3D CNN對成本量進行正則化平滑調(diào)整,能極大地提高三維重建的整體質(zhì)量,但在計算時會產(chǎn)生大量的冗余計算。文獻[6]提出了Point-MVSNet模型,采用“由粗到細”策略,先通過輕量級的3D 成本量來預(yù)測一個粗略深度預(yù)測圖,然后對其進行上采樣并且不斷地迭代以提高質(zhì)量。雖然這些網(wǎng)絡(luò)性能有很大提高,但在實際應(yīng)用中仍面臨著一些問題,如內(nèi)存消耗滿足不了大場景的需要、生成深度圖的時間太長以及深度圖太小等,這極大地限制了基于深度學(xué)習(xí)的三維重建在大場景中的應(yīng)用[4-9,14-17]。
本文針對現(xiàn)有方法存在的問題,提出一種高效的多視圖幾何三維重建網(wǎng)絡(luò)模型(high efficiency multi-view stereo network, H-MVSNet),通過搭建輕量級的特征提取模塊實現(xiàn)圖片的特征提取,利用改進的門控循環(huán)單元 (gated recurrent unit, GRU)[18]模塊進行正則化,使用列文伯格馬夸爾特(levenberg-marquardt, L-M)方法[19]作為深度圖細化層,可有效解決現(xiàn)有方法內(nèi)存消耗嚴重、網(wǎng)絡(luò)利用率低下等問題。
基于深度學(xué)習(xí)的三維重建主要通過單張圖片或者多張圖片來恢復(fù)物體的三維結(jié)構(gòu)。由于單張圖片得到物體的幾何信息缺失嚴重,因此,僅輸入單張圖片對物體進行三維結(jié)構(gòu)重建會導(dǎo)致輸出不可預(yù)測[1-10,17]。本文通過使用多視圖三維重建算法來更好地解決該類問題。
隨著3D卷積量增加,內(nèi)存消耗會呈3次方增長,導(dǎo)致目前基于深度學(xué)習(xí)的MVS方法應(yīng)用于大規(guī)模場景時效果不理想。模型借鑒循環(huán)神經(jīng)網(wǎng)絡(luò),構(gòu)建一個改進的GRU模塊組來對成本量實現(xiàn)正則化,在減少大量內(nèi)存開銷的同時,可以保證正則化的效果[5,18]。
基于深度學(xué)習(xí)的多視圖三維重建主要有基于點云重建、體素重建、網(wǎng)格重建和深度圖重建等方法?;邳c云重建主要依賴網(wǎng)絡(luò)進行傳播,并行運行困難,耗時量大;基于體素重建將3D空間劃分成有規(guī)律的網(wǎng)格,容易造成較大的離散化誤差和較高的內(nèi)存消耗;基于網(wǎng)格重建可以提高精度和增強泛化能力,但是網(wǎng)格的表示格式不統(tǒng)一,為重建造成了困難;基于深度圖重建更加具有靈活性,生成深度圖后方便轉(zhuǎn)化成點云和體素重建,進而也可以進行網(wǎng)格的轉(zhuǎn)換。
為了得到一張細化的深度圖,本文利用圖片和深度圖融合的方法,結(jié)合L-M算法,構(gòu)建了L-M層來實現(xiàn)細化操作,相對于Gauss-Newton (G-N)算法可大大減少中間值的存儲。
本文構(gòu)建的H-MVSNet網(wǎng)絡(luò),可實現(xiàn)從二維特征到三維特征的轉(zhuǎn)換,利用改進的GRU模塊構(gòu)建正則化模塊實現(xiàn)信息收集、更新,最后使用L-M層實現(xiàn)細化。H-MVSNet網(wǎng)絡(luò)結(jié)構(gòu)如圖1所示。
圖1 H-MVSNet網(wǎng)絡(luò)結(jié)構(gòu)Fig.1 H-MVSNet network structure
表1 特征提取模塊網(wǎng)絡(luò)結(jié)構(gòu)Tab.1 Network structure of feature extraction module
與傳統(tǒng)卷積塊相比,本文將BN (batch normalization)層后面的激活層模塊轉(zhuǎn)化成Inplace-ABN (in-place activated batch normalization)層,該結(jié)構(gòu)通過減少中間結(jié)果的存儲、前饋網(wǎng)絡(luò)存儲的信息映射出反饋網(wǎng)絡(luò)中需要的信息,在僅增加0.8%~2%計算量的情況下可在卷積層節(jié)省50%的內(nèi)存消耗[20]。傳統(tǒng)卷積塊和轉(zhuǎn)換后的卷積塊如圖2所示。
圖2 傳統(tǒng)卷積塊和轉(zhuǎn)換后的卷積塊Fig.2 Conventional convolution blocks versus converted convolution blocks
圖3 改進的GRU結(jié)構(gòu)圖Fig.3 Improved GRU structure diagram
為了進一步提高正則化能力,將3個改進的GRU模塊組成一個模塊組,以上層的輸出作為下層的輸入[5]。改進的GRU模塊組成正則化模塊組,其輸入為每一個通道的成本量,在縱向上提取上下文信息,在橫向上可更新、重置信息,正則化效果同3D CNN,但特征信息可更好保留,計算量可大大減少。正則化GRU模塊組如圖4所示。
圖4 正則化GRU模塊組Fig.4 Regularize the GRU module group
PointFlow結(jié)構(gòu)[6]通過迭代可有效提高深度圖的質(zhì)量,雖然相對于MVSNet在內(nèi)存消耗方面有顯著改善,但計算量過大;文獻[10]提出的G-N結(jié)構(gòu),將不同視角的圖像特征、相機參數(shù)和最初的深度圖作為輸入,迭代實現(xiàn)深度圖質(zhì)量的提高。
使用G-N結(jié)構(gòu)是簡單有效的,然而在中間過程中會存儲大量計算值,因此,使用文獻[19]提出的L-M改進算法,將L-M層作為深度圖細化的結(jié)構(gòu),通過最速下降法和牛頓法來驅(qū)動更新規(guī)則,表示為
Δω=(Q+μI)-1g
(1)
(1)式中:ω為權(quán)重變量;Q為海森矩陣的近似矩陣;μ為阻尼因子;I為單位向量;g為梯度向量。Q的計算表達式為
Q=JTJ
(2)
(2)式中:J為雅可比矩陣。g的計算表達式為
g=JTe
(3)
利用改進的L-M算法,求源圖像Ii和參考圖像I0用深度表示的差值ei(p)的極值,得
(4)
(5)
(6)
然后得到增量值為
(7)
(7)式中,μ對增量大小和方向有影響,其計算公式為
(8)
(8)式中,ξ通過真實深度圖和預(yù)測深度圖的差值得到,計算公式為
(9)
(10)
使用原始圖片和預(yù)測深度圖融合的辦法進行端到端的訓(xùn)練,利用估計深度圖和真實深度圖的均值絕對差作為損失函數(shù),表示為
(11)
H-MVSNet模型使用DTU數(shù)據(jù)集,包括124個不同的場景,每個場景捕獲了49個或者64個不同位置的相機圖片,每個位置的圖片由7種不同光照亮度組成。DTU數(shù)據(jù)集提供了由精確的結(jié)構(gòu)光掃描儀掃描的物體模型、大小為1 600×1 200的高分辨率RGB圖像,包括了由Matlab標定工具得到高精度的相機內(nèi)參和外參[1]。設(shè)置與基于深度學(xué)習(xí)的方法相同的訓(xùn)練集、驗證集和測試集。驗證集為場景{3,5,17,21,28,35,37,38,40,43,56,59,66,67,82,86,106,117};測試集為場景{1,4,9,10,11,12,13,15,23,24,29,32,33,34,48,49,62,75,77,110,114,118};訓(xùn)練集為其余78個場景。
硬件環(huán)境:AMD 2700X處理器,64 GB內(nèi)存,兩塊GTX 1080顯卡。
軟件環(huán)境:Ubuntu18.04,python3.6,pytorch1.4,CUDA 10.0,cuDNN 7.6.5。
實驗設(shè)置:訓(xùn)練輸入圖片的分辨率為640×512;視點個數(shù)為3;從425 mm到921 mm進行均勻采樣來構(gòu)建48個虛擬深度平面;RMSProp優(yōu)化器初始學(xué)習(xí)率為0.0005;每兩個epoch降低0.9;Batch_Size設(shè)置為6。
為驗證所改進的網(wǎng)絡(luò)在性能方面的變化,對H-MVSNet模型與MVSNet、R-MVSNet、Point-MVSNet和Fast-MVSNet在精度誤差、完整性、全面性、GPU內(nèi)存消耗和運行時間等方面進行比較,結(jié)果如表2所示。
由表2可知,相對于MVSNet、R-MVSNet、Point-MVSNet和Fast-MVSNet,H-MVSNet模型精度誤差分別降低了39.45%、17.73%、10.40%和2.75%;GPU內(nèi)存消耗分別減少了77.22%、63.34%、71.82%和53.58%;運行時間分別減少58.09%、95.16%、86.86%和26.67%,網(wǎng)絡(luò)性能明顯改善。
表2 DTU數(shù)據(jù)集實驗結(jié)果比較Tab.2 Parameter comparison table of experimental results of DTU dataset
同時,本文對三維重建精度誤差和內(nèi)存消耗以及運行時間的相關(guān)關(guān)系做了比較,如圖5所示。由圖5可知,本文模型相對于其他模型有一定的優(yōu)勢。
圖5 三維重建精度分別與內(nèi)存消耗和運行時間的相關(guān)關(guān)系Fig.5 Correlation between 3D reconstruction accuracy and memory consumption and running time respectively Visualized comparison diagram of correlation
在生成點云的質(zhì)量方面,H-MVSNet和R-MVSNet、Fast-MVSNet效果對比如圖6所示。圖6左列是整體效果圖,右列是模型細節(jié)放大圖。
圖6 點云效果對比圖Fig.6 Comparison diagram of point cloud effect
通過CloudCompare開源代碼計算重建之后的點云和真實點云的平均距離、標準差,并與R-MVSNet和Fast-MVSNet所生成的點云距離進行對比,結(jié)果如表3所示。
表3 平均距離與標準差比較Tab.3 Comparison of mean distance and standard deviation
由表3可知,H-MVSNet在平均距離和標準差方面較R-MVSNet和Fast-MVSNet都有較明顯改善。
為了證明H-MVSNet網(wǎng)絡(luò)訓(xùn)練模型的有效性,對DTU數(shù)據(jù)集中測試場景生成的點云模型進行展示,總共22個場景,如圖7所示。由圖7可以看出,通過開源代碼fusibile[21]融合深度圖生成的點云在細節(jié)方面完好,尤其是在特征變化明顯的部位,模型中間未出現(xiàn)缺失的部分,點云相對密集,符合重建的要求。
為進一步驗證H-MVSNet網(wǎng)絡(luò)中各模塊的優(yōu)越性,將3D CNN正則化和改進的GRU模塊正則化進行可視化對比,結(jié)果如圖8所示。
由圖8可知,改進的GRU模塊可以顯著地減少內(nèi)存的使用,精度誤差可以大大降低,在網(wǎng)絡(luò)中性能表現(xiàn)優(yōu)越。
圖8 3D CNN正則化和改進的GRU模塊組正則化對比Fig.8 Comparison of 3D CNN regularization and improved GRU module group regularization
使用L-M層細化和未使用L-M層細化可視化對比如圖9所示。
圖9 未使用和使用L-M層的可視化對比Fig.9 Visual comparison between L-M layer not used and used
由圖9可得,使用L-M細化層的精度誤差比未使用L-M細化層降低了0.041,同時減少了中間參數(shù)冗余,降低了內(nèi)存消耗。
目前深度學(xué)習(xí)網(wǎng)絡(luò)內(nèi)存消耗嚴重、網(wǎng)絡(luò)利用率低,難以應(yīng)用于大規(guī)模場景。針對此問題,本文提出了輕量級H-MVSNet網(wǎng)絡(luò)框架。研究主要從以下幾個方面展開:①為了減少特征提取時產(chǎn)生冗余數(shù)據(jù),采用8層卷積網(wǎng)絡(luò),使用輕量級特征提取模塊;②為了降低內(nèi)存的消耗,采用基于改進的GRU模塊組對成本量進行正則化;③為了提高預(yù)測深度圖的質(zhì)量,將原始圖與預(yù)測深度圖融合通過L-M層進行細化。本文模型取得的成果如下。
1)在DTU數(shù)據(jù)集下,H-MVSNet可以達到很好的三維重建效果,其精度誤差為0.327 mm,內(nèi)存消耗僅為2.46 GB,預(yù)測一張分辨率大小為640×480的深度圖僅需0.44 s。
2)生成的點云細節(jié)部分完好,模型中的文字部分以及拐角細節(jié)處重建效果明顯,符合三維重建的要求。
3)H-MVSNet模型在保障準確率的同時可以降低內(nèi)存的消耗,并得到很好的三維重建效果,為大場景三維重建應(yīng)用奠定了良好的基礎(chǔ),在神經(jīng)網(wǎng)絡(luò)移植方面可以提供很好的保障。