夏夢(mèng)琪,郝 琨,趙 璐
天津城建大學(xué) 計(jì)算機(jī)與信息工程學(xué)院,天津300384
圖像深度信息對(duì)于重建場(chǎng)景的三維結(jié)構(gòu)具有重要意義,在視覺(jué)導(dǎo)航、3D 重建、自動(dòng)駕駛[1-3]等領(lǐng)域有著廣泛的應(yīng)用。然而市場(chǎng)上用于獲取圖像深度信息的深度傳感器具有成本過(guò)高、噪聲過(guò)大等不足,使其很難在工業(yè)界中推廣使用。相比之下,基于單目圖像進(jìn)行深度估計(jì)的方法,可應(yīng)用的范圍更廣[4],并且具有方便部署、計(jì)算成本低等優(yōu)點(diǎn)。因此,研究者們將目標(biāo)轉(zhuǎn)向了單目圖像的深度估計(jì)上。
單目圖像深度估計(jì)方法可分為傳統(tǒng)方法和深度學(xué)習(xí)方法。傳統(tǒng)方法是通過(guò)利用概率圖模型[5]和非參數(shù)技術(shù)[6-7]尋求解決方案。其中概率圖模型將馬爾可夫隨機(jī)場(chǎng)(Markov Random Field,MRF)以及連續(xù)條件隨機(jī)場(chǎng)(Conditional Random Field,CRF)等運(yùn)用于模型中,此方法使用的特征信息都是基于手工進(jìn)行特征提取,導(dǎo)致估計(jì)速度較低并且在性能和效率上均顯示出局限性。非參數(shù)技術(shù)依賴(lài)于場(chǎng)景之間的相似性來(lái)推斷測(cè)試圖像的深度,但是當(dāng)數(shù)據(jù)庫(kù)中缺乏類(lèi)似場(chǎng)景時(shí),就很難估計(jì)出精確的深度圖。
近年來(lái),應(yīng)用深度學(xué)習(xí)方法進(jìn)行單目圖像的深度估計(jì)得到迅速發(fā)展。卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network,CNN)作為深度學(xué)習(xí)的典型代表算法之一,在單目圖像深度估計(jì)領(lǐng)域已經(jīng)取得了重大進(jìn)展[8-15]。文獻(xiàn)[8]首次提出基于卷積神經(jīng)網(wǎng)絡(luò)的單目圖像深度估計(jì)模型,該模型包含兩個(gè)網(wǎng)絡(luò):第一個(gè)粗網(wǎng)絡(luò)利用整個(gè)圖像做粗略的全局預(yù)測(cè),第二個(gè)精細(xì)網(wǎng)絡(luò)局部地優(yōu)化預(yù)測(cè)結(jié)果,這一方法與傳統(tǒng)方法相比獲得了不錯(cuò)的結(jié)果,但是由于網(wǎng)絡(luò)層數(shù)少,感受野小,無(wú)法提取到圖像深層次的特征,使得深度圖邊緣模糊。之后,大量研究人員在此基礎(chǔ)上進(jìn)行了優(yōu)化改進(jìn)。比如,文獻(xiàn)[13]結(jié)合了一個(gè)深度卷積神經(jīng)網(wǎng)絡(luò)和一個(gè)連續(xù)的條件隨機(jī)場(chǎng)(CRF)設(shè)計(jì)模型,并在視覺(jué)上獲得了更清晰的過(guò)渡和局部細(xì)節(jié)。文獻(xiàn)[14]提出了兩種順序的深度網(wǎng)絡(luò),通過(guò)條件隨機(jī)場(chǎng)融合了從卷積神經(jīng)網(wǎng)絡(luò)的多個(gè)側(cè)輸出獲得的互補(bǔ)信息。文獻(xiàn)[13-14]雖然精度有所提升,但是條件隨機(jī)場(chǎng)的引入使得模型更加復(fù)雜化,計(jì)算效率降低,并且隨著網(wǎng)絡(luò)的加深,梯度消失和網(wǎng)絡(luò)退化現(xiàn)象越發(fā)明顯。文獻(xiàn)[15]利用深度殘差網(wǎng)絡(luò)[16(]Deep Residual Network,Resnet)的殘差學(xué)習(xí)方法,提出了一種完全卷積的架構(gòu),并采用了一種新穎的上采樣方法,稱(chēng)為上投影。該方法采用Resnet進(jìn)行特征提取,其中殘差結(jié)構(gòu)中的跳躍連接的運(yùn)用有效解決了梯度消失和網(wǎng)絡(luò)退化現(xiàn)象,但是上采樣單純使用上投影或者上卷積方法,特征圖中包含了大量0 值的情況,造成了冗余,導(dǎo)致最終的輸出結(jié)果分辨率不高。所以,盡管經(jīng)過(guò)十多年的基于RGB 的深度預(yù)測(cè)的研究,其準(zhǔn)確性和可靠性仍遠(yuǎn)遠(yuǎn)不夠。而一直以來(lái),通過(guò)融合來(lái)自不同傳感器信息的深度預(yù)測(cè)方法也層出不窮。例如,文獻(xiàn)[17]提出了一個(gè)CNN,它同時(shí)接收RGB 圖像和光流圖像作為預(yù)測(cè)的輸入。文獻(xiàn)[18]研究了安裝在移動(dòng)地面機(jī)器人上的2D 激光掃描儀的使用,以提供額外的參考深度信號(hào)作為輸入,并且比單獨(dú)使用RGB 圖像獲得更高的精度。但是他們的傳感器需要嚴(yán)格的規(guī)定方向和位置,對(duì)研究工作造成了限制。
本文針對(duì)上述方法的不足,提出了一種全卷積編碼-解碼網(wǎng)絡(luò)模型。該模型將稀疏的深度樣本和RGB圖像作為輸入,通過(guò)融合來(lái)自不同傳感器的信息來(lái)改善深度預(yù)測(cè),本文方法不限定傳感器的方向或位置,也不限定深度樣本在像素空間中的空間分布,大大降低了繁雜程度。并將Resnet用于編碼層,進(jìn)一步增強(qiáng)了網(wǎng)絡(luò)的特征提取能力,解決了梯度消失和網(wǎng)絡(luò)退化現(xiàn)象。解碼層由兩個(gè)上采樣層和一個(gè)雙線性上采樣層組成,上采樣層采用上卷積模塊和上投影模塊交叉使用,使信息能夠更高效地在網(wǎng)絡(luò)中傳遞,提升最終的輸出結(jié)果分辨率。模型中使用了全卷積,有效降低了棋盤(pán)效應(yīng)并保留了預(yù)測(cè)深度圖像的邊緣信息,并且使得參數(shù)減少,提升了預(yù)測(cè)速度。
本章描述了網(wǎng)絡(luò)模型以及深度采樣策略,并介紹了本文中用于訓(xùn)練的損失函數(shù)。
整體網(wǎng)絡(luò)采用了全卷積編碼-解碼網(wǎng)絡(luò)結(jié)構(gòu),其輸入為稀疏深度樣本和RGB 圖像,網(wǎng)絡(luò)直接輸出估計(jì)的深度圖,不需要后處理操作。該結(jié)構(gòu)由兩部分組成,即編碼層和解碼層,編碼層基于深度殘差網(wǎng)絡(luò)進(jìn)行特征提取,解碼層基于上卷積模塊和文獻(xiàn)[15]中提出的上投影模塊作為上采樣層。整體結(jié)構(gòu)如圖1所示。
1.1.1 編碼層
網(wǎng)絡(luò)的編碼層由Resnet-50 和一個(gè)卷積層組成,其中原始的Resnet-50最后一個(gè)平均池化層和全連接層已被刪除,即圖1 中藍(lán)色所示。經(jīng)過(guò)前期處理后得到4×228×304的圖像,將其輸入到網(wǎng)絡(luò)模型中,經(jīng)過(guò)Resnet-50的最后一個(gè)卷積層產(chǎn)生2 048 個(gè)空間分辨率為10×8 像素的特征圖。編碼層的第二個(gè)部分為一個(gè)卷積核1×1的卷積層,通道數(shù)減半,之后進(jìn)行歸一化操作。
圖1 全卷積編碼-解碼網(wǎng)絡(luò)模型
本文模型運(yùn)用Resnet-50[16]進(jìn)行特征提取,能更好地解決模型層數(shù)加深后帶來(lái)的精度下降的問(wèn)題。Resnet中提出了跳躍連接,這種方式可以創(chuàng)建更深的網(wǎng)絡(luò),而不會(huì)導(dǎo)致梯度消失或退化。由于接收范圍更廣,Resnet-50可以捕獲更高分辨率的輸入圖像。
1.1.2 解碼層
解碼層由兩個(gè)上采樣層和一個(gè)雙線性上采樣層組成,以此獲得分辨率更高的輸出結(jié)果。上采樣層采用上卷積模塊和上投影模塊交叉使用,較僅使用上卷積模塊進(jìn)行上采樣相比,增加了特征信息的利用率,有效提高了預(yù)測(cè)精度,并在內(nèi)存消耗上更加平衡。
上卷積模塊首先進(jìn)行一個(gè)內(nèi)核為2×2的上池化,缺少值的地方填補(bǔ)0,之后采用5×5 大小的卷積核進(jìn)行卷積操作,并依次通過(guò)Relu激活函數(shù),具體結(jié)構(gòu)如圖2所示。
圖2 上卷積模塊
上投影模塊[15]是對(duì)上卷積模塊進(jìn)行了擴(kuò)展,在上卷積模塊后加一個(gè)3×3卷積,并從較低分辨率的特征圖到結(jié)果添加投影連接。由于尺寸的不同,需要在投影分支中使用另一個(gè)上卷積對(duì)小尺寸圖進(jìn)行上采樣,但由于兩個(gè)分支只需使用一次上池化,所以在兩個(gè)分支上分別應(yīng)用5×5 卷積,之后通過(guò)Relu 激活函數(shù),具體結(jié)構(gòu)如圖3所示。上投影模塊可以使特征信息在網(wǎng)絡(luò)中更有效地向前傳遞,同時(shí)逐步增加特征圖的分辨率。
圖3 上投影模塊圖
通過(guò)四個(gè)上采樣層之后產(chǎn)生分辨率為128×160 的圖像,之后采用雙線性插值進(jìn)行上采樣,產(chǎn)生跟輸入圖像分辨率一樣的輸出預(yù)測(cè)圖,大小為228×304。雙線性插值是圖像縮放的一種方式,其主要分為兩步線性插值,而雙線性上采樣的使用,使得產(chǎn)生的新圖像效果更好,過(guò)渡更自然,邊緣也更為光滑。具體表達(dá)式如下:
其中,(x,y)為插值點(diǎn)P在原圖像的坐標(biāo),f(p)為待計(jì)算插值;(x,y1)為下方插值點(diǎn)R1的坐標(biāo),f(R1)為下方插值;(x,y2)為上方插值點(diǎn)R2的坐標(biāo),f(R2)為上方插值;(x1,y1)和(x2,y1)分別為下方插值點(diǎn)R1相鄰兩點(diǎn)Q11、Q21的坐標(biāo),f(Q11)為點(diǎn)Q11的像素值,f(Q21)為點(diǎn)Q21的像素值;(x1,y2)和(x2,y2)分別為上方插值點(diǎn)R2相鄰兩點(diǎn)Q12、Q22的坐標(biāo),f(Q12)為點(diǎn)Q12的像素值,f(Q22)為點(diǎn)Q22的像素值。
本節(jié)介紹根據(jù)真實(shí)深度圖像創(chuàng)建輸入稀疏深度圖像的采樣策略。在訓(xùn)練期間,輸入的稀疏深度D從真實(shí)深度圖像D*中隨機(jī)抽取。對(duì)于任何像素(i,j)
其中,D為稀疏深度,D*為真實(shí)深度,伯努利概率p=m/n,n為D*中有效深度像素的總數(shù),m為目標(biāo)深度樣本數(shù),其在訓(xùn)練過(guò)程中固定。使用此采樣策略,每個(gè)訓(xùn)練樣本的實(shí)際非零深度像素?cái)?shù)在期望值m左右變化。
損失函數(shù)是最基礎(chǔ)也是最為關(guān)鍵的一個(gè)要素,它可以很好地反映模型與實(shí)際數(shù)據(jù)之間的差距。本文選用平均絕對(duì)誤差(Mean Absolute Error,MAE)L1范數(shù)作為網(wǎng)絡(luò)結(jié)構(gòu)的損失函數(shù),用以度量目標(biāo)值和預(yù)測(cè)值之間絕對(duì)差之和的平均值。L1范數(shù)定義如下:
其中,y表示目標(biāo)值,y表示預(yù)測(cè)值。
使用NYU-Depth-v2[19]數(shù)據(jù)集對(duì)本文模型進(jìn)行訓(xùn)練以及測(cè)試。該數(shù)據(jù)集是使用微軟Kinect 相機(jī)從464 種不同室內(nèi)場(chǎng)景中采集的,由RGB和深度圖像組成,并且廣泛應(yīng)用于單目圖像深度估計(jì)任務(wù)中。本文實(shí)驗(yàn)使用官方的數(shù)據(jù)劃分,其中249個(gè)場(chǎng)景用于訓(xùn)練,其余215個(gè)場(chǎng)景用于測(cè)試。本文從訓(xùn)練數(shù)據(jù)集中的每個(gè)原始視頻序列在空間上進(jìn)行均勻采樣,生成大約48 000張圖像用于訓(xùn)練,為了進(jìn)行基準(zhǔn)測(cè)試,使用帶有654 張圖像的小標(biāo)簽測(cè)試數(shù)據(jù)集來(lái)評(píng)估最終性能。訓(xùn)練過(guò)程中參照先前的經(jīng)驗(yàn)[15,20]對(duì)訓(xùn)練圖像進(jìn)行隨機(jī)縮放、RGB和深度圖像均以0.5的概率水平翻轉(zhuǎn)以及改變顏色和對(duì)比度等處理進(jìn)行數(shù)據(jù)擴(kuò)充,并將原始640×480的RGB圖降采樣為一半,然后進(jìn)行中心裁剪,最終尺寸為304×228 作為模型輸入。
實(shí)驗(yàn)硬件配置為Intel?CoreTMi7-7700 CPU@3.60 GHz處理器,模型在具有16 GB內(nèi)存的NVIDIA Tesla K20M GPU上進(jìn)行訓(xùn)練。編碼層中Resnet的權(quán)重使用在ImageNet數(shù)據(jù)集[21]上預(yù)先訓(xùn)練的模型進(jìn)行初始化。實(shí)驗(yàn)設(shè)置批處理大小為8,迭代次數(shù)設(shè)置為20,初始學(xué)習(xí)率設(shè)置為0.01,每5次迭代降低到20%,并且以10-4的小權(quán)重衰減以進(jìn)行正則化。
本文通過(guò)4個(gè)實(shí)驗(yàn)分別對(duì)損失函數(shù)、網(wǎng)絡(luò)成分以及稀疏深度樣本數(shù)量的影響作了對(duì)比,并與Eigen 等人[8]的多尺度卷積神經(jīng)網(wǎng)絡(luò)和Laina等人[15]基于殘差學(xué)習(xí)的全卷積網(wǎng)絡(luò)以及最新方法進(jìn)行了比較。本文使用如下評(píng)價(jià)指標(biāo)對(duì)實(shí)驗(yàn)結(jié)果進(jìn)行評(píng)估:
均方根誤差(Root Mean Squared Error,RMSE):
平均絕對(duì)相對(duì)誤差(average Relative Error,REL):
3種閾值下的準(zhǔn)確率δ,公式為:
其中,N為像素總數(shù),Di為第i個(gè)像素的估計(jì)深度值,為第i個(gè)像素對(duì)應(yīng)的真實(shí)深度值。
本文上采樣層使用2×2卷積核的簡(jiǎn)單反卷積網(wǎng)絡(luò),在相同網(wǎng)絡(luò)體系結(jié)構(gòu)下對(duì)L1范數(shù)、平方損失函數(shù)(Mean-Square Error,MSE)L2范數(shù)和Berhu[15]損失函數(shù)進(jìn)行了測(cè)試,結(jié)果如圖4所示。Berhu和L1各項(xiàng)指標(biāo)均明顯優(yōu)于L2,而對(duì)比Berhu 和L1,L1產(chǎn)生了更好的結(jié)果。其中,使用L1在精度δ<1.25 上比L2提高3%,RMSE 降低約3%,而跟Berhu 損失函數(shù)相比準(zhǔn)確率雖然相差不大,但是RMSE降低約1%。這是因?yàn)長(zhǎng)2范數(shù)雖然是目前最常用的回歸問(wèn)題的損失函數(shù),是目標(biāo)變量和預(yù)測(cè)值的差值平方和,但是在實(shí)驗(yàn)中,L2損失放大了較大誤差和較小誤差之間的差距,即其對(duì)較大誤差的懲罰力度更大,而對(duì)較小誤差更為容忍,因此造成了訓(xùn)練的不穩(wěn)定和發(fā)散,而L1對(duì)于輸入值有著穩(wěn)定的梯度,不會(huì)導(dǎo)致梯度爆炸問(wèn)題,具有較為穩(wěn)健性的解。
圖4 損失函數(shù)對(duì)比圖
本文對(duì)不同上采樣層產(chǎn)生的影響進(jìn)行了對(duì)比,包括對(duì)具有不同大小的卷積核進(jìn)行反卷積和上卷積模塊進(jìn)行反卷積,以及本文提出的方法,結(jié)果如表1 所示。在100 稀疏深度樣本數(shù)量下進(jìn)行比較,使用3×3 卷積核進(jìn)行反卷積要優(yōu)于僅使用2×2 卷積核進(jìn)行反卷積。而本文模型與上卷積模塊進(jìn)行比較,效果有所提升。這是因?yàn)楸疚膶⑸暇矸e模塊與上投影模塊交叉使用,增加了特征信息的利用率,較好地保留了預(yù)測(cè)深度圖像的邊緣信息,有效提升了預(yù)測(cè)精度,得到了較好的結(jié)果。
表1 上采樣層評(píng)估
為了驗(yàn)證稀疏深度樣本數(shù)量對(duì)深度估計(jì)的影響,本文隨機(jī)采樣了不同數(shù)量的稀疏深度樣本作為網(wǎng)絡(luò)模型的輸入,實(shí)驗(yàn)結(jié)果如表2 所示。可以看出,與不添加稀疏深度樣本相比,僅添加100 稀疏深度樣本在精度δ<1.25 上提高16%,誤差RMSE 降低26%。隨著稀疏深度樣本數(shù)量的進(jìn)一步增加,深度值的誤差呈下降趨勢(shì),精度不斷提高。與Liao 等人[18]的方法進(jìn)行對(duì)比,本文方法僅輸入100 個(gè)樣本,預(yù)測(cè)精度提高約10%,誤差降低17%,這是由于本文中樣本在空間上是均勻的,因此能夠提供更多的信息進(jìn)行深度估計(jì)。
表2 稀疏深度樣本數(shù)量結(jié)果對(duì)比
本文方法所得深度圖也有更清晰的場(chǎng)景結(jié)構(gòu)和更豐富的場(chǎng)景細(xì)節(jié),圖5顯示了使用不同輸入進(jìn)行預(yù)測(cè)的示例。其中從上到下依次為原圖、基于RGB 圖像的預(yù)測(cè)圖、100 稀疏深度樣本和RGB、500 稀疏深度樣本和RGB,最后一行是真實(shí)值。由圖5 可以看出,添加了稀疏深度樣本的深度圖比僅使用RGB預(yù)測(cè)的深度圖更加清晰,而添加了500稀疏深度樣本所預(yù)測(cè)的深度圖比添加了100 稀疏深度樣本所預(yù)測(cè)的深度圖邊緣細(xì)節(jié)處理得更好,可視化效果更理想。
圖5 NYU-Depth-v2數(shù)據(jù)集結(jié)果對(duì)比圖
本節(jié)將本文方法與現(xiàn)有方法進(jìn)行了比較,在大部分指標(biāo)上均優(yōu)于現(xiàn)有方法,對(duì)比結(jié)果如表3所示。在僅使用RGB 圖像的預(yù)測(cè)結(jié)果下,本文方法預(yù)測(cè)結(jié)果的均方根誤差達(dá)到了0.534,比Laina等人[15]的基于殘差學(xué)習(xí)的全卷積方法降低了4%,比Eigen 等人[8]的多尺度卷積網(wǎng)絡(luò)降低了11%。從指標(biāo)上來(lái)看,本文提出的方法能夠得到更精確的預(yù)測(cè)深度圖。
表3 NYU Depth-v2數(shù)據(jù)集上實(shí)驗(yàn)結(jié)果對(duì)比
本文提出了一種全卷積編碼-解碼網(wǎng)絡(luò)模型,編碼層由Resnet 組成,緩解了梯度消失和網(wǎng)絡(luò)退化問(wèn)題,解碼層中的上采樣層采用上卷積模塊和上投影模塊交叉使用,使高層的信息更為高效地在網(wǎng)絡(luò)中傳遞,提升最終的輸出結(jié)果分辨率。全卷積的使用有效降低了棋盤(pán)效應(yīng)并保留了預(yù)測(cè)深度圖像的邊緣信息。本文還引入了一種根據(jù)RGB圖像和稀疏深度圖像進(jìn)行深度預(yù)測(cè)的方法,實(shí)驗(yàn)結(jié)果證明了這種方法與僅使用RGB 圖像和其他現(xiàn)有的RGB-D融合技術(shù)相比有明顯的優(yōu)勢(shì)。后續(xù)工作中,將嘗試保證精度可接受的前提下提高運(yùn)算效率,將相關(guān)成果運(yùn)用在嵌入式設(shè)備中。