Unsupervised Learning of Depth and Ego-Motion from Video论文见解

Unsupervised Learning of Depth and Ego-Motion from Video 论文见解

摘要

这篇文章提出了一种学习框架:从视频序列中估计图片的深度和相机的Pose。用到的是端到端的学习方法。它是把视图合成作为监督信号的;所以是无监督的。用depth和pose来进行wrapping;然后再用真实的图片和wrapping出来的图片做Loss.以此来训练模型。

方法介绍:

其中Depth 和 pose 如图所示:

其中R,t就是对应论文中的6-DoF参数 (即旋转和平移)。其中来自视频的图片序列是没有标签的。所以这篇论文使用的是无监督的方法。直接将网络得出Depth和pose用于wrapping。
Unsupervised Learning of Depth and Ego-Motion from Video论文见解_第1张图片

1.视图合成作为监督

如图所示:取中间帧图为It(目标帧)),前一帧和后一帧分别为It-1(源帧)和 It+1(源帧);把It输入到Depth Net得到It的深度图(Dt§)。再把It和It-1、It和I t+1两对图片分别输入Pose Net得到两个Pose。Tt,t-1 和 Tt,t+1。
Unsupervised Learning of Depth and Ego-Motion from Video论文见解_第2张图片
根据相机标定的公式可以推导出从Pt到Ps的公式:在这里插入图片描述
其中:
Pt 目标帧的像素点;
Ps 源帧的像素点;
K 相机的内参;
T 相机的外参;
D 深度图(注意是两个深度图之比)。
在从Pt到Ps的变化中。其中Ps不一定是整数或者就刚刚好就在像素点的网格上。而我们需要用的像素点都是整数。因此文中用了双线性差值的方法把Ps的像素点移动到了网格上。如图所示:
Unsupervised Learning of Depth and Ego-Motion from Video论文见解_第3张图片

在论文中用这个公式做视图合成的时候还提到了三点假设:
(1)场景是静止的,没有移动的物体;
(2)在目标帧和源帧之间没有遮挡;
(3)物体表面是Lambertian以保证图像的一致性误差有意义。
所以它的Loss 函数公式为:
Unsupervised Learning of Depth and Ego-Motion from Video论文见解_第4张图片

从Loss的表达式可以看出来,如果不满足上述的假设,那么这个loss就会很大,这样将会影响到模型的训练。

2.模型的限制

前面提到的三种假设,其实在实际当中是不存在的。因为实际当中怎么可能没有移动和遮挡呢?所以作者就用了一个explainability network(可解释性掩模网络)来处理这个问题。为了提高模型对这些因素的鲁棒性,作者还训练了一个可解释性预测网络(与深度和姿态网络同时进行)。每个目标-源对的每个像素软掩模(Es)标记。作者将explainability network出来的Es作为权重加到了Loss里。为此作者引入了一个 soft mask Es所以Loss变为了: Unsupervised Learning of Depth and Ego-Motion from Video论文见解_第5张图片
但是有可能网络最终会得到所有的Es(p)都是零,所以为了防止这一情况加入正则化项Lreg(Es).
(个人理解):我觉得这个explainability network 就是把不满足上述三个假设的地方直接给去掉了。这样掩模过后的场景就都会满足上述假设。但是这样我觉得会影响到Test模型时的准确性。

3.克服梯度局部性

上述学习的一个剩余问题是,梯度主要来自I(Pt)与I(Ps)的四个相邻之间的像素强度差。如果正确的PS(使用地面真相深度和姿态投影)位于低纹理区域或远离当前估计,这将抑制训练。作者文中说了两种解决的办法:
(1)使用具有深度网络小瓶颈的卷积编码器-解码器结构,该结构隐式地约束输出是全局平滑的,并且有利于梯度传播从有意义的区域到附近区域。
(2)显式多尺度和平滑度损失,允许梯度直接从较大的空间区域导出。
而作者采用的是第二种方法。对于平滑度,作者最小化了预测深度图的二阶梯度的L1范数。
所以最后的Loss变成了:
Unsupervised Learning of Depth and Ego-Motion from Video论文见解_第6张图片

网络结构

1.Single-view Depth Net

该论文的深度图的网络结构是基于DispNet的。如图所示:
Unsupervised Learning of Depth and Ego-Motion from Video论文见解_第7张图片

2.Pose Net 和explainability Net

Pose Net和explainability network是合在一起的。因为Pose Net 和 explainability network 的前5个卷积层是一样的,所以就合在一起画了;具体如图所示:
Unsupervised Learning of Depth and Ego-Motion from Video论文见解_第8张图片

总 结

这篇论文的核心算法就是:输入当前帧的图片进入Depth Net,得到当前帧的深度图;然后再输入当前帧和后一帧或者前一帧的图片进入Pose Net 得到两张图片之间的Pose。再根据相机标定;就可以根据得到的Depth 和Pose,经过Wrapping得出后一帧的图片。在理论上来讲Wrapping出来的后一帧的图片和真实的后一帧的图片应该是一样的。所以根据这个来做Loss,以此来约束训练模型。再经过不断的重复训练,直到模型参数收敛到一定数值为止。

文中还提到了一个尺度因子;
(个人理解):我觉得这个是可能是用来恢复尺度用的。因为这个篇论文当中它的路线图是等比例缩小了的。所以如果想要把文中当中估计出来的路线路图恢复成实际路线图的大小;就需要乘上这个尺度因子。这样就可以恢复尺度了。

你可能感兴趣的:(VO视觉里程计,自动驾驶,tensorflow,深度学习)