近期工作表明,基于CNN的深度和自运动估计能够从未标注的单目视频流中学习到。然而,其效果受限于没有定义的移动物体,由于违反了在几何图像重建中,默认为静态场景这一前提假设。更重要的是,由于缺少合适的约束,在不同的样本中网络输出了尺度不一致的结果,如:自运动网络由于所有帧的尺度模糊性,不能为较长的连续视频提供整个相机的运动轨迹。 本文通过为尺度一致预测提供一个几何一致性损失,以及为了解决移动物体和遮挡提出了一个减小的自发现掩膜(induced self-discovered mask)来解决这些问题。
由于没有利用像最近工作的多任务学习,本架构更简单有效。我们的自运动网络能够对于长视频序列预测出一个全局尺度一致的相机轨迹,并且VO(visual odometry)准确度可以与最近使用双目视频训练的结果相比。
这是第一个能够在深层网络下使用未标注的单目视频预测全局尺度一致的长连续视频的相机轨迹。
传统方法通常为手工的阶段(stage-wise)系统,主要依赖于相关性搜索和多视角几何去估计。最近,基于深度学习的方法展示了深度能够利用CNN从单张图像中被推导出来。特别是,无监督方法证明了基于CNN的深度和自运动网络能够在不使用真值(ground truth)或立体图像对的前提下对单目视频序列独立训练。
方法:使用估计出的深度和自运动从一帧图像变换到相邻一帧图像,然后将图像重建损失作为监督信号训练网络。然而,效果由于运动物体而受到限制。
就目前来讲,之前的方法没有考虑到尺度不一致性。因此,我们提出了一个几何一致性损失解决这个困难。特别是,对于任意从视频中采样的两个连续帧,我们利用预测的深度图,将一帧图像转换到3D空间,然后利用估计出的自运动投影到相邻帧处,最后最小化投影的图像以及估计出的深度图的不一致性。
这将明显增强深度网络从连续帧预测几何一致性。随着从视频中的采样和训练的迭代,每个连续图像对的深度估计都将是尺度连续的,并且帧到帧之间的一致性最终能够传播到整个视频序列,由于自运动的尺度与深度的尺度紧紧连接在一起,提出的自运动网络能够从连续的小片段中预测出尺度连续的相对相机位姿。只是最简单的位姿估计进行累加就能够从一个长的视频序列中得到尺度一致的相机轨迹。
对于运动物体的问题,最近的工作通过引进额外的光流或者语义分割网络来解决,尽管确实增加了效果,但是在训练中带来了巨大的计算量。这里我们在不引入新的网络下,从提出的几何一致项中能够自动找到一个掩膜(mask)来解决这个问题。特别是,我们能够轻松的定位出属于动态物体、遮挡区域或者复杂区域(无纹理区域)。通过给这些像素配置低权重,我们能够消除对于离散图像重建损失的影响。与其他利用多任务学习的方法相比,这个方法简单且更有效。
从上到下:采样图片 ; 估计深度 ; 自发现掩膜 其掩膜能够有效找到遮挡和移动物体
(1)提出了一个几何一致性约束,将深度和自运动网络的尺度统一,得到一个全局尺度一致的自运动估计器。
(2)提出了一个利用之前几何一致性约束的自发现掩膜对动态场景和遮挡进行检测。对比其他方法,不用额外的光流或语义分割网络,训练结构更加简单有效。
(3)在KITTI上得到了好效果,提出的自运动估计器与使用双目视频训练的良好效果可以媲美。
传统方法依赖于一个场景多角度之间的视差去还原3D场景几何结构,至少需要两张图片。随着深度学习的发展,Eigen et al. [5]证明了能够使用CNN对单张图像进行深度估计。特别是,他设计了一个由粗到细(a coarse-to-fine)的网络预测单目深度并使用了有距离传感器测量的真实值作为监督信号。然而,尽管这些监督方法有着高质量的光流或者深度估计结果,但是对于真实环境获取这些真实值是很费劲的。
Garg【22】:没有使用真实深度值,通过一个由双目视频对训练的网络对单目图像进行深度估计。他没有使用深度监督的方法,它们利用对极几何的方法,通过对比左图和一个由右图经过变换得到的合成左图之间的颜色不一致度作为监督信号。,Godard【23】:在Grag之后提出了左右一致性损失用于正则化。
Zhan:将这个方法改为了双目视频,然而,尽管立体对的方法没有用到真实深度值,但是准确修正后的双目相机在真实场景中很难找到。
Zhou【7】: 提出了一个完全非监督架构,能够单独的从单目视频中学习深度,其方法在于:提出了一个额外的自运动网络在连续帧图像间预测相对相机位姿。在估计出的深度和相对位姿情况下,对图像进行重建并利用亮度损失作为监督信号训练。然而,由于运动物体的原因其效果受限违背了几何图像重建中的固定场景假设。他的方法使每帧的尺度模糊,因为单独且连续尺度的相机转移矩阵(T)丢失了,只有方向是一致的。结果自运动网络不能在长视频序列中预测出完整的相机轨迹。
为了解决运动物体,近期工作提出了引入一个额外的光流网络,有的甚至添加了运动分割网络,尽管,提高了效果,但是伴随了大量的计算损失被加到基础架构中,而且还存在着尺度不连续的问题。
Liu【24】:使用深度投影损失用于监督密度,与一致性损失相似,但是这个方法依赖于提前计算的3D重建来进行监督。
对于目前而言,本文章是第一个在长视频序列中用单目视频训练的自运动网络预测出全局尺度一致的相机轨迹。对于在视觉SLAM中利用深度学习方法的机器人和自动驾驶有着巨大潜力。
目标:使用单目视频流去训练深度和自运动网络,用它们进行约束预测出尺度一致的结果,给出两张连续帧图像(Ia, Ib)从未标注的视频中、首先,使用深度网络估计出它们的深度图。然后,使用位姿网络估计出两两之间的相对6D位姿。
使用估计的深度和相机相对位姿,通过对原始图像 Ib 进行插值合成相应图片 Ia' 。然后,网络由 Ia 和 Ia‘ 之间的光度差作为监督进行训练。由于动态场景的存在违背了图像重建的假设。最后,我们使用尺度一致的几何一致性损失Lgc以及一个自检测掩膜(M)解决遮挡和移动物体。如图所示:
先对两张图片分别进行深度估计以及相对位姿估计,然后将深度图Da转换到3D平面得到Dba,再将Da利用估计的位姿Pab投影到Ib平面,最后利用由重投影得到的图与Db进行双线性插值得到Db',通过比较Db'和Dba之间(都是3D平面)的光度差Lgc得到的掩膜来监督网络训练。这里对Db进行插值是因为投影流不依赖于Ib的像素格。此外,我们提出的由不一致图产生的掩膜M解决动态场景和有问题的估计区域。
目标函数:
其中,Lp^m代表的是由掩膜M形成的带权重图像损失(Lp),Ls代表平滑度损失,我们通过正向和反向训练网络来最大化数据使用,为了简单化,我们只在前向计算损失。
亮度损失 : 利用亮度一致性和空间平滑度先验用于典型的稠密相关性算法,之前有的方法利用转换后的图像与相应真实图像的损失来训练无监督损失函数。
利用估计的深度图Da和相对相机位姿Pab, 利用可微双线性插值将Ib转化为Ia',对于合成的Ia'与相应图片Ia,形成如下目标函数
其中,V代表从Ia成功投影到Ib的有效点数,对于其异常值的鲁棒性我们选择L1损失,然而由于其真实环境下光照的改变,这个值不是固定的。在此添加额外的为相似度损失SSIM来更好的解决负责光照变化,由于对像素亮度进行了标准化,将亮度损失改变为了:
此处SSIMaa'代表由SSIM函数计算得到的关于Ia和Ia'的像素相似度。
平滑度损失 由于亮度损失在低纹理区或重复特征区域不是特别有效,因此结合平和度先验条件对估计的深度图进行调整,使用了边缘一直的平滑度损失,定义如下:
其中,▽为空间方向的一阶导数,确保了图像边缘的平滑度
像一直强调的一样,我们在预测的结果中加强了几何一致性。特别是,我们需要Da和Db(与Pab有关)形成相同的3D场景结构来的最小化它们的不同。优化器不仅促进一个batch内样本间的几何一致性而且将一致性传递到整个序列。比如:I1的深度与I2的深度尺度相同,I2与I3尺度相同,最终所有的尺度都相同。由于位姿网络在训练中自然与深度网络搭配,我们的方法在整个序列中进行尺度一致性预测。
对于这个约束,我们计算了深度非一致性图,对于每个P属于V的点定义如下:
其中Dab是由Da经过Pab变化得到的Ib计算得到的,Db‘是由估计出的深度图Db(由于变化流不依赖于像素格,因此不能直接适用Db)。这里用它们的差除以它们的和,这比绝对距离要更加明显因为它对待在不同绝对深度的点以同样的方式优化。除此之外,这个函数对称的并且输出从0-1,使得训练更加稳定
对于不一致图,我们提出几何一致性损失为:
通过最小化每个连续图像对之间预测的深度值之间的几何距离以及促进他们的尺度一致性。在训练的时候,一致性能够传递给整个视频序列,由于自运动深度估计的紧密连接,自运动网络最终预测出全局尺度一致的轨迹
为了解决可能对网络训练造成影响的移动物体和遮挡,最近提出网络引入额外的光流和语义分割网络。这很有效,然而引入了额外的计算量和训练负担。下面展示由提出的非一致性图有效标定出的这些区域。
有以下几个场景会导致由不同视角造成的非一致性场景结构:
(1) 动态物体
(2) 遮挡
(3) 对于不同区域的非准确估计
没有将它们明确进行分离,我们发现每一项都会导致Ddiff从它的理想值0增加。
在这个基本发现下,提出了一个权重掩膜M作为取值【0,1】的Ddiff:
其中,对非一致/一致像素分配高/低权重,它也会被用到光度损失的重分配权重中,特别的,将光度损失改为:
通过使用这一掩膜,我们减少了移动物体和遮挡造成的影响,更多的是,在反向传播过程中,非准确预测区域计算得到的梯度带有较低的权重。