梁水波,劉紫燕,孫昊堃,袁 浩,梁 靜
(貴州大學(xué) 大數(shù)據(jù)與信息工程學(xué)院,貴陽 550025) E-mail:leizy@sina.com
單目圖像深度估計是計算機(jī)視覺領(lǐng)域的重要課題,其旨在特定視角下從圖像中產(chǎn)生像素級別的深度圖.這種深度信息有助于更好地理解3D場景,并且還促進(jìn)了許多計算機(jī)視覺任務(wù),例如增強(qiáng)現(xiàn)實、機(jī)器人導(dǎo)航、自動駕駛、即時定位與地圖構(gòu)建等.通常,深度信息主要由商業(yè)深度傳感器獲得,如各種激光雷達(dá)或者深度相機(jī).除了高成本和操作技能要求外,其還面臨著低分辨率和感知距離短的缺點(diǎn),這限制了其廣泛的應(yīng)用.由于RGB圖像的廣泛可用性,越來越多的學(xué)者對從單目圖像中估計深度產(chǎn)生濃厚的興趣.
傳統(tǒng)方法依賴于場景的多個視圖之間的差異來恢復(fù)3D場景幾何,其中至少需要兩個圖像.由于深度學(xué)習(xí)技術(shù)的快速發(fā)展,單目深度估計取得了很大的進(jìn)步.在準(zhǔn)確性和速度方面超越了傳統(tǒng)基于機(jī)器學(xué)習(xí)的方法.深度學(xué)習(xí)方法的深度估計可以分為監(jiān)督學(xué)習(xí)和自監(jiān)督學(xué)習(xí)兩大類.
對于監(jiān)督學(xué)習(xí)的深度估計任務(wù),Eigen等人[1]首次將卷積神經(jīng)網(wǎng)絡(luò)用來解決從單目圖像中預(yù)測深度問題.其設(shè)計了一個由粗到細(xì)的網(wǎng)絡(luò)預(yù)測單目深度并使用了距離傳感器測量的真實深度值作為監(jiān)督信號.文獻(xiàn)[2]中,提出了一種能夠處理深度估計、表面法線估計和物體標(biāo)簽預(yù)測的多任務(wù)模型.在文獻(xiàn)[3]中,重點(diǎn)關(guān)注深度估計在障礙物檢測中的應(yīng)用而不是從單個圖像預(yù)測深度,提出了全卷積神經(jīng)網(wǎng)絡(luò)框架通過單目圖像和相應(yīng)的光流來估計精確的深度圖.文獻(xiàn)[4]提出了局部平面指導(dǎo)層,有效編碼階段的特征與最終輸出深度圖聯(lián)系起來.然而,雖然這些監(jiān)督的方法具有高質(zhì)量的深度估計結(jié)果,但是針對不同的場景,在現(xiàn)實世界場景中獲得深度真實值是非常具有挑戰(zhàn)性的.
對于自監(jiān)督學(xué)習(xí)的深度估計,Garg等人[5]使用雙目圖像對網(wǎng)絡(luò)進(jìn)行訓(xùn)練,不使用深度信息進(jìn)行監(jiān)督,而是使用左圖像和從右圖像變形的合成左圖像之間的顏色不一致作為監(jiān)視信號.Godard等人[6]提出了左右一致性損失用于正則化.文獻(xiàn)[7]將上述的方法用于雙目視頻.雖然基于雙目的方法不需要真實深度,但是精確校正雙目圖像也不是一件容易的事.文獻(xiàn)[8]用自監(jiān)督學(xué)習(xí)的方法從單目視頻序列中估計深度信息,其將深度估計和自運(yùn)動估計統(tǒng)一到一個框架中,只使用單目視頻序列作為輸入,不使用真實深度或者立體圖像對進(jìn)行監(jiān)督,監(jiān)督信號來自視圖合成.然而,由于移動物體違反了幾何圖像重建中的潛在靜態(tài)場景假設(shè),因此出現(xiàn)了性能限制.且由于缺乏適當(dāng)?shù)募s束,網(wǎng)絡(luò)預(yù)測不同樣本的深度具有尺度不一致的問題.為了解決移動物體的問題,文獻(xiàn)[9,10]中分別加入額外的光流網(wǎng)絡(luò)和運(yùn)動分割網(wǎng)絡(luò),雖然在精度上有一定的提升,但需要巨額的計算成本且仍具有尺度不一致的問題.文獻(xiàn)[11] 在文獻(xiàn)[8]的基礎(chǔ)上,提出了幾何一致性損失來約束視頻前后幀上估計出深度的一致性,然后利用這個幾何一致性來檢測運(yùn)動物體和遮擋區(qū)域,在計算重投影誤差時移除這些病態(tài)區(qū)域,可以提升算法性能.而且用這種訓(xùn)練方式得到的深度估計結(jié)果具有在長視頻上的尺度一致性,可以用來做SLAM或VO等任務(wù).
Transformer[12]和自注意力模型在機(jī)器翻譯與自然語言處理領(lǐng)域起著開拓性的作用.最近兩年,越來越多的學(xué)者將Transformer運(yùn)用到計算機(jī)視覺領(lǐng)域,提供了新的解決思路且取得了不錯的效果.Transformer模型及其變體已成功的用于圖像識別、語義分割、目標(biāo)檢測、圖像超分辨率、視頻理解等任務(wù).DPT[13]將Transformer應(yīng)用在監(jiān)督方法的深度估計上,取得了很好的效果.為了獲得對象邊緣更加細(xì)化的深度圖,對象邊緣主要由語義信息和空間信息確定.語義信息通過約束像素類別來獲得清晰的邊界,而空間信息使用幾何約束來描述對象的輪廓.基于此,本文提出一種基于Transformer的多尺度注意力融合的網(wǎng)絡(luò)結(jié)構(gòu),對圖像在多個尺度上的特征信息充分利用.通過注意力模塊更好地整合語義信息和空間信息,在網(wǎng)絡(luò)提取深層的語義信息的同時融合淺層語義信息,使得最后預(yù)測的深度圖具有很好的深度連續(xù)性以及實現(xiàn)深度估計精度的提高.
自監(jiān)督學(xué)習(xí)的方法是通過單目圖像序列訓(xùn)練的,并且在相鄰幀之間的投影上構(gòu)建了幾何約束:網(wǎng)絡(luò)以連續(xù)的單目圖像作為輸入,通過視圖合成作為網(wǎng)絡(luò)的監(jiān)督信號.給定一源圖像Is視圖合成任務(wù)是生成合成目標(biāo)圖像It,通過公式(1)將源圖像像素Is(ps)投影到目標(biāo)視圖It(pt)上:
ps~KTt→sDt(pt)K-1pt
(1)
K是相機(jī)的內(nèi)參數(shù)矩陣,Tt→s為從目標(biāo)幀到源幀的相機(jī)運(yùn)動矩陣,Dt(pt)表示目標(biāo)幀中每個像素對應(yīng)的深度映射.訓(xùn)練目標(biāo)是通過優(yōu)化真實目標(biāo)圖像和合成唯一的光度重建損失來確保場景幾何的一致性.
(2)
本文的深度估計網(wǎng)絡(luò)如圖1所示,采用Transformer作為編碼器的基本框架,利用Transformer的提取全局信息以及局部信息的優(yōu)勢.參考文獻(xiàn)[14] 中spatial-reduction attention (SRA)模塊以靈活調(diào)整各階段的特征尺寸,不僅使網(wǎng)絡(luò)在多個尺度上提取特征,還能增加網(wǎng)絡(luò)的全局信息以及局部信息.提取的特征圖包含4種不同的分辨率,分別為輸入圖像的1/4、1/8、1/16、1/32.
圖1 網(wǎng)絡(luò)結(jié)構(gòu)示意圖Fig.1 Schematic diagram of network structure
給定尺寸為H×W×3的輸入圖像x∈H×W×3,為了將二維圖像變成一維序列,首先將其劃分為N個圖像塊,其中N=H×W/P2,P為每個圖像塊的大小,本文設(shè)置每個圖像塊的大小典型值為4×4×3.其次將展開的圖像塊送入線性投影層(linear projection)得到尺寸為HW/42×C1的嵌入塊.然后將嵌入塊(Patch Embedding)與位置嵌入(Position Embedding)信息執(zhí)行相加后的信息E送入Transformer Layer.
Transformer Layer主要包含層歸一化(Layer Norm)、多頭注意力(MHSA)以及多層感知機(jī)(MLP).在Stage l中,經(jīng)過Layer Norm之后,對于輸入為El-1∈L×C將會與3個線性投影層參數(shù)WQ、WK、WV∈C×d分別計算query、key、value.query=Zl-1WQ、key=Zl-1WK、value=Zl-1WV.C是隱藏層的通道大小,d是query、key、value的維度.自注意力層(Self-Attention)則可以由公式(3)表示:
(3)
多頭自注意力則是m個自注意力層操作拼接起來然后投影得到,公式如式(4)所示:
MHSA(Zl-1)=[SA1(Zl-1);SA2(Zl-1);…;SAm(Zl-1)]WO
(4)
其中WO∈md×C.最后,通過Layer Norm和MLP以及殘差連接得到輸出:
Zl=MHSA(Zl-1+MLP(MHSA(Zl-1))∈L×C
(5)
圖1中所示,每一個Transformer層都有兩個層歸一化,為了簡單體現(xiàn),本文并未在公式推導(dǎo)中體現(xiàn).本文中有4個Transformer層,將會得到各層的不同分辨率的輸出E1、E2、E3、E4.
對于密集預(yù)測任務(wù),為了解決卷積神經(jīng)網(wǎng)絡(luò)的受卷積核大小的限制,網(wǎng)絡(luò)無法很好的獲得全局信息的問題.很多學(xué)者通過疊加多個卷積層的方式雖然可以獲取圖像的全局信息,但是在信息由淺層向深層逐漸傳遞時,由于采樣操作,會導(dǎo)致信息的遺失.如果一味的堆疊網(wǎng)絡(luò)也會導(dǎo)致網(wǎng)絡(luò)太深訓(xùn)練無法收斂等問題.本文受文獻(xiàn)[15] 中判別特征網(wǎng)絡(luò)(DFN)的啟發(fā),將殘差細(xì)化模塊(Refinement Residual Block,RRB)和注意力模塊(Attention Module)運(yùn)用到解碼過程中,提出了基于殘差細(xì)化與通道注意力多尺度融合的解碼器.將編碼器Transformer層中的不同分辨率的特征圖E1、E2、E3、E4進(jìn)行殘差細(xì)化模塊和通道注意力模塊后,經(jīng)過上采樣后進(jìn)行特征融合,最后,分別在不同的分辨率下進(jìn)行深度預(yù)測.解碼器結(jié)構(gòu)如圖2所示.
圖2 殘差通道注意力融合的解碼器網(wǎng)絡(luò)結(jié)構(gòu)Fig.2 Decoder network structure of fusion on residual and channel attention
對于輸入大小為832×256大小的RGB圖片,圖片經(jīng)過Transformer編碼器后得到4個不同尺度的特征圖E1、E2、E3、E4.對于特征圖E4∈26×8×512,依次進(jìn)行ConvBlock、RRB、Attention、ConvBlock模塊后,通過圖中的Upsample雙線性插值進(jìn)行上采樣后與E3經(jīng)過ConvBlock、RRB、Attention的特征進(jìn)行融合,融合后的特征再進(jìn)行RRB和CovBlock模塊后進(jìn)行上采樣.同理,對E2、E1執(zhí)行相同的操作,最后,在尺度為104×32×32、208×64×32、416×128×16、832×256×16的特征圖上進(jìn)行預(yù)測,即圖中的Predict,最終輸出為通道數(shù)為1的深度圖.
對于ConvBlock,其結(jié)構(gòu)由一個為3×3卷積和一個激活層組成.主要起減少特征圖通道的作用,也增加了局部上下文信息.
圖3 Refinement Residual Block (RRB)模塊Fig.3 Refinement Residual Block (RRB) module
對于殘差細(xì)化模塊RRB,其結(jié)構(gòu)如圖3所示.模塊的第一部分是一個1×1卷積層,將輸入的通道固定到具體值,主要起著跨通道的信息整合作用.兩個步長為1的3×3卷積、批歸一化(Batch Norm)和激活層(ReLU)組成的殘差結(jié)構(gòu)不僅可以對特征圖進(jìn)行像素級的細(xì)化,還能增強(qiáng)每個階段的識別能力.
圖4 注意力模塊Fig.4 Attention module
由于單純的堆疊注意力模塊會導(dǎo)致對特征的反復(fù)加權(quán)操作,使得網(wǎng)絡(luò)不能很好的特征表達(dá),從而使網(wǎng)絡(luò)的性能下降.因此本文在注意力模塊后加入殘差細(xì)化模塊,不僅能解決因網(wǎng)絡(luò)層數(shù)的加深而導(dǎo)致的難以優(yōu)化和收斂問題,還能進(jìn)一步提煉細(xì)化.
本文的位姿估計網(wǎng)絡(luò)采用和文獻(xiàn)[8]相同的網(wǎng)絡(luò),以ResNet18[18]作為網(wǎng)絡(luò)的編碼部分,與之不同的是,本文未采用文獻(xiàn)[8]的掩膜預(yù)測部分,輸入為相鄰的圖像對即6通道圖像,輸出為6自由度的相機(jī)姿態(tài).因此,位姿編碼器在第一層具有6×64×3×3的卷積權(quán)重,而不是默認(rèn)3×64×3×3的ResNet權(quán)重.網(wǎng)絡(luò)訓(xùn)練時,加載在ImageNet預(yù)訓(xùn)練的ResNet18模型作為編碼部分.
本文采用了文獻(xiàn)[11] 中提出的損失函數(shù),由光度損失、平滑度損失以及幾何一致性損失3個方面組成.
給定相鄰兩張圖片Ia與Ib,使用預(yù)測的深度圖Da和相對相機(jī)位姿Pab,利用可微雙線性插值將Ib轉(zhuǎn)化為Ia′,形成光度損失函數(shù)見式(6):
(6)
其中,V表示從圖像Ia中成功投影到圖像L1的有效點(diǎn)數(shù).選擇L1范數(shù)是因為其對數(shù)據(jù)中的異常值具有很好的魯棒性.上述損失由于在真實環(huán)境下的光照變化使其不是固定不變的,所以添加額外的相似度損失SSIM[19],其對像素亮度進(jìn)行標(biāo)準(zhǔn)化來更好的處理復(fù)雜的光照變化.修正的光度損失函數(shù)如式(7)所示:
(7)
由于光度損失在低紋理區(qū)或重復(fù)特征區(qū)域的效果不佳,因此結(jié)合平滑度先驗條件對估計的深度圖進(jìn)行調(diào)整,平滑度損失定義如式(8)所示:
(8)
對于幾何一致性損失,首先計算出深度不一致圖Ddiff,其中Ddiff的表達(dá)式如式(9)所示:
(9)
(10)
LGC通過最小化連續(xù)圖像對之間預(yù)測的深度值之間的幾何距離以及促進(jìn)他們的尺度一致性.
將上述的3個損失函數(shù)加權(quán)結(jié)合在一起組成最終的損失函數(shù)L,如式(11)所示:
(11)
為了驗證本文算法的有效性,采用Eigen[1]分割的KITTI raw dataset[20]進(jìn)行模型訓(xùn)練和測試,在文獻(xiàn)[8]去除靜態(tài)幀的基礎(chǔ)上.本文將數(shù)據(jù)集的輸入大小調(diào)整為832×256.在訓(xùn)練過程中,對輸入的彩色圖片進(jìn)行隨機(jī)翻轉(zhuǎn)、隨機(jī)裁剪兩種方式進(jìn)行增廣.
本文在NVIDIA GeForce RTX 3060 GPU上對算法網(wǎng)絡(luò)進(jìn)行訓(xùn)練,深度學(xué)習(xí)框架為PyTorch框架,PyTorch版本為1.8,CUDA版本為11.1.使用Adam(自適應(yīng)估計)優(yōu)化器進(jìn)行優(yōu)化,學(xué)習(xí)率為0.0001,設(shè)置優(yōu)化器的超參數(shù)β1=0.9,β1=0.999.網(wǎng)絡(luò)訓(xùn)練165個epoch,步長為4.對于編碼器部分,則由ImageNet數(shù)據(jù)集提供的模型進(jìn)行初始化,而網(wǎng)絡(luò)中其它層都是隨機(jī)初始化的.
為了評估和比較各種深度估計網(wǎng)絡(luò)的性能,在文獻(xiàn)[1]中提出了一種常見的評估方法,其中包含5個評估指標(biāo):均方根誤差(RMSE)、均方根對數(shù)誤差(RMSE log)、絕對相對誤差(Abs Rel)、平方相對誤差(Sq Rel)和不同閾值下的準(zhǔn)確率(δ).這些指標(biāo)的表達(dá)式為:
(12)
(13)
(14)
(15)
(16)
本文算法主要設(shè)置解碼器端的通道注意力模塊與殘差細(xì)化模塊兩個消融因素.為了驗證本文算法的有效性,采用以下的方式進(jìn)行消融實驗分析:1)編碼器采用Transformer結(jié)構(gòu),解碼器部分僅由ConvBlock模塊、以及上采樣兩個部分組成,稱為T-A;2)編碼器采用Transformer結(jié)構(gòu),解碼器部分由通道注意力模塊、ConvBlock模塊、以及上采樣3個部分組成,稱為T-B;3)編碼器采用Transformer結(jié)構(gòu),解碼器部分由殘差細(xì)化模塊、ConvBlock模塊以及上采樣3個部分組成,稱為T-C;4)解碼部分器含有通道注意力模塊、殘差細(xì)化模塊、ConvBlock模塊以及上采樣4個部分組成,即本文的算法網(wǎng)絡(luò)結(jié)構(gòu)(Ours).因為3種網(wǎng)絡(luò)都具有ConvBlock模塊和上采樣操作,所以本文就不在表格上呈現(xiàn)這兩個模塊.
表1所示為設(shè)置的3種網(wǎng)絡(luò)消融實驗的結(jié)果.從表1中可以看出,本T-B與T-A相比,在絕對相對誤差(Abs Rel)上差別不大,但是在其它數(shù)據(jù)上,T-B網(wǎng)絡(luò)提升了很多.這得益于通道注意力模塊,在不需要大量增加網(wǎng)絡(luò)的參數(shù)條件下,通過對各通道的特征權(quán)重配比,對特征圖進(jìn)行自適應(yīng)的校準(zhǔn),從而提高模型識別的準(zhǔn)確性.T-C網(wǎng)絡(luò)比T-A、T-B網(wǎng)絡(luò)相比的誤差小、準(zhǔn)確度高,主要是在編碼部分殘差細(xì)化模塊保留了主要的特征,不僅防止了過擬合,還使模型的魯棒性進(jìn)一步增強(qiáng).
表1 網(wǎng)絡(luò)消融分析Table 1 Ablation analysis of networks
本文的算法網(wǎng)絡(luò)(Ours)與T-A、T-B以及T-C網(wǎng)絡(luò)相比,誤差更小,準(zhǔn)確率更高.這是因為網(wǎng)絡(luò)汲取了T-A、T-B兩個網(wǎng)絡(luò)的優(yōu)點(diǎn).殘差細(xì)化模塊和通道注意力的聯(lián)合使用,通過對上下級特征的融合,提高了網(wǎng)絡(luò)對上下文信息的利用,彌補(bǔ)了單一層級特征信息表達(dá)能力不足的問題.
圖5 消融實驗結(jié)果對比Fig.5 Comparison of results of ablation experiment
圖5為消融實驗的結(jié)果對比圖.從圖5可以看出,本文算法生成的深度圖可以對圖像的深度信息較好呈現(xiàn),生成的深度圖與其它消融網(wǎng)絡(luò)相比,具有更好的物體輪廓以及深度連續(xù),這主要得益于通道注意力模塊和殘差細(xì)化模塊的聯(lián)合使用.
表2為本文與23種不同的深度估計算法的對比結(jié)果.從表中可以看出,本文算法的均方根誤差(RMSE)、均方根對數(shù)誤差(RMSE log)、絕對相對誤差(Abs Rel)、平方相對誤差(Sq Rel)以及不同閾值下的準(zhǔn)確率(δ)在自監(jiān)督學(xué)習(xí)方法中都取得了很不錯的效果.與Bian[11]相比,本文在均方根誤差、均方根對數(shù)誤差以及絕對相對誤差較于Bian[11]分別減少3.2%、21.3%、9.6%,在閾值為δ<1.25、δ<1.252、δ<1.253的準(zhǔn)確度分別提升3.1%、1.5%、1%.Bian[11]采用ResNet256作為深度估計與位姿估計的基礎(chǔ)網(wǎng)絡(luò),模型較大.而本文將多尺度的Transformer結(jié)構(gòu)作為編碼器,其模型大小等同于ResNet18網(wǎng)絡(luò)結(jié)構(gòu)大小,兩者相比,本文的網(wǎng)絡(luò)模型更加的輕量.除此之外,本文解碼器中殘差細(xì)化模塊與通道注意力的設(shè)計,提升了網(wǎng)絡(luò)對上下文信息更好利用的同時,也使得在多個尺度上估計的深度的物體輪廓更加清晰和連續(xù).與結(jié)果最好的Monodepth2[22]相比,其基于外觀損失函數(shù)使得網(wǎng)絡(luò)具有不錯的表現(xiàn).而本文主要在網(wǎng)絡(luò)模型設(shè)計上具有不錯的優(yōu)勢,所以兩者取得的結(jié)果接近.雖然精度還達(dá)不到基于監(jiān)督的方法的效果,但正因如此,自監(jiān)督學(xué)習(xí)的深度估計還有更多的發(fā)展空間.表中D代表監(jiān)督方法,即用深度圖進(jìn)行監(jiān)督,D*代表用深度圖輔助監(jiān)督,S代表用雙目自監(jiān)督,M單目自監(jiān)督.
圖6 不同深度估計算法的結(jié)果比較Fig.6 Comparison of results of different depth estimation algorithms
圖6所示為本文算法與Zhou[8]、Bian[11]、Monodepth2[22]算法的生成深度圖像質(zhì)量的主觀效果對比.其中,圖6(a)為原始的RGB圖像,圖6(b)為Zhou[8]算法的深度圖,其深度圖中的物體輪廓非常的不明顯,但其作為首個用自監(jiān)督方法的單目深度估計算法,很有對比的意義.圖6(c)為Bian[11]所提出算法深度圖效果,與Zhou[8]算法相比,其物體輪廓更加清晰,對原圖像中的車以及行人都能很好的顯示,但其物體邊緣細(xì)節(jié)較為模糊.圖6(d)與Bian[11]算法相比,在物體輪廓上相差不大,但是Monodepth2[22]算法能更好的捕捉原圖像中距離較遠(yuǎn)的物體.本文的算法與Monodepth2[22]算法相比,具有更加清晰的物體輪廓信息,且邊緣更加銳利,可以從圖6(e)中右圖的行人可以看出.本文通過多尺度Transformer結(jié)構(gòu)的編碼器,從多個尺度提取圖像信息.殘差通道注意力融合的解碼器,更好的物體上下文信息對深度圖進(jìn)行更新,最終生成的深度圖像物體輪廓更加清晰、邊緣更加銳利.因此,本文算法在深度圖的主觀視覺效果上優(yōu)于其他自監(jiān)督的算法.
表2 不同深度估計算法的結(jié)果比較Table 2 Comparison of the results of different depth estimation algorithms
本文提出了一種基于Transformer多尺度注意力的自監(jiān)督學(xué)習(xí)單目圖像深度估計框架.首次將視覺Transformer應(yīng)用到自監(jiān)督學(xué)習(xí)的單目深度估計任務(wù)上,通過消融實驗證明了本文殘差細(xì)化通道注意力融合編碼器的有效性.整個框架是端到端進(jìn)行訓(xùn)練的,并且與自監(jiān)督學(xué)習(xí)的方法對比也取得了不錯的效果.本文的工作主要是在設(shè)計深度估計網(wǎng)絡(luò)上,并沒有對位姿估計網(wǎng)絡(luò)進(jìn)行很多工作,下一步工作考慮將視頻中的時間性運(yùn)用起來,設(shè)計更加魯棒、更加輕量的無監(jiān)督位姿估計網(wǎng)絡(luò).