深入研究自監督單目深度估計 Monodepth2

2022-03-08 12:32:45 字數 3477 閱讀 9204

單目深度估計模型monodepth2對應的**為digging into self-supervised monocular depth estimation,由倫敦大學學院提出,這篇**的研究目標是從單目rgb影象中恢復出對應的深度,由圖1所示:該網路可以從單目影象中恢復對應的深度,圖中不同顏色代表不同的深度。

圖1 monodepth深度估計圖

目前單目深度估計的難點,同時也是本**著重解決的方向:

1、影象序列中存在遮擋。

2、當場景中發生物體運動的情況,如場景中運動的車輛,此時影象序列不僅存在因相機位姿而產生的影象改變,還存在因運動物體而產生的影象亮度的改變

從理論上說:在未給定第二幀影象的情況下估計影象對應的絕對或相對深度值是乙個病態問題,因為無法通過構建三角化求解對應深度。然而,從直覺上說:人類通過在現實場景中生活、學習,獲得了單眼估計深度的能力。因此,模擬人類的學習能力,利用深度學習技術,從單目影象中獲取對應的深度是可行的。該篇**聯合相機位姿估計與單目深度估計兩項任務,使單目深度估計成為了可能。具體來說便是:首先利用單目深度估計網路進行逆深度估計,需要注意的是:該逆深度被限定在0與1之間,也就是說,該網路估計的為相對逆深度。然後進行相機位姿估計。最後利用相機位姿與視差計算亮度投影誤差,作為網路模型的損失函式,利用梯度下降進行引數更新。接下來,本文將分三部分對monodepth2模型進行介紹,分別是monodepth2中的逆深度估計模組,相機位姿pose估計模組,以及訓練中使用的損失函式。

一、逆深度估計模組

該模組的作用是從單目影象中估計影象每個畫素點的逆深度,在求解出逆深度之後,只需要對其取倒數便可獲取對應的深度。這裡需要說明,估計出來的逆深度被限定在0到1之間,與以真實深度存在乙個比例因子,因此只可表示相機與場景的相對距離。該深度估計模組又可分為兩個子模組,分別為特徵編碼子模組與特徵解碼子模組。特徵編碼子模組採用res18模型結構,對輸入影象進行32倍下取樣,共生成5級特徵,級數越高,特徵空間解析度越低(表示能力越強),但特徵個數越多(對應通道部分)。特徵解碼子模組與u-net解碼模組部分一致,從第5級開始,聯合特徵編碼子模組中相同解析度的特徵進行深度估計,該模組輸出4級逆深度map(第五級因空間解析度過低而不求解對應的逆深度),級數越低,空間解析度越大,最大的空間解析度與輸入影象保持一致。

二、相機位姿pose估計模組

該模組的作用為:由連續幀之間影象的變化情況,估計出相機之間的位姿(相機的運動情況)。該模組有兩種處理情況,以下將對這兩種情況分別介紹。

2.1 連續幀情況

首先進行符號的說明,用-1代表進行逆深度估計影象的前一幀影象,1代表進行逆深度估計影象的後一幀影象,0代表進行逆深度估計的當前影象。在該情況下利用相機位姿估計模組分別估計:從前一幀影象-1到當前影象0之間的位姿,與從當前影象0到後一幀影象1之間的位姿。

2.2 雙目情況

同樣進行符號說明,用0代表進行逆深度估計的當前影象(左目影象),"s"代表當前0影象對應的右目影象。在該情況下,因雙目相機的位姿已固定,因此位姿也已固定(不需要利用pose估計模組進行估計)。

2.3 相機位姿模組結構

該模組同樣分為特徵編碼子模組與特徵解碼子模組,其中該模組中的特徵編碼子模組與深度估計模組中的特徵編碼子模組結構一致,但引數獨立,同樣為res18模型結構。因相機位姿求取的是影象連續幀之間的剛性運動,因此在該**中,利用空間解析度最低的第5級特徵(抽象能力最強)輸入進對應該模組的特徵解碼子模組來進行位姿估計。位姿解碼子模組為3層卷積結構,對輸入的第5級特徵進行解碼,並回歸出對應每個畫素點的運動資訊。例如,位姿估計網路的輸入為(256,6,20),那麼經過解碼回歸之後輸出的特徵為(12,6,20)。對維度1(對應長),維度2(對應寬)求取均值可得連續幀之間的軸角與平移向量。在求得軸角後可通過羅德里格旋轉公式求取旋轉矩陣,如下圖2所示。

圖2 羅德里格旋轉公式

三、訓練中使用的損失函式

本**的創新點集中在對損失函式的改進。分別提出了:1.一種適用於單目遮擋情況下的匹配損失函式。2.一種在單目情況下檢測相機間有無運動的標記方法。3.一種多尺度的匹配損失函式。以下將對這三種情況分別進行**。

3.1 一種適用於單目遮擋情況下的匹配損失函式

絕大多數單目深度(也包括光流與立體匹配)無監督方法都採用亮度投影誤差(photometric reprojection error)作為訓練的損失函式,亮度投影誤差被定義為:利用深度與相機位姿對源影象進行取樣,並與目標影象進行比對之後得到的誤差,如下圖3所示

具體來說便是:利用相機位姿與深度獲得取樣座標,利用取樣座標對源影象(-1或1號影象)進行取樣,在未發生遮擋的情況下,取樣後的影象應與目標影象(0號影象)在同位置的畫素點亮度保持一致,這樣在訓練過程中,學習到使得取樣影象與目標影象亮度值趨於一致的深度與相機位姿,計算該深度與相機位姿的模型引數即為最優引數。然而現實場景複雜多變,存在大量遮擋情況,在遮擋情況下,亮度投影誤差會失效,因為取樣之後的影象畫素點發生了遮擋,對亮度投影誤差進行簡單的求取平均操作無法有效衡量該區域的匹配情況,如圖5所示。

圖5 遮擋情況示意圖

因此,本**對此種情況做出了改進,用取最小值操作取代取平均操作,如此做法可使亮度投影誤差函式忽略遮擋處不正確的亮度值,進而使模型專注非遮擋區域的計算,整個計算過程如下圖5所示:

圖5 **中提出的最小化亮度守恆損失函式

3.2 一種在單目情況下檢測相機間有無運動的標記方法

單目深度估計需要進行如下假設:場景靜止、相機運動。如訓練集中存在使此假設不成立的影象序列,會嚴重影響網路的精度。因此,本文利用一種檢測相機間有無運動的標記方法,剔除影象序列中未發生運動的畫素點。過程如下圖6所示:

圖7 影象序列中靜止點視覺化圖

圖中黑色畫素點為靜止點,需要從整個損失函式中剔除。

3.3 一種多尺度的匹配損失函式

此方法過程比較簡單,即對逆深度估計模組估計出的4級逆深度map進行上取樣到與輸入同尺寸,並對上取樣之後的4級逆深度map求取損失函式。

四、 總結

本文對單目深度估計模型monodepth2的主要計算過程進行了介紹,通過以上三個步驟的改進,該模型達到state-of-the-art,因此可作為一般深度估計模型的baseline方法。

備註:作者也是我們「3d視覺從入門到精通」特邀嘉賓:乙個超乾貨的3d視覺學習社群

flex Bindable深入研究

bindable 元資料標籤,它在 中的作用就是向編譯器提供如何編譯程式的資訊。它的最大作用是使程式元件間的資料同步變得容易。在開發中通常用上bindable作用在檢視控制項上,如給它繫結乙個物件,則以後只需要在邏輯層更改這個物件的值,則檢視層的控制項資料會自動更新 同步 而不再需要手動去更新檢視。...

URLRequest深入研究

urlrequest 的乙個例項 html view plain copy create the request.所構建的nsurlrequest具有乙個依賴於快取響應的特定策略,cachepolicy取得策略,timeoutinterval取得超時值 nsurlrequest therequest...

深入研究AsyncTask

asynctask提供了一種在後台執行操作而在ui執行緒顯示結果的方式,而且開發者不必操作執行緒或者handler.乙個asynctask定義了三種泛型分別是params,progress,result,還有四個函式分別是onpreexecute doinbackground onprogressu...