From Big to Small: Multi-Scale Local Planar Guidance for Monocular Depth Estimation 介紹
From Big to Small 簡稱 BTS,在 KITTI 和 NYUv2 資料集上擁有絕佳的表現,不直接讓 Decoder 還原出深度,作者提出 LPG 層,使模型能透過 4 個參數還原出真實真度,來看看詳細介紹
2019 年的論文 2021 還有更新,但就是沒有上任何期刊,在各個深度 Dataset 表現都有前 4 名
Introduction
自古以來,想用單張影像來辨認影像中物體的深度,就是一個很難的問題,試想我們把一隻眼睛遮起來,只用一隻眼睛來看眼前的物品,也很難看出拿個離自己比較近,頂多用光影和經驗來判斷
而近期有人使用架構 Decoder-Encoder 的架構來預測單張影像深度,最常被拿來用的有 VGG、ResNet、DenseNet 諸如此類
而這些網路為了達到精確的準確度都會把網路層疊得很深,使得最後輸出 feature 比原本輸入的解析度還要小很多,損失的資料也變多,因此後來有人提出一些多尺度模型的方法,像是 Multi-scale Networks、Skip Connections、Multi-layer Deconvolutional Networks、Atrous Spatial Pyramid Pooling、Dilated Convolution 來讓模型不用疊很深,就能取得較多的資訊
為了讓模型在 Decode 階段能夠還原的更好,作者提出 Local Planar Guidance Layers 架構放在 Decoder 中,在解碼到 1/8, 1/4, 1/2 時個放置一層 Planar Guidance Layers 引導 Decoder 解碼出正確的深度,最後融合起來
不同於 Multiscale Network 和 Image Pyramid,從 Local Planar Guidance Layers 輸出的預測不直接預測深度,而是產生一個 4 維度係數,用來重建原尺度的深度資訊
Related Work
Supervised Monocular Depth Estimation
在監督式學習中,使用 RGB-D 相機或是雷射掃描器收集 GroundTruth 資料,並做訓練
Semi-Supervised Monocular Depth Estimation
在深度預測使用 Semi-Supervised 或是 Weakly Supervised,像是有人出對相對深度排序的 Loss Function 來訓練網路
Self-Supervised Monocular Depth Estimation
Self-Supervised 的作法是拿到一對 Stereo Image 並且計算視差得到深度來訓練網路,這類的作法大大降低製作 Dataset 時的工作量,但是跟最好的 Supervised Learning 模型精準度相比還是輸一點
Garg et al. and Godard et al. 的 Self-Supervised 方法是讓模型能從一張圖生成這張圖的雙目視差圖,並且定義這兩張圖的視差作為目標的 Reconstruction Error,把深度估計變成影像重建的問題
Godard et al. 提出一個能夠端對端的訓練,還提出左右圖片一致性的損失精進模型預測結果
Method
Network Architecture
下圖是網路架構圖
首先使用一般常用的 Encoder 把圖片的大小變成原本的 8 分之 1,把編碼好的圖片接上 ASPP (Atrous Spatial Pyramid Pooling) 得到不同視野域的特徵融合之後,接上作者們提出的 LPG (Local Planar Guidance) 層,並且使用輸出的 4 個參數預測原本圖片的深度
LPG8x8 代表這裡每一個 pixel 會預測出一個 8x8 的平面大小,而他的輸入又是 H/8,所以輸出大小會就是 H
LPG4x4 同理,每個 pixel 預測出 4x4 平面,輸入是 H/4,所以輸出大小也會是 H
LPG 總共預測出 n1, n2, n3, n4 這 4 個參數,n1, n2, n3 的算法是由模型預測出 theta 和 phi,作者幾乎沒有解釋為甚麼,真的很棒
底下這個公式是由 Ray-Plane Intesection 公式推導而來的,這邊有解釋,總之他的特色是幾可用少數幾個參數還原出平面,這裡的 u, v 表示 kxk的座標,不少人在 issue 裡頭問他模型參數怎麼帶入到公式中,這裡有解說
底下這張圖顯示,不同大小的 LPG 層還原出不同細緻度的圖片,把這些圖片加在一起就能還原出真實真度(紅色框框)
Experiment
GPU GTX1080 TI,50 epoch
NYUv2 Depth
使用裡面的 24,231 張圖片訓練,最遠距離是 10 公尺
KITTI Eigen Split
使用 23,488 圖片訓練,最遠距離為 80 公尺
底下是在 NYU 上跟其他現有的方式比較
在 KITTI 上的比較結果,可以發現 0-50m 比 0-80m 精準度較高
還有把結果丟入 KITTI server 的結果
底下是比較提出來的模塊看加上後有沒有比較好,Baseline 是普通的 ResNet-101 加上 upsample 組成的,A 代表 ASPP,U 代表 upconv(先變大兩倍之後再經過 convolution),L 代表 LPG
Ours-ResNet Ours-DenseNet 使用的 loss function 略有不同,會把原本的 loss 開更號 * 10,他也沒解釋為甚麼
下圖是把 encoder 換成其他模型,看效果如何
下面是一些視覺化的結果
Conclusion
BTS 模型真的是除了使用 Transfomer 模型以外做得最好的一個深度預測模型,但是有太多地方沒有解釋清楚,從 2019年發的第一個版本到 2021 年的第六個版本,我都沒辦法從中得到一些合理的解釋,像是為甚麼他會想用 Ray Plane Intersection 導出一個平面,或是裡面有些地方取了 sin 和 cos ,在 github issue 裡面有很多人有相同的問題,作者都選擇沒有回答,只能說模型精準度這麼高的論文沒有投上任何一個 conference 有點可惜了
Code
Tensorflow 官方 裡面也有 Pytorch 的版本
Pytorch