论文笔记:Unsupervised CNN for Single View Depth Estimation: Geometry to the Rescue(无监督深度预测系列1:naive方法)

一、基本信息

标题: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计算损失
合成数据:难以估计真实世界

三、创新点

原理

在这里插入图片描述
视差公式:
xb=zfxr;x=zfxl(xlxr)=fbzx-b=\frac{z}{f} * x_{r} ; x=\frac{z}{f} * x_{l} \Rightarrow\left(x_{l}-x_{r}\right)=\frac{f * b}{z}
令:
d=fbzd=\frac{f * b}{z}
由此可得:
d=xlxrxl=d+xrd=x_{l}-x_{r} \Rightarrow x_{l}=d+x_{r}
假设CNN可以预测深度视差(这里预测右图):
F(xr)=dxF\left(x_{r}\right)=d_x
那么就可以用预测视差加上右图来合成左图IwI_w(输入的右图为IrI_r):
Iw=Ir(F(xr)+xr)I_w = I_{r}\left(F\left(x_{r}\right)+x_{r}\right)
用预测的左图减去真实的左图就得到损失函数:
L=(IwIl)2L = (I_w - I_l)^2
预测到视差d,同时又知道f和b,就可以得到深度z

损失函数

本文损失函数:
Ereconsi=ΩIwi(x)I1i(x)2dx=ΩI2i(x+Di(x)fB/di(x))I1i(x)2dxE_{r e c o n s}^{i}=\int_{\Omega}\left\|I_{w}^{i}(x)-I_{1}^{i}(x)\right\|^{2} d x=\int_{\Omega}\left\|I_{2}^{i}(x+\underbrace{D^{i}(x)}_{f B / d^{i}(x)})-I_{1}^{i}(x)\right\|^{2} d x
上面d为预测的深度,f和B预设,{I1i,I2i}\left\{I_{1}^{i}, I_{2}^{i}\right\}为输入的左右2张图。

在这里插入图片描述
上图用左图I1I_1预测视差D,然后用右图加上这个视差来合成图(其实就是预测左图)IwI_w,计算损失,为啥是在右图I2I_2加左图的预测DD视差呢?这其实叫做synthesizing a backward warp image (Iw)(I_w),下面解释。

backward warp

在这里插入图片描述
在这里插入图片描述
假如用左图预测的视差d加上左图,得到的合成图像存在以下问题:
多个点可能映射到同一个点p->q
而在II^{'}中有可能有空洞
所以换个思路,用右图减去左图预测的视差d,这是合成图像是用来预测左图的,那么损失也可以通过这个合成图像和左图来得到,这么做解决了上述问题,因为预测图的目标是用来预测左图,和真实左图对比,能够更好学习(解释还不是很清楚)。

正则项(防止多个点预测到一个点上)

Esmoothi=Di(x)2E_{\text {smooth}}^{i}=\left\|\nabla D^{i}(x)\right\|^{2}

算梯度吧,要是多个点预测到一个点上,梯度更大。这个会使图像倾向于平滑

所以最终损失:
E=i=1NEreconsi+γEsmoothiE=\sum_{i=1}^{N} E_{\text {recons}}^{i}+\gamma E_{\text {smooth}}^{i}

提高分辨率

在这里插入图片描述
这是跳跃连接
粗分辨率 -> 双线性插值(4x4 卷积) +
池化 -> 1x1卷积 = 细分辨率

全卷积结构带来的好处:

  • 使用简单双线性插值可以保持CNN参数固定
  • 而使用上一层的信息可以给粗分辨率提供帮助

网络结构

在这里插入图片描述
典型FCN网络,因为去了全连接层,所以可接受输入图像尺寸变化。
还有就是上面提到到,可以提高分辨率,因为可以跨层跳跃连接。

四、实验结果

在这里插入图片描述
aug数据增强8倍

基于KITTI数据集对比:
在这里插入图片描述
和监督学习对比:
在这里插入图片描述

五、结论与思考

作者结论

网络在不到一半的KITTI数据集上进行了训练,在单视图深度估计方面,可以与目前最先进的监督方法媲美。

总结

立体配对基本思想

思考

参考

深度学习之单目深度估计 (Chapter.2):无监督学习篇

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章