王培彪
(青島大學計算機科學技術(shù)學院,山東 青島 266071)
從單幅 RGB圖像中估計場景中物體深度的方法稱為單目深度估計,近年來機器學習方法在物體識別[1]、自然語言處理及場景理解等領域得到廣泛應用?;趥鹘y(tǒng)機器學習的單目深度估計方法一般使用馬爾可夫隨機場(MRF)或條件隨機場(CRF)對場景中的物體深度關(guān)系進行估計[2],隨著卷積神經(jīng)網(wǎng)絡(CNN)[3]以及深度學習技術(shù)日漸成熟,深度學習方法在單目圖像深度估計中開始被研究與應用。深度學習方法主要分為有監(jiān)督型和無監(jiān)督型兩類,本文介紹了有監(jiān)督型神經(jīng)網(wǎng)絡架構(gòu)搜索技術(shù)(NAS)[4-8]的模型與算法,研究并實現(xiàn)了在目前主流數(shù)據(jù)集SceneFlow上的算法測試驗證結(jié)果,探討了目前研究中存在的難點與不足,在此基礎上進行總結(jié)并提出優(yōu)化方案。
2006年,深度學習的概念最早由Hinton[9]提出,卷積神經(jīng)網(wǎng)絡(CNN)利用卷積核對圖像特征進行提取,通過神經(jīng)網(wǎng)絡對特征逐層抽象?;趩文繄D像的深度學習估計方法,可以分為有監(jiān)督和無監(jiān)督兩類。
2014年,Eigen[10]等人首次實現(xiàn)將深度學習技術(shù)應用于單目深度估計,他們提出使用兩種尺度的神經(jīng)網(wǎng)絡結(jié)構(gòu)對單張圖片深度進行估計的方法,其中粗尺度的網(wǎng)絡用于預測單張圖片的全局深度,細尺度的網(wǎng)絡用于優(yōu)化單張圖片的局部細節(jié)。
2016年,Liu[11]等人把CNN與CRF相結(jié)合,通過能量函數(shù)計算最大后驗概率,估計單幅圖像的深度。上述方法在網(wǎng)絡的訓練階段都需要圖像的真實參考深度圖,屬于監(jiān)督型學習。Garg[12]等人提出了無監(jiān)督框架,通過使用傳統(tǒng)的雙目立體匹配技術(shù)構(gòu)建目標函數(shù),然后反向訓練深度學習網(wǎng)絡。
在單目圖像深度估計場景中,監(jiān)督學習方法通過向網(wǎng)絡輸入真實的參考深度圖來訓練網(wǎng)絡,相比于無監(jiān)督學習方法,監(jiān)督學習方法可以獲得更高的精度,因此有大量研究人員從網(wǎng)絡結(jié)構(gòu)、損失函數(shù)、約束條件等角度展開大量研究。
2019年,谷歌和斯坦福大學合作,推出了Auto-DeepLab[13],將神經(jīng)網(wǎng)絡架構(gòu)搜索技術(shù)用于圖像分割的領域里。Auto-DeepLab不僅可以參數(shù)化Cell,而且可以動態(tài)搜索網(wǎng)絡層最優(yōu)化路徑。
神經(jīng)網(wǎng)絡架構(gòu)搜索(neural architecture search,NAS)技術(shù)是一種通過算法自動搜索針對解決給定任務最優(yōu)神經(jīng)網(wǎng)絡架構(gòu)的方法,在精度和效率上目前已超過傳統(tǒng)依靠專家經(jīng)驗設計的網(wǎng)絡模型方式。
Liu等人提出Auto-DeepLab框架將神經(jīng)網(wǎng)絡架構(gòu)搜索技術(shù)應用于圖像分割領域,神經(jīng)網(wǎng)絡架構(gòu)搜索空間分為Network級和Cell級搜索,如圖1所示為 Network級搜索路徑,橫坐標代表網(wǎng)絡層序號,縱坐標代表通道數(shù)倍數(shù)。白色節(jié)點代表固定的主干網(wǎng)絡層,藍色節(jié)點代表可選的Cell,箭頭的方向指示可搜索路徑,從左到右搜索到的最優(yōu)路徑為搜索空間Network級最優(yōu)搜索路徑。藍色節(jié)點Cell也是通過搜索得到,比如圖中黃色虛線所框選的三個Cell,如圖2所示為其Cell級搜索路徑,其中分別代表黃色框中左側(cè)、中間、右側(cè)三個藍色 Cell。黃色箭頭的計算值使用αj→i參數(shù)關(guān)聯(lián),右側(cè)Cell的計算結(jié)果通過圖1灰色箭頭方向可知,右側(cè)Cell的最終計算值分別與左上、左側(cè)、左下三個方向的計算值有關(guān),在此分別使用關(guān)聯(lián)。
Auto-DeepLab通過將網(wǎng)絡空間 Network和Cell級搜索參數(shù)化,Cell結(jié)構(gòu)參數(shù)可以表示為:
Network架構(gòu)參數(shù)表示為:
Network架構(gòu)參數(shù)需要滿足:
在優(yōu)化α、β參數(shù)時使用可微架構(gòu)搜索DARTS方法,把數(shù)據(jù)集分成訓練集和驗證集,分別輪流訓練:
1. 固定架構(gòu)參數(shù)α和β,用訓練集訓練網(wǎng)絡權(quán)重參數(shù)ω
2. 固定網(wǎng)絡權(quán)重參數(shù)ω,用驗證集訓練架構(gòu)參數(shù)α和β
Auto-DeepLab框架神經(jīng)網(wǎng)絡架構(gòu)搜索結(jié)果如圖3所示。
基于Auto-Deeplab神經(jīng)網(wǎng)絡架構(gòu)搜索技術(shù),本節(jié)我們對單目深度估計實現(xiàn)中的Cell級架構(gòu)搜索進行描述。如圖4所示,單目深度估計中Cell級架構(gòu)搜索主要分為:兩個輸入節(jié)點三個中間節(jié)點一個輸出節(jié)點架構(gòu)參數(shù)α。
Cell結(jié)構(gòu)參數(shù)可以表示為:
節(jié)點是構(gòu)成Cell的基本元素,每個節(jié)點都是一個張量,在Cell級架構(gòu)搜索過程中,每個節(jié)點是通過特定操作得到的多通道圖像大小的特征圖。我們設置了兩種特定操作:1)3×3可分離卷積 2)跳躍連接,如圖 4所示,每個α架構(gòu)參數(shù)定義了兩種操作的權(quán)重值。與Auto-Deeplab神經(jīng)網(wǎng)絡架構(gòu)搜索技術(shù)相同,如圖1所示,當前Cell的兩個輸入節(jié)點分別來自于網(wǎng)絡中左側(cè)前一個和上一個Cell的輸出值。在單目深度估計過程中,我們增加了一個深度值維度,計算量比Auto-Deeplab顯著增加,為此我們除了減少特定操作種類之外,對比圖2和圖4可以發(fā)現(xiàn),中間節(jié)點數(shù)量減少為3個,這種通過空間換時間的方式,可以明顯加快高維數(shù)據(jù)量的計算速率。
在單目深度估計神經(jīng)網(wǎng)絡架構(gòu)搜索過程中,不僅要通過Feature Net輸出多通道圖像大小的特征圖,還要在特征圖基礎上添加一維深度信息,通過Matching Net最終輸出深度圖。
β是網(wǎng)絡架構(gòu)參數(shù),即是通過β參數(shù)實現(xiàn)網(wǎng)絡架構(gòu)參數(shù)化,獲得最優(yōu)路徑。
Network級架構(gòu)參數(shù)表示為:
Feature Net架構(gòu)搜索路徑如圖5所示,黃框計算l=4,s=12的Network級架構(gòu)參數(shù)slH,分別對應紅、綠、藍三條路徑的權(quán)值,三條路徑選擇是一個離散問題,由于離散問題的搜索空間無法直接使用梯度下降法進行優(yōu)化,為了使路徑選擇的搜索空間連續(xù),我們求取各種路徑選擇權(quán)值的softmax值,將離散搜索空間轉(zhuǎn)變?yōu)檫B續(xù)搜索空間問題。
Matching Net架構(gòu)搜索路徑如圖6所示,將Feature Net輸出特征圖添加一維深度信息,分別取不同深度值,然后再將左右圖像輸出值合并,為了更好的獲取深度信息,與Feature Net相比網(wǎng)絡層數(shù)增大一倍變?yōu)?2層,與Auto-DeepLab處理的數(shù)據(jù)相比不僅維度增加,特征圖面積也增大一倍,二維卷積核變?yōu)槿S卷積核,計算數(shù)據(jù)量顯著增加,在Cell級架構(gòu)搜索過程中減少操作數(shù)和中間計算節(jié)點,可以有效提高Matching Net架構(gòu)搜索路徑效率。
3.3.1 對比分析效果
在神經(jīng)網(wǎng)絡架構(gòu)搜索方法中,α、β參數(shù)為動態(tài)可優(yōu)化參數(shù),使用可微架構(gòu)搜索DARTS方法,把數(shù)據(jù)集分成訓練集和驗證集,在每次迭代中,首先固定架構(gòu)參數(shù)α和β,用訓練集訓練網(wǎng)絡權(quán)重參數(shù)ω,然后固定網(wǎng)絡權(quán)重參數(shù)ω,繼續(xù)用訓練集訓練架構(gòu)參數(shù)α和β,最后計算每個 epoch總誤差。訓練集 epoch結(jié)束后,使用驗證集驗證訓練模型的平均每次迭代誤差值。
在傳統(tǒng)固定架構(gòu)神經(jīng)網(wǎng)絡方法中,α、β參數(shù)為固定隨機參數(shù),同樣使用可微架構(gòu)搜索DARTS方法,把數(shù)據(jù)集分成訓練集和驗證集,在每次迭代中,只用訓練集訓練網(wǎng)絡權(quán)重參數(shù)ω,最后計算每個epoch總誤差。訓練集epoch結(jié)束后,使用驗證集驗證訓練模型的平均每次迭代誤差值。
實驗所用顯卡為RTX3060,顯存12G,數(shù)據(jù)集選用SceneFlow數(shù)據(jù)集,實驗數(shù)據(jù)如圖7、8所示,神經(jīng)網(wǎng)絡架構(gòu)搜索方法與傳統(tǒng)固定架構(gòu)神經(jīng)網(wǎng)絡方法相比,訓練和驗證誤差都較小,盡管每次迭代計算量較大,但是損失函數(shù)的降低速率更快。
3.3.2 估計測試效果
如圖 9所示,左圖為神經(jīng)網(wǎng)絡架構(gòu)搜索技術(shù)單目深度估計圖,計算時間分別為3.72s和4.11s,圖像大小 576×960,神經(jīng)網(wǎng)絡估計的深度值范圍為0到192,將深度灰度圖轉(zhuǎn)換為RGB圖后,其中R值越大代表深度值越小,B值越大代表深度值越大。
本文基于Auto-Deeplab的神經(jīng)網(wǎng)絡架構(gòu)搜索技術(shù),研究并實現(xiàn)了在單目深度估計問題領域應用。通過實驗與傳統(tǒng)固定架構(gòu)神經(jīng)網(wǎng)絡方法對比,驗證了神經(jīng)網(wǎng)絡架構(gòu)搜索技術(shù)在單目深度估計領域的優(yōu)越性,并將深度估計圖轉(zhuǎn)換為RGB圖進行顯示,基本能夠估計出場景中物體的不同深度。由于數(shù)據(jù)集的質(zhì)量在很大程度上決定了模型的魯棒性和泛化能力,SceneFlow的數(shù)據(jù)集來自于虛擬場景,如何提高模型的泛化能力是我們以后研究的重要方向。
同時,在 Matching Net架構(gòu)搜索路徑和優(yōu)化權(quán)值過程中,由于處理帶有深度信息更高維的數(shù)據(jù),計算量顯著增加,如何提高算法效率,并得到更精確細致的深度信息也是我們研究的重要方向。