1. 程式人生 > >深度補全(三)-論文閱讀-翻譯

深度補全(三)-論文閱讀-翻譯

A Two-Streamed Network for Estimating Fine-Scaled Depth Maps from Single RGB Images(一個雙流式網路,用於從單個RGB影象估計精細的深度對映)

arXiv:1607.00730v4 [cs.CV] 4 Dec 2017

Abstract

從單個RGB影象估計深度是一個有問題的和固有的含糊不清的問題。最先進的深度學習方法現在可以估計精確的2D深度地圖,但當地圖投影到3D時,它們缺乏區域性細節,而且常常高度失真。我們提出了一種快速列車雙流式CNN,它可以預測深度和梯度,然後將它們融合在一起,形成精確而詳細的深度地圖。我們還定義了一個新的集合損失在多個影象;通過對一組普通影象之間的估計進行正則化,網路不太容易過度擬合,並且比競爭方法獲得更好的精度。NYU Depth v2資料集上的實驗表明,我們的深度預測與最先進的技術相競爭,並導致了可靠的3D投影。

(一)Introduction

從單目RGB影象中估計常見室內場景的深度在場景理解、深度感知影象編輯或重映、3D建模、機器人等方面有著廣泛的應用。給定一個RGB影象作為輸入,目標是預測每個畫素的稠密深度圖。推斷潛在的深度是一個不適定的和固有的模糊問題。特別是室內場景的紋理和結構變化大,物體遮擋重,幾何細節豐富,這些都導致了深度估計的困難。

卷積神經網路(CNNs)的使用大大提高了深度估計技術的準確性。與其粗略估計像牆和天花板這樣的大型結構的深度,最先進的網路[7,16]得益於使用預先訓練過的CNNs,可以捕捉到精細的物品,如傢俱和家庭配件。深度估計成功的頂峰是能夠從估計的深度生成真實準確的3D場景重建。準確可靠的重建應富有地方結構;在從重構中衍生出來的應用程式中,例如物件識別和深度感知影象重新呈現和編輯,細節變得尤為重要。儘管最近的作品評價得分令人印象深刻[7,16],但估計的深度地圖仍然存在較細尺度的人為因素,表面之間的比對也不令人滿意。這些扭曲在投射到3D時尤為突出(參見圖1)。
在這裡插入圖片描述


其他基於CNN的端到端應用程式(如語義分割[4,21]和常規估計[1,7])在儲存區域性細節方面也面臨著類似的挑戰。重複的卷積和池操作對於捕獲整個影象範圍至關重要,但同時收縮解析度和降低細節。雖然提出了上卷積和特徵對映拼接策略[6,16,21,22]來提高解析度,但輸出地圖的邊界通常仍然不能與影象的邊界對齊。因此,像雙邊過濾[2]或CRFs[4]這樣的優化措施會產生進一步的改進。

正是為了保留細節,我們才激發了我們在深度估計方面的工作。我們希望從CNNs的準確性中獲益,但避免了解析度和細節的下降。首先,通過引入一種新的集像損耗來保證網路的準確性和泛化能力。這種損失是在多個影象上共同定義的,其中每個影象都是通過標準資料增強技術對原始影象進行轉換的版本。集合損耗不僅考慮每個變換後的影象輸出深度的精度,而且有一個正則項來最小化集合內的預測差異。新增這個正則化器大大提高了深度精度,使RMS誤差降低了約5%。由於在其他端到端框架中也使用了類似的資料增強方法,例如用於語義分割和正常估計,我們相信集合丟失的好處也會傳遞到這些應用程式中。

我們通過考慮包含在深度梯度中的資訊來捕捉場景細節。我們假設區域性結構可以更好地編碼一階導數項而不是絕對深度值。從感知上講,是尖銳的邊和角定義了一個物件並使其易於識別,而不是(正確的)深度值(如圖4所示)。因此,我們認為最好年代代表一個場景深度和深度梯度,並提出一個fast-to-train two-streamed CNN迴歸深度和深度梯度(參見圖2)。此外,我們提出了兩種融合的深度和深度梯度,通過一個CNN,允許對端到端訓練,和一個通過直接優化。我們將我們的貢獻總結如下:
(1)一種新型的帶有調整器的集像損耗,可以最小化相關影象估計深度的差異;這種損失可以更好地利用增強資料,增強網路泛化能力,提高估計精度。
(2)結合深度和深度梯度表示2.5D場景;這種表示捕獲本地結構和精細細節,並通過一個雙流網路學習。
(3)將深度和深度梯度融合為最終深度輸出的兩種方法,一種是通過CNNs進行端到端訓練,另一種是通過直接優化;這兩種方法都產生了深度地圖,當投射到3D時,它的失真更小,而且比最先進的技術更豐富的結構和物件細節。

用深度和深度梯度表示場景是多餘的,因為一個可以從另一個派生出來。然而,我們表明,這種冗餘提供了對區域性細節的明確考慮,否則在標準歐幾里得損失中就會損失在深度和/或損失中的簡單一致性約束中。我們最終的深度輸出是精確的和乾淨的,帶有區域性的細節,當投射到3D時比競爭的方法更少的工件。

(二)相關工作

深度估計是一個豐富的研究領域,我們只討論單眼方法。早期作品處理深度模糊的一個關鍵策略是使用強假設和先驗知識。例如Saxena等人[24,25]設計了一個多尺度的MRF,但假設所有場景都與地面平面水平對齊。不用明確預測深度,而對主要影象區域的幾何結構進行估計,並組成簡單的3D模型來表示場景。

一旦RGB-D資料可以從鐳射或深度攝像機大規模收集,應用基於資料驅動的學習方法就變得可行[13,20,24,25,30]。Karsch等人提出了一種非引數方法來從對齊範例中轉移深度,並將深度估計作為一個具有平滑約束的優化問題。Liu等將影象區域建模為超畫素,採用離散-連續優化的方法進行深度估計,隨後將中層區域特徵和全域性場景佈局融合在一起。其他人則試圖通過利用語義標籤來提高深度估計[9,15,18]。然而,有了手工製作的功能,推斷出的深度地圖很粗糙,只能近似於場景的整體佈局。此外,它們還缺少許多計算機視覺和圖形應用所必需的細節。

深度學習已被證明對深度估計非常有效[7,8,14,17,19,29,23]。Liu et al.[19]將CNNs和CRFs結合在一個統一的框架內,利用CNNs學習一元電位和成對電位。他們預測了在超畫素級的深度,這種深度可以很好地儲存邊緣,但當投射到3D時,會受到失真和人為因素的影響,因為每個超畫素區域在繪製後處理後保持相同或非常相似的深度。

最近的一些方法[3,7,16]以完全卷積網路[21]的形式利用了預先訓練好的CNNs的力量。來自VGG[28]和ResNet[10]等網路的卷積層進行了微調,而完全連線的層則從頭重新學習以編碼場景的空間特徵對映。然而,學習過的地圖的解析度要比原始輸入的低得多。為了恢復高解析度深度影象,特徵對映被上取樣[3,7]或通過上卷積塊[16]。我們的網路體系結構遵循類似的完全卷積方法,並通過向上取樣提高解析度。此外,我們在向上取樣塊之間新增跳躍連線,以更好地利用中間輸出。
在這裡插入圖片描述
【兩流式深度估計網路結構;頂部流(藍色)估計深度,而底部流(粉色)估計深度梯度。虛線表示從VGG卷積層融合的特性(參見3.1節)。深度和深度梯度通過進一步的卷積層或者直接與深度和深度梯度之間的一致性進行優化組合。圖形用色彩很好的被顯示。】

(三)Learning

3.1. 網路結構

我們的網路架構,如圖2所示,遵循一個雙流模型;一個流返回深度,另一個返回梯度,都來自於RGB輸入影象。這兩個流遵循相同的格式:一個圖象解析塊,由一個特徵融合塊和最後一個細化塊組成。影象解析塊由VGG-16(到pool5)的卷積層和兩個完全連線的層組成。然後將第二層完全連通層的輸出重新塑造為55×75×D特徵圖,並將其傳遞到特徵融合塊中,深度流的D= 1,梯度流的D=2。除了VGG-16,其他的預訓練網路也可以用於影象解析塊,例如VGG-19或ResNet。

特徵融合塊由一個9×9卷積和池組成,然後是8個連續的5×5個卷積,沒有池。它以一個下采樣的RGB影象作為輸入,然後將VGG卷積層的特徵與影象解析塊輸出融合在一起。具體來說,VGG pool3和pool4的特徵對映分別在輸入端融合到第二層和第四層卷積層,而影象解析塊的輸出在輸入端融合到第六層卷積層,都是通過跳躍層連線。VGG特性的跳過連線具有5×5個卷積和2x或4x向上取樣,以匹配工作的55×75特徵對映大小;影象解析塊中的跳過連線是一個簡單的連線。正如其他影象到影象對映工作所指出的[12,21,22],跳過連線提供了一種方便的方式來共享層次資訊,我們發現這也導致了更快的網路訓練收斂。特徵融合塊的輸出是粗糙的55×75×D深度或深度梯度圖。

細化塊與特徵融合塊類似,包含一個9×9卷積和池化,以及5個5×5個沒有池化的卷積。它將一個向下取樣的RGB影象作為輸入,然後通過一個到第三個卷積層的跳過連線(連線)將特徵融合塊的雙線性向上取樣輸出融合在一起。此塊中的工作對映大小為111×150,輸出為在此更高解析度下的深度或梯度對映。

深度和梯度融合塊將兩個獨立流的深度和深度梯度估計合併為一個連貫深度估計。我們提出了兩種可能性,一種是在端到端網路中進行卷積處理,另一種是通過數值優化。這兩種方法在3.3節中進行了詳細說明。我們向讀者提供關於層、過濾器大小和學習速率的詳細資訊的補充材料。

3.2. 設定影象損失函式

對於許多機器學習問題,用原始訓練樣本的轉換版本來擴充訓練集已經成為標準實踐。通過使用增廣集進行學習,得到的分類器或迴歸器應該對這些變化更加健壯。損失應用於一些增廣集,其中轉換後的樣本作為標準訓練樣本。然而,原始樣本和轉化樣本之間有很強的關係,在培訓過程中可以進一步加以利用。例如,重新著色以近似不同光照條件的樣本影象的深度估計應該與原始影象完全相同。翻轉後的樣例在解除安裝輸出後的深度估計也與原來的樣例相同,依此類推。
【暫時不細看】

3.3. 深度和深度梯度估計

為了學習深度梯度流中的網路,我們使用相同的公式,但是對兩個梯度圖G1和G2的畫素差進行了修改,用L2g代替L2:
在這裡插入圖片描述
在端對端網路中融合:我們提出兩種可能性,將深度和梯度流的輸出融合到最終的深度輸出中。第一個是通過組合塊,其架構與細分塊相同。它將RGB影象作為輸入,通過跳過連線(連線)將深度估計和梯度估計融合在一起,作為第三個卷積層的輸入。我們使用以下組合損耗Lcomb來保持深度精度和梯度一致性
在這裡插入圖片描述
在這種組合損失中,第一項Lset僅基於深度,而第二項強制最終深度梯度與估計梯度之間的一致性,且與方程5的l2g畫素級差相同。

**通過優化融合:*另外,由於優化措施也顯示出在改進輸出地圖細化方面非常有效[2,4],我們直接估計了一個最優深度D
在這裡插入圖片描述

3.4. 訓練策略

我們在深度和梯度流上對網路應用相同的實現。除了VGG卷積層外,特徵融合、細化和組合塊中的全連通層和所有層都是隨機初始化的。

這兩個流最初是單獨訓練的,每一個都有兩個步驟。首先,對影象解析和特徵融合塊進行深度和深度梯度的損失訓練。然後將這些塊固定,而在細化塊中進行第二步訓練。對於每一步,使用相同的集丟失,並且具有適當的畫素差異(見公式2,1,5),儘管地圖解析度不同(特徵融合後5575,細化後11175)。如果採用基於優化的融合,訓練就到此結束。另一方面,對於端到端網路融合,影象解析、特徵融合和細化塊是固定的,融合塊使用組合損耗訓練(公式6),最後根據組合損耗對兩個流的所有塊進行聯合微調。

網路是快速訓練;收斂只需要2到3個epoch(如圖3所示)。在前20K迭代中,我們使用梯度裁剪來穩定訓練。為了快速收斂,我們使用的batch大小為1;注意,因為我們的損失是在影象集上定義的,所以batch的大小為1實際上是大小為N的小batch,這取決於所使用的影象轉換的數量。

正則化常數和w分別設定為1和10。初步實驗表明,雖然A值越大,網路收斂速度越慢,但不同值的A值控制的集合影象規律的範圍不影響結果的精度。w,控制梯度優化中梯度的範圍,由驗證集設定;一個較大的w過分強調了梯度估計中的工件,導致了不太精確的深度圖。

(四)實驗

4.1. 資料集以及評估

我們使用NYU Depth v2資料集[26]和標準場景分割;從249個訓練場景中提取~220k訓練影象。對RGB影象進行一半的下采樣,然後裁剪到232×310,與深度影象對齊後刪除空白邊界。深度轉換為對數刻度,而梯度保持線上性刻度。

我們在654 NYU Depth v2[26]測試影象上評估我們提出的網路和兩種融合方法。由於我們的深度輸出是111×150,解析度低於原始的NYUDepth影象,所以我們對深度地圖(4x)進行了雙線性向上取樣,並使用一個雙邊過濾器填充缺失的邊界,類似於以前的方法[7,17,19,20]。我們在有效的Kinect深度投影區域評估我們的預測,使用與之前工作相同的方法。

在這裡插入圖片描述

4.2. 深度估計基準

我們的深度估計的準確性與表1中的其他方法進行了比較。我們認為只有VGG-16基礎網路的深度流的精度是基線,不需要新增梯度(Lsingle, depth only)。這個基線已經優於16,可以與7相媲美。然而,對於設定的損失函式(Lset,只考慮深度),我們用更精確的深度估計超過了[7],特別是在均方差誤差方面以及閾值估計小於1.25.
在這裡插入圖片描述
目前最先進的成果是通過完全卷積方法實現的[3,7,16]。總體趨勢是,更深的基礎網路(VGG-19, ResNet-50 vs. VGG- 16)會導致更高的深度精度。我們在結果中觀察到類似的趨勢,儘管改進並不總是一致的。我們使用VGG-19比VGG-16取得了一些進展。然而,與[16]不同的是,我們發現ResNet-50幾乎沒有什麼收穫。

4.3. 融合深度和深度梯度

將深度估計與深度梯度融合在一起,在數量和質量上都達到了與優化相似的效果。當深度對映投影到3D(見圖4)時,兩種融合方法之間沒有什麼區別。與[16]s ResNet- 50結果相比,[16]s 3D投影更加扭曲,結果更加準確。事實上,許多結構,例如圖4(a)中的架子、(b)中的沙發或(b,d)中的枕頭是無法辨認的。此外,整個投影的三維表面似乎受到網格狀工件的影響,這可能是由於它們的上投影方法。另一方面,[3]的預測更加清晰和詳細,儘管他們的方法報告的準確性低於[16]。因此,我們的結論是,目前的數值評價措施是不完善的細節儲存指標。這是意料之中的,因為細節的增加對數值精度的測量影響不大。相反,差異在質量上更為突出,尤其是在3D投影中。

與[7]相比,我們的3D投影在適當的區域,即牆壁和平面上更乾淨和平滑。角落和邊緣得到更好的保護,結果的場景更豐富的細節與更好的當地結構。例如,在凌亂的場景圖4(b,c),[7]有重型工件在高質感的地區,例如牆上的照片(b)、(c)的視窗等地區,並有很強的反射( c )的內閣。我們的結果是這些困難是健壯的 ,給更忠實的3 d場景中預測潛在的物件。

乍一看,你可能會認為,用深度和深度梯度共同表示場景,只會產生平滑效果。雖然融合的結果肯定是平滑的,沒有平滑操作,2D或3D,可以恢復不存在的細節。當使用0.1m範圍和1010空間高斯核(Lset depth +雙邊濾波)的二維雙側濾波器時,我們發現數值測度相差不大,但在細化上仍有一些損失(見圖4)。

4.4. 設定損失和資料增加

我們提出的集像損耗對提高估計深度精度有很大的影響。對於表1中報告的結果,我們使用了影象集中的三個影象:I、flip(I)和colour(I)。翻轉在垂直軸上,色彩操作包括隨機增加或減少亮度,對比度和乘以隨機RGB值r屬於[0.8, 1.2]^3。初步實驗表明,增加旋轉和平移等操作並不能進一步提高效能,所以我們在訓練中忽略了它們。我們推測,翻轉和著色操作帶來了更多的全域性變化,但留下了準確的原因,為未來的工作。

4.5. 訓練 收斂和時間

我們展示了我們的網路的收斂行為,用於影象解析和特徵融合塊的聯合訓練圖3。與16相比,batch大小為1的錯誤減少得更快,只需0.6M梯度步長或2-3個epoch收斂即可。對於收斂實驗,我們將單影象丟失(batch大小為1,16)與第4.4節中描述的集合影象丟失進行比較,觀察到集合丟失的誤差較小,但收斂速度較快。注意,我們的網路的快速收斂不是由於batch大小小,而是改進了的帶有跳過連線的架構。相比之下,[7]的網路體系結構需要2.5M梯度步長才能匯聚(100多個epoch),而batch大小為16,但即使訓練為1,收斂速度也不是很快。深度梯度估計的訓練甚至更快,並且在一個時期內收斂。總的來說,我們在GPU TITAN X上的訓練時間大約是70個小時(深度學習50個小時,梯度學習20個小時)。
在這裡插入圖片描述
圖3。比較我們提出的網路和[7]之間的log10訓練和測試錯誤。為了清晰起見,我們在每0.1個epoch中繪製日誌錯誤,並且只顯示前7個epoch,儘管[7]的方法還沒有收斂。虛線表示訓練錯誤,實線表示測試錯誤。對於第1批和第16批的結果,我們比較了Lsingle和Lsingle的錯誤。

(五)Discussion and Conclusion

我們提出了一種快速訓練多流CNN架構,用於精確的深度估計。為了預測精確和詳細的深度地圖,我們介紹了三種新的貢獻。首先,我們在多個影象上定義一個集合損失。通過在一個公共集合中對影象的估計進行正則化,我們獲得了比以前更好的精度。其次,我們用一個聯合深度和深度梯度表示的場景來表示,我們用一個雙流網路來學習,以保留場景中的精細細節。最後,我們提出兩種方法,一種基於cnn,另一種基於優化,將深度和梯度估計融合到最終的深度輸出中。NYU Depth v2資料集上的實驗表明,我們的深度預測不僅可以與最先進的技術相媲美,而且可以得到更精確、更豐富的3D投影。

通過觀察我們的實驗結果以及最先進的方法[3,7,16]的結果,很明顯,目前用於評估估計深度的數值指標並不總是一致的。當深度地圖被投射到3D時,這種不一致性變得更加突出。不幸的是,場景的豐富性通常是通過清晰的結構細節來限定的,這些細節很難用數字來描述,反過來也很難設計出合適的損失或目標函式。或者,也可以使用影象估計深度作為輸入,例如3D模型檢索或基於場景的重新定位,儘管這種間接評估可能會引入其他混淆因素。

我們的方法生成了精確而豐富的3D投影,但是輸出仍然是111×150,而原始輸入是427×561。與許多端到端應用程式一樣,我們使用低於原始解析度的解析度來權衡網路引數的數量與訓練資料的數量。雖然深度估計不需要標籤,但主要的瓶頸是場景的變化。NYU Depth v2的訓練圖片來源於僅249個場景的視訊。小的訓練資料集大小可以解釋為什麼我們的集合損失和它的正則化項有如此大的影響。由於引入了更大的資料集[5],在更高的解析度下工作可能變得可行。最後,在目前的工作中,我們只討論了RGB源的深度和深度梯度的估計。通過將任務與其他估計(如表面法線和語義標籤)相結合,可以進一步改進深度估計。
在這裡插入圖片描述