一、基本信息
標題:Unsupervised CNN for Single View Depth Estimation: Geometry to the Rescue
時間:2016
論文領域:深度預測、深度學習
引用格式:Garg R, BG V K, Carneiro G, et al. Unsupervised cnn for single view depth estimation: Geometry to the rescue[C]//European Conference on Computer Vision. Springer, Cham, 2016: 740-756.
二、研究背景
老生常談問題:需要標籤數據,戶外獲取深度昂貴,所以提出本文無監督的CNN單視圖深度預測
監督學習CNN方法:使用均方根RMS計算損失
合成數據:難以估計真實世界
三、創新點
原理
視差公式:
令:
由此可得:
假設CNN可以預測深度視差(這裏預測右圖):
那麼就可以用預測視差加上右圖來合成左圖(輸入的右圖爲):
用預測的左圖減去真實的左圖就得到損失函數:
預測到視差d,同時又知道f和b,就可以得到深度z
損失函數
本文損失函數:
上面d爲預測的深度,f和B預設,爲輸入的左右2張圖。
上圖用左圖預測視差D,然後用右圖加上這個視差來合成圖(其實就是預測左圖),計算損失,爲啥是在右圖加左圖的預測視差呢?這其實叫做synthesizing a backward warp image ,下面解釋。
backward warp
假如用左圖預測的視差d加上左圖,得到的合成圖像存在以下問題:
多個點可能映射到同一個點p->q
而在中有可能有空洞
所以換個思路,用右圖減去左圖預測的視差d,這是合成圖像是用來預測左圖的,那麼損失也可以通過這個合成圖像和左圖來得到,這麼做解決了上述問題,因爲預測圖的目標是用來預測左圖,和真實左圖對比,能夠更好學習(解釋還不是很清楚)。
正則項(防止多個點預測到一個點上)
算梯度吧,要是多個點預測到一個點上,梯度更大。這個會使圖像傾向於平滑
所以最終損失:
提高分辨率
這是跳躍連接
粗分辨率 -> 雙線性插值(4x4 卷積) +
池化 -> 1x1卷積 = 細分辨率
全卷積結構帶來的好處:
- 使用簡單雙線性插值可以保持CNN參數固定
- 而使用上一層的信息可以給粗分辨率提供幫助
網絡結構
典型FCN網絡,因爲去了全連接層,所以可接受輸入圖像尺寸變化。
還有就是上面提到到,可以提高分辨率,因爲可以跨層跳躍連接。
四、實驗結果
aug數據增強8倍
基於KITTI數據集對比:
和監督學習對比:
五、結論與思考
作者結論
網絡在不到一半的KITTI數據集上進行了訓練,在單視圖深度估計方面,可以與目前最先進的監督方法媲美。
總結
立體配對基本思想