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