周偉強(qiáng), 韓 軍
(1.上海大學(xué)通信與信息工程學(xué)院,上海 200000; 2.上海先進(jìn)通信與數(shù)據(jù)科學(xué)研究院,上海 200000)
深度圖像可以反映出場(chǎng)景的三維結(jié)構(gòu)信息,廣泛應(yīng)用于三維重建、語義分割、機(jī)器人視覺、智能駕駛等領(lǐng)域。在計(jì)算機(jī)視覺領(lǐng)域,一幅二維圖像可能對(duì)應(yīng)無限個(gè)三維場(chǎng)景,這就使得單目深度估計(jì)任務(wù)比雙目深度估計(jì)和多目深度估計(jì)更困難。
單目深度估計(jì)的研究由來已久,國內(nèi)外已進(jìn)行大量研究,并取得可觀的效果。最早的單目深度估計(jì)比較經(jīng)典的算法有SFM[1],SFS[2]和DFF/DFD[3-4]等,它們的思路分別是從運(yùn)動(dòng)中恢復(fù)形狀、從陰影中恢復(fù)形狀和從對(duì)焦/離焦中獲取深度等方法。這些方法所需的設(shè)備都比較昂貴,并且對(duì)拍攝要求較高,所以均未被大量使用。
近年來,深度學(xué)習(xí)技術(shù)憑借高效的圖像特征提取和表達(dá)能力得到迅猛發(fā)展。EIGEN等[5]最早在2014年將CNN網(wǎng)絡(luò)應(yīng)用于單目圖像深度估計(jì)任務(wù),所提出的模型分兩步進(jìn)行,先利用卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行粗尺度全局預(yù)測(cè),然后再局部細(xì)化,得到效果較好的深度圖,但這種方法需要兩個(gè)網(wǎng)絡(luò)的疊加處理,沒有實(shí)現(xiàn)端對(duì)端訓(xùn)練。接著,LIU等[6]把條件隨機(jī)場(chǎng)和卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行結(jié)合來完成深度估計(jì)任務(wù),該方案也沒有實(shí)現(xiàn)端對(duì)端任務(wù),需要分步進(jìn)行訓(xùn)練和測(cè)試。隨后,KUZNIETSOV等[7]提出半監(jiān)督的方法,即在有標(biāo)注的數(shù)據(jù)上進(jìn)行正常的監(jiān)督訓(xùn)練,而在無標(biāo)注的數(shù)據(jù)上采用左右圖像對(duì)比生成連續(xù)密集深度圖的方法,這種弱監(jiān)督的方法還是需要圖像的真實(shí)景深數(shù)據(jù)作為訓(xùn)練標(biāo)簽,而場(chǎng)景的真實(shí)景深數(shù)據(jù)難以獲取,且真實(shí)深度圖是稀疏的,經(jīng)常出現(xiàn)無法與輸入圖像完全擬合的問題。
鑒于監(jiān)督和半監(jiān)督學(xué)習(xí)形式的弊端,無監(jiān)督學(xué)習(xí)由于不需要大量標(biāo)注好的樣本參與而得到重點(diǎn)研究。而無監(jiān)督學(xué)習(xí)又分為兩種方式:一種是使用單目視頻作為監(jiān)督信息的自監(jiān)督方法,如ZHOU等[8]利用單目視頻前后幀的時(shí)空線索代替監(jiān)督來約束訓(xùn)練進(jìn)而完成無監(jiān)督的深度估計(jì),該方法獲取到的深度信息為相對(duì)深度信息,不能反映真實(shí)的距離;另一種無監(jiān)督的思路是將雙目圖像的空間約束關(guān)系進(jìn)行訓(xùn)練和測(cè)試,最早由MAYER等[9]提出了DispNet全卷積神經(jīng)網(wǎng)絡(luò),其原理是把雙目圖像對(duì)作為約束,利用自編碼神經(jīng)網(wǎng)絡(luò)來重構(gòu)圖像,并不斷優(yōu)化視差圖和深度圖,因?yàn)镈ispNet網(wǎng)絡(luò)沒有考慮多尺度特征的因素,得到的深度圖層次效果欠佳。而后,GARG等[10]提出了自己的單目無監(jiān)督深度估計(jì)方法,即在編碼階段輸入左視圖,通過CNN生成深度圖,根據(jù)雙目圖像中視差與深度的關(guān)系得到對(duì)應(yīng)的視差圖,在解碼過程中利用視差圖與原輸入的右視圖重建左視圖,該方法使用泰勒級(jí)數(shù)展開計(jì)算梯度來使得損失函數(shù)可以反向傳播,這就大大增加了網(wǎng)絡(luò)的復(fù)雜度。GODARD等[11]則提出將左右視圖的一致性約束一并加入到訓(xùn)練過程中,為保證整個(gè)過程的連續(xù)性,采用雙線性采樣,降低了網(wǎng)絡(luò)的復(fù)雜度。但在該方法經(jīng)過編碼器產(chǎn)生的特征圖中,尺度較小的低紋理區(qū)域比較模糊,導(dǎo)致后續(xù)深度圖中出現(xiàn)了虛假紋理、邊緣模糊和空洞等現(xiàn)象。
鑒于監(jiān)督學(xué)習(xí)的單目深度估計(jì)需要大量深度數(shù)據(jù)及無監(jiān)督學(xué)習(xí)深度估計(jì)準(zhǔn)確度低、邊緣模糊、層次不明顯及網(wǎng)絡(luò)復(fù)雜度較高的問題,以目前無監(jiān)督學(xué)習(xí)的方法為基礎(chǔ),本文提出一種融合多尺度特征信息和語義信息的無監(jiān)督單目深度估計(jì)模型。首先,在GODARD等[11]的編解碼網(wǎng)絡(luò)結(jié)構(gòu)上進(jìn)行改進(jìn),在編解碼結(jié)構(gòu)之間加入多個(gè)空洞卷積并行的語義分割層來解決深度估計(jì)中的邊緣模糊、細(xì)節(jié)缺失問題;其次,對(duì)比GARG等[10]采用的DeepCNN和GODARD等[11]采用的ResNet50深層特征提取網(wǎng)絡(luò),模型采用輕量級(jí)ResNet18網(wǎng)絡(luò)來降低網(wǎng)絡(luò)的復(fù)雜度;最后,在編碼器的每一層都通過跳層連接與對(duì)應(yīng)尺度的解碼端相連來融合底層多尺度特征進(jìn)行反卷積,并結(jié)合各個(gè)尺度的損失函數(shù)來提升卷積神經(jīng)網(wǎng)絡(luò)的訓(xùn)練效果,從而提高模型預(yù)測(cè)的準(zhǔn)確性。
本文提出的無監(jiān)督單目圖像深度估計(jì)的方法利用雙目圖像對(duì)的約束作為監(jiān)督信息,即在訓(xùn)練過程中利用同步的左右兩幅圖像,逐像素地預(yù)測(cè)圖像對(duì)之間的視差,并在測(cè)試階段對(duì)單幅圖像進(jìn)行深度估計(jì),如圖1所示。
圖1 無監(jiān)督單目圖像深度估計(jì)原理圖Fig.1 Schematic diagram of unsupervised monocular image depth estimation
在訓(xùn)練階段,步驟如下:
1) 輸入同步拍攝到的雙目圖像Il和Ir,左圖Il輸入到圖1所示的網(wǎng)絡(luò)中預(yù)測(cè)出兩個(gè)視差圖{dl,dr};
3) 在訓(xùn)練階段采用的損失函數(shù)是外觀匹配損失、左右一致性損失和視差平滑損失以一定的權(quán)重比得到的聯(lián)合損失[11]來進(jìn)行訓(xùn)練,這些損失度量代替了監(jiān)督學(xué)習(xí)中Groundtruth的作用;
4) 將損失反向傳播,調(diào)整網(wǎng)絡(luò)參數(shù)來優(yōu)化生成的視差圖,最后通過不斷往復(fù)直至重構(gòu)誤差降到最小即停止訓(xùn)練。
在訓(xùn)練階段,只需要輸入左目圖像,利用在訓(xùn)練階段獲得的網(wǎng)絡(luò)參數(shù)重建出誤差最小的右圖,接著利用雙目測(cè)距原理就可以快速計(jì)算得到深度。
目前一些主要的無監(jiān)督方法與上述原理大體相似,差異主要體現(xiàn)在損失函數(shù)和網(wǎng)絡(luò)結(jié)構(gòu)上。原理圖中的單目深度估計(jì)網(wǎng)絡(luò)一般在編碼端采用CNN網(wǎng)絡(luò)進(jìn)行特征提取,如GODARD等[11]采用的ResNet50和GARG等[10]采用的DeepCNN,而在解碼端主要通過反卷積網(wǎng)絡(luò)進(jìn)行圖像重構(gòu),這樣不可避免地會(huì)出現(xiàn)編解碼結(jié)構(gòu)中編碼器在不斷下采樣,導(dǎo)致尺度較小的低紋理區(qū)域比較模糊,最終導(dǎo)致后續(xù)深度圖中出現(xiàn)了虛假紋理、邊緣模糊和空洞現(xiàn)象的問題,并且如果編碼器采用的網(wǎng)絡(luò)越深,這個(gè)問題將愈發(fā)明顯,同時(shí)耗時(shí)的問題也更加凸顯。
針對(duì)無監(jiān)督單目深度估計(jì)網(wǎng)絡(luò)存在的問題,以現(xiàn)有網(wǎng)絡(luò)為基礎(chǔ),提出了一種融合多尺度特征和語義信息的單目深度估計(jì)網(wǎng)絡(luò)模型。該網(wǎng)絡(luò)模型在編碼端進(jìn)行特征提取任務(wù),解碼端使用反向卷積神經(jīng)網(wǎng)絡(luò)完成圖像重構(gòu)任務(wù),并且打破了傳統(tǒng)的編解碼結(jié)構(gòu),在編解碼器之間利用空洞空間金字塔池化(Atrous Spatial Pyramid Pooling,ASPP)層進(jìn)行語義場(chǎng)景層次細(xì)化工作。編碼器采用輕量級(jí)的ResNet18進(jìn)行特征提取,解決了特征退化和實(shí)效性低的問題,也避免了采用過多下采樣導(dǎo)致細(xì)節(jié)信息丟失的情況發(fā)生。改進(jìn)后的模型除了在編解碼結(jié)構(gòu)中加入了從編碼器到解碼器的跳層連接[12]來融合低層多尺度特征進(jìn)行反卷積操作以提升深度圖效果外,還在編解碼器中間引入ASPP模塊來解決場(chǎng)景中虛假紋理和邊緣模糊的問題。改進(jìn)后的網(wǎng)絡(luò)模型如圖2所示。
圖2 改進(jìn)的無監(jiān)督單目深度估計(jì)網(wǎng)絡(luò)模型Fig.2 Improved unsupervised monocular depth estimation network model
一般的無監(jiān)督深度估計(jì)網(wǎng)絡(luò)在經(jīng)過編碼器特征提取后直接輸入解碼器進(jìn)行反向卷積來進(jìn)行圖像重構(gòu)任務(wù),本文提出的網(wǎng)絡(luò)模型在進(jìn)入解碼器之前先經(jīng)過ASPP層,其是由1個(gè)1×1的卷積層、3個(gè)3×3采樣率不同的空洞卷積、1個(gè)池化層和最后的1×1卷積層組成,具體如圖2所示。
ASPP結(jié)構(gòu)中最主要的是空洞卷積,所謂空洞卷積,就是通過在一般卷積核中插入0值,這樣就大大增大了卷積核的感受野,并且不會(huì)增加額外的計(jì)算量。
當(dāng)空洞卷積擴(kuò)張率為1時(shí)就退化為一般卷積,如圖3所示,圖3(a)是擴(kuò)張率為1的空洞卷積,即一般卷積,感受野大小為3×3,而圖3(b)和圖3(c)則分別是擴(kuò)張率d=2和d=4的空洞卷積,其感受野大小分別為7×7和 15×15。
圖3 不同擴(kuò)張率的空洞卷積Fig.3 Dilated convolution with different expansion rates
空洞卷積的實(shí)際卷積核和感受野可以通過卷積核大小與擴(kuò)張率計(jì)算得到,對(duì)于大小為k×k,擴(kuò)張率為d的空洞卷積,其實(shí)際卷積核大小和感受野大小算式分別為
Kk,d=(d-1)×(k-1)+k
(1)
Rk,d=(d-1)×(k+1)+k
(2)
所以,ASPP中3個(gè)卷積核所對(duì)應(yīng)的實(shí)際空洞卷積核大小分別為13,25和37,感受野分別為23,47和71。
ASPP通過把3個(gè)空洞卷積層提取的特征匯集到最后的特征圖上來提高網(wǎng)絡(luò)對(duì)多尺度目標(biāo)的感知能力,也改善了對(duì)場(chǎng)景中各目標(biāo)邊界的語義分割效果。接著,在最后的特征映射上進(jìn)行池化操作來全局平均,再經(jīng)過1×1的卷積和雙線性上采樣得到解碼器的輸入端所需的空間維度。
受自編碼神經(jīng)網(wǎng)絡(luò)可以實(shí)現(xiàn)圖像重構(gòu)任務(wù)的啟發(fā),改進(jìn)后的網(wǎng)絡(luò)在解碼端采用反卷積神經(jīng)網(wǎng)絡(luò)來完成圖像重構(gòu)任務(wù)。如圖2所示,解碼器端的網(wǎng)絡(luò)重構(gòu)步驟主要是通過5個(gè)iconv+upconv(反卷積+“上卷積”)的操作來不斷進(jìn)行上采樣和concat操作。“上卷積”包括上采樣和卷積兩個(gè)步驟,上采樣層使用的是最近鄰插值法,使得特征圖的分辨率加倍[13],而concat操作則會(huì)對(duì)來自編碼器的跳層連接或者視差圖的上采樣udisp進(jìn)行張量拼接來融合多尺度特征和語義信息,從而實(shí)現(xiàn)對(duì)更高分辨率視差圖的準(zhǔn)確預(yù)測(cè)。需要注意的是,在訓(xùn)練階段每個(gè)視差圖的輸出都是左右目的視差對(duì),用來計(jì)算后續(xù)的損失函數(shù),而測(cè)試時(shí)則只輸出預(yù)測(cè)的右視差,然后根據(jù)視差直接計(jì)算距離。
基于之前的工作[5,11],本文改進(jìn)后的網(wǎng)絡(luò)模型也主要在KITTI[14]數(shù)據(jù)集上進(jìn)行驗(yàn)證,并與先前的網(wǎng)絡(luò)模型進(jìn)行對(duì)比。
實(shí)驗(yàn)使用的硬件設(shè)備為Intel Xeon E5-2620服務(wù)器,顯卡是NVIDIA GTX1080Ti。數(shù)據(jù)集采用KITTI數(shù)據(jù)集,其原始數(shù)據(jù)共有42 382對(duì)雙目圖像,涵蓋了61個(gè)場(chǎng)景信息,每幅圖像的分辨率為1242×375。
本文提出的網(wǎng)絡(luò)模型是基于Pytorch框架的,并使用Adam優(yōu)化器進(jìn)行優(yōu)化,Adam優(yōu)化器的參數(shù)設(shè)置為β1=0.9,β2=0.999。它的初始學(xué)習(xí)率為0.000 1,訓(xùn)練時(shí)batchsize設(shè)置為8,并訓(xùn)練50個(gè)epoch。
基于先前的工作[11],本文也使用如下官方指標(biāo)對(duì)本文改進(jìn)后的模型進(jìn)行量化度量:
為了對(duì)改進(jìn)后的網(wǎng)絡(luò)模型進(jìn)行量化度量,在官方提供的K I T T I 2015數(shù)據(jù)集上進(jìn)行測(cè)試,該數(shù)據(jù)集包含200組圖像,涵蓋了28個(gè)不同場(chǎng)景下的圖像,能夠保證對(duì)模型量化評(píng)估結(jié)果的可信度。幾種基于有監(jiān)督學(xué)習(xí)、半監(jiān)督學(xué)習(xí)、無監(jiān)督學(xué)習(xí)的方法與本文方法的實(shí)驗(yàn)結(jié)果對(duì)比如表1所示。
表1 幾種先進(jìn)方法與本文方法在KITTI 2015數(shù)據(jù)集上測(cè)試的結(jié)果對(duì)比Table 1 Comparison of several advanced methods with our method on the KITTI 2015 data set
改進(jìn)后,模型在編碼端采用輕量級(jí)的網(wǎng)絡(luò),在解碼端引入多尺度圖像信息進(jìn)行圖像重構(gòu),大大減少了下采樣過程中的信息損失,降低了4個(gè)誤差指標(biāo),使其均低于目前主流的無監(jiān)督方法,其中的平均相對(duì)誤差和均方根對(duì)數(shù)誤差也都優(yōu)于有監(jiān)督的方案。而在編解碼結(jié)構(gòu)中間語義層的加入,解決了深度估計(jì)中目標(biāo)邊緣模糊、細(xì)節(jié)缺失的問題,加強(qiáng)了語義分割的能力,在1.25,1.252和1.253這3個(gè)公認(rèn)閾值內(nèi)的圖像預(yù)測(cè)準(zhǔn)確率(預(yù)測(cè)的深度值與真實(shí)深度值的比例)分別達(dá)到了91%,96.8%和98.7%,超過了所有監(jiān)督和無監(jiān)督的方法。
結(jié)果表明,本文提出的模型明顯優(yōu)于其他無監(jiān)督學(xué)習(xí)方法的效果,同時(shí)也達(dá)到甚至超過了有監(jiān)督學(xué)習(xí)方法的效果。從實(shí)驗(yàn)結(jié)果中抽取4組具有代表性的結(jié)果,并用文獻(xiàn)[11]模型測(cè)試相對(duì)應(yīng)的圖片,兩個(gè)模型得到的實(shí)驗(yàn)效果對(duì)比如圖4所示,重點(diǎn)關(guān)注圖4中框標(biāo)出的部分。A場(chǎng)景有多個(gè)目標(biāo)聚集,改進(jìn)后的網(wǎng)絡(luò)把各個(gè)目標(biāo)劃分得更加清晰,而且目標(biāo)的遠(yuǎn)近層次更加分明;B場(chǎng)景電線桿和指示牌的顏色融入到了背景陰影中,改進(jìn)后的網(wǎng)絡(luò)還是對(duì)它們進(jìn)行了清晰的分割和深度估計(jì);針對(duì)C場(chǎng)景中細(xì)長的電線桿,改進(jìn)后的網(wǎng)絡(luò)更加完美地把它們從背景中分割出來;D場(chǎng)景下,改進(jìn)后的網(wǎng)絡(luò)也很好地解決了邊緣模糊問題。
圖4 改進(jìn)后的網(wǎng)絡(luò)模型與文獻(xiàn)[11]模型效果對(duì)比圖Fig.4 Comparison diagram of the improved network model and Literature [11] model effect
針對(duì)目前無監(jiān)督單目深度估計(jì)網(wǎng)絡(luò)中存在的深度估計(jì)不精確、邊緣模糊和細(xì)節(jié)缺失等問題,本文提出了一種融合多尺度特征信息和語義信息的無監(jiān)督單目深度估計(jì)網(wǎng)絡(luò)模型。改進(jìn)的模型的跳層連接和損失函數(shù)通過多尺度增加了模型的準(zhǔn)確性,并在編解碼器之間引入ASPP語義層進(jìn)行語義場(chǎng)景層次細(xì)化工作來改善場(chǎng)景中目標(biāo)的邊緣模糊和細(xì)節(jié)缺失等問題。在KITTI數(shù)據(jù)集上進(jìn)行實(shí)驗(yàn),驗(yàn)證了模型的有效性,證實(shí)了改進(jìn)后的模型不僅可以更加精準(zhǔn)地估計(jì)出場(chǎng)景中各像素的深度信息,而且進(jìn)一步增強(qiáng)了場(chǎng)景的語義分割效果,使得場(chǎng)景中各目標(biāo)的邊緣細(xì)節(jié)更加清晰和精準(zhǔn),有效加強(qiáng)了單目相機(jī)對(duì)場(chǎng)景的三維理解能力,推動(dòng)單目相機(jī)在機(jī)器人視覺和智能駕駛方面的運(yùn)用。