單目深度估計 | Learning Depth from Monocular Videos using Direct Methods


Learning Depth from Monocular Videos using Direct Methods

會議: CVPR 2018

標題:《Learning Depth from Monocular Videos using Direct Methods》

論文鏈接: http://openaccess.thecvf.com/content_cvpr_2018/papers/Wang_Learning_Depth_From_CVPR_2018_paper.pdf

摘要

利用CNN的最新進展預測單個圖像的深度,越來越引起視覺界的興趣
使用非監督的策略從單張圖片中學習深度圖非常的具有吸引力,因爲它可以利用大量且種類豐富的單目視頻數據庫,無需標註真實的場景和深度信息。在之前的工作中,必須將確定單獨的姿態和深度卷積神經網絡分類器聯合起來確定輸出的測光誤差最小化。受直接視覺測距法(DVO)最新進展的啓發,我們認爲深度卷積神經網絡預測器可以在沒有姿勢CNN預測器的情況下學習。此外,我們還根據經驗證明,與使用單目視頻進行訓練的最新技術相比,結合可微分的DVO實現以及新的深度歸一化策略,可以顯著提高性能。

1. 論文主要貢獻:

首先,從理論上描述和實證上論證了當前單目方法中尺度模糊的原因。具體地說,是在訓練中深度正則化的使用導致了尺度敏感性,受直接視覺測距法相關工作的啓發,我們提出了一種簡單的標準化策略,避免了許多這些問題,並顯著提高了性能。(見圖1可以定性比較)

第二,我們認爲學習一個額外的姿勢預測CNN(我們在這裏稱之爲姿勢CNN)不是從單目視頻用CNN估計深度最有效的策略。Zhou等人使用的Pose-Cnn,沒有充分利用攝像機姿態和深度預測之間的關係,忽略了從深度進行姿態估計是一個具有已知的幾何特性和良好的算法的值得研究得好問題。相反,我們在框架中引入一個直接視覺測距(DVO)位姿預測器。因爲:1)它不需要可學習的參數。2)在輸入密集深度地圖和輸出預測位姿之間建立一個直接聯繫,3)它是從相同的圖片中得到重建損失,用來最小化我們全部的非監督訓練基準。爲了將DVO引入端到端的訓練,我們提出了DVO的一種可微分實現(DDVO模塊),使到達攝像機姿態預測器的後傳播信號可以傳播到深度預測器中。

最後,由於DVO是基於二階梯度下降的方法,一個好的初始化點可以得到更好的結果。因此,我們沒有從同一姿勢啓動DDVO模塊,而是提出了一個混合的訓練過程,使用預先訓練的姿態CNN來提供初始化姿態。從經驗上證明,這種混合方法比單用POSE-CNN或DDVO訓練提供更好的性能,並達到了Gordard等人的結果,其結果在Kitti數據集上用標定的雙目鏡測試的最先進方法。

符號:小寫黑體符號(如x)表示矢量,大寫黑體符號(如W)表示矩陣,大寫書法符號(如L)表示圖像。我們還使用符號L(x):R^^ 2→R^^ k來表示k通道圖像的子像素位置x=[x,y]處的採樣。

此算法目前的不足:
1) 像人和摩托車這種動態場景效果不太好
2) 路面過度曝光,倒是大面積的紋理減少的情況
3) 大片紋理區域少的開闊場景

在這裏插入圖片描述

2. 從視頻中學習預測深度

我們的目標是學習一個被θd參數化的函數fd(由CNN建模),θd是從單張圖像L中預測到的逆深度圖D,我們希望從更廣泛的沒有真實深度的可用數據源中學習,而不是有監督的學習。此外,我們不再侷限於被標定好的雙目攝像頭,而是採用更普通的單目視頻序列。

在介紹我們的端到端訓練方式之前,值得一提的是另一種方法。考慮到連續視頻幀之間的時間線索,可以先從SfM算法中獲取輔助深度標註信息,然後利用其輸出作爲監督來學習深度信息估計。假設SFM算法可以簡化爲進行光度學束調整,從而將結合外觀誤差重疊、測量像素對應的差異性和一些先驗成本優先級的成本函數最小化,從而促進深度圖的平滑。這個過程可以總結爲以下兩部優化:

  1. 通過SfM算法計算逆深度圖和像機姿態信息
  2. 通過公式1中得到的逆深度圖信息作爲監督信息來學習估計深度信息。

在這裏插入圖片描述

我們認爲這兩步優化在理論上是次優的。因爲我們假設公式1中的SfM的成本函數反映了深度圖預測的質量,所以我們真正想要的是找到θd,這將使成本降到最低。然而,在第二步中最小化等式2並不一定會導致最小化等式1。

因此,原則上,通過直接最小化等式1中的成本函數來對深度預測器進行端到端學習是最佳方法。然而,在實踐中,由於等式1過於簡單化了真實的SFM步驟,因此與具有梯度下降的端到端訓練相比,從上述兩步優化方法中獲得更好的監督仍然是可能的。因此,如第3節所述,我們的一項貢獻是將現代SLAM算法的一部分(例如,DVO)帶入訓練框架。

在這裏插入圖片描述

在這裏插入圖片描述
在這裏插入圖片描述

2.1 尺度模糊

爲了解決這一問題,提出了一種新方法。在輸入到損失層之前,應用非線性歸一化深度cnn的輸出。這裏我們使用的算符η(·)是用下式除以輸入張量
在這裏插入圖片描述
儘管這種標準化技巧也被用於LSD-SLAM中的關鍵幀選擇,但它還沒有被用於單目視頻的學習深度估計。根據經驗,我們發現這個簡單的歸一化技巧顯著提高了結果(見圖3),因爲它消除了損失函數的尺度敏感問題。

在這裏插入圖片描述

2.2 建模姿態估計預測器

在這裏插入圖片描述

3. 可微分直接視覺測距法

3.1 直接視覺測距法(DVO)

DVO從參考圖像L獲取輸入信息,它相應的深度圖D和原圖像L’。將像素座標xi ∈ R 2的強度和逆深度在參考圖像上分別表示爲L(xi)和di,攝像機姿態由平移座標t和指數座標w聯合表示,且攝像機內參已知,則從參考圖像座標xi到源圖像座標xi’的投影可以表示爲:
在這裏插入圖片描述

利用高斯-牛頓方法可以有效地解決這個非線性最小二乘問題。爲了提高計算效率,逆合成算法不像普通的高斯-牛頓方法那樣線性逼近源圖像,而是反轉源圖像和參考圖像,並計算參考圖像的參數更新。因此,雅可比矩陣和黑森矩陣不需要每次迭代都重新評估。我們將算法總結如下:
在這裏插入圖片描述
在這裏插入圖片描述

3.2 可微分的實現

我們對DVO的不同實現類似於反向組合空間變換網絡,兩種方法都迭代更新幾何變換參數,並通過雙線性採樣反向扭曲源圖像。區別在於,我們的“迴歸量”不是使用具有可學習參數的迴歸網絡層,而是由等式13計算構成的。計算關於方程13的導數涉及微分矩陣僞逆。

4 訓練損失

訓練損失是外觀損失和先驗的平滑度損失的組合,通過4個尺度進行彙總。外觀損失測量三組圖像之間像素級對應的不同性(如圖2所示)。先驗損失對三聯體圖像的逆深度Di加強了平滑性,在第k尺寸上的損失可表示爲:
在這裏插入圖片描述
我們使用參數λ作爲懲罰因子來控制先驗平滑性。

外觀差異性損失

如圖2所示,我們測量了三個連續圖像之間的外觀差異損失。給出了由這些圖像分別預測的逆深度圖,以及相對於第二幅圖像估計的兩個相機外部圖像,我們將第一幅和最後一幅圖像的逆彎曲與第二幅圖像進行了比較。我們也做相反的,比較第二個圖像的逆向彎曲和其他兩個圖像。這種雙向的外觀損失使我們能夠以最小的額外計算成本增加訓練集。

通過深度CNN網絡的輸出的四個尺度來聚集外觀相異性。對於三個較粗的尺度,我們使用L1光度損失;對於最後一個最細的標度,我們採用L1光度損失和單標度SSIM損失的線性組合。

逆深度平滑損失

我們使用二階梯度作爲平滑成本,以使深度預測具有更好的梯度。爲了提高深度預測的清晰度,我們採用了兩種策略:
(1)根據圖像強度的拉普拉斯函數,給出了不同位置像素的平滑度代價的不同權重。如果拉普拉斯更高,這意味着像素更可能出現在邊緣或角落,我們會在該位置施加較低的平滑度成本。
在這裏插入圖片描述

(2)我們不再直接從最終的逆深度估計中計算平滑成本,而是將逆深度圖按因子2簡化爲三個更粗的尺度。我們只從兩個最粗的尺度來計算平滑度成本。

5 實驗

實驗在KITTI數據集上進行訓練。

設置訓練集
我們首先通過檢查光流的平均大小是否小於1像素來去除靜態幀。每個訓練樣本是一個3個連續視頻幀的短片段,大小調整爲128×416像素。

深度卷積神經網絡框架
該網絡類似U-Net網絡結果。包括一個編解碼設計,在編碼器和解碼器網絡之間跳過中間特性的連接,並使用VGG作爲其編碼器網絡結構。我們也在解碼器的末尾輸出多尺度逆深度預測。由於逆深度在0(無窮大)和與相機的最小深度的逆之間,所以我們將sigmoid非線性應用於網絡輸出。此外,我們將最終反深度輸出乘以10,將其限制在一個合理的範圍內,並添加一個小值0.01,以提高數值穩定性。

Pose-CNN 結構
我們使用CNN架構,它從三個連續幀中獲取輸入。區別是1)我們訓練我們的Pose-CNN來預測指數座標,而不是將歐拉角旋轉作爲輸出;2)我們將預測的平移除以估計深度的平均值,以便平移的比例與深度預測一致。

訓練超參數
我們的訓練損失是外觀差異性損失和平滑度損失的加權和。我們將平滑度損失的權重設置爲0.01。因爲根據經驗發現,這個加權參數在深度預測的銳度和總體結構正確性之間提供了一個理想的平衡。
通過Adam優化器訓練網絡,學習率設爲0.0001, β1 = 0.9 and β2 = 0.999。受DDVO模塊中非常規操作的限制,爲了提高計算效率,我們將訓練的batch設置爲1。這種對batch大小的妥協僅僅是由於實現問題,而不是理論上的暗示。根據經驗,我們觀察到對整體績效沒有負面影響。
在這裏插入圖片描述

在這裏插入圖片描述

5.1 訓練設置

爲了更全面的測試本文提出的方法,我們在四種不同設置的情況下完成實驗。

Baseline ,爲了檢測我們在2.1部分中提出的標準化技巧的效果。我們設置了一個基線配置。我們使用Pose-CNN作爲姿態預測器,並關閉逆深度圖歸一化。此設置相當於於在zhou等人的方法中用我們的損失函數定義和修改。由於訓練10個epoch後出現發現(見圖3),我們顯示了第10個epoch的訓練結果

Pose-CNN ,我們進行逆深度歸一化,仍然使用Pose-CNN作爲姿態預測器。報告顯示第10個epoch的結果。

DDVO ,用我們提出的DDVO模塊替換掉Pose-CNN。DDVO用標識姿態初始化,爲了解決訓練集中的大運動問題,我們將模塊設置爲粗到細的五個刻度。我們從頭開始訓練模型,報告顯示第10個epoch的結果。

Pose-CNN+DDVO,我們使用Depth-CNN和Pose-CNN來自“我們的(Pose-CNN)模塊”作爲預訓練模型。然後修改Pose-CNN,將它的輸出作爲DDVO模塊的初始化姿態,並將深度CNN微調2個epoch。由於Pose-CNN已經給了我們一個大致可以接受的估計結果,DDVO在這種情況下不需要考慮大的運動。因此,爲了加快培訓速度,我們直接在最好的規模上運行DDVO,而不是執行從粗到細的操作。

5.2 KITTI數據集上的結果

在本節,我們評估了在來自Eigen測試分割的697個Kitti圖像的性能。我們使用與[11,31,13]中相同的性能指標計算同一裁剪區域的所有誤差,並且不限制到最大深度。由於單目設置的問題,我們的方法無法恢復場景的真實比例。因此,我們通過將預測值乘以公式S = ∙中位數(實際值)/中位數(預測值),將預測值的範圍與實際情況保持一致。

深度圖歸一化效果
我們比較了在“Baseline”設置和在“Pose-CNN”設置情況下的實驗結果。這兩種實驗僅僅是在是否進行反向深度歸一化方面有所不同(見第2.1節),結果如表1所示,簡單的歸一化方法在使用相同體系的所有度量中都得到了顯著的改進。此外,通過深度歸一化結果,“Pose-CNN”的實驗結果不僅大幅度超越了zhou等人,還與Godard等人在校正立體聲對上訓練的結果非常接近。

DDVO vs Pose-CNN

5.3 Make3D數據集上的結果

在這裏插入圖片描述
在這裏插入圖片描述

6.討論

我們發現,正如單目視覺SLAM算法一樣,在使用單目視頻進行訓練的時候,必須考慮尺度模糊性。如圖3所示,這是之前在單目視頻訓練中的一個缺失點。另外,我們已經證明,可以使用DVO代替Pose-CNN來估計幀之間的相對相機位姿。這種策略可能需要更少的圖像來訓練,更少的參數來學習。未來我們計劃調研需要的圖像數量。最後,我們發現,可以利用Pose-CNN初始化和DDVO姿態優化的混合體繫結構,對DDVO和POSE CNN姿態預測模塊進行改進,獲得最佳效果。

目前我們的方法的主要瓶頸是我們沒有對世界的非剛性進行建模。如圖6所示,我們目前的方法對於像摩托車手和行人這樣的有關節的物體效果不佳。未來可能的工作是將非剛性技術
SFM引入到框架中。

如圖6 所示,在以下情況下,我們的方法表現得效果不太好:

  1. 像人和摩托車這種動態場景效果不太好
  2. 路面過度曝光,倒是大面積的紋理減少的情況
  3. 大片紋理區域少的開闊場景
    在這裏插入圖片描述

深度估計系列文章:

單目深度估計 | Learning Depth from Monocular Videos using Direct Methods

單目深度估計 | Real-Time Monocular Depth Estimation using Synthetic Data with Domain Adaptation via Image

單目深度估計 | Depth from Videos in the Wild: Unsupervised Monocular Depth Learning from Unknown Cameras

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章