張曉燕,陳 祥,郭 穎
(1.廈門大學(xué)嘉庚學(xué)院信息科學(xué)與技術(shù)學(xué)院,福建 漳州 363105;2.廈門大學(xué)電子科學(xué)與技術(shù)學(xué)院,福建 廈門 361005;3.西安機電信息技術(shù)研究所,陜西 西安 710065)
近年來,移動設(shè)備和無人機獲取二維圖像變得越來越簡單,但是二維圖像缺少空間信息的真實性和完整性,不能夠表達空間對象間的立體關(guān)系,因此,多視圖立體重建技術(shù)得到了廣泛重視和飛速發(fā)展。多視圖立體重建是在已知多個視角的圖片集合及其對應(yīng)的相機內(nèi)外參數(shù)條件下,恢復(fù)場景或者物體的三維幾何模型,該技術(shù)不僅能給人以更真實的感受,而且還能描述和表達物體之間的圖像場景和深度關(guān)系。在三維可視化、虛擬現(xiàn)實、場景理解、智慧醫(yī)療和自動駕駛等領(lǐng)域中有著廣泛的應(yīng)用[1-2]。
傳統(tǒng)的多視圖重建方法是利用攝像機從多個角度拍攝物體,之后通過各個角度視圖之間的幾何關(guān)系計算并優(yōu)化深度。文獻[3]開創(chuàng)性地提出了Colmap,該方法采用手工設(shè)計特征提取器提取特征,由于其在公共數(shù)據(jù)集上的重建結(jié)果較理想,Colmap經(jīng)常被選為對比方法來證明提出方法的有效性;然而Colmap重建耗時長,即便小場景也需要耗費若干小時。文獻[4]提出名為OpenMVG的開源庫,包含運動結(jié)構(gòu)恢復(fù)(SFM)所需的工具,代碼開源可讀性強,方便二次開發(fā);但OpenMVG的缺點在于只能恢復(fù)場景的稀疏點云,無法恢復(fù)場景的稠密點云。針對這個缺點,文獻[5]提出了OpenMVS,重建結(jié)果即為場景的稠密點云。雖然OpenMVS是目前重建效果最好的開源庫,但仍存在無紋理區(qū)域、弱紋理和遮擋區(qū)域重建效果差的困擾。
為了解決這些問題,有學(xué)者使用卷積神經(jīng)網(wǎng)絡(luò)[6-7]進行多視圖立體重建。文獻[8]提出利用卷積神經(jīng)網(wǎng)絡(luò)直接對單張圖像恢復(fù)深度,該網(wǎng)絡(luò)采取了多尺度的結(jié)構(gòu)進行深度預(yù)測,并且將尺度不變特性引入損失函數(shù)中,極大地增強了網(wǎng)絡(luò)的泛化能力,為后續(xù)學(xué)者使用深度學(xué)習(xí)方法進行多視圖重建奠定了基礎(chǔ)。文獻[9]提出3D-R2N2(3D recurrent reconstruction neural network)網(wǎng)絡(luò),該網(wǎng)絡(luò)構(gòu)造了卷積神經(jīng)網(wǎng)絡(luò)和長短期記憶(long short-term memory,LSTM)相結(jié)合的編解碼器架構(gòu),通過投影操作將相機參數(shù)編碼到網(wǎng)絡(luò)中,輸出三維網(wǎng)格來重建三維場景。文獻[10]提出了SurfaceNet網(wǎng)絡(luò),該網(wǎng)絡(luò)通過將相機參數(shù)和圖像以三維體素共同編碼表示構(gòu)建的卷積神經(jīng)網(wǎng)絡(luò),其核心優(yōu)勢在于能夠解決多視圖立體中的圖像一致性和幾何相關(guān)性問題。這兩種方法都使用了基于體素的方法,重建中需要耗費大量顯存,只適用于小規(guī)模場景的三維重建。文獻[11]提出MVSNet,該方法參照了傳統(tǒng)平面掃描法的策略,基于參考視圖的相機視錐體構(gòu)建三維代價,然后使用三維卷積對代價體進行正則化,回歸得到深度圖。由于是第一個完整的基于深度學(xué)習(xí)多視圖立體重建方法,MVSNet已經(jīng)成為其他基于深度學(xué)習(xí)的多視圖幾何重建的基準。文獻[12]提出了R-MVSNet,此網(wǎng)絡(luò)將三維卷積神經(jīng)網(wǎng)絡(luò)(3D CNN)替換成門控循環(huán)單元(GRU)進行正則化,極大降低了顯存的消耗,但同時增加了重建時間。文獻[13]提出P-MVSNet,主要創(chuàng)新點在于提出了基于區(qū)域匹配置信度的代價體,通過學(xué)習(xí)的方式將每個假想面上的特征匹配置信度聚合變?yōu)橐粋€向量而非常量,從而提高了匹配的準確度。文獻[14]提出了一種基于跨視角一致性約束的無監(jiān)督深度估計網(wǎng)絡(luò)Unsupervised-MVSNet,該網(wǎng)絡(luò)提出了一種無監(jiān)督的方法來訓(xùn)練網(wǎng)絡(luò),并且利用多個視圖之間的光度一致性和像素梯度差異作為監(jiān)督信號,來預(yù)測深度圖,取得了不錯的重建結(jié)果。文獻[15]提出一種直接基于點的匹配代價正則化方法——Point-MVSNet,該網(wǎng)絡(luò)的核心是把三維幾何先驗知識和二維紋理信息融合到特征增強點云中,得到的重建結(jié)果精度更高,效率更優(yōu)。文獻[16]提出AA-RMVSNet,該網(wǎng)絡(luò)提出自適應(yīng)逐像素視圖聚合匹配代價模塊,能夠在所有視圖之間保留更好的匹配代價體,克服了復(fù)雜場景中弱紋理和遮擋的問題。文獻[17]提出EF-MVSNet,該網(wǎng)絡(luò)仍然以MVSNet為基本框架,在深度圖優(yōu)化階段引入邊緣檢測模塊來預(yù)測深度圖邊緣像素的偏移量,并通過多次迭代得到最終深度估計結(jié)果。
雖然深度學(xué)習(xí)多視圖立體重建具有很強的學(xué)習(xí)能力,能夠挖掘更多的圖像潛在特征,在特征匹配時具有更高的準確性,進而得到更優(yōu)的結(jié)果。但是由于其特征提取結(jié)果未將不同尺度圖像特征進行聚合,得到的結(jié)果僅僅是輸入圖像經(jīng)過連續(xù)下采樣后的輸出,并且匹配代價體在正則化后仍然存在離群點問題,將會影響加權(quán)回歸得到的深度圖,進而影響整個重建的準確性和完整性。為此,本文在深度學(xué)習(xí)網(wǎng)絡(luò)基礎(chǔ)上提出自適應(yīng)聚合和代價自學(xué)習(xí)的多視圖立體重建,提高重建結(jié)果的完整性和整體性。
雖然MVSNet網(wǎng)絡(luò)可以得到不錯的重建結(jié)果,但該網(wǎng)絡(luò)仍忽略了聚合不同尺度特征信息和匹配代價體優(yōu)化。為了解決上述問題,本文設(shè)計了一個自適應(yīng)聚合特征提取模塊,針對標準卷積具有固定感受野,在弱紋理和無紋理區(qū)域特征提取困難的問題,使用可變性卷積來自適應(yīng)調(diào)整感受野的大小,并且將不同尺度的具有不同紋理豐富度的圖像特征聚合,提升紋理特征提取的豐富度。同時,設(shè)計了一種代價自學(xué)習(xí)模塊,針對匹配代價體中存在的離群點問題,通過使用可變形卷積來改變卷積核形狀,為離群點尋找一些可靠且關(guān)系密切的相鄰點,用相鄰點的代價分布來替代離群點的代價分布,從而提升匹配代價體的準確性。
本文設(shè)計的多視圖立體重建網(wǎng)絡(luò)架構(gòu)如圖1 所示。從圖中可看出本文工作主要包括:1) 引入一個自適應(yīng)聚合特征提取模塊,通過可變形卷積自適應(yīng)地聚合具有不同紋理豐富度的特征區(qū)域;2) 引入一個代價自學(xué)習(xí)模塊,通過可變形卷積自適應(yīng)優(yōu)化匹配代價體離群值。
圖1 網(wǎng)絡(luò)整體架構(gòu)
本文的多視圖立體重建網(wǎng)絡(luò)實現(xiàn)包含以下主要步驟:自適應(yīng)聚合特征提取、匹配代價體構(gòu)建、匹配代價體正則化、代價自學(xué)習(xí)、深度圖估計和優(yōu)化以及損失函數(shù)選定,最后得到優(yōu)化后的深度圖。
由于標準卷積具有固定的感受野,在面對弱紋理和無紋理區(qū)域時無法有效地提取出較好的特征結(jié)果。為了彌補這個不足, 本文引入了可變形卷積[18-19]進行自適應(yīng)聚合特征提取。
可變形卷積是將標準卷積的卷積核在每個空間采樣位置上都增加一個2D偏移量。通過這些偏移量,使得卷積核可以在每個空間采樣位置附近自適應(yīng)地采樣,而不再局限于規(guī)則格點。因此,可變形卷積可以自適應(yīng)地調(diào)整尺度或者感受野的大小,提取到更多有效的目標區(qū)域特征??勺冃尉矸e和標準卷積的卷積核形狀對比如圖2所示,圖(a)為標準卷積的卷積核形狀,圖(b)、(c)和(d)為可變形卷積的卷積核形狀,其中藍色的點是新的卷積點,箭頭是位移方向。
圖2 卷積核對比圖
本文設(shè)計的可變性卷積自適應(yīng)聚合特征提取模塊結(jié)構(gòu)如圖3所示。該模塊使用了12層結(jié)構(gòu)的卷積層,其中,從第三個卷積層開始,每隔3個卷積層步長均除以2,得到的特征圖大小分別為原尺寸分辨率的1、1/2、1/4和1/8。對于每種尺度特征,都是經(jīng)過三層卷積處理得到的,最后四種特征均通過可變形卷積自適應(yīng)處理并經(jīng)過雙線性插值沿特征維度進行堆疊,得到最終的輸出特征圖,其維度為H/4×W/4×64??勺冃尉矸e定義如下:
圖3 自適應(yīng)聚合特征提取
(1)
式(1)中,f(p)表示像素點p的特征值,wk和pk分別表示卷積核參數(shù)和偏移量,Δpk和Δmk分別表示可變形卷積的可學(xué)習(xí)子網(wǎng)絡(luò)自適應(yīng)產(chǎn)生的偏移量和調(diào)制權(quán)重。
(2)
式(2)中,d為深度值,K為相機的內(nèi)參數(shù),R為旋轉(zhuǎn)矩陣,RT和KT為轉(zhuǎn)置矩陣,nT為平面法向量的轉(zhuǎn)置。
為了引入任意數(shù)量的輸入視圖,構(gòu)建匹配代價體時使用基于方差的方法,以此來衡量各個視角構(gòu)成的匹配代價體之間的相互關(guān)系。其計算公式為
(3)
由于真實場景中存在遮擋,得到的初始匹配代價體往往存在噪聲。為了減弱噪聲對結(jié)果的影響,需要對得到的初始匹配代價體進行正則化。本文使用具有多尺度的3D CNN對匹配代價進行正則化,具體結(jié)構(gòu)如圖4所示。由于匹配代價體是三維結(jié)構(gòu),因此僅僅對匹配代價體下采樣兩次,目的是為了減小正則化所需的大量內(nèi)存。
圖4 匹配代價正則化
匹配代價體的優(yōu)化方法一般通過使用普通的卷積網(wǎng)絡(luò)預(yù)測殘差來糾正離群值,但由于卷積核形狀的固定性,普通卷積很難優(yōu)化離群值。因此,為了解決這個問題,本文提出代價自學(xué)習(xí)模塊,具體結(jié)構(gòu)如圖5所示,利用可變形卷積自適應(yīng)地調(diào)整卷積核的感受野大小,使得離群點可以自適應(yīng)尋找到其最可靠的相鄰像素。該模塊首先將參考圖像作為輸入并輸出密集特征;之后,使用可變形卷積對每一個像素點使用特征預(yù)測幾個偏移量,每個偏移量包含兩個通道,表示相鄰點的像素坐標。利用這些坐標,對相鄰像素匹配代價進行采樣,并計算其平均值來更新該像素的匹配代價。該模塊可用如下公式表示:
圖5 代價自學(xué)習(xí)
(4)
式(4)中,Cr和Co分別為優(yōu)化后的匹配代價體和初始匹配代價體;(Δxi,Δyi)是在(x,y)像素坐標上預(yù)測的偏移量;mi是調(diào)制權(quán)重,范圍為0~1;N是控制采樣相鄰像素數(shù)量的超參數(shù),若點數(shù)越多,結(jié)果越好,但消耗的內(nèi)存也越多。
2.5.1深度圖估計
優(yōu)化后的匹配代價體經(jīng)過soft-argmin函數(shù)處理,可以獲得每個像素在不同深度采樣值處的概率估計。通過將所有深度假設(shè)值與概率估計加權(quán)回歸計算可得到每個像素的深度估計值,即完成了深度圖估計。其原理是概率估計上的每個點都對應(yīng)在某一深度值下的置信度,如果直接選取概率值最大的深度值作為估計值,在網(wǎng)絡(luò)中將無法通過誤差反向傳播獲取最優(yōu)結(jié)果。因此,在得到概率估計后,計算每個深度下的加權(quán)平均值。具體公式如下:
(5)
式(5)中,dmin和dmax表示深度范圍,d為深度范圍內(nèi)均勻采樣深度值,P(d)為在某一深度d處對應(yīng)的概率估計值。
2.5.2深度圖優(yōu)化
由于深度學(xué)習(xí)網(wǎng)絡(luò)具有較大的感受野區(qū)域,得到的深度圖邊界可能會過平滑,因此需要使用淺層殘差網(wǎng)絡(luò)對深度圖進行優(yōu)化。淺層殘差網(wǎng)絡(luò)由6個卷積層構(gòu)成,首先輸入初始深度圖和其對應(yīng)的RGB圖,將其串聯(lián)成通道為4后即可輸入第一層卷積層,在經(jīng)過連續(xù)的6層卷積層后,輸出通道數(shù)為1的卷積結(jié)果,將此結(jié)果與初始深度圖相加,得出的結(jié)果即為最終的深度圖。
本文中使用L1函數(shù)作為損失函數(shù),在網(wǎng)絡(luò)訓(xùn)練時,損失函數(shù)計算每次迭代的前向計算結(jié)果與真實值的差距,并通過反向傳播更新各個參數(shù),使得模型生成的預(yù)測值向真實值靠攏。損失函數(shù)公式如下:
(6)
DTU數(shù)據(jù)集是為了解決多視角立體重建問題專門拍攝并預(yù)處理過的室內(nèi)數(shù)據(jù)集,通過可調(diào)節(jié)拍攝角度和亮度的工業(yè)機器臂拍攝得到。DTU數(shù)據(jù)集由124個不同場景組成,每個場景包括49或64個不同方向在7種不同光照條件下拍攝的圖像,每張圖像原始分辨率是1 600×1 200像素。
DTU數(shù)據(jù)集原始分辨率為1 600×1 200像素,由于存在三維卷積,如果直接輸入需要耗費巨大的顯存。因此,在訓(xùn)練階段將輸入圖像大小裁剪為640×512像素,輸入數(shù)量為5,選取DTU數(shù)據(jù)集中79個場景作為訓(xùn)練樣本。學(xué)習(xí)速率初始值設(shè)為0.001,并且在訓(xùn)練10個批次后每隔兩個批次學(xué)習(xí)率減半。深度假設(shè)平面數(shù)量設(shè)置為160,深度間隔大小為1.272。本網(wǎng)絡(luò)是基于Pytorch的神經(jīng)網(wǎng)絡(luò)搭建,顯卡為NVIDIA RTX 2080Ti,使用顯存大小為11 GB,損失函數(shù)中μ0和μ1分別設(shè)置為1和0.8(此值通過多次訓(xùn)練調(diào)整得出),訓(xùn)練批次為16。
因為訓(xùn)練階段需要額外的內(nèi)存來保存中間梯度用于反向傳播,而在測試階段不需要,因此輸入圖像分辨率設(shè)置為1 184×1 600,輸入視角數(shù)量為7,測試集樣本為DTU中的22個場景,深度假設(shè)平面數(shù)量設(shè)置為256,深度間隔為0.795。
本文方法與傳統(tǒng)方法和深度學(xué)習(xí)方法的評估對比結(jié)果如表1所示。表1中前四種方法為傳統(tǒng)方法,后兩個為基于深度學(xué)習(xí)的方法。官方公布的DTU數(shù)據(jù)集重建結(jié)果評估[20-21],具體為三個值:準確性、完整性和整體性。 準確性是重建點云與真實點云之間作差的結(jié)果,完整性是從真實點云到重建點云之間作差的結(jié)果,整體性是準確性和完整性求和的平均值,這三個值越低表明模型重建結(jié)果越好。
表1 DTU數(shù)據(jù)集評估對比結(jié)果
從表1可知,與傳統(tǒng)方法和深度學(xué)習(xí)方法相比,本文方法重建的整體性為0.432,完整性為0.420,是所有方法中重建結(jié)果最好的。與深度學(xué)習(xí)基準方法MVSNet相比,本文方法在整體性上提升了3.0%,完整性上提升了10.7%,充分說明了本文方法的有效性。本文方法重建的準確性為0.444,相比較MVSNet,準確率降低了4.8%。導(dǎo)致這種現(xiàn)象的原因可能是網(wǎng)絡(luò)模型復(fù)雜度增加,反向傳播的參數(shù)量增多,使得模型泛化性能降低。
圖6為DTU部分場景的重建結(jié)果對比圖,從圖中可以發(fā)現(xiàn)本文方法重建結(jié)果相較于MVSNet的完整性上有了很大的提升,尤其是在邊緣和弱紋理區(qū)域,本文的重建結(jié)果更精確且完整,與Groud Truth更接近。這些從圖中框出的部分能夠明顯看出,充分說明了本文方法的有效性。
圖6 DTU部分場景重建結(jié)果比對
在前面部分驗證了網(wǎng)絡(luò)的整體性能,為了檢驗本文部分模塊的有效性,進行消融實驗。圍繞本文方法中的自適應(yīng)聚合模塊和動態(tài)自學(xué)習(xí)模塊,分別建立了2組對比實驗,結(jié)果對比如表2所示。
表2 DTU數(shù)據(jù)集消融實驗結(jié)果對比
表2中,FAA是自適應(yīng)聚合特征提取模塊,CSL是代價自學(xué)習(xí)模塊。從表2可知,加入FAA后,網(wǎng)絡(luò)重建結(jié)果的完整性為0.471,加入CSL后,網(wǎng)絡(luò)重建結(jié)果的完整性為0.452,相比較于MVSNet分別提升了5.6%和7.5%。在同時加入FAA和CSL后,網(wǎng)絡(luò)重建結(jié)果的完整性為0.420,是所有消融實驗重建結(jié)果完整性最高的。因此,通過消融實驗表明,本文方法充分利用了自適應(yīng)聚合模塊和代價自學(xué)習(xí)模塊的優(yōu)點,在一定程度上可以獲得更完整的重建結(jié)果。DTU數(shù)據(jù)集消融實驗對比結(jié)果如圖7所示。
圖7 DTU數(shù)據(jù)集消融實驗結(jié)果比對
從圖7中可以看出,自適應(yīng)聚合模塊的單獨加入,使得模型可以重建出更加完整的結(jié)果。匹配代價體動態(tài)自學(xué)習(xí)模塊的單獨加入,使得重建結(jié)果邊緣更加平滑和更少的噪點。當兩個模塊同時加入時,重建結(jié)果的完整性及邊緣質(zhì)量都好于未加入前的結(jié)果,充分證明了本文方法的有效性。
針對MVSNet網(wǎng)絡(luò)重建結(jié)果完整性較低的問題,本文提出基于MVSNet的改進網(wǎng)絡(luò)。通過增加自適應(yīng)聚合特征提取模塊,使得特征提取結(jié)果能夠包含更加豐富的特征信息。同時,通過增加代價自學(xué)習(xí)模塊,緩解匹配代價體過度平滑問題。經(jīng)過DTU數(shù)據(jù)集的測試與評估,本文網(wǎng)絡(luò)在重建整體性和完整性都有不錯的提升。相較于MVSNet,本文網(wǎng)絡(luò)在整體性上提高了3.0%,完整性上提高了10.7%,得到了質(zhì)量更優(yōu)的三維重建結(jié)果。本文提出的方法可應(yīng)用于數(shù)字孿生可視化平臺、文化遺產(chǎn)保護以及動畫電影制作等方面。
由于本文使用了3D卷積,雖然可以得到不錯的重建結(jié)果,但該方法需要耗費大量的內(nèi)存,只適用于中小規(guī)模場景的三維重建。同時,本文方法需要使用重建場景或物體的真實點云,但往往真實點云很難被獲取。因此,未來的研究工作應(yīng)該尋求無監(jiān)督學(xué)習(xí)的方法和耗費計算資源更小的方法以便運用到大規(guī)模的室外場景重建。