Moving Indoor Unsupervised Video Depth Learning in Challenging Environments

室内复杂环境中的无监督深度预测

Abstract:

最近无监督视频深度预测取得了长足的进展,在室外场景,例如KITTI中取得的效果可匹敌有监督方法。然而,直接将这项技术移植到室内仍然面临极大挑战,例如类似白墙的大片无纹理区域,更复杂的手持相机移动轨迹,透明玻璃和反光物体。为了克服这些困难,本文提出了一个新的基于光流的训练基准模型,其能够通过提供更清晰的训练目标来减少无监督学习的难度,并且处理无纹理区域。实验结果证明,在NYU Depth V2基准上,该方法达到了有监督学习的水平。

1.Intro

​ 最近,主流无监督的深度预测方法的核心思想是,同时预测相机运动和场景深度,以合成视图与真实视图之间的外观差异作为整个网络的监督信号。这类方法在室外数据集(KITTI、Cityscapes)上效果瞩目。

​ 然而,直接将该方法应用到室内环境是困难的,KITTI上表现最好的模型在室内数据集NYU V2上很快就无法正常工作了。

​ 作者认为,挑战主要来自以下几个方面:

(1)大片无纹理的区域。无监督方法依赖于视觉差异作为监督信号,而视觉差异在无纹理区域总是接近于0.

(2)更复杂的相机运动。数据集中包含纯旋转,而纯旋转理论上是无法提供场景的深度信息的。

为了克服这些问题,作者提出了一个新的基于光流的训练范式,采用流估计网络产生的光流结果作为监督,训练更容易收敛。其关键部分是一个专门设计的网络,它负责以稀疏到稠密的传播方式估计连续帧之间的光流。这种无监督流网络能够处理非纹理区域,并产生似是而非的光流结果。这样,该网络就可以作为教师同时对深度网和波网进行培训。还改进了现有的PoseNet,使其更容易学习复杂的手持相机的运动。

  1. 方法

    3.1整体框架

image-20200927234720535
image-20200927234733218

Fig1.框架总览。(a)是传统框架,(b)是作者提出的框架。前者的监督信号是基于两幅图的外观匹配的,既不稳定也无法应对无纹理区域。后者使用SF-Net生成的光流预测作为监督信息并处理PoseNet的输入。

如图(a)所示,在训练期间,两个网络同时估计场景的深度和相机的位姿。一旦RGB图像的深度图被估计,就可以根据相机内参回溯像素在图像平面上的三维坐标。然后根据运动估计,将三维点云转换为另一个视图。这种转换可以表述如下:

image-20200928125508339

其中K表示相机内参,Tt->s表示从视角t到s的转换矩阵,Dt表示预测出的深度,pt和pt->s分别表示视图t和视图s中一个像素的齐次坐标。据此可以得到从视图t到视图s的二维刚性流:

image-20200928131437924

利用刚性流合成新图像计算损失

image-20200928225917658

为了解决纹理缺失的问题,没有使用这种间接的代理监督,而是提供了一个明确的光流目标来监督估计的刚性流,如图1 (b)所示。光流目标由一个稀疏稠密的流估计网络SF-Net获得,因此,将目标函数修改为:

image-20200928230038547

其中ft->s(pt)表示SF-Net给出的光流结果。

SF-Net:

以往的流量预测方法通常对流量预测存在平滑性约束,这是因为网络在角和边界等纹理区域很容易产生正确的结果,作者希望这种正确的预测能够指导预测错误的邻域。但在非纹理区域覆盖面积较大的室内环境中,正确的预测可能会被错误的预测所淹没。为了解决这个问题,作者提出了一种积极的传播方法。不适用弱平滑性约束,而是将纹理区域的稀疏的初始种子传播到整个图像。这个过程如图2所示。核心思想是,可以利用传统的特征匹配算法,比如SURF来生成稠密的匹配点,就不需要再生成稠密的光流图了。这些匹配点被视作是初始光流种子,并且被传播到整个区域。此外,网络能够抑制训练过程中对应点存在的失配。通过这种方法,在非纹理区域的内部也可以产生似是而非的结果。

出于效率方面的考虑,作者采用了CSPN的结构作为传播方法。该方法将中心像素的信息以卷积的形式迭代扩散到其8个邻域。

本文的适应网络是一个非常简单和常见的encoder-decoder架构,将堆放RGB图像和稀疏的种子作为输入和输出两个结果:一个是粗光流F0,另一个是带有K 2−1个通道的转换内核Kˆi,j,K表示内核大小。 然后对粗光流进行迭代细化:

image-20200929144347480

其中⊙表示元素积。

image-20200929144547375

在每个传播操作之前,固定稀疏种子,以保证传播的流在稀疏流图的有效像素处具有完全相同的值:

image-20200929150509636

其中\(F^s_{i,j}\)表示填充为0的稀疏流,mi,j是(i, j)处稀疏流的可用性指标,在训练设置中,核大小k设为3,迭代的最大步长为16。

3.3PoseNet

PoseNet的作用是预测相机运动,作者测试了许多不使用PoseNet的方法了,比如ICP,DVO,PNP、EPNP方法,它们无一例外地在NYU V2数据集上崩溃了——深度预测收敛到一个不变的常数上,这是因为这些方法要求低噪声而且准确的初始深度信息。

作者使用SF-Net的结果作为PoseNet的输入——既然已经得到了匹配的像素点,就没有必要让PoseNet再对原始RGB图像做一遍像素匹配。

这种改进相当于将无监督位姿估计分为两个阶段:首先估计两帧之间的光流,然后根据光流推断出位姿。如果存在Ground Truth标签,那么就没有必要进行这种分离。但它提高了PoseNet的可解释性,降低了无监督学习的难度。4.2节中报告的实验结果的显著改进也支持了我们的推测。

3.4. 纯旋转

理论上,纯旋转的图像对不包含深度信息,对训练没有任何好处。因此,首先对训练样本进行纯旋转滤波非常重要。可用单应性矩阵H拟合推导出纯旋转对应点之间的关系:

image-20200929152310754

其中K是相机内参,R是旋转矩阵。

对于每个图像对,使用SF-Net生成的光流,利用RAMSAC来计算对应的单应性矩阵。如果图像中大多数点能够被一个单应性矩阵对应,就认为这一帧进行的是纯旋转。

3.5. 损失函数

3.5.1 SF-Net的损失函数

使用了光度损失和平滑度损失。光度损失计算的是两张图像之间的相似性,包括L1损失和SSIM损失。

image-20200929153033959

SF-Net虽然采用了sparse-to- density训练方案,但也使用边感知流平滑损失来抑制初始种子的不匹配:

image-20200929153147991

其中▽表示向量微分算子,T表示图像梯度加权的转置。

3.5.2 DepthNet和PoseNet的损失函数

1.刚性流损失

image-20200930160528026

|| · ||δ是berHu范数。

损失还包括了Ls_depth和Ls_normal项,这两者都是平滑度约束,形式与公式(11)

相同。不过它们施加在预测的深度和相应的法线上。

实验结果

在NYU V2数据集上各方法的比较:

image-20200930161532001
image-20200930161552666