摘要
提出一种利用结构和语义的方法来进行深度和自我运动的无监督单目学习。对单个对象的运动进行建模,并结合深度和自我运动来学习其3D运动矢量。解决了以前方法无法解决的动态场景。
1、介绍
对运动物体的3D运动、相机自运动、场景深度进行建模,并通过在线优化多帧图像来适应新环境。本方法通过引入了结构和语义,将物体在3D环境中表示并将运动以SE3转换进行建模,训练时对未标定的单目视频使用全微分方法。
在线优化方法能够在不同领域进行转移并独立于基本方法。这项工作是【1】的延伸,与其他研究在动态场景上更优,我们通过训练一个数据集并测试另一个数据集来评估区域转移,而无需进行微调。
2、之前研究
Garg et al. [4] 在神经网络中同时对深度和自运动进行学习;Zhou et al. [22]提出第一个全微分网络来无监督学习深度和自运动(比用深度传感器作为监督方法更好),还有一些使用双目视频对训练然后用单张图像进行测试效果更好。
3、深度和自运动学习
本文提出一个方法,能够通过对物体运动进行建模来对动态环境建模,并通过在线优化方法来选择合理的学习策略。训练时,输入3帧连续图像以及相机内参,深度由函数(全卷积编码-解码网络)从单张图像生成稠密深度图。自运动由自运动网络以2帧RGB图像作为输入,输出2帧图像间的SE3变化(6维向量,平移+旋转)
假设深度网络输出的深度准确,并把所有点投射到3D空间里。此外,在给出连续帧的自运动后,可以对场景进行转换并将其投射到相邻帧上,具体做法是,通过使用可微图像操作,把任何原始图像利用相应估计的深度和自运动估计变换到。
这里,φ读取转换的图像像素坐标后执行变换,设为,其中后面的操作指的是先将深度投影到3D点云中,然后将其根据进行变换。实际上,在连续序列中常常把前后图像向中间时刻变换。监督信号使用投影后的图像与后一帧的真实图像的光度差。
3.1 运动模型
为了处理高运动场景,对单独的物体运动进行建模,也就是在模型引入第三个变量,专门估计3D空间的物体运动(Figure1),它使用与自运动网络相同结构,但是训练的权重不同
图1:本方法在学习过程中以对单个物体运动,自运动和场景深度进行建模,从而利用3D几何结构和语义。 此外,一种优化方法可以在线方式即时调整模型
物体运动模型:使用图像序列作为输入,补充预计算的实例分割mask,运动模型预测每个物体3D空间的转移向量,生成相对于相机在另一角度观察到的物体。 最终结果是移动物体的单独变换以及自运动的结合(Figure2)。
图2:示意图:首先,物体mask用于移除运动部分。 然后计算对象的自运动; 单独的物体运动,是根据自运动变形后输出的图像得到。最终变换图像的前一帧和后一帧的在RGB空间中与原始图像进行比较
计算自运动:
- 首先将物体运动移除图像,比如在将序列喂入自我运动模块之前,通过逐元素乘法将静态场景binary mask应用于序列中所有图像。静态背景基于ψE变化一次后生成
- 然后将每个运动物体先根据ψE变化然后根据ψM变换。潜在的运动物体轮廓根据现有算法,并只需训练时使用(与之前使用光流的工作相似,并且没有在任何数据集的感兴趣区训练)
3.2 施加物体大小限制
之前研究的限制在于以近乎相同速度行驶在前面的汽车经过映射为无限深度,这是因为在前面的物体没有明显运动,如果网络将它映射成无穷远处,重投影误差几乎为0这样更偏向于正确结果,之前只有使用双目图像作为输入能够解决这个问题。 我们让模型学习物体的尺度。
我们发现如果模型没有物体尺度的概念,那么把大物体放在非常远处伴有明显的运动,或者一个放在近处的小物体运动不是太明显,这两个物体运动是一致的。我们的想法是在训练过程让模型学习物体的尺度,于是可以在3D空间对物体建模。假设已知某种物体的大概高度,比如:一辆车,我们可以得到大致深度,其中是相机焦距,是我们的高度先验,是相应分割blob的高度。
我们对每个物体定义尺度损失项,让为物体i 定义一个类别ID,为类别ID j的可以学习的高度先验,D为估计的深度图,S为相应的物体轮廓mask,损失为:
此loss 防止了分割对象退化为无限深度,并使网络不仅生成合理深度,而且与估计的物体运动相匹配。我们使用减少由先验条件的缺少以及深度范围带来的影响,其中是中间帧的平均估计深度。