论文阅读+代码细节解释:Unsupervised Monocular Depth Estimation with Left-Right Consistency(CVPR 2017)

文献:
《Unsupervised Monocular Depth Estimation with Left-Right Consistency》
http://openaccess.thecvf.com/content_cvpr_2017/papers/Godard_Unsupervised_Monocular_Depth_CVPR_2017_paper.pdf
基于深度学习的深度估计

  1. 基于监督学习的单目深度估计方法,真实深度图监督+直接拟合。用深度神经网络强行拟合数据集的监督信号。这样做的问题在于,获取实际场景中的深度信息极为困难,因为获取数据集很困难,所以数据集规模往往会比较小,导致泛化性能比较差。
  2. 无监督学习的方法。
    不使用真实的深度图作为监督信号。
    整体思路:假设有一个双目相机,将真实的左视图作为网络的输入,经过一个卷积神经网络之后的输出是两张分别对应双目左视图和右视图的视差图。此时,将真实的右视图拿出来,预测得到的基于左视图为基底的视差图与这个真实的右视图一起进行处理,就可以得到重建后的左视图。相似的,也可以得到重建后的右视图。拿重建后的左右视图和真实的左右视图做对比,可以得到loss函数,从而通过反向传播训练网络。相当于变向的拿真实的左右图来代替真实的深度图作为groudtruth,避开了深度图作为label的问题。这就将深度预测的问题看成了回归问题。
    示意图:
    在这里插入图片描述
    训练的时候是通过双目图像,但做前向预测的时候,是输入单张图,网络就可以预测视差d,由相机基线b和焦距f,可以算出深度Depth = b * f / d。得到的深度信息具有绝对尺度。
    网络结构
    在这里插入图片描述

网络说明:将图像经过Resnet50或者VGG。这里以Retnet50为例说明,Encoder过程会先将图像尺寸降到原来的1/64用来提取特征,之后Decoder的过程中,通过插值和反卷积的方法得到了尺寸为原图,原图的1/2,原图的1/4和原图1/8的特征图。然后将这四个尺寸的特征图与原编码器中得到的相同的尺寸的特征图进行concat(如果生成了视差图也要把视差图加入concat过程),最后分别再经过一层卷积层,生成四个尺寸的视差图。生成四个尺寸的视差图后,又将原始左右图也变成了同样的金字塔图。
损失函数:网络中的损失函数由三个函数构成

在这里插入图片描述

  1. .Appearance Matching Loss
    这个损失函数是用于比较真实左右图与重建的左右图,目的是让真实的左右图和重建的左右图尽可能的像。
    在这里插入图片描述
    其中SSIM部分是找两张图片的相似程度,后面部分直接比较两张图片的像素差,进一步使得预测的图像和真实的图像尽可能地相像。
    关于SSIM:SSIM是一种衡量两张图像相似度的指标。
    输入就是两张图像,通过对两张图像的亮度比较,对比度比较,结构比较来衡量两张图像的相似性,SSIM是一个0-1之间的数,数字越大表明两张图像的差距越小,当两张图一样时SSIM = 1.
    在这里插入图片描述
    亮度:
    在这里插入图片描述
    对比度:
    在这里插入图片描述
    结构相似性:
    在这里插入图片描述
    C1 = (K1 * L)的平方,C2 = (K2 * L)的平方,C3 = C2 / 2均为常数,避免除0。K1 = 0.01,K2 = 0.03为默认值,L为像素值的范围,一般是255。工程上取α=β=γ=1,得:

在这里插入图片描述
出处:https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=1284395
2) .Disparity Smoothness Loss
目的是为了得到的视差图更加平滑
在这里插入图片描述
为了鼓励视差在局部平滑,对视差的梯度进行了L1惩罚。因为图像深度不连续性经常发生在图像的梯度上,所以使用图像梯度来加权。
这里是对四个尺寸的视差图都做了梯度惩罚。
3) .Left-Right Disparity Consistency Loss
在这里插入图片描述
目的是使左右视差图尽可能的相似,因为在训练中,我们其实只使用了左视图来作为网络的输入,但输出却要让网络输出左右视图差。故加入这个loss来保证两个视差图尽可能的相似。同时也进行了L1惩罚。这里同样也是对四个尺寸的视差图做了一致性损失函数。

数据集:
针对室外环境的:1)KITTI dataset 2)Cityscapes dataset
针对室内环境的:
1)Fetch Indoor Navigation dataset
2)NYU dataset

深度估计的度量标准:
在这里插入图片描述
1.绝对相对误差:
在这里插入图片描述
2.平方相对误差:
在这里插入图片描述
3. 均方根误差:
在这里插入图片描述
4. 对数均方根误差:
在这里插入图片描述
5. 精确度(%):
在这里插入图片描述

关于源代码的训练,前向,转深度图的问题:

1.转深度图的问题。
网络的输出实际上是视差图disparities,无论是代码中disp,还是disp_pp均不是直接的深度图,只是视差图。
首先,需要将网络输出的视差图disp_pp * image_width,因为作者将model生成的视差图用图像宽度做了normalize, 所以转成深度图前必须要乘以图像宽度:
在这里插入图片描述
kitti的焦距f:
在这里插入图片描述
相机内参K:
3x3矩阵
[ fx, 0, cx, 0, fy, cy, 0, 0, 1]

  • 9
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值