11.Unsupervised Monocular Depth Estimation with Left-Right Consistency

大体介绍

由于之前的方法大都是监督方法,因此在进行深度估计时往往需要大量的ground truth depth data,这很有挑战性。本篇论文把单目深度估计看作是一个图像重建问题(一个非监督的方法,不需要使用ground truth depth),利用极线几何约束,在图像重建丢失的情况下,通过训练网络生成视差图像。但同时也表明,仅解决图像重建问题会导致深度图像质量较差。为此,作者构建了一个新的训练损失,可以加强左右视差图的一致性,这样能够提升性能和鲁棒性。

大体思路是首先将双目摄像头的左图作为整个网络的输入,经过一个卷积神经网络,输出两张分别对应双目摄像头左图和右图的视差图,我再将真正的右图加进来,通过我预测得到的视差图与拿过来的右图进行处理,生成左图。然后将生成的左图与真实的左图作对比,通过loss损失函数进一步反向传播训练网络。

1.Method

本篇论文引入了一种新的深度估计训练损失,它具有内置的左右一致性检查。

1.1 Depth Estimation as Image Reconstruction

在测试阶段给一张单目图像 I I ,我们的目标是通过学习一个函数f能够预测每个像素的深度:在这里插入图片描述
在训练过程中,我们把深度估计看成是一个图像重建问题,它的intuition是,给定一对经过校准的双目摄像机,通过一个函数可以将一个图像重建成另一个图像,这样就学到了正在成像的场景的3D形状。

在训练的时候,作者通过两张图 I l I^l I r I^r ,就是左右彩图,我们不是试图直接预测深度,而是试图找到密集的对应场 d r d^r ,然后应用到左图,这样就能重建右图了。记重建的右图 I l ( d r ) I^l(d^r) I r ~ \tilde{I^r} 。相似的,可以根据右图估计左图 I r ( d l ) I^r(d^l) I l ~ \tilde{I^l} 。假设图像校正之后的,d就符合disparity视差(我们的模型将学习预测的每个像素的标量值)。给出一个基线距离(baseline distance) b b 和相机焦距 f f ,这样就可以通过预测的视差复原深度 d ~ = b f / d \tilde{d}=bf/d

1.2 Depth Estimation Network

在高层次上,本篇论文的网络通过推断warp左图像以匹配右图像的视差来估计深度。
这个方法的关键之处在于,我们可以仅仅使用一张左输入图同时推断两个视差(从左到右和从右到左),并通过强制它们彼此一致来获得更好的深度。
作者的网络使用双线性采样器通过backward mapping生成预测图像,从而得到完全可微的图像生成模型。
在这里插入图片描述
文章中介绍了三种无监督的方法。
第一种(Native):首先输入的是一张双目摄像机拍摄到的左图,经过一个卷积神经网络生成以右图为基底的视差图,之后通过以右图为基底的视差图与左图输入一起重新生成右图,这样我们只需要将双目摄像机的左图作为输入,右图作为输出即可实现视差图的求取,而不需要制作深度图作为groundtruth。
第二种(NO LR):首先输入的还是一张双目摄像机拍摄到的左图,经过一个卷积神经网络生成以左图为基底的视差图,之后通过以左图为基底的视差图与双目摄像机的右图一起重新生成预测左图,这样我们只需要将双目摄像机的左图作为输入,左图作为输出即可实现视差图的求取,同时在训练过程中需要加入双目摄像机右图的参与过程。
第三种(作者的方法):首先输入的还是一张双目摄像机拍摄到的左图,经过一个卷积神经网络后生成了分别基于左图为基底和右图为基底的两张视差图,在代码中实现的时候,基于左图为基底和右图为基底的两张视差图是叠在一起的。之后在基于左图为基底的视差图中加入双目摄像机的右图,生成对于左图的预测图,在基于右图为基底的视差图中加入双目摄像机的左图,生成对于右图的预测图,这样对于整个网络的输入是左图,label是左图和右图,在中间的过程中生成基于左图的视差图和基于右图的视差图。

注意:作者通过从相反的输入图像采样训练网络预测两个视角的视差图的方法解决这个问题。这样做也只需要单个左图作为卷积神经网络的输入,右图只在训练时候使用。用左右图一致性损失增强左右视差图的一致性可以让结果更准确。

作者的全卷积架构是被DipsNet启发的,大致修改后,不需要ground truth 深度图进行训练。作者的网络主要由两个部分组成:
编码器:from cnv1 to cnv7b
解码器:from upcnv7

解码器是从编码器的激活块做skip connections的,这样可以让它能够分解更高的分辨细节。作者从四个不同的尺度输出视差预测(从disp4到disp1),这样可以使空间分辨率加倍。虽然只用单张图作为输入,网络在每个输出尺度预测两张视差图:左到右,右到左。

1.3 Training Loss

作者先根据左视图L1预测得到右视图R1,然后根据生成的右视图再预测的到左视图L2,此时要求L1与L2一致,即所谓(从)左(到右边,从)右(到左边)一致性。
在这里插入图片描述

我们定义每个输出标度的loss为 C   s   C~s~ ,the total loss为四个输出尺度的加和。 C   s   C~s~ 由三部分组成:
在这里插入图片描述
其中, C   a p C~ap 激励重建图像与对应的训练输入尽可能地相似, C   d s C~ds 增强视差的平滑性, C   l r C~lr 是预测的左右视差图的一致性。每一项都包含左右图变量,但是只有左图会喂到卷积层中。
下一步,要说损失函数的每一个部分在左图中(e.g. C l   a p C^l~ap )。而对右图版本(e.g. C r   a p C^r~ap )来说需要交换左右图在另一个方向采样。

① Appearance Matching Loss

在训练过程中,网络通过从相反的立体图像中采样像素来学习生成图像。我们的图像形成模型使用来自空间变换网络(STN)的图像采样器,使用视差图对输入图像进行采样。STN使用双线性采样,其中输出像素是四个输入像素的加权和。与其他方法相比,所使用的双线性采样器是局部完全可微的,并且无缝地集成到我们的完全卷积体系结构中。这意味着我们不需要任何简化或近似我们的成本函数。

输入图像和重构图像的比较:
在这里插入图片描述

② Disparity Smoothness Loss

我们通过对视差梯度 d ∂d 进行L1惩罚来加强视差局部平滑。由于深度不连续通常发生在图像梯度上,因此我们使用图像梯度 I ∂I 用边缘感知项对该成本进行加权:
在这里插入图片描述
通过这种方式,使生成的视差图能够尽可能的连续。

③ Left-Right Disparity Consistency Loss

the loss试图使左视图视差图等于投影的右视图视差图:
在这里插入图片描述
在测试时,我们的网络预测左图像在最佳尺度上的视差 d l d^l ,其分辨率与输入图像相同。利用已知的摄像机基线和训练集的焦距,我们将视差图转换成深度图。虽然我们在训练期间也估计了正确的视差 d r d^r ,但在测试时并不使用。

实验结果:
在这里插入图片描述
在这里插入图片描述

发布了38 篇原创文章 · 获赞 0 · 访问量 1537

猜你喜欢

转载自blog.csdn.net/weixin_40224537/article/details/103405391