1. 程式人生 > 實用技巧 >基於深度學習的影像深度重建綜述

基於深度學習的影像深度重建綜述

基於深度學習的影像深度重建綜述

論文名稱:A Survey on Deep Learning Architectures for Image-based Depth Reconstruction

作者單位:University of South Australia

論文下載連結:https://arxiv.org/pdf/1906.06113

1 本文核心思想

在計算機視覺、圖形學、機器學習領域中,從RGB影像中恢復深度已經研究了數十年。而深度學習與大規模訓練集的出現顛覆了傳統的方法。本文綜合介紹利用深度學習恢復單視或多視影像深度的方法,總結了常用的處理流程並分析優缺點。

本文創新點:

  • 第一篇綜述深度學習重建影像深度的論文。

  • 收集了2014至2018年間,超過100篇在計算機視覺、計算機圖形學和機器學習領域的論文。

  • 對深度學習訓練集、網路結構、訓練方式和應用場景(單視、雙視、多視)做了分析。

  • 對諸多方法結果做了綜合比較。

2 研究背景介紹

影象三維重建的目的在於恢復真實物體和場景的三維結構,在機器人導航、物體識別、場景理解、三維建模等領域有重要應用。

從2D影像恢復深度可分為兩部分。

  • 傳統方法方法:具體指理解和構建3D到2D投影過程。要想獲取較優的結果,需要多視影像,並且相機需要標定。該方法在影像遮擋、特徵缺失、紋理重複的環境難以準確估計深度。

  • 深度學習方法:人眼在單眼觀測的情況下,可根據先驗知識建立模型推斷物體的大概尺寸和幾何位置。所以可基於深度學習利用先驗知識將深度估計問題建立為識別任務。

而深度學習方法分兩類:

  • 雙像匹配方法:用深度學習完成特徵提取、特徵匹配、視差(深度)估計、視差(深度)修正。

  • 迴歸方法:深度學習直接預測,無需匹配。

3 雙像匹配方法

該方法模仿傳統雙像匹配原理進行學習,匹配結果可轉光流或視差圖,進而可得深度圖。含四個部分。

  • 特徵提取

  • 求特徵匹配cost

  • 視差(深度)計算

  • 視差(深度)修正

優化量\(E(D)\)如公式1。\(x,y\)為畫素,\(d_x,d_y\)為對應的深度。\(C\)為匹配的cost,\(E\)為正則項。四個部分中前兩個部分構建\(C\),後兩個部分構建\(E\)並估計深度(視差)。

綜合,可對所有雙像匹配方法進行分類。如TABLE 1。

3.1 特徵提取

基於CNN結構,編碼器輸入區域性影像或全域性影像,生成2D的特徵圖。特徵圖分兩種:

  • 單尺度特徵圖。如Fig. 1,該網路模型有2個分支,每個分支都是一個CNN。提取單尺度特徵的網路結構如TABLE 2。

  • 多尺度特徵圖。如Fig. 2。可通過修改中心畫素的塊尺寸或利用中間層計算的特徵圖來實現多尺度。注意,層數越深,計算出的特徵尺度就越大。

3.2 求特徵匹配cost

匹配的cost(即為公式1的\(C\))有兩種計算方法。

  • 由同名特徵點的特徵向量直接計算距離(如歐氏距離,餘弦距離等)求得。

  • 使用相似度-學習網路,先整合不同的網路生成的特徵向量,再通過全連線網路或卷積網路輸出匹配cost,最後由於有多個像對,產生多個cost,所以對諸多cost進行整合(如最大池化),生成最終匹配的cost\(C\)

兩種方法如Fig. 3。

3.3 視差(深度)計算

3.1和3.2已經計算了匹配的cost,現在通過最小化\(E(D)\)計算深度(視差)圖。如圖Fig. 4,分兩步進行。

  • 將匹配cost正則化。原始的cost由於非朗伯體、物體遮擋、紋理重複等原因,含較多誤差。原始cost可與其他特徵疊加,然後通過神經網路計算完成正則化。
  • 從正則化後的cost估計深度。簡單可用argmin或argmax來計算,但argmin和argmax不可導,且無法達到子畫素精度。所以採取別的處理手段(如soft argmin)。

3.4 視差(深度)修正

一般情況下,預測的視差(深度)圖解析度較低,細節部分會缺失,且在邊界處容易過於平滑。甚至有些方法輸出的圖不完整或者很稀疏。直接預測高解析度和高質量視差(深度)圖的神經網路有很多引數,很難訓練。進而需要一個修正模組。它有三個作用。

  • 提高輸出視差(深度)圖的解析度。
  • 修正在細節處的重建效果。
  • 補全視差(深度)圖。

在利用深度學習進行修正時,可以有五種輸入。

  • 估計的視差(深度)圖。
  • 估計的視差(深度)圖與參考影像合併。
  • 估計的視差圖,匹配cost和重建誤差(由左右影像和視差圖可得)
  • 估計的視差(深度)圖和將右影像轉為左影像(利用視差)
  • 估計的視差(深度)圖和參考影響的特徵圖(第一卷積層結果)

深度學習方法修正如表。分四種方法(如圖):

  • 從下往上方法。第一種策略類似於滑動視窗的處理方法,以小塊為單元處理,估計小塊中心畫素的深度。另外一種從下而上的策略是利用不完整的深度圖的各向異性擴散來填補未知區域的深度。

  • 從上往下方法。直接處理整個視差(深度)圖。第一種策略採用反池化實現解碼,好比池化和卷積的逆過程。第二種策略採用編碼和解碼網路,先編碼到另一個空間,再從這個空間恢復高解析度視差(深度)圖。

  • 特定目標(錯誤的、深度太小或太大的)修正。直接估計深度或進行深度修正不是最優的方法。可將修正任務分解為三個部分。探測錯誤的估計,替換掉錯誤的,再進行修正。

  • 依據其他資訊(如同時優化深度和法線)進行修正。

3.5 多像匹配網路

除了從一個像對中重建深度(視差)圖,也可以從n個像對中重建,也就是說將特徵計算的網路分支複製n次。多像匹配網路分兩種。

  • 前期融合網路:如Fig. 5(a), (b), (c)。由不同分支計算的特徵可通過池化等方式整合之後,再送入神經網路生成深度圖。

  • 後期融合網路:如Fig. 5(d)。對每個像對計算cost,再根據池化等方式合併所有的cost。

4 迴歸方法

該方法不學習如何匹配,直接對每個畫素預測深度(視差)。該方法可對單視或雙視影像估計深度,且可生成任意角度深度圖。網路結構可分4種。

  • 直接對影像進行編碼獲得深度。一般來說編碼網路主要包含卷積層和全連線層。另外,之前的修正方法再獲得較高解析度結果的同時對資源的要求是比較高的,所以加上池化層降低特徵圖解析度。
  • 先用一個卷積神經網路對輸入影像進行編碼,將影像轉到隱藏空間(latent space)。再指定一個視角,用一個網路(由一系列全連線層或反捲積層)對編碼後的影像進行深度估計。
  • 多個網路搭在一起能夠提高效果。
  • 估計深度的同時解決多個任務。深度估計和其他基於影像理解的問題,比如影像分割,語義標註和場景解譯,都有強烈的關係。通過利用這些任務之間的複雜屬性,可以聯合解決這些任務進而互相增強任務效果。另外,儘管能夠顯著提升各任務的效果,對訓練集的要求也是比較大的,需要同時有各個任務的標註。

5 網路訓練

本部分具體含四個部分。

  • 不同的訓練集與資料增強方式。

  • 不同的loss函式

  • 不同的監督程度

  • 訓練技巧

5.1 訓練集與資料增強

TABLE 4為雙目深度估計資料集。另外多視的演算法測視需要人工合成數據集。

現實中有深度標註的自然影像是比較難獲取的。所以可基於已有資料集進行資料增強。有以下三種資料增強策略。

  • 3D資料增強。為了給已有資料集增加多樣性,可增加一些幾何轉換。如旋轉、平移、縮放、噪聲、光照變化等。這樣的好處能夠減少網路的泛化誤差。
  • 使用合成的3D模型和場景。可從3D的CAD模型人工渲染獲取影像深度標註。
  • 使用真實影像和3D場景。把從3D模型渲染的影像覆蓋到真實影像上從而合成訓練集。

5.2 loss函式

loss函式的功能在於描述估計視差(深度)和真實值的差異,並用它來調整網路權重。一般來說loss由兩部分組成,如公式7。\(\widehat{D}\)為估計的深度圖,\(D\)為真實深度圖,\(\Theta\)為訓練集,\(W\)為網路權重。

  • \(\mathcal{L}_1\)描述估計的深度與真實深度的誤差。可分為以下幾類。

    • \(L_2\)類loss

  • 平均絕對誤差類loss

  • 交叉熵類loss。\(P(x,\widehat{d}_x)\)為畫素\(x\)具有視差(深度)\(\widehat{d}_x\)的概率。\(Q(d_x,\widehat{d}_x)\)為常數。

  • 子畫素交叉熵。對\(Q(d_x,\widehat{d}_x)\)進行修改。

  • 基於合頁loss。現有雙像,一張屬於正類,一張屬於負類。在雙像上考慮同一位置周圍的畫素。\(s_+\)為正類輸出,\(s_-\)為負向輸出,\(m\)為間隔,則合頁損失定義為:

  • 重投影loss。利用相機引數將預測的視差(深度)圖投影到參考視差(深度)圖上,可不需要真值。

  • 匹配loss。\(label(x,d)\in{x,d}\)作為真實標籤,描述左片畫素\(x(i,j)\)和右片畫素\((i-d,j)\)的匹配程度。\(predicted_-score(x,d)\)是預測的匹配得分。

  • 語義loss。可利用語義資訊構建loss。比如基於邊緣特徵圖。\(\xi\)是邊緣概率圖,畫素位置\(x=(u,v)\)

注意,\(\mathcal{L}_1\)可由以上多種loss構成。

  • \(\mathcal{L}_2\)作為正則項加了諸多限制。有如下四種考慮因素。

    • 平滑度。由估計的視差(深度圖)的一階或二階導數構成。

  • 一致性。左片為\(I_{left}\),利用右片計算的視差圖將右片轉到左片座標系下得到\(\widehat{I}_{left}\),利用左右視差將左片轉到右片座標系得到\(\widetilde{\widetilde{I}}\),則正則項為:

另外,有左視差$d_x$和將右視差投影到左片的$\widehat{d}_x$,則正則項為:

  • 最大深度啟發。在紋理較少區域,多個投影函式和得到近似的投影loss。為了在這些區域採取較強正則化,可用:

  • 尺度不變性。

5.3 監督程度

獲取真實深度的方式(傳統雙目匹配或3D掃描裝置)比較困難,價格昂貴,並且易受噪聲影響,精度不高。通過三種機制可以調整監督機制。

  • 以雙目影像進行監督。該方法不需要真實深度,但需要雙目相機已經標定。比如使用\(\mathcal{L}_2^6\)儘量使左視差圖等於投影后的右視差圖。
  • 以相機光圈進行監督。可通過原始影像和預測的深度模擬相機光圈造成的景深效果。
  • 以相對深度進行訓練。人眼更能夠判斷相對深度(哪個點近哪個點遠)。

5.4 訓練技巧

有監督的深度學習經常受限於沒有足夠的訓練資料。另外,當使用測距感測器時,噪聲是存在的並且結果有可能很稀疏。但是,合成的影像以及對應的深度圖採用計算機圖形學技術是比較容易生成的。然而真實影像和圖形學生成的影像時有區別的。通過一些手段可以直接訓練生成的影像並且可以將真實影像學習的結果遷移過來。為了使生成的影像適合,有兩類方法。

  • 第一類是訓練網路,在生成的影像和真實影像之間互相轉化。
  • 第二類在生成影像網路和真實影像網路之間,進行權值共享等遷移學習操作。

6 實驗評價標準

有如下定量評價方式。

  • 訓練時間和預測時間

  • 對記憶體的佔用

  • 計算終點誤差。真值為\(D\),預測值為\(\widehat{D}\),則誤差為\(||D-\widehat{D}||\)

  • 預測錯誤畫素比例。錯誤畫素指真值和預測值相差超過閾值。

  • 絕對相對誤差。如公式34。\(d\)為每個畫素。

  • 平方相對誤差。如公式35,與公式34類似。

  • 線性均方根誤差。

  • 對數均方根誤差。

  • 最大相對誤差。指畫素\(d_i\)的佔比,\(d_i\)滿足:

  • 密度。指完成深度估計畫素的佔比。

除了定量,還有定性評價質量的方式。

  • 監督程度。需要很少的的真值或者甚至不需要真值的訓練是優先選擇的。
  • 端到端訓練。有些方法分開訓練幾個網路,有些一起訓練直接輸出結果,即為端到端。
  • 子畫素精度。如果結果直接就有子畫素精度,而不需要後處理或正則化,這將是極好的。
  • 對視差結果範圍是否需要修改。

7 基於雙像資料實驗

總表如TABLE 5。

7.1 有無真實深度圖的影響

大多數效果比較好的方法都需要真實深度圖。但是真實深度比較難獲取,所以非監督的訓練方式更吸引人。無監督訓練的關鍵在於基於重投影誤差構建loss函式,但這需要相機引數。根據TABLE 5可知,有真實深度圖訓練效果更好,比如 Yang et al. [25] 。

7.2 計算時間和記憶體

由TABLE 5,估計深度最慢需超過40s,最快需0.1s。

8 基於多像資料實驗

TABLE 6比較了五種深度學習多視重建演算法。TABLE 6中大多使用了有監督學習,且大多沒有達到子畫素精度,需要提前給定深度的計算範圍且在不調整網路結構重新訓練的情況下,無法更改範圍。另外,這些方法在重建細微的特徵(比如植被)時會計算失敗。

9 迴歸方法實驗

TABLE 7總結了深度學習方法迴歸深度的結果。有如下四個結論。

  • 依據深度的大小採取不同的處理方式,這樣精度更高。比如在loss函式中多關注深度較大的畫素。
  • 沒有訓練樣本(使用重投影誤差構建loss)的預測結果接近於有訓練樣本預測結果。
  • 採用相對深度能提高深度估計精度。這是因為相對深度比絕對深度更精確,所以獲取訓練用的相對深度更容易。
  • 聯合估計深度和其他屬性(如法線、語義分割)能提高深度估計精度。

10 未來發展方向

  1. 深度學習搭載在移動和便攜平臺,需要輕小型深度學習網路。
  2. 深度學習難以恢復細小物體(比如植被和頭髮)深度,且大多數方法會離散化深度圖。另外在複雜環境下精度很容易受影響,比如遮擋區域、高密度聚集場景和具有複雜材料屬性的物體。
  3. 估計深度時需要較大計算機資源,尤其是需要輸出高精度深度圖和輸入高解析度影像時。儘管可通過多尺度等方式解決,計算時間也是比較長的。
  4. 有真實深度的訓練集比較難獲取,可通過構造不需要真值的loss函式或遷移學習等訓練策略來解決。
  5. 提高模型對不同資料集的適應能力。

本文由計算機視覺life 公眾號旗下從零開始學習slam知識星球成員 楊儼棣 翻譯。

歡迎加入公眾號讀者群一起和同行交流,目前有SLAM、檢測分割識別、三維視覺、醫學影像、GAN、自動駕駛、計算攝影、演算法競賽等微信群(以後會逐漸細分),請掃描下面微訊號加群,備註:”暱稱+學校/公司+研究方向“,例如:”張三 + 上海交大 + 視覺SLAM“。請按照格式備註,否則不予通過。新增成功後會根據研究方向邀請進入相關微信群。請勿在群內傳送廣告,否則會請出群,謝謝理解~
投稿、合作也歡迎聯絡:[email protected]

長按關注計算機視覺life