1. 論文簡介
論文題目:P3Depth: Monocular Depth Estimation with a Piecewise Planarity Prior
Paper地址:paper
Code地址:Github
Paper簡單評論:個人覺得是2022 CVPR上depth estimation最有閱讀價值的論文,它不同於之前的所有論文:1. 將幾何先驗用深度神經網路表達出來;2.算是開創了幾何的新用法;3.共面這個特性到是不屬於新東西,但作者想法奇妙。
2. 摘要
3D場景中含有高度規律(high regularity),作者就想著是否可以利用這種規律來提升深度估計。
特別地,我們引入了分段平面先驗,即對於每個畫素,都有一個與前者共享相同平面3D曲面的種子畫素;
在此基礎上,我們設計了一個具有兩個head的網路。
第一個head輸出畫素級平面係數,而第二個head輸出密集偏移向量場,用於識別種子畫素的位置。
然後利用種子畫素的平面係數來預測每個位置的深度。
由此產生的預測自適應地與來自第一個頭部的初始預測相融合,透過學習置信度來解釋精確區域性平面度的潛在偏差。
由於所提出模組的可微分性,整個體系結構是端到端訓練的,它學習預測規則深度對映,在咬合邊界處具有銳利的邊緣。
3. 引言
大多數監督方法使用畫素級損失,分別處理不同畫素的預測。這種機制忽略了真實世界3D場景的高度規律性,這通常會產生分段平滑的深度圖。
建模真實3D場景的幾何先驗知識的一個常見選擇是平面。
平面是區域性可微深度對映的區域性一階泰勒近似,它們很容易用三個獨立係數引數化。
一旦一個畫素與一個平面相關聯,它的深度可以從畫素的位置和相關平面的係數中恢復。在[83]中,這樣的平面係數表示被用來學習顯式地預測平面。
我們採用了[83]中的平面表示,但我們脫離了平面的顯式預測,而是使用這種表示作為適當的輸出空間,用於定義基於平面先驗的畫素之間的相互作用。
特別是,我們的網路的第一個頭部輸出密集 平面係數圖,再轉換為深度圖,如圖2所示。預測平面係數的動機是,兩個畫素p和q屬於同一個平面,理想情況下具有相等的平面係數表示,而它們通常具有不同的深度。
因此,使用q的平面係數表示來預測p位置的深度,如果畫素屬於同一平面,則可以正確預測。
我們透過學習識別與被檢查畫素共享同一平面的種子畫素來利用這一性質,只要這些畫素存在,就可以選擇性地使用這些畫素的平面係數來改善預測深度。
這種方法是由分段平面先驗驅動的,它表明對於每個具有相關3D平面的畫素p,在p的鄰域中有一個與p關聯的種子畫素q。要用這種方案預測深度,我們需要透過預測偏移量q−p來識別(i)先驗有效的區域和(ii)這些區域中的種子畫素。
透過對融合深度預測的監督,隱式地應用了偏移量和置信圖的監督。由於使用種子畫素進行預測,我們的模型隱式地學習根據畫素在深度圖平滑區域中的隸屬度對畫素進行分組。這有助於儲存尖銳的深度不連續,如圖1所示。
最後但並非最不重要的是,我們提出了平均平面損失,它加強了我們預測的3D表面與地面真相的一階一致性,並進一步提高了效能。
4 相關工作
Supervised monocular depth estimation
假設地面真實深度圖可用於訓練影像,並需要對單個影像進行推斷。一個著名的早期方法是Make3D[59],它在場景中顯式手工製作一個分段平面結構,並使用馬爾可夫隨機場在區域性學習相關引數。
[9]的多尺度網路透過學習從影像到深度圖的端到端對映,開創了深度cnn在深度估計中的使用。後來有幾項工作專注於這一設定,提出了i.a
(i)更高階的架構,如殘差網路[32],卷積神經場[43,73],頻域多尺度融合[34],基於變壓器的塊,參與全域性深度統計[1]和深度合併網路處理多解析度[50],
(ii)更適合深度預測的損失,如反向Huber損失[32]、分類損失[3]、有序迴歸損失[12]、兩兩排序損失[71]和幾種深度相關損失[35]的自適應組合,以及
(iii)深度與法線或語義標籤的聯合學習[8,53,72]。[78]透過將3D點雲編碼器應用於提升的深度圖,解決了混合資料設定中深度偏移和焦距刻度的模糊性。
我們的方法屬於這一類,它將深度預測投射到更合適的空間,以挖掘輸入場景的規律。
Other depth estimation setups
包括無監督和半監督單目深度估計,以及基於立體的深度估計。在[16]中引入了基於新型檢視合成[10]的立體對深度無監督學習,該合成使用了一種影像重建損失,其中預測的深度用於將對中的一幅影像扭曲到另一幅影像的框架中,並在[18]中以完全可微的公式進行了轉換。
這一方向的進一步研究利用了時間資訊[47,52,82]。在該框架中對立體對的需求在[85]中得到了提升,它適用於單目影片。在[27,40,48]中強制了估計的3D結構和跨影片幀的自我運動的一致性。
深度和自我運動在[26,79]中結合了光流和語義,在[76]中結合了邊緣。在[19]中實現了跨影片幀遮擋的魯棒性,並具有最小的重投影損失。在[20,61]中,專門的損失促進了最佳化。
最近的方法利用了測試時的影片輸入[69]、分割輸出的一致性[86]以及相鄰幀之間的縮放一致性[67]。無監督方法通常假設比有監督方法更復雜的訓練資料,並且存在規模模糊和違反蘭伯假設。在[29]中引入了半監督深度估計,它將稀疏深度測量與影像重建損失相結合。
在[39]中,對存在的特定於資料集的假設和深度監測格式的特定資料集假設也有所放寬,它利用多檢視影像收集來生成可靠的大規模深度監測,而在[56]中,利用不同的資料集為單目深度估計提供不同形式的監督,以更好地泛化未見資料。早期的立體聲方法依賴於手工製作的匹配成本[22]來估計視差。最初學習匹配函式的方法包括[30,65],而後續的工作依賴於全卷積架構[5,49]。在訓練和測試中,立體方法也以立體對的形式假設更復雜的資料,這阻止了它們應用於更一般和不受控制的單目設定。
Geometric priors for depth
在文獻中被廣泛研究過。特別是在多檢視立體[14]和三維重建中,傳統上採用分段平面先驗[2,6],以使這些問題能夠更快地最佳化。這些方法涉及顯式深度平面,並將這些平面擬合到影像超畫素或輸入點雲的點集上。
超畫素級深度平面也用於深度去噪和補全[58,66]。在最近的基於深度學習的方法中,幾何先驗的合併要麼透過分割平面顯式執行[36,41,42,81],要麼透過適當設計損失隱式執行[80]。
在[77]的虛擬法線框架中利用非區域性3D上下文,使用來自虛擬平面的監督,這些虛擬平面對應於深度圖的非共線點的三元組。在[23]網路中透過深度注意體積嵌入非區域性共面性約束。
在[46]中使用表面法線來增加規則結構的幾何一致性。[74,83]中使用了一種與影像空間中3D平面係數直接相關的表示,而不依賴於相機的內在引數,用於估計場景中的主導深度平面。
[33]採用同樣的平面係數表示法指導深度網路解碼器部分的上取樣模組,達到了最先進的效能。
我們也將這種表示法用於平面係數,但與[74,83]相反,我們學習它時不需要對平面進行註釋。相反,我們最佳化平面係數和空間偏移向量,以學習識別共面畫素,並使用這種共面性來預測深度。
雖然偏移向量在[54]中也用於僅透過重新取樣預測的後處理深度,但我們將偏移向量合併到單個端到端架構中,並透過與偏移指向的種子畫素相關聯的平面插值生成預測。
我們的方法鬆散地受到[51]的啟發,它訓練偏移向量來從帶註釋的影像中識別例項分割中心,而我們專注於深度預測,並在沒有監督的情況下對平面例項進行操作
5. 方法
5.1 Preliminaries
單目深度估計的基本定義,輸入一副影像,使用一個對映函式,估計每一個畫素位置到相機的距離。
全文的關鍵,建模深度圖到3D場景點的對映過程,為後面法線和平面係數奠定基礎。
5.2 Plane Coefficient Representation for Depth
最核心的東西來了。
給定相鄰的3D points,我們假定他們處於同一個平面上,那麼位於該平面上的點應該具有相同的平面法向量。
由此,,這個公式應當成立。將公式2中的點帶進來,可以推匯出公式3:
接下來,對公示3進行換元,,,然後公式3簡化為公式4:
Z在公式2中表示的深度,根據公式4可以看出,若看成平面係數,求depth map的過程,其實是求解平面係數的過程。
是否是神經網路中間過程輸出平面係數即可,而不直接輸出depth map,因為有了平面係數一個公式就能得到depth map。
似乎一切看著都很合理。
其實這就是這篇論文看著玄乎的地方,認真的思考感覺也沒啥東西在裡面。
5.3 Learning to Identify Seed Pixels
這種間接預測方式比直接預測depth map會更好嗎?
答案是否定的,不僅作者這麼認為,我也認為,我能一步到位為啥要兩步。
接下來告訴你為什麼:
若p屬於平面A,那麼是不是其他位於該平面的畫素應該共享同一個平面係數C。
當預測得到這個平面的種子畫素的平面係數後,是不是這個平面所有畫素的平面係數也就得到了。
作者認為這個是有意義的。
但我覺得他仍然預測了所有畫素的平面係數,沒啥差別。
這點說實話不太理解。
繼續,因此接下來假設網路會去主動找那個種子畫素,然後,其他和種子畫素只差一個偏移量。
由此公式5定義了每個畫素的平面係數等於種子畫素的平面係數加上一個偏移量。
5.3 Mean Plane Loss
除了公式(7)和(8)兩個Loss之外,作者還計算了一個平面Loss,該Loss本質計算了區域性平面的法線損失。