凌 莉 胡佑璞 鄒承明,3,4*
1(武漢工程職業(yè)技術(shù)學(xué)院信息工程學(xué)院 湖北 武漢 431400)
2(武漢理工大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院 湖北 武漢 430000)
3(交通物聯(lián)網(wǎng)技術(shù)湖北省重點(diǎn)實(shí)驗(yàn)室 湖北 武漢 430000)
4(鵬城實(shí)驗(yàn)室 廣東 深圳 518055)
單目深度估計(jì)任務(wù)針對(duì)輸入的單幅彩色圖像,要求估計(jì)出圖像中每個(gè)像素對(duì)應(yīng)的深度信息,屬于計(jì)算機(jī)視覺(jué)領(lǐng)域研究的熱點(diǎn)問(wèn)題之一,在許多其他領(lǐng)域有著廣泛的運(yùn)用,例如:目標(biāo)檢測(cè)[1]、三維重建[2]、無(wú)人駕駛[3]、姿態(tài)估計(jì)[4]等。由于圖像的空間信息屬于三維信息,通過(guò)單幅二維RGB圖像獲取每個(gè)像素的深度信息是困難的。目前可以通過(guò)硬件設(shè)備直接獲取深度信息,如微軟的Kinect相機(jī)可以搜集室內(nèi)的近距離場(chǎng)景的深度信息,激光測(cè)距儀可以獲取室外場(chǎng)景的深度。然而,設(shè)備的價(jià)格十分昂貴,并且在復(fù)雜的場(chǎng)景中,深度估計(jì)仍然是不明確的病態(tài)問(wèn)題,面臨著許多挑戰(zhàn)。
對(duì)于深度估計(jì),許多研究采用卷積網(wǎng)絡(luò)進(jìn)行訓(xùn)練,但是深度圖像對(duì)于網(wǎng)絡(luò)的底層特征信息難以利用。通過(guò)高層次特征得到的深度圖雖然與輸入圖像具有相似的輪廓結(jié)構(gòu),但是最終估計(jì)結(jié)果精度仍然較低,因?yàn)閳D像缺乏大量的細(xì)節(jié)信息。
在單目場(chǎng)景深度估計(jì)中,一般利用物體的外觀、場(chǎng)景的幾何運(yùn)動(dòng)、物體語(yǔ)義等特征實(shí)現(xiàn)對(duì)深度的約束。單目深度估計(jì)的方法大致分為兩類(lèi):有監(jiān)督學(xué)習(xí)、無(wú)監(jiān)督學(xué)習(xí)。
有監(jiān)督學(xué)習(xí)方面,基于外觀特征差異與場(chǎng)景深度的不連續(xù)性具有對(duì)應(yīng)關(guān)系這一假設(shè),深度估計(jì)被視為連續(xù)的回歸問(wèn)題。Eigen等[5]首次提出使用卷積神經(jīng)網(wǎng)絡(luò)(CNN)解決單目深度估計(jì)問(wèn)題。整個(gè)網(wǎng)絡(luò)框架由一個(gè)全局的粗糙網(wǎng)絡(luò)與一個(gè)局部的精細(xì)網(wǎng)絡(luò)堆疊組成。全局網(wǎng)絡(luò)以AlexNet為基礎(chǔ),提取粗糙的全局深度信息。局部網(wǎng)絡(luò)結(jié)合原圖信息進(jìn)一步優(yōu)化全局網(wǎng)絡(luò)的深度圖,獲得了不錯(cuò)的效果。無(wú)監(jiān)督學(xué)習(xí)方面,Godard等[6]利用左右視圖的一致性進(jìn)行無(wú)監(jiān)督的深度估計(jì)預(yù)測(cè),通過(guò)對(duì)極幾何約束輸出視差圖,利用左右視差一致性優(yōu)化性能,提高了魯棒性。Kuznietsov等[7]提出稀疏深度圖像作為標(biāo)簽的半監(jiān)督學(xué)習(xí)方法,提高性能。
為了改善圖像的細(xì)節(jié)信息,本文提出基于CNN融合了多層次特征的深度估計(jì)算法。通過(guò)CNN模型同時(shí)提取圖像的底層特征與高層特征,不同層次的深度網(wǎng)絡(luò)特征代表了不同的語(yǔ)義信息。高層特征表示圖像的整體空間結(jié)構(gòu),而底層特征表示圖像的局部細(xì)節(jié)。為了在最終的深度估計(jì)結(jié)果中補(bǔ)充細(xì)節(jié)信息,則需要融合這些不同層級(jí)的特征,從而可以提高最終的深度估計(jì)效果。通過(guò)實(shí)驗(yàn)可以證明,本文方法可以較好地估計(jì)出圖像的深度信息。
全卷積神經(jīng)網(wǎng)絡(luò)中包含了大量的卷積結(jié)構(gòu),該模型可以在沒(méi)有全連接層的情況下對(duì)每個(gè)像素進(jìn)行分類(lèi)。全卷積神經(jīng)網(wǎng)絡(luò)用卷積層代替了卷積神經(jīng)網(wǎng)絡(luò)的全連接層,具有許多優(yōu)點(diǎn):1) 網(wǎng)絡(luò)的輸入尺寸不再限制,可以利用反卷積層和上采樣的方法,輸出與原圖像同樣大小的特征圖,從而可以預(yù)測(cè)每個(gè)像素的分類(lèi),并保留輸入圖像中的空間信息;2) 無(wú)須輸入像素點(diǎn)周?chē)恼麄€(gè)圖像塊,方便減少存儲(chǔ)空間和冗余計(jì)算;3) 利用卷積運(yùn)算提取圖像的整體特征,方便全局特征學(xué)習(xí)。與卷積神經(jīng)網(wǎng)絡(luò)相比,全卷積神經(jīng)網(wǎng)絡(luò)有了較大的突破,但仍有一些問(wèn)題。網(wǎng)絡(luò)只對(duì)最后的特征進(jìn)行處理,對(duì)于層數(shù)較深的網(wǎng)絡(luò),底層特征則沒(méi)有利用到。
(1)
反卷積操作如式(2)所示,其中輸入特征圖大小、邊緣填充、步長(zhǎng)、卷積核大小分別記為x2、p2、s2、k2,輸出特征圖記為y2,則:
y2=x2-k2+2p2+1
(2)
CNN中使用的多維的卷積核,每層通過(guò)多個(gè)特征圖像組成。不同于傳統(tǒng)的方法,深度學(xué)習(xí)目的是利用反向傳播來(lái)自動(dòng)學(xué)習(xí)圖像的表示,并非是人工特征一樣去人為地設(shè)計(jì)特征。每個(gè)卷積層通過(guò)輸入信息學(xué)習(xí)一種映射關(guān)系來(lái)表示局部空間的特征,即卷積層融合了局部空間信息和輸入圖像,并且限制于局部感受野范圍。卷積神經(jīng)網(wǎng)絡(luò)通過(guò)疊加許多的非線性層和下采樣層,便可以學(xué)習(xí)到具有全局范圍的圖像描述信息,是一種強(qiáng)力的特征提取手段。通過(guò)顯示的控制信息的流向,可以建立不同層之間的依賴(lài)關(guān)系,每一層的信息可以不僅來(lái)自它的上一層,還可以接收到其他層的信息,即跳躍連接。它可以容易地使用在網(wǎng)絡(luò)中。
在圖像深度估計(jì)任務(wù)中,需要通過(guò)圖像的空間信息來(lái)推測(cè)物體的深度信息,需要通過(guò)全局特征與局部特征共同判斷物體的深度信息。VGG、ResNet[8]屬于利用圖像的高層語(yǔ)義信息的深度模型。已有的方法大部分是利用深層的CNN網(wǎng)絡(luò)做特征的提取。包括AlexNet[9]同樣會(huì)利用深層卷積作為網(wǎng)絡(luò)的特征提取手段,來(lái)對(duì)圖像做一個(gè)整體的空間特征提取。然而,這類(lèi)方法利用CNN網(wǎng)絡(luò)的高層特征圖來(lái)表示圖像,然后估計(jì)其深度。由于高層特征往往代表全局的空間結(jié)構(gòu),其中缺少大量的細(xì)節(jié)信息,影響了深度圖估計(jì)算法的最終質(zhì)量。如圖1的特征融合示意圖所示,通過(guò)將各種層次的特征連接起來(lái),從而在最終的輸出特征中融合了代表局部細(xì)節(jié)的底層特征,進(jìn)而提高了圖像的整體與細(xì)節(jié)信息,最終提高深度圖像的質(zhì)量。
圖1 多層次CNN特征融合
如圖1所示,利用反卷積融合從網(wǎng)絡(luò)中提取低層和高層特征。輸入一幅圖像,在網(wǎng)絡(luò)的前向傳播里,經(jīng)過(guò)多層卷積和池化后,輸出特征圖像的大小將持續(xù)減小。對(duì)這些不同尺度、不同層次的特征圖像進(jìn)行反卷積后,疊加在相應(yīng)的位置進(jìn)行連接操作。
特征融合的CNN模型架構(gòu)如圖2所示,其中:conv-3-128表示卷積運(yùn)算,表示卷積核大小為3×3,通道數(shù)為128,pool代表池化操作。架構(gòu)當(dāng)中顯示了對(duì)應(yīng)的卷積核、步長(zhǎng)與池化信息,表明了圖像的size變化過(guò)程。
圖2 基于多層次特征融合架構(gòu)
網(wǎng)絡(luò)架構(gòu)的左側(cè)為特征提取模塊,根據(jù)多層的卷積操作提取不同層次的特征圖。可以看出,第一次池化操作后,輸出圖像尺寸減小到原圖像的1/2;然后在第2次池化后,減少到1/4;一直到第5次池化后,尺寸縮小至原圖像的1/32,輸出的是512維特征圖。在第5個(gè)池化操作之后增加了一層1×1、通道數(shù)為1的卷積層,將特征圖的通道數(shù)轉(zhuǎn)換為1。第一部分輸出的X0,可以表示圖像的整體空間結(jié)構(gòu)。
卷積網(wǎng)絡(luò)中的特征根據(jù)不同的層次具有不同的含義,一般來(lái)說(shuō),對(duì)于高層次的特征,由于感受野較大,因此包含了更多的全局信息,即圖像的整體空間信息。而相對(duì)于高層特征,低層次的特征由于感受野較小,所以關(guān)注點(diǎn)在局部區(qū)域,因此包含了大量的局部細(xì)節(jié)信息。但是,現(xiàn)有的方法大多只利用了最后的高層特征,因此導(dǎo)致了細(xì)節(jié)信息的丟失,使得車(chē)輛的邊緣比較模糊。但是不同層次的特征不能直接連接起來(lái),因?yàn)樗鼈兊耐ǖ罃?shù)不一致。因此需要對(duì)特征進(jìn)行變化,例如:池化和采樣。得到size和通道數(shù)一致的特征圖。整體大致分為3步。
步驟3對(duì)特征圖X4進(jìn)行第3次反卷積操作,目的是還原成原輸入圖像的大小,但是通道數(shù)為1,即最終輸出的深度圖像。
損失函數(shù)(Loss Function)是用來(lái)判斷模型的指標(biāo)函數(shù),反映了模型的輸出預(yù)測(cè)值與實(shí)際真實(shí)值之間的距離。訓(xùn)練過(guò)程中,就是要最小化損失函數(shù),使得模型達(dá)到最優(yōu)收斂的狀態(tài)。損失函數(shù)可分為兩類(lèi):經(jīng)驗(yàn)風(fēng)險(xiǎn)損失函數(shù)和結(jié)構(gòu)性風(fēng)險(xiǎn)損失函數(shù)。經(jīng)驗(yàn)風(fēng)險(xiǎn)損失函數(shù)表達(dá)了預(yù)測(cè)結(jié)果與實(shí)際結(jié)果的差異,而結(jié)構(gòu)風(fēng)險(xiǎn)損失函數(shù)則表達(dá)了正則化懲罰項(xiàng)與經(jīng)驗(yàn)風(fēng)險(xiǎn)損失函數(shù)的總和。常用的損失函數(shù)有分類(lèi)交叉熵?fù)p失函數(shù)和回歸均方損失函數(shù)。
KITTI數(shù)據(jù)集中包含了所需要的采集原圖像與對(duì)象的深度圖,為了學(xué)習(xí)兩種數(shù)據(jù)之間的映射關(guān)系,需要合適的損失函數(shù)來(lái)判別兩者的差,如式(3)所示。根據(jù)有監(jiān)督的模型,使用誤差進(jìn)行反向傳播來(lái)更新參數(shù)權(quán)重。給定輸入的原圖像,采用回歸均方損失函數(shù),以此評(píng)估模型輸出的深度圖像與原圖像之間的距離和誤差,再更新參數(shù),使得模型逐步達(dá)到收斂的狀態(tài)。
(3)
1) 實(shí)驗(yàn)參數(shù)。模型的訓(xùn)練與測(cè)試均采用單塊的型號(hào)為1080Ti的GPU完成,使用的深度學(xué)習(xí)框架為T(mén)ensorFlow。為了驗(yàn)證本文方法的有效性,在KITTI數(shù)據(jù)集上進(jìn)行測(cè)試。利用隨機(jī)梯度下降更新參數(shù),學(xué)習(xí)率lr初始化為10-3,逐步遞減至10-4。因?yàn)槭嵌说蕉说木W(wǎng)絡(luò)模型,所以將圖像輸入至已收斂的模型中后,輸出圖像即為對(duì)應(yīng)的深度圖像。
2) 評(píng)價(jià)指標(biāo)。本文使用的評(píng)價(jià)指標(biāo)有平均相對(duì)誤差A(yù)bs、平方相對(duì)誤差Sq、均方根誤差RMSE和閾值δ下的精度。和傳統(tǒng)的有代表性的方法進(jìn)行對(duì)比。
(1) 平均相對(duì)誤差:
(4)
(2) 平方相對(duì)誤差:
(5)
(3) 均方根誤差:
(6)
(4) 閾值δ下的精度:
(7)
(1) KITTI數(shù)據(jù)集。KITTI是一個(gè)龐大的交通數(shù)據(jù)集、不僅可以訓(xùn)練車(chē)輛檢測(cè)模型,還可以訓(xùn)練深度估計(jì)、語(yǔ)義分割等模型。因此,該數(shù)據(jù)集與本文的研究方向十分吻合。并且,本文模型也需要大量的圖像使得模型訓(xùn)練收斂,而且后續(xù)的章節(jié)也需要同類(lèi)型的數(shù)據(jù)集進(jìn)行深度估計(jì)。本文使用公開(kāi)數(shù)據(jù)集KITTI[10],由德國(guó)卡爾斯魯厄理工學(xué)院與豐田美國(guó)理工學(xué)院聯(lián)合完成。在數(shù)據(jù)集中,包含了多種類(lèi)型的圖像,包含了鄉(xiāng)村、城市、高速公路等場(chǎng)景。圖3是KITTI數(shù)據(jù)集中的相關(guān)統(tǒng)計(jì)信息??梢钥闯?數(shù)據(jù)集中的對(duì)象類(lèi)型主要有:“汽車(chē)”“貨車(chē)”“卡車(chē)”“行人”等,它們是交通場(chǎng)景中的常見(jiàn)目標(biāo)。
該數(shù)據(jù)集在多個(gè)領(lǐng)域均有廣泛的應(yīng)用,例如:目標(biāo)識(shí)別、深度估計(jì)、語(yǔ)義分割等,標(biāo)簽信息很豐富。本文進(jìn)行深度估計(jì)研究,KITTI數(shù)據(jù)集主要包括三種數(shù)據(jù),注解文件使用XML文件標(biāo)注了目標(biāo)的類(lèi)別以及坐標(biāo)信息;圖像文件劃分了訓(xùn)練集與測(cè)試集;JPG文件包含了訓(xùn)練的原始圖像。圖片分辨率為1 242×375。通過(guò)PASCALVOC的格式,對(duì)KITTI數(shù)據(jù)集進(jìn)行調(diào)整,主要是修改了原本的標(biāo)簽格式。通過(guò)Python腳本進(jìn)行處理。KITTI數(shù)據(jù)集統(tǒng)計(jì)信息如圖4所示。
圖4 KITTI數(shù)據(jù)集相關(guān)統(tǒng)計(jì)信息
(2) ApolloScape數(shù)據(jù)集。ApolloScape數(shù)據(jù)集是由百度公司的Apollo自動(dòng)駕駛平臺(tái)采集的數(shù)據(jù)集[11]。通過(guò)激光雷達(dá)設(shè)備來(lái)采集大量的深度圖像,所采集的圖像來(lái)自北京、上海、深圳等城市。數(shù)據(jù)集中包含了像素級(jí)的語(yǔ)義標(biāo)簽、3D信息、實(shí)例分割和雙目視角下的圖像等多種類(lèi)型數(shù)據(jù)。其中包含了多種類(lèi)型的目標(biāo),例如:小車(chē)、行人、人行道、交通標(biāo)識(shí)、樓房等。圖像分辨率為3 384×2 710,數(shù)據(jù)集總共包含了17 062幅RGB圖像。其中的像素級(jí)語(yǔ)義標(biāo)簽和視差圖可以分別轉(zhuǎn)換為相應(yīng)的目標(biāo)坐標(biāo)信息和圖像的深度數(shù)據(jù),用于目標(biāo)檢測(cè)和深度估計(jì)任務(wù)。圖5是數(shù)據(jù)集ApolloScape中的一些例子。
在KITTI與ApolloScape數(shù)據(jù)集上進(jìn)行對(duì)比實(shí)驗(yàn),證明融合特征的多層次CNN深度估計(jì)算法的優(yōu)越性。圖6為對(duì)比實(shí)驗(yàn)結(jié)果展示。
(a) 原圖像 (b) Garg等 (c) 本文 (d) 真實(shí)深度圖像圖6 各數(shù)據(jù)集上的深度估計(jì)結(jié)果對(duì)比
圖6顯示了本文模型在各數(shù)據(jù)集上的深度估計(jì)效果。顏色越淺,表示物體的距離越近;顏色越深,表示物體的距離越遠(yuǎn)。真實(shí)深度圖像中天空部分深度為缺失值,則不計(jì)入深度估計(jì)區(qū)域??梢钥闯?基于多層次CNN特征融合的深度估計(jì)方法可以較好地還原圖像的深度圖,特別是能夠更好地反映不同對(duì)象之間的細(xì)節(jié)信息。例如:如圖6的第1行與第3行所示,左側(cè)停放了多個(gè)距離較近的車(chē)輛。Garg等的深度估計(jì)結(jié)果中,多個(gè)車(chē)輛之間距離的邊界十分模糊,難以區(qū)分。本文在多個(gè)對(duì)象的區(qū)分較為清晰,并且可以發(fā)現(xiàn),路中的車(chē)輛也是比較清楚的。在ApolloScape中的結(jié)果也表明本文方法的清晰度更高。原因在于本文方法是基于多種特征融合的,在CNN的感受野范圍內(nèi),既選取了高層特征,也包含了底層特征,使得圖像在整體以及局部范圍內(nèi),都可以表現(xiàn)較好。數(shù)據(jù)集的實(shí)驗(yàn)結(jié)果表明,本文模型相對(duì)其他方法取得了較好的效果。與其他方法相比,通過(guò)對(duì)比誤差指標(biāo)與精確度指標(biāo),本文方法取得了較好的結(jié)果,可以保證精度盡可能高、誤差盡可能小。
如表1所示,表示本文方法與其他兩種深度估計(jì)方法對(duì)比結(jié)果。Abs、Sq和RMSE這三個(gè)指標(biāo)表示模型輸出的深度圖與真實(shí)深度圖像的誤差,值越小,說(shuō)明模型的深度估計(jì)效果越好。與其他2種方法相比,本文提出的網(wǎng)絡(luò)結(jié)構(gòu)誤差最小,計(jì)算結(jié)果有較大的改善,特別是在Abs誤差方面。相比于文獻(xiàn)[12]的方法Abs、Sq和RMSE誤差分別下降了41%、42%和23%;相比于文獻(xiàn)[13]的方法Abs、Sq和RMSE誤差分別下降了30%、15%和2%。最后3列比較了模型在深度估計(jì)中的精度。本文模型在ApolloScape中的精度也表現(xiàn)較好。通過(guò)比較真實(shí)深度圖像與預(yù)測(cè)深度圖像的比值來(lái)表明模型的精確度,值越高,說(shuō)明模型精度越高。本文方法相比于文獻(xiàn)[12]的方法準(zhǔn)確率分別提升了26%、5%和1%;相比于文獻(xiàn)[13]的方法準(zhǔn)確率分別提升了15%、5%和2%。結(jié)果表明,本文算法的精度較高,說(shuō)明采用多種特征融合方法的有效性。
表1 定量比較結(jié)果
文獻(xiàn)[12]的方法同樣屬于單目深度估計(jì)方法,且應(yīng)用在室外場(chǎng)景。通過(guò)提出一種超像素池化方法,組合不同層級(jí)的卷積特征進(jìn)行上采樣。本文與文獻(xiàn)[12]的方法區(qū)別在于,本文通過(guò)反卷積來(lái)改變不同層級(jí)的特征圖的size,再通過(guò)直接合并特征圖達(dá)到多層次特征融合的目的,并且取得了更好的實(shí)驗(yàn)效果。而文獻(xiàn)[13]的方法屬于一種雙目的深度估計(jì),通過(guò)兩個(gè)固定攝像機(jī)來(lái)獲取場(chǎng)景的結(jié)構(gòu)化數(shù)據(jù)。根據(jù)重構(gòu)誤差來(lái)進(jìn)行訓(xùn)練。
雖然現(xiàn)有的許多方法都基于CNN的模型來(lái)做特征提取,但是本文在此基礎(chǔ)上進(jìn)行了特征融合,通過(guò)融合高層次與低層次的特征來(lái)提高深度估計(jì)的質(zhì)量,最終達(dá)到圖像細(xì)節(jié)表現(xiàn)更好的效果。綜合圖6及表1可知,本文算法在圖像細(xì)節(jié)與指標(biāo)上均表現(xiàn)較好,可以有效地在圖像中估計(jì)出場(chǎng)景的深度值。
為了解決CNN無(wú)法很好地利用底層特征的問(wèn)題,本文提出基于多層次特征融合的卷積圖像深度估計(jì)算法。將網(wǎng)絡(luò)分為特征提取模塊與特征融合模塊,通過(guò)在對(duì)應(yīng)位置添加不同特征圖像的方法,融合了不同層次、不同尺度的特征,增強(qiáng)了整體深度結(jié)構(gòu)細(xì)節(jié)。實(shí)驗(yàn)結(jié)果表明,本文方法能夠較好地重建場(chǎng)景的局部細(xì)節(jié),恢復(fù)圖像的深度信息。