程德強, 張華強, 寇旗旗, 呂 晨, 錢建生*
(1. 中國礦業(yè)大學(xué) 信息與控制工程學(xué)院,江蘇 徐州 221116;2. 中國礦業(yè)大學(xué) 計算機與科學(xué)技術(shù)學(xué)院,江蘇 徐州 221116)
深度估計作為計算機視覺領(lǐng)域中一個重要的研究方向,在各種3D 感知任務(wù)中發(fā)揮著重要的作用。它在增強現(xiàn)實[1]、虛擬現(xiàn)實、機器人[2]和自動駕駛[3]等領(lǐng)域有著廣泛的應(yīng)用,這些應(yīng)用目前大多數(shù)依靠雙目立體視覺[4]、連續(xù)多幀圖像匹配[5]和激光雷達[6]等方式進行估計,存在計算復(fù)雜、相機校準(zhǔn)困難以及估計成本較高等問題。與這些方式相比,單目深度估計計算需求小,結(jié)構(gòu)形式簡單且開銷小,優(yōu)勢明顯,備受研究者們的青睞,已經(jīng)成為目前研究的熱點。
從數(shù)學(xué)的角度來看,單目深度估計就是一個病態(tài)問題[7],因為圖像實質(zhì)為物理世界的二維投影,三維場景投影到成像平面時會丟失大量的空間信息,導(dǎo)致單幅圖像對應(yīng)多個可能的實際場景,但是又缺少穩(wěn)定的物理線索來約束這些不確定性。因此,運用傳統(tǒng)的圖像處理方法,僅從單幅圖像來準(zhǔn)確估計出稠密的三維圖像十分具有挑戰(zhàn)性。直到神經(jīng)網(wǎng)絡(luò)的出現(xiàn),我們才有了很好的解決辦法,利用深度卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network,CNN),通過編-解碼器的訓(xùn)練網(wǎng)絡(luò)結(jié)構(gòu)和深度真值標(biāo)簽,目前已經(jīng)可以得到較高質(zhì)量的預(yù)測深度。但大規(guī)模獲取深度真值標(biāo)簽難度較大、費用昂貴,因此,不需要深度真值標(biāo)簽作為約束的自監(jiān)督深度估計已成為一種強有力的替代方法。早期的研究中,GODARD等[8]提出利用立體對當(dāng)作自監(jiān)督深度估計的訓(xùn)練范式,引入左右深度一致性損失進行自監(jiān)督學(xué)習(xí)。ZHOU 等人[9]提出利用位姿網(wǎng)絡(luò)來估計相鄰兩幀之間的相對位姿,很好地利用單目圖像序列進行訓(xùn)練,減少了立體相機的限制。Sfm-Learner 通過視頻序列中的連續(xù)幀集合進行深度估計網(wǎng)絡(luò)與位姿網(wǎng)絡(luò)的聯(lián)合訓(xùn)練,取得了較好的性能,然而這需要一些理想狀態(tài)比如視圖場景中沒有運動物體且不存在遮擋情況,這在現(xiàn)實中通常難以達到。直到MonoDepth2[10]中最小化重投影損失的提出,才很好地解決了物體遮擋問題,同時,提出的應(yīng)對違反相機運動的自動遮擋損失用于消除運動物體對預(yù)測深度的破壞,極大地促進了研究。后來,PackNet-Sfm[11]通過加入額外的語義分割模型來輔助訓(xùn)練深度估計網(wǎng)絡(luò)。P2Net[12]采用區(qū)別于單個像素、更具辨別力的像素塊來計算光度損失,進一步提高了自監(jiān)督單目深度估計性能。
目前大多數(shù)自監(jiān)督單目深度估計采用端到端的U-Net 網(wǎng)絡(luò)框架,通過壓縮和擴張?zhí)卣餍畔D以及跳躍連接方式融合編碼器和解碼器之間的特征信息圖來實現(xiàn)圖像的特征提取和深度重建工作。盡管現(xiàn)有的自監(jiān)督模型在室外數(shù)據(jù)集(如KITTI[13]和Make3D[14])上取得了不錯的性能,但是在一些室內(nèi)數(shù)據(jù)集(如NYU Depth V2和ScanNet)上表現(xiàn)不佳。究其原因是室內(nèi)場景復(fù)雜多變,充斥著大量低紋理、低光照區(qū)域,如光滑墻壁、天花板和物體背光陰影等,使得自監(jiān)督信號—光度一致性損失約束力明顯下降,造成預(yù)測深度圖存在深度不精確、物體邊緣模糊以及細(xì)節(jié)丟失等一系列問題。針對上述問題,本文提出了一種基于層級特征融合的室內(nèi)自監(jiān)督單目深度估計網(wǎng)絡(luò)模型,貢獻如下:(1)提出了一個能夠提升室內(nèi)低光照區(qū)域可見性并且保持亮度一致性的映射一致性圖像增強模塊,改善了該區(qū)域造成估計深度細(xì)節(jié)缺失,出現(xiàn)假平面惡化深度模型的問題;(2)提出了一個基于注意力機制的跨層級特征調(diào)整模塊。通過跳躍連接方式,實現(xiàn)了編碼器端低層級與高層級以及編-解碼器端多層級間的特征信息融合,提高了深度估計網(wǎng)絡(luò)的特征利用能力,縮小了預(yù)測深度與真實深度的語義差距。(3)提出了一個用于室內(nèi)自監(jiān)督單目深度估計的格拉姆矩陣相似性損失函數(shù)。該損失函數(shù)從深度圖像的風(fēng)格特征角度出發(fā),通過計算本文預(yù)測深度圖和預(yù)測平面深度圖之間的格拉姆矩陣相似性作為額外的自監(jiān)督信號約束網(wǎng)絡(luò),提升網(wǎng)絡(luò)預(yù)測深度的能力,進一步提高了預(yù)測深度圖的精度。經(jīng)過實驗驗證,本文在NYU Depth V2和ScanNet 室內(nèi)數(shù)據(jù)集上獲得了優(yōu)于現(xiàn)有模型的預(yù)測深度精度。
利用單幅圖像進行深度估計是一項難以完成的工作。傳統(tǒng)的單目深度估計只是通過人工手動提取圖像特征以及可視化概率模型,其表達能力有限,魯棒性很差,無力應(yīng)對室內(nèi)復(fù)雜場景。自從先驅(qū)工作[7,15]使用CNN 直接回歸深度以來,已經(jīng)提出了許多基于CNN 的單目深度估計方法[16-19],在基準(zhǔn)數(shù)據(jù)集中產(chǎn)生了令人印象深刻的預(yù)測結(jié)果,其中大多數(shù)是依靠深度真值標(biāo)簽進行訓(xùn)練的監(jiān)督方法。由于大規(guī)模地獲取深度真值標(biāo)簽具有挑戰(zhàn)性,因此,不需要真值標(biāo)簽的自監(jiān)督深度學(xué)習(xí)已成為一種有希望的替代方法。在文獻[8]中首次引入圖像外觀來代替真值標(biāo)簽作為訓(xùn)練網(wǎng)絡(luò)的監(jiān)督信號,立體對中的一個圖像被預(yù)測的深度扭曲到另一個視圖,然后計算合成圖像與真實圖像之間的差異或光度誤差用于監(jiān)督。這種方法進一步擴展到單目深度估計,通過設(shè)計網(wǎng)絡(luò)架構(gòu)[10]、損失函數(shù)[20]以及在線細(xì)化[21]等方法,使得自監(jiān)督單目深度估計在基準(zhǔn)數(shù)據(jù)集上獲得了令人滿意的效果。然而,現(xiàn)有自監(jiān)督模型在室內(nèi)數(shù)據(jù)集上表現(xiàn)比在室外數(shù)據(jù)集上遜色很多,原因是室內(nèi)復(fù)雜場景充斥著大量低紋理、低光照區(qū)域,導(dǎo)致光度一致性損失變得太弱,無法用來監(jiān)督深度學(xué)習(xí)。Zhou 等人[22]通過光流網(wǎng)絡(luò)的流場監(jiān)督和稀疏SURF[23]初始化,提出了一種基于光流的訓(xùn)練范式,取得了很好的效果。最近的StructDepth[24]充分利用曼哈頓世界模型中的室內(nèi)結(jié)構(gòu)規(guī)律在自監(jiān)督單目深度學(xué)習(xí)中進一步取得了優(yōu)異的效果。盡管它們一定程度地提升了預(yù)測精度,但仍存在預(yù)測深度信息不夠精確、物體邊緣模糊和細(xì)節(jié)丟失嚴(yán)重等問題。此外,StructDepth[24]忽略了室內(nèi)存在大量低光照、低紋理區(qū)域的缺點,導(dǎo)致訓(xùn)練網(wǎng)絡(luò)時出現(xiàn)模糊假平面惡化深度模型。
圖像增強處理是提高圖像亮度和對比度的有效方法[25],對圖像的特征提取和降噪有著很大的幫助。目前Retinex 模型[26]是將圖像分解成反射和光照兩部分來增強處理?;谥狈綀D均衡化的模型是通過重新調(diào)整圖像中像素的亮度水平對圖像增強處理。最近的研究方法[27]將Retinex 模型與CNN 相結(jié)合取得了令人印象深刻的結(jié)果。對于基于學(xué)習(xí)的方法[28-29]需要配對數(shù)據(jù),但是在圖像增強領(lǐng)域獲取美學(xué)質(zhì)量較高的配對數(shù)據(jù)集是比較困難的。為了解決這個難題,研究者們已經(jīng)努力探索使用非配對的輸入[30]或零參考[31]的方法來增強低光照圖像,盡管這些方法已經(jīng)被證明是有效的,但它們?nèi)匀粵]有考慮到視頻序列中幀間的亮度對應(yīng)關(guān)系,而這對于自監(jiān)督單目深度估計訓(xùn)練是必不可少的。直到文獻[32]在增強夜間視頻序列圖像的同時保持了亮度一致性,才很好地解決了幀間亮度對應(yīng)關(guān)系的問題。
目前大多數(shù)單目深度估計網(wǎng)絡(luò)是根據(jù)運動重構(gòu)模型原理在CNN 網(wǎng)絡(luò)中同時訓(xùn)練深度估計網(wǎng)絡(luò)和位姿網(wǎng)絡(luò)來完成深度估計任務(wù)。整個訓(xùn)練網(wǎng)絡(luò)的輸入為視頻序列的連續(xù)多幀RGB 圖像。深度估計網(wǎng)絡(luò)輸入目標(biāo)圖像,經(jīng)過CNN 網(wǎng)絡(luò)處理輸出預(yù)測深度圖。位姿網(wǎng)絡(luò)輸入目標(biāo)圖像和其上一幀圖像,輸出相機運動姿態(tài)的變化矩陣。根據(jù)兩個網(wǎng)絡(luò)的輸出結(jié)果共同構(gòu)建重投影圖像,然后將重投影誤差引入至損失函數(shù),進而結(jié)合其他自監(jiān)督損失函數(shù)來反向傳播更新模型,迭代優(yōu)化訓(xùn)練網(wǎng)絡(luò)輸出。目前流行的深度估計網(wǎng)絡(luò)采用U-Net 網(wǎng)絡(luò)框架,以ResNet[33]、DenseNet[34]和VGG[35]等作為編碼器,通過下采樣處理來提取圖像的特征信息。編碼器淺層能夠提取圖像中顏色、邊界以及紋理等較為直接、簡單的特征信息。通過加深網(wǎng)絡(luò)層數(shù)和堆疊卷積操作,使感受野變大,其深層就能夠提取圖像中內(nèi)在的重要特征信息。解碼器將編碼器輸出的特征信息,通過上采樣、反卷積以及跳躍連接等手段[36],逐步恢復(fù)至原圖像尺寸。最后使用Sigmoid 激活函數(shù)映射處理得到預(yù)測深度圖。位姿網(wǎng)絡(luò)整體流程與深度估計網(wǎng)絡(luò)類似,在位姿編碼器中使用預(yù)訓(xùn)練權(quán)重模型,可直接解決相似問題。將預(yù)訓(xùn)練模型中第一個卷積核的通道數(shù)進行擴展,使網(wǎng)絡(luò)可以接收六通道信息作為輸入,將擴展后的卷積核中的權(quán)重縮小一倍,保證卷積操作結(jié)束后與單張圖像進入網(wǎng)絡(luò)的數(shù)值范圍相同,最終輸出圖像特征。位姿解碼器整合提取的圖像特征,通過降維、按行并排特征、卷積和圖像縮放等手段,最終輸出軸角矩陣和平移矩陣來預(yù)測出相機位置變化的平移運動和旋轉(zhuǎn)運動。
本文基于StructDepth[24]的網(wǎng)絡(luò)模型框架,以ResNet18 作為編碼器。如圖1 所示的本文深度估計網(wǎng)絡(luò)模型,Encoder 部分表示編碼器網(wǎng)絡(luò),Decoder 部分表示解碼器網(wǎng)絡(luò),Skip 表示跳躍連接。圖中立方體F1-F5,V1-V5分別表示編碼器、解碼器各層的特征信息圖,上方數(shù)字表示該特征的通道數(shù)。網(wǎng)絡(luò)利用映射一致性圖像增強(Mapping-Consistent Image Enhancement,MCIE)模塊提升三通道的RGB 圖像中低光照區(qū)域可見性和豐富紋理細(xì)節(jié)后,送入添加跨層級特征調(diào)整(Cross-Level Feature Adjustment, CLFA)模塊來實現(xiàn)層級特征融合的編-解碼器網(wǎng)絡(luò)中預(yù)測深度(圖中CLFA 下標(biāo)表示不同添加位置),通過在StructDepth[24]原有損失約束基礎(chǔ)上利用預(yù)測深度圖與預(yù)測平面深度圖之間的格拉姆矩陣相似性損失作為額外的自監(jiān)督信號約束本文構(gòu)建的室內(nèi)自監(jiān)督單目深度估計網(wǎng)絡(luò),最后輸出與原尺寸大小一致的單通道預(yù)測深度圖。本文模型一定程度上解決了室內(nèi)低光照區(qū)域的低能見度對模型帶來的不利影響,很好地改善了現(xiàn)有室內(nèi)自監(jiān)督模型預(yù)測深度不精確,物體邊緣模糊和細(xì)節(jié)丟失等問題。
圖1 本文深度估計網(wǎng)絡(luò)模型Fig.1 Depth estimation network model in this paper
映射一致性圖像增強根據(jù)對比度有限的直方圖均衡化(Contrast Limited Histogram Equalization ,CLHE)算法改進而來[32]。其目的在于豐富紋理細(xì)節(jié)且滿足保持亮度一致性的需要,這可以很大程度地提升自監(jiān)督深度估計算法在低光照區(qū)域的預(yù)測精度。MCIE 模塊通過使用亮度映射函數(shù)b'=ν(b)并將其應(yīng)用于增強圖像Iz和原圖像Is來增強圖像,計算公式為:
其中:ν是亮度單值映射函數(shù),它能夠?qū)⑤斎氲牧炼扔成錇閱蝹€特定輸出,這種方式很好地保持了增強圖像和原圖像之間的亮度一致性。如圖2 所示的計算ν的主要步驟,假設(shè)輸入圖像的頻率分布為fb=h(b),其中fb是亮度水平b的頻率。首先,裁剪大于預(yù)設(shè)參數(shù)μ的頻率(本文預(yù)設(shè)參數(shù)μ=0.12),以避免噪聲信號的放大。其次,如子圖(b)所示,被削波的頻率被均勻填充到每個亮度級別。最后,通過累積分布函數(shù)獲得ν,計算公式為:
圖2 計算亮度單值映射函數(shù)ν 步驟Fig.2 Main steps to compute the brightness mapping function ν
其中:cdfmax,cdfmin分別代表累積分布的最大值和最小值,L代表亮度級別的數(shù)量(RGB 圖像中通常為256)。如圖3 所示,MCIE 模塊為NYU Depth V2,ScanNet 室內(nèi)數(shù)據(jù)集中低光照區(qū)域帶來了更高的可見性和更多細(xì)節(jié),可以見到在室內(nèi)低光照區(qū)域亮度和對比度顯著改善,特別是在紅色框內(nèi)。此外,本文還將MCIE 模塊應(yīng)用在計算光度一致性損失時增強圖像。
圖3 MCIE 模塊圖像增強效果對比Fig.3 Comparison of image enhancement effect of MCIE module
本節(jié)共分為3.2.1 編碼器特征信息融合、3.2.2 編-解碼器特征信息融合兩小節(jié)。在3.2.1節(jié)中通過跳躍連接方式添加CLFA 模塊,在下采樣提取特征過程中,實現(xiàn)編碼器低層級與高層級間的特征信息融合。不僅增強了語義信息表達能力而且增強了編碼器輸出特征對幾何空間位置的內(nèi)在特征關(guān)聯(lián)性的保持能力。在3.2.2 節(jié)中同樣通過跳躍連接方式添加CLFA 模塊,在解碼上采樣過程中實現(xiàn)編碼器與解碼器層級間的特征信息融合,充分利用了編碼器層級中重要的特征信息,縮小了預(yù)測深度與真實深度的語義差距。通過編碼器、編-解碼器層級間特征信息融合,增強了深度估計網(wǎng)絡(luò)對特征信息的利用能力,改善了特征細(xì)節(jié)丟失嚴(yán)重等問題,有效地提升了網(wǎng)絡(luò)預(yù)測深度的精度。
3.2.1 編碼器特征信息融合
下采樣提取特征過程中,特征信息圖的分辨率由高到低,通道數(shù)由低到高變化。同時,特征信息也由具體逐漸變?yōu)槌橄?,?dǎo)致室內(nèi)場景內(nèi)在幾何空間關(guān)聯(lián)性逐漸變?nèi)?。為了使編碼器在提取特征過程中能夠更好地保持原始室內(nèi)圖像中的場景空間關(guān)系,提升網(wǎng)絡(luò)對幾何空間位置的內(nèi)在特征關(guān)聯(lián)性的保持能力,本文在編碼器網(wǎng)絡(luò)中添加如圖1 中典型雙層級形式的特征調(diào)整結(jié)構(gòu)。由4.5.1 節(jié)中表4 可知,這種典型雙層級形式的特征調(diào)整結(jié)構(gòu)實驗效果優(yōu)于圖4~圖5 中所示的典型單層級、三層級以及其他等形式。
圖4 單層級形式的特征調(diào)整結(jié)構(gòu)Fig.4 Structure of feature adjustment in single level
圖5 三層級形式的特征調(diào)整結(jié)構(gòu)Fig.5 Structure of feature adjustment in three levels
通過添加基于注意力機制[37]的CLFA 模塊,使層級間特征融合,極大地增強了編碼器特征信息圖中原始室內(nèi)場景的幾何空間位置關(guān)聯(lián)性。CLFA 模塊由Parallel adjustment 和Attention mechanism 兩部分構(gòu)成,如圖6 所示。Parallel adjustment 部分由兩個分支并聯(lián)組成,以減少直接疊加融合時可能會因為不同層級間的語義差距較大帶來負(fù)面影響。上分支由一個1×1 卷積層串聯(lián)最大池化層組成,1×1 卷積層用來提升輸入特征信息的通道數(shù),最大池化層用來縮小此特征信息圖尺寸。下分支為一個3×3 卷積層,兩個分支的輸出像素疊加生成特征信息圖F。為了使F能夠在重要的特征通道以及在通道方向上信息聚合多的位置分配到更大的權(quán)重,抑制不必要的特征信息,將其送入圖6 中Attention mechanism 部分。該部分由通道注意力機制(Channel Attention Mechanism,CAM)[38]和空間注意力機制(Spatial Attention Mechanism,SAM)[39]串聯(lián)組成。將F送入CAM,首先在空間維度上使用最大池化和平均池化操作對F處理得到兩個新特征塊,接著利用共享多層感知機(Multilayer Perceptron,MLP)分別學(xué)習(xí)特征塊中通道特征以及每個通道的重要性程度后將MLP的輸出直接疊加,最后使用Sigmoid 激活函數(shù)對疊加結(jié)果進行映射處理得到通道注意力權(quán)重,該權(quán)重與F相乘結(jié)果即為CAM 的輸出F',過程計算公式為:
圖6 跨層級特征調(diào)整模塊Fig.6 Cross-Level Feature Adjustment module
其中:σ為Sigmoid 激活函數(shù)映射處理。進一步地,將F'送入SAM,首先在通道維度上使用最大池化和平均池化操作對F'處理后,拼接得到的兩個新特征塊。然后使用一個7×7 卷積層和 Sigmoid 激活函數(shù)對拼接結(jié)果進行卷積、映射處理得到空間注意力權(quán)重,該權(quán)重與F'相乘結(jié)果即為SAM 的輸出F″,過程計算公式為:
其中:f7×7為上述7×7 卷積操作。本文在圖1 編碼器的第二層、第三層添加CLFA 模塊,拓寬了編碼器網(wǎng)絡(luò)結(jié)構(gòu)。將圖像依次通過7×7 卷積層、批標(biāo)準(zhǔn)化層、線性整流函數(shù)以及最大池化層,使之變成64 通道的高分辨率特征信息圖F1,然后送入ResNet18 中4 個BasicBlock 塊[33]進行下采樣處理,依次得到特征信息圖F2,F(xiàn)3,F(xiàn)4和F5,通道數(shù)分別為圖1 中的64,128,256,512,實現(xiàn)主干特征提取任務(wù)。將F2送入CLFA 模塊縮小尺寸、提升通道數(shù)以及分配特征信息權(quán)重后,與F3像素疊加融合的結(jié)果作為下一層輸入。同時將此結(jié)果送入CLFA 模塊得到輸出后,與F4像素疊加融合作為下一層輸入,以此完成本文深度估計的特征提取任務(wù)。
3.2.2 編-解碼器特征信息融合
解碼器對編碼器端輸出的多通道、低分辨率的特征信息(本文編碼器端輸出為9×12×512)通過上采樣、反卷積以及跳躍連接方式逐層提高特征信息圖的分辨率和降低通道數(shù),最后使用Sigmoid 激活函數(shù)映射處理獲得與原圖像尺寸一致的單通道預(yù)測深度圖。StructDepth[24]通過跳躍連接方式僅將相同層級編-解碼器的特征融合,雖一定程度上解決了架構(gòu)退化和梯度消失的問題,但沒有充分利用編碼器端的不同層級特征,造成特征信息的浪費,導(dǎo)致解碼輸出的預(yù)測深度圖與深度真值仍存在較大語義差距、深度不精確以及細(xì)節(jié)缺失嚴(yán)重等問題。為了使預(yù)測深度更精確,將編碼器每一層特征信息采用具有CLFA 模塊的跳躍連接方式,將這些特征分配不同權(quán)重后,按通道方向拼接到解碼器層級中融合信息。
如圖1 所示,解碼器與編碼器第5 層特征信息圖V5,F(xiàn)5實質(zhì)為同一特征信息,T2-T5,O2-O5分別表示解碼器F2-F5層上采樣結(jié)果以及CLFA 模塊輸出。解碼過程是對輸入的特征信息圖Vi先使用反卷積操作將通道數(shù)縮減至原來一半,再使用雙線性插值方法,上采樣使其尺寸擴大一倍變成特征信息圖Ti。同時,如表1 所示關(guān)系,將編碼器各層級的特征信息圖F1,F(xiàn)2,…,F(xiàn)i-1(2 ≤i≤5)送入各CLFA 模塊作為輸入(Input),根據(jù)圖6 中特征調(diào)整方法以及各輸入調(diào)整后結(jié)果(Result)的通道數(shù)總和與Ti通道數(shù)保持一致原則,對各輸入按比例調(diào)整其通道數(shù),然后在通道方向上拼接調(diào)整后結(jié)果獲得模塊輸出(Output)O2,O3,…,Oi(2 ≤i≤5),最后將Ti與通道數(shù)相同的Oi直接疊加融合結(jié)果作為解碼器第i-1 層輸出Vi-1。重復(fù)上述步驟,依次進行4 次解碼處理得到解碼器輸出,經(jīng)過Sigmoid函數(shù)映射處理獲得預(yù)測深度圖Dt。通過編-解碼器多層級特征融合,有效健壯了深度估計網(wǎng)絡(luò)利用特征的能力,使得預(yù)測深度精度更高、內(nèi)容更豐富以及細(xì)節(jié)更加清晰。
表1 解碼器網(wǎng)絡(luò)中CLFA 模塊相關(guān)參數(shù)關(guān)系Tab.1 Relationship between CLFA module related parameters in Decoder network
格拉姆矩陣相似性損失(Gramm Matrix Similarity Loss,GMSL)是受到圖像風(fēng)格遷移[40]啟發(fā)而來。我們認(rèn)為圖像矩陣中的每一個值都是來自于特定濾波器在特定位置的卷積結(jié)果,即每個值代表這個特征信息的強度。Gram Matrix的數(shù)學(xué)定義解釋為特征值之間的偏心協(xié)方差矩陣。也就是說,該矩陣實質(zhì)上表示的是圖像中特征信息之間的相關(guān)性,同時其對角線能夠體現(xiàn)每個特征在圖像中出現(xiàn)的頻率。因此,Gram Matrix 能夠用來很好地表達圖像的整體風(fēng)格即圖像風(fēng)格特征。本文將解碼輸出的預(yù)測深度圖Dt與利用共平面約束預(yù)測的平面深度圖Dplanet[24]看作是具有不同風(fēng)格的圖像,通過計算兩者的格拉姆矩陣相似性損失值,來衡量Dt與Dplanet之間的相似性程度,損失值越小,代表兩者相似性越高,進一步說明預(yù)測的Dt更接近于深度真值。GMSL作為一個額外的自監(jiān)督信號與StructDepth[24]中的自監(jiān)督信號共同約束本文網(wǎng)絡(luò),網(wǎng)絡(luò)通過前向傳播計算損失誤差值,然后通過反向傳播更新網(wǎng)絡(luò)中所有權(quán)值,直到計算的損失獲得最小值且收斂,較好地提升網(wǎng)絡(luò)預(yù)測深度的能力,使預(yù)測深度更加精確。
如圖7 所示的格拉姆矩陣相似性計算步驟:(1)將預(yù)測的不同風(fēng)格深度圖Dt和Dplanet分別通過同一編碼器提取特征(編碼器與深度估計網(wǎng)絡(luò)共享),編碼器端輸出代表兩個深度圖的風(fēng)格特征;(2)根據(jù)提取出來的風(fēng)格特征分別計算兩者的Gram Matrix—G1,G2;(3)將G1,G2由多維拉直轉(zhuǎn)換成一維特征向量f(G1),f(G2)[41];(4)計算兩者的余弦相似度。因此,格拉姆矩陣相似性損失約束計算公式為:
圖7 格拉姆矩陣相似性計算步驟Fig.7 Steps to calculate Gram matrix similarity
其中:G為提取深度圖的Gram Matrix 處理,f為將多維特征向量轉(zhuǎn)換為一維特征向量的處理,cos(·,·)為余弦相似度計算,定義可以表示為:
使用損失函數(shù)對模型進行優(yōu)化在單目深度估計網(wǎng)絡(luò)中是一項非常重要的環(huán)節(jié),越好的損失函數(shù)越能大幅提升深度估計模型的性能,當(dāng)前單目深度估計模型訓(xùn)練采用單目視頻序列的訓(xùn)練方式。在單目深度估計中,學(xué)習(xí)問題被認(rèn)為是一個視圖合成過程。通過使用預(yù)測深度圖Dt和相對姿態(tài)Tt→s執(zhí)行重投影處理,能夠從每個原圖像Is的視點重建目標(biāo)圖像It。預(yù)測深度圖Dt和相對姿態(tài)Tt→s分別由兩個神經(jīng)網(wǎng)絡(luò)Dt=?d(It)(本文深度估計網(wǎng)絡(luò))和Tt→s=?p(It,Is)(本文位姿網(wǎng)絡(luò))預(yù)測得到。此時,可以求得目標(biāo)圖像It的任意像素點pt和原圖像Is對應(yīng)的點ps,計算公式為:
其中:K為相機內(nèi)參矩陣。通過可微的雙線性采樣[42]操作s(·,·)能夠從原圖像Is中重建出目標(biāo)圖像It,計算公式為:
模型學(xué)習(xí)基于上述重建過程,即從原圖像重建目標(biāo)圖像,目標(biāo)是通過優(yōu)化?d和?p以產(chǎn)生更精確的輸出來減少重建誤差。根據(jù)L1 損失以及SSIM 圖像結(jié)構(gòu)相似性[43]來構(gòu)建光度一致性損失函數(shù)Lpe,計算公式為:
本文將α設(shè)為0.85。此外,本文3.1 節(jié)中在計算光度一致性損失時使用MCIE 模塊增強圖像,網(wǎng)絡(luò)的扭曲過程重新定義為:
因此,本文光度一致性損失函數(shù)變?yōu)椋?/p>
由于預(yù)測時存在著可能的不正確深度,這導(dǎo)致在給定相對姿態(tài)Tt→s的情況下不能完全正確地重建目標(biāo)圖像,為了更好地解決這種深度模糊問題,本文采用與MonoDepth2[10]一致的逐像素平滑損失和遮蔽光度損失,并對每個像素、比例和批次進行平均。計算公式為:
同時,本文采用了StructDepth[24]中的法向量損失函數(shù)Lnrom和共平面損失約束Lplane,因此總損失函數(shù)計算公式為:
其中:根據(jù)實驗效果,λ1,λ2,λ3,λ4分別取值為0.001,0.05,0.1,0.17,本文損失函數(shù)訓(xùn)練迭代優(yōu)化曲線如圖8 所示。
圖8 損失函數(shù)迭代優(yōu)化曲線Fig.8 Iterative optimization curve of loss function
本文使用室內(nèi)數(shù)據(jù)集NYU Depth V2[44],ScanNet[45]訓(xùn)練以及測試。NYU Depth V2 數(shù)據(jù)集是目前最大的RGB-D 數(shù)據(jù)集之一,包含了464個通過使用kinect-V1 傳感器捕獲的室內(nèi)場景。本文使用了官方所提供的方法對訓(xùn)練集以及測試集進行分割,即使用了249 個室內(nèi)場景作為訓(xùn)練集,余下215 個室內(nèi)場景用作測試集。ScanNet數(shù)據(jù)集包含1 513 個通過使用一個連接在iPad 上的深度相機拍攝捕捉的室內(nèi)場景,包含大約2.5 M 的RGB-D 視頻,本文使用StructDepth[24]提出的分割方法進行實驗。
本文網(wǎng)絡(luò)模型在目前主流的深度學(xué)習(xí)框架PyTorch 上搭建的,并在一張內(nèi)存為24 GB 的NVIDIA GeForce GTX 3090 GPU 上進行訓(xùn)練與測試,根據(jù)網(wǎng)絡(luò)模型以及GPU 性能,將批尺寸(Batch size)設(shè)置為18,初始學(xué)習(xí)率設(shè)置為1×10-3。在訓(xùn)練過程中,網(wǎng)絡(luò)模型采用Adam 算法優(yōu)化,權(quán)重衰減參數(shù)分別設(shè)置為β1=0.9,β2=0.999,共訓(xùn)練了50 個Epoch。
為了準(zhǔn)確分析模型的精度,本文使用了Eigen 中提出的評價指標(biāo)[7],這也是當(dāng)前主流算法采取的深度估計精度評價方法,其方法有:絕對相對誤差(Absolute Relative Error,AbsRel)、平方相對誤差(Square Relative Error,sqRel)、均方根誤差(Root Mean Square Error,RMSE)以及對數(shù)空間下的均方根誤差(log-root-mean-square error,RMSElog), 計算公式為:
其中:di是像素i的預(yù)測深度值,d*i表示真實的深度值,N為具有真實值的像素總數(shù),thr為閾值。精度計算是對多個圖像中所有的像素點分別計算預(yù)測深度與真實深度之比并取最大值,最后將結(jié)果賦值給σ。統(tǒng)計σ小于閾值thr的像素點占總像素點的比例即為預(yù)測正確率(Accuracies),其值越接近于1,預(yù)測效果越好。thr一般取值為1.25,1.252,1.253。
4.4.1 NYU Depth V2 數(shù)據(jù)集結(jié)果
為了驗證本文模型的有效性,按照4.1 節(jié)所述方法分割訓(xùn)練集與測試集、4.2 節(jié)實驗參數(shù)設(shè)置進行實驗。在NYU Depth V2 數(shù)據(jù)集上實驗結(jié)果如表2 所示,本文模型與現(xiàn)有主要的幾種室內(nèi)自監(jiān)督單目深度估計方法進行比較,表中指標(biāo)數(shù)值加粗代表實驗最優(yōu)的結(jié)果。
表2 本文模型與現(xiàn)有主要方法在NYU Depth V2 數(shù)據(jù)集上的實驗結(jié)果對比Tab.2 Comparison of experimental results between proposed model and existing main methods on NYU Depth V2 dataset
從表2 可以看出,相比于其他室內(nèi)自監(jiān)督單目深度估計方法,本文模型在4.3 節(jié)所述的6 個單目深度估計的評價指標(biāo)中,都達到了目前最優(yōu)的效果。其中,在衡量單目深度估計效果最重要的指標(biāo)δ<1.25 上,相比StructDepth[24]模型提高了0.6%,RMSE 指標(biāo)下降了1.0%,Abs Rel 指標(biāo)下降了0.4%,RMS Log10 指標(biāo)下降0.1%,說明本文提出的單目深度估計網(wǎng)絡(luò)模型在現(xiàn)有主要的室內(nèi)自監(jiān)督單目深度估計方法中效果最佳、預(yù)測的深度更準(zhǔn)確。將預(yù)測深度可視化,預(yù)測深度效果如圖9 所示,與目前兩種主要的室內(nèi)自監(jiān)督單目深度估計方法P2Net[12]和StructDepth[24]比較,本文模型很好地改善了物體邊緣模糊、不清晰以及細(xì)節(jié)缺失的問題,預(yù)測深度值更接近于深度真值(Ground truth),更好地解決了深度模糊的問題。尤其是在圖9 中紅色框內(nèi)(彩圖見期刊電子版),預(yù)測的柜面、墻面拐角、臺燈以及花瓶外形輪廓深度更加準(zhǔn)確。
圖9 本文模型與現(xiàn)有主要方法在NYU Depth V2 數(shù)據(jù)集上的預(yù)測深度圖對比Fig.9 Comparison of predicted depth maps between proposed model and existing main methods on NYU Depth V2 dataset
4.4.2 ScanNet 數(shù)據(jù)集結(jié)果
本文使用在NYU Depth V2 數(shù)據(jù)集上訓(xùn)練的模型來評估推廣到其他室內(nèi)數(shù)據(jù)集(本文使用ScanNet 數(shù)據(jù)集)的方法,按照4.1 節(jié)所述方法分割訓(xùn)練集與測試集、4.2 節(jié)實驗參數(shù)設(shè)置進行實驗。在ScanNet 數(shù)據(jù)集上實驗結(jié)果如表3 所示,本文模型與現(xiàn)有主要的幾種室內(nèi)自監(jiān)督單目深度估計方法進行比較,表中指標(biāo)數(shù)值加粗為最優(yōu)的結(jié)果。
表3 本文模型與現(xiàn)有主要方法在ScanNet 數(shù)據(jù)集上的實驗結(jié)果對比Tab.3 Comparison of experimental results between the model in this paper and existing main methods on ScanNet dataset
在表3 中,本文模型在6 個評價指標(biāo)中,與現(xiàn)有主要的幾種室內(nèi)自監(jiān)督算法相比,也同樣達到了目前最佳預(yù)測效果,在最重要的δ<1.25 指標(biāo)上,相比StructDepth[24]模型提高了0.6%,RMSE 指標(biāo)下降了0.9%,Abs Rel 指標(biāo)下降了0.3%,RMS Log10 指標(biāo)下降0.1%。將本文模型和P2Net[12]、StructDepth[24]模型的深度預(yù)測效果可視化如圖10 所示(彩圖見期刊電子版),本文模型進一步改善了預(yù)測深度時物體輪廓模糊、細(xì)節(jié)丟失等問題。尤其是在圖中紅色框內(nèi),本文預(yù)測乒乓球臺、椅子等物體輪廓的效果,細(xì)節(jié)更豐富、更接近真實深度。
4.5.1 跨層級形式消融實驗
為了驗證模塊“CLFA”的不同添加形式對本文室內(nèi)自監(jiān)督單目深度估計網(wǎng)絡(luò)的性能提升效果,本文在編-解碼器層級融合結(jié)構(gòu)形式不變的情況下,進一步地對編碼器層級不同融合結(jié)構(gòu)形式進行了消融實驗。如表4 所示,方法Single Level,Double Levels 以及Three Levels 分別表示在編碼器中同時添加僅跨單層級、跨雙層級、跨三層級的結(jié)構(gòu)形式。位置F1,F(xiàn)2,F(xiàn)3,F(xiàn)4分別表示跨編碼器的F1,F(xiàn)2,F(xiàn)3,F(xiàn)4層級添加CLFA 模塊。圖1 表示同時跨F3,F(xiàn)4雙層級添加CLFA 模塊,圖4 表示僅跨F3單層級形式,圖5 表示同時跨F2,F(xiàn)3,F(xiàn)4三層級形式,表中指標(biāo)數(shù)值加粗為實驗最優(yōu)結(jié)果。從表4 可以看出,并不是任意形式添加CLFA 模塊就能提升網(wǎng)絡(luò)性能,添加僅跨F1,F(xiàn)2,F(xiàn)3單層級融合形式在最重要的δ<1.25 指標(biāo)上,相比表中 Baseline 方法StructDepth[24]模型實驗指標(biāo)反而下降了0.4%,0.2%,0.1%。相對于添加跨單層級、三層級形式,跨雙層級形式的實驗效果更好,其中同時跨F3,F(xiàn)4雙層級融合形式實驗效果最佳,在δ<1.25 指標(biāo)上能夠提高0.4%。不同添加形式的實驗效果不一,出現(xiàn)表中實驗結(jié)果,其可能原因是一方面跨過多的層級會干擾高維特征圖的輸出,另一方面過低的層級不能保證有效信息的導(dǎo)入,而實驗效果更好的雙層級融合形式可以在低維干擾和信息導(dǎo)入之間達到平衡狀態(tài)。根據(jù)實驗結(jié)果,添加僅跨單層級形式時,僅跨F1層級的實驗效果最差;添加跨雙層級形式時,其實驗效果與分別僅跨單層級形式時效果的疊加呈正相關(guān)關(guān)系;添加跨三層級形式時,實驗效果不如跨雙層級形式。綜上所述,添加含有F1這種最低層級的跨雙層級、三層級形式時最容易干擾正確特征輸出,其實驗效果不如本文最終添加的跨F3,F(xiàn)4雙層級形式表現(xiàn)優(yōu)秀,因此本文只對僅跨F1層級進行了實驗。
表4 NYU Depth V2 數(shù)據(jù)集上多種跨層級形式的特征融合結(jié)構(gòu)消融實驗Tab.4 Ablation experiment of Several Cross-Level feature fusion structure on NYU Depth V2 dataset
4.5.2 創(chuàng)新模塊消融實驗
為了驗證本文提出的各創(chuàng)新模塊對室內(nèi)自監(jiān)督單目深度估計的有效性,本文在NYU Depth V2 數(shù)據(jù)集上進行了消融實驗。如表5 所示,模塊“CLFA”,“GMSL”和“MCIE”分別對應(yīng)添加跨層級特征調(diào)整模塊、格拉姆矩陣相似性損失函數(shù)和映射一致性圖像增強模塊。表中√表示實驗中添加此創(chuàng)新模塊,×表示沒有添加此創(chuàng)新模塊,表中指標(biāo)數(shù)值加粗表示實驗最優(yōu)的結(jié)果。實驗結(jié)果表明,在最重要的δ<1.25 指標(biāo)上,模塊“CLFA”相比表中Baseline 方法—Struct-Depth[24]模型實驗效果提高了0.4%,模塊“GMSL”提高了0.3%,模塊“MCIE”提高了0.2%,本文所提出的每個創(chuàng)新模塊均能夠不同程度地提升預(yù)測深度的正確率。并且,不論是其創(chuàng)新模塊兩兩組合添加還是三者組合添加都能優(yōu)于單獨添加時的實驗效果,其中三者組合添加實驗效果最佳,在最重要的δ<1.25 指標(biāo)上提高了0.6%。
表5 NYU Depth V2 數(shù)據(jù)集上不同創(chuàng)新模塊的消融實驗Tab.5 Ablation experiment of different innovative modules on NYU Depth V2 dataset
針對目前室內(nèi)自監(jiān)督單目深度估計網(wǎng)絡(luò)預(yù)測的深度圖像存在深度不準(zhǔn)確、物體邊緣模糊以及細(xì)節(jié)丟失嚴(yán)重等問題,本文提出了基于層級特征融合的室內(nèi)自監(jiān)督單目深度估計的網(wǎng)絡(luò)模型。該網(wǎng)絡(luò)模型通過引入映射一致性圖像增強模塊,提高了室內(nèi)低光照區(qū)域可見性,改善了預(yù)測深度時出現(xiàn)細(xì)節(jié)丟失和模糊假平面惡化模型的問題。同時,在編碼器和編-解碼器中仔細(xì)設(shè)計含有基于注意力機制的跨層級特征調(diào)整模塊的跳躍連接形式,實現(xiàn)了多層級特征信息融合,提高了深度估計網(wǎng)絡(luò)的特征利用能力,縮小了預(yù)測深度與真實深度的語義差距。在網(wǎng)絡(luò)自監(jiān)督約束方面,提出圖像格拉姆矩陣相似性損失作為額外的自監(jiān)督信號進行損失約束,進一步增加了預(yù)測深度的準(zhǔn)確性。本文在NYU Depth V2 和ScanNet 室內(nèi)數(shù)據(jù)集上訓(xùn)練與測試,正確預(yù)測深度像素的比例分別能夠達到81.9%和76.0%。實驗結(jié)果表明,在相同的評價指標(biāo)下,本文模型在所對比現(xiàn)有的室內(nèi)自監(jiān)督單目深度估計方法中性能最佳,更好地保留了物體細(xì)節(jié)信息,改善了預(yù)測物體邊緣模糊問題,提高了預(yù)測深度的精度,從而有效增強了單目相機對室內(nèi)復(fù)雜場景的三維理解能力。雖然本文模型在對比現(xiàn)有方法中指標(biāo)得到了提升,但是仍存在邊緣模糊、細(xì)節(jié)丟失等問題,與真實深度仍有差距。因此,下一步工作將利用結(jié)構(gòu)相似度參數(shù)與圖像梯度相結(jié)合作為評價指標(biāo)來評判預(yù)測深度的優(yōu)劣,以進一步改善預(yù)測深度物體邊緣模糊、語義差距較大的現(xiàn)狀。