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

三、创新点

原理

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

损失函数

本文损失函数:
E r e c o n s i = ∫ Ω ∥ I w i ( x ) − I 1 i ( x ) ∥ 2 d x = ∫ Ω ∥ I 2 i ( x + D i ( x ) ⏟ f B / d i ( x ) ) − I 1 i ( x ) ∥ 2 d x E_{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 Ereconsi=ΩIwi(x)I1i(x)2dx=ΩI2i(x+fB/di(x) Di(x))I1i(x)2dx
上面d为预测的深度,f和B预设, { I 1 i , I 2 i } \left\{I_{1}^{i}, I_{2}^{i}\right\} {I1i,I2i}为输入的左右2张图。

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

backward warp

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

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

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

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

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

提高分辨率

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

全卷积结构带来的好处:

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

网络结构

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

四、实验结果

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

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

五、结论与思考

作者结论

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

总结

立体配对基本思想

思考

参考

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值