田方正, 高永彬, 方志軍, 顧 佳
(上海工程技術(shù)大學(xué) 電子電氣工程學(xué)院,上海 201620)
稠密的三維重建是安全的機(jī)器人導(dǎo)航、增強(qiáng)現(xiàn)實(AR)等任務(wù)的首選。多年來,很多學(xué)者在不同的領(lǐng)域研究定位和三維重建的工作。OpenMVG[1]開發(fā)了完整的系統(tǒng),應(yīng)用局部細(xì)化來恢復(fù)更好的局部重建質(zhì)量。從運動恢復(fù)結(jié)構(gòu)(structure from motion,SFM)和即時定位與地圖構(gòu)建(simultaneous localization and mapping,SLAM)被廣泛用于從圖像獲得三維重建[2]。DTAM(dense tracking and mapping in real-time)[3]和REMODE[4]通常通過優(yōu)化深度值來創(chuàng)建密集場景。隨著卷積神經(jīng)網(wǎng)絡(luò)(convolutional neural networks,CNN)的出現(xiàn),計算機(jī)視覺理解的性能大大提高。CNNSLAM[5]利用CNN預(yù)測單目圖像深度,并將其輸入大規(guī)模直接單眼SLAM(LSD-SLAM)中實現(xiàn)稠密重建。CodeSLAM[6]利用CNN框架,并結(jié)合圖像幾何信息實現(xiàn)了單目相機(jī)的稠密SLAM。
目前,基于RGB-D的重建只能保持顏色分辨率等于所用深度傳感器的分辨率,這限制了生成重建的精度和真實性。如文獻(xiàn)[7]所示,基于幾何的系統(tǒng)在圖像梯度區(qū)域或者邊緣上表現(xiàn)最佳,但在紋理較低的內(nèi)部區(qū)域表現(xiàn)極差,而基于學(xué)習(xí)的系統(tǒng)通常在內(nèi)部點上表現(xiàn)得相當(dāng)好,但會模糊對象的邊緣。
本文提出了基于深度估計與自我運動聯(lián)合優(yōu)化的三維重建。首次增加了RGB圖像的特征圖作為網(wǎng)絡(luò)的輸入,并且創(chuàng)新性地提出了輪廓損失函數(shù),同時設(shè)計了特征損失函數(shù)來聯(lián)合優(yōu)化深度估計和自我運動。在TUM RGB-D[8]、ICL-NUIM[9]數(shù)據(jù)集上,明顯地提高了深度圖的質(zhì)量、定位結(jié)果以及三維重建的效果。
基于深度估計與自我運動聯(lián)合優(yōu)化的三維重建總體架構(gòu)如圖1所示。整個算法由3個神經(jīng)網(wǎng)絡(luò)組成,DepthNet用于預(yù)測當(dāng)前幀RGB1的稠密深度Pred。PoseNet分為4個子網(wǎng)絡(luò),以RGB1和RGB2與它們的3個不同級別的特征圖作為輸入,預(yù)測當(dāng)前幀RGB1和附近幀RGB2的相對位姿。VGGNet[10]不參與模型的學(xué)習(xí),僅使用預(yù)訓(xùn)練的權(quán)重提取圖像特征。由于在室內(nèi)場景中,有大量帶有深度標(biāo)記的樣本。因此,采用監(jiān)督的方式訓(xùn)練網(wǎng)絡(luò),使用原始的深度圖與預(yù)測深度圖之間的差作為損失約束,加速網(wǎng)絡(luò)的收斂。使用當(dāng)前幀RGB1和重建的當(dāng)前幀RGB1′的光度誤差、輪廓誤差以及它們的3個特征誤差糾正預(yù)測的深度圖的結(jié)果,同時優(yōu)化當(dāng)前幀與附近幀的相對位姿。最后,在DepthNet和PoseNet訓(xùn)練完成的基礎(chǔ)上,通過預(yù)測關(guān)鍵幀的稠密深度圖與位姿進(jìn)行三維重建。
圖1 系統(tǒng)架構(gòu)示意
DepthNet以原始分辨率的RGB圖像作為網(wǎng)絡(luò)的輸入。網(wǎng)絡(luò)的輸出為與輸入分辨率一致的預(yù)測稠密深度圖。這種高分辨率的稠密深度預(yù)測保證了后期三維重建的質(zhì)量。
DepthNet網(wǎng)絡(luò)架構(gòu)采用了經(jīng)典的V形結(jié)構(gòu)。如圖2所示,整個網(wǎng)絡(luò)使用3×3(反)卷積,批量歸一化(batch normalization,BN)和帶參數(shù)的非線性激活函數(shù)(parametric rectified linear unit,PReLU)來提取特征。BN將各層的數(shù)據(jù)分布強(qiáng)制轉(zhuǎn)換為正態(tài)分布,使得網(wǎng)絡(luò)的收斂速度加快。PReLU是帶有參數(shù)的非線性激活單元,用來非線性激活標(biāo)準(zhǔn)化數(shù)據(jù)。最終通過1×1卷積濾波器產(chǎn)生一個與網(wǎng)絡(luò)輸入具有相同分辨率的預(yù)測稠密深度圖。
VGGNet不參與模型的學(xué)習(xí),僅使用預(yù)訓(xùn)練的權(quán)重為DepthNet和PoseNet提供用于訓(xùn)練或者網(wǎng)絡(luò)輸入的RGB圖像的特征圖。
圖2 DepthNet網(wǎng)絡(luò)架構(gòu)
PoseNet共分為4個子網(wǎng)絡(luò)。如圖1所示,將當(dāng)前幀RGB1和附近幀RGB2作為第1個子網(wǎng)絡(luò)的輸入。VGGNet分別提取RGB1和RGB2的3組不同級別的特征圖。3組不同的特征圖分別作為其他3個子網(wǎng)絡(luò)的輸入。
PoseNet輸出6自由度相對姿勢[R|t]。其網(wǎng)絡(luò)架構(gòu)如圖1所示。每個子網(wǎng)絡(luò)共3層,以從RGB或者特征圖像中提取更多特征。位姿網(wǎng)絡(luò)先對RGB或者特征圖在通道上進(jìn)行疊加,然后疊加后的圖像進(jìn)行卷積操作提取特征。PoseNet采用ReLU作為激活函數(shù)。在輸出階段,融合4個子網(wǎng)絡(luò)最終的特征圖,再經(jīng)過2次卷積得到[R|t]。
系統(tǒng)需要訓(xùn)練DepthNet和PoseNet兩個網(wǎng)絡(luò)模型。在訓(xùn)練期間,使用深度損失加速DepthNet模型的收斂速度。使用當(dāng)前幀RGB1和重建的當(dāng)前幀RGB1′的光度誤差、輪廓誤差以及它們的三個特征誤差糾正預(yù)測深度圖的結(jié)果,同時優(yōu)化當(dāng)前幀與附近幀的相對位姿。
深度損失:在深度網(wǎng)絡(luò)模型的訓(xùn)練期間,使用原始深度約束預(yù)測出來的稠密深度圖。具體而言,如果預(yù)測的深度圖在原始深度圖對應(yīng)的位置有數(shù)據(jù),那么對這兩個數(shù)據(jù)之間的差異進(jìn)行懲罰。深度損失定義為
(1)
圖像重構(gòu):給定相對變換[R|t]和當(dāng)前深度預(yù)測Hpred,可以將附近幀RGB2反向扭曲到當(dāng)前幀RGB1上。具體來說,通過式(2)可以建立起RGB2與RGB1任何像素對應(yīng)的投影關(guān)系
u2=K[R|t]spredK-1u1
(2)
式中spred為預(yù)測的稠密深度圖在RGB1像素坐標(biāo)u1下對應(yīng)的深度值,K為相機(jī)內(nèi)參,[R|t]為兩幀之間的變換矩陣,u2為RGB2對象對應(yīng)的坐標(biāo)位置。通過式(2)的對應(yīng)關(guān)系,利用雙線性采樣將RGB2合成為RGB1視角下的RGB1′圖像
RGB1′=C(RGB2,[R|t],Hpred)
(3)
式中C為RGB2與RGB1像素對應(yīng)的投影函數(shù)。
光度損失:光度損失的目的是使當(dāng)前幀RGB1與重建的當(dāng)前幀RGB1′之間的像素級差異最小化,從而迫使網(wǎng)絡(luò)預(yù)測更精確的稠密深度以及位姿。其定義為
Lphoto=∑s∈S‖I1-I′1‖1
(4)
式中S為圖像的尺度,I1和I′1為圖像RGB1與RGB1′在像素點s上的顏色強(qiáng)度。
輪廓損失:為了提高深度估計在邊緣處預(yù)測的準(zhǔn)確性,提出了輪廓損失,目的是加大對輪廓處的懲罰。輪廓使用基本梯度獲取,其定義為
g=(f⊕b)-(f?b)
(5)
式中g(shù)為基本梯度圖像,f為原始圖像,b為結(jié)構(gòu)元素,⊕為膨脹操作,?為腐蝕操作。
RGB圖像與其輪廓的結(jié)果如圖3所示。將RGB1和RGB1′提取的輪廓圖像直接相減,來加大對邊緣處的懲罰力度。輪廓損失定義為
Lcontour=‖I1C-I′1C‖1
(6)
式中I1C和I′1C為圖像RGB1與RGB1′在各自輪廓上的強(qiáng)度。
圖3 RGB圖像與其輪廓
特征損失:使用VGGNet提取RGB1與的3個不同級別的特征圖,如圖1所示,通過特征誤差解決RGB圖像易受光線影響的問題。特征損失的具體定義為
(7)
式中S為特征圖的集合,f1和f′1為圖像RGB1與RGB1′在第s個特征圖上的特征值。
整個自我監(jiān)督框架的最終損失函數(shù)包括4項
L=α1Ldepth+α2Lphoto+α3Lcontour+α4Lfeature
(8)
式中α1,α2,α3,α4為超參數(shù)。根據(jù)經(jīng)驗,最終將超參數(shù)分別設(shè)為0.8, 0.6, 0.6, 0.6。
為了保證三維重建的分辨率、靈活性和適應(yīng)性,使用Surfel的方法進(jìn)行重建。本文利用第一幀圖像及預(yù)測的稠密深度圖初始化Surfel,構(gòu)建并維護(hù)覆蓋可見表面的無序集。每個Surfel有7個屬性。其數(shù)學(xué)形式為S=[p,n,c,w,r,t,i],p為3個自由度的位置變量,n為3個自由度的法線變量,c為顏色強(qiáng)度,w為置信度,r為用于近鄰搜索的半徑,t用于檢測臨時異常值或動態(tài)對象,i為觀察Surfel的最后一個幀。
在給定當(dāng)前相機(jī)姿態(tài)估計[R|t]的情況下,可以利用曲面之間的相對位姿將局部曲面的位置和法線變換為當(dāng)前幀。其融合如式(9)所示
(9)
式中 腳標(biāo)b為之前建好的Surfel,l為局部Surfel。
數(shù)據(jù)集:使用SUN RGB—D[11]數(shù)據(jù)集對網(wǎng)絡(luò)進(jìn)行訓(xùn)練,該數(shù)據(jù)集包含1萬幅經(jīng)過優(yōu)化的RGB-D圖像。使用TUM RGB-D[8]和ICL-NUIM[9]兩個公共基準(zhǔn)數(shù)據(jù)集的序列進(jìn)行測試。
實施細(xì)節(jié):本文在Pytorch中實施了訓(xùn)練框架。以圖像原始分辨率作為網(wǎng)絡(luò)的輸入,批量大小為4,在單塊NVIDIA TITAN X上進(jìn)行訓(xùn)練??偣苍O(shè)置3個級別的特征圖計算特征損失,每個級別的尺寸是上一個級別的50 %。使用零均值高斯隨機(jī)初始化網(wǎng)絡(luò)權(quán)重,采用Adam進(jìn)行網(wǎng)絡(luò)優(yōu)化,學(xué)習(xí)率設(shè)為10-4,采用學(xué)習(xí)率衰減法,每2輪迭代學(xué)習(xí)率降低50 %。總共訓(xùn)練50輪。
采用文獻(xiàn)[12]中使用的相同序列進(jìn)行評估,并與他們報告的結(jié)果進(jìn)行比較。根據(jù)文獻(xiàn)[12]的評估方式,使用正確深度百分比(percentage of correct depth,PCD)和絕對軌跡誤差(absolute track error,ATE)作為室內(nèi)數(shù)據(jù)集的評估標(biāo)準(zhǔn)。PCD定義為絕對誤差小于真實深度10%的深度預(yù)測百分比。ATE是一個公認(rèn)的評估攝像機(jī)軌跡質(zhì)量的指標(biāo),它被定義為估計的和真實攝像機(jī)軌跡之間的均方根誤差。
數(shù)據(jù)集PCD的比較結(jié)果如表1所示。除了ICL/Living2序列以外,在所有的序列中都取得了顯著的進(jìn)步。這表明了本文的方法可以提升網(wǎng)絡(luò)的性能。此外,可以看出,基于學(xué)習(xí)的方法比純幾何系統(tǒng)(REMODE[4])有明顯的優(yōu)勢,這表明了基于學(xué)習(xí)的方法在稠密三維重建中的作用。
室內(nèi)數(shù)據(jù)集ATE的比較結(jié)果如表2所示??梢钥闯?所提方法總體上優(yōu)于其他方法。這主要取決于使用RGB圖像以及特征圖作為PoseNet的輸入。同時,基于特征的損失在聯(lián)合優(yōu)化深度與位姿的時候,起到了重要的作用。
表1 TUM RGB-D和ICL-NUIM數(shù)據(jù)集PCD比較
表2 TUM RGB-D和ICL-NUIM數(shù)據(jù)集的絕對軌跡誤差 m
圖4中顯示了TUM RGB-D數(shù)據(jù)集部分圖片深度圖的定性結(jié)果。通過定性的結(jié)果來看,預(yù)測的深度圖像還具有更清晰的對象邊界;同時所提的方法克服了玻璃等一些特殊物體對深度相機(jī)的影響。
圖4 TUM RGB-D數(shù)據(jù)集部分圖片的深度圖對比結(jié)果
此外進(jìn)行了單張圖片的重建,以直觀地評估所提方法。如圖5所示,所提方法的重建分辨率更高,可以實現(xiàn)對黑色物體(電腦屏幕),以及玻璃的重建。
圖5 TUM RGB-D單張RGB圖像三維重建結(jié)果
為了進(jìn)一步證明所提方法的有效性,對TUM RGB-D部分圖片進(jìn)行三維重建。如圖6所示,所提方法可以對室內(nèi)進(jìn)行有效的重建。
圖6 TUM RGB-D部分場景三維重建結(jié)果
針對室內(nèi)稠密三維重建的問題,提出了基于深度估計與自我運動聯(lián)合優(yōu)化的三維重建。創(chuàng)新性地提出了輪廓損失,設(shè)計了特征圖的損失。實驗結(jié)果表明:所提方法在TUM RGB-D,ICL-NUIM數(shù)據(jù)集上,明顯地提高了深度圖的質(zhì)量、定位結(jié)果以及三維重建的效果。