基於深度學習的影像深度重建綜述
論文名稱: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 未來發展方向
- 深度學習搭載在移動和便攜平台,需要輕小型深度學習網絡。
- 深度學習難以恢復細小物體(比如植被和頭發)深度,且大多數方法會離散化深度圖。另外在復雜環境下精度很容易受影響,比如遮擋區域、高密度聚集場景和具有復雜材料屬性的物體。
- 估計深度時需要較大計算機資源,尤其是需要輸出高精度深度圖和輸入高分辨率影像時。盡管可通過多尺度等方式解決,計算時間也是比較長的。
- 有真實深度的訓練集比較難獲取,可通過構造不需要真值的loss函數或遷移學習等訓練策略來解決。
- 提高模型對不同數據集的適應能力。
本文由計算機視覺life 公眾號旗下從零開始學習slam知識星球成員 楊儼棣 翻譯。
歡迎加入公眾號讀者群一起和同行交流,目前有SLAM、檢測分割識別、三維視覺、醫學影像、GAN、自動駕駛、計算攝影、算法競賽等微信群(以后會逐漸細分),請掃描下面微信號加群,備注:”昵稱+學校/公司+研究方向“,例如:”張三 + 上海交大 + 視覺SLAM“。請按照格式備注,否則不予通過。添加成功后會根據研究方向邀請進入相關微信群。請勿在群內發送廣告,否則會請出群,謝謝理解~
投稿、合作也歡迎聯系:simiter@126.com
長按關注計算機視覺life