Unsupervised Monocular Depth Estimation with Left-Right Consistency-CVPR17学习笔记

0. 摘要

本文在现有方法的基础上进行了创新,在训练中用更容易获得的双目立体图像代替显式深度图的使用。利用极几何约束,用图像重建损失训练网络生成视差图像。只用图像重建损失得到的深度图质量差,作者一共利用了三个损失函数。

1. 介绍 

我们的方法很快,在GPU上预测一张512×256图像的深度图只需要大约35ms的时间。

2. 相关工作

3. 方法

目前,为大量场景获取深度图的真值是不现实的,而且即使是非常昂贵的硬件如激光扫描仪,在具有运动物体和反射情况的自然场景中也有可能不精确。作为替代方法,我们将深度估计作为图像重建问题。作者的直觉是,给定一对校准之后的双目摄像机,如果我们能学习从一个图像重建另一个图像的函数,那么我们就已经学习到场景3D形状中的一些信息。

作者的方法可以只用左视图同时输出左视图和右视图的视差图,通过迫使它们俩之间达成一致来得到更好的深度图。

由于我们想要得到左视图的深度图,因此Naive的方法并不适合;至于No LR,它在深度不连续处,视差图会出现纹理复制(texture-copy)的情况。因此作者最终提出了Ours的方法。

Unsupervised Monocular Depth Estimation with Left-Right Consistency-CVPR17学习笔记_第1张图片

Unsupervised Monocular Depth Estimation with Left-Right Consistency-CVPR17学习笔记_第2张图片

作者在编码器和解码器之间使用了skip connection,为了让网络在细节上处理得更好。作者没有给出网络结构的示意图,但是附了模型架构的表格,也是很直观的,编码器选用VGG16或者resnet50,解码器选用转置卷积(有训练参数)或者上采样(无训练参数)。

Unsupervised Monocular Depth Estimation with Left-Right Consistency-CVPR17学习笔记_第3张图片

3.1 损失函数

作者使用金字塔输入,即一张输入图片,通过金字塔网络得到[I, I/2, I/4, I/8],在python里这就是一个list,用for语句可以很方便的同时计算4个尺寸的训练损失函数。

作者把他提出来的三种损失函数分别称为Appearance Matching Loss[目的是预测得到的左视图和输入的左视图看起来像], Disparity Smoothness Loss[目的是得到的视差图平滑], and Left-Right Disparity Consistency Loss[预测出来的右视差图根据预测出来的左视差图得到新的左视差图,这个新的左视差图要等于预测出来的左视差图,目的是左右视差图的一致性]

 Appearance Matching Loss:SSIM是用来衡量两幅图的结构相似性的,作者十分良心的公开了源码,SSIM的计算也很方便。

 Disparity Smoothness Loss:

 Left-Right Disparity Consistency Loss:这个表达式我自己认为是比较难理解,只要把它理解成是把右视差图+左视差图生成的新左视差图与左视差图之间的L1正则化项就可以了。

总的损失函数公式如下:

在测试的时候,网络预测左视图在最佳scale下的视差图,这个视差图和左视图有相同的分辨率。在Photoshop的帮助下理解了分辨率,在固定图像尺寸下(例如7.81cm×2.87cm),提高分辨率(像素/英寸)就会提高整幅图像的像素点个数。 那么就需要上采样,PS上采样方法有这些

Unsupervised Monocular Depth Estimation with Left-Right Consistency-CVPR17学习笔记_第4张图片

4. 结果

 

你可能感兴趣的:(Unsupervised Monocular Depth Estimation with Left-Right Consistency-CVPR17学习笔记)