Self-supervised Object Motion and Depth Estimation from Video(2019.12)

https://arxiv.org/pdf/1912.04250.pdf

1.Abstract

  用自监督模型从视频中估计单独的物体运动深度,物体运动是6自由度刚体变换,运用实例分割mask引入物体信息。与使用光流对运动建模的方法相比,减少了需要估计的量,本系统通过使用预计算的相机自运动左右光度一致性(left-right photometric consistency来消除尺度不确定性

贡献:

(1)估计出固定场景的6D变换,之前方法使用2D/3D光流对运动建模,我们只对单独物体进行运动估计,大大减少了计算量。(2)解决了尺度模糊问题,使用预计算的相机自运动左右光度差来进行图像合成。使左右光度差记录立体图像对的尺度信息。

2.相关工作

  目标运动可以由光流图生成。Yin[55]利用估计的深度和自运动,从固定流上估计出残差流(residual flow)。残差流可以解决小误差,但无法处理大像素移动,如物体运动过快。Luo[20]同时训练深度自运动光流运动分割,并加强每个估计之间的一致性。[25]采用相似结构,采用竞争合作(competitive collaboration)的方法处理。

  光流估计还被处理为端到端的深层回归。PWC-Net[28]更是通过融合金字塔处理和cost volume增加效率。此外,光流和场景流被用来解决物体运动。场景流用来描述一个点的3D运动,[31,32,24]通过分段拟合刚体运动来估计场景流,他们把场景分解成小的刚体运动,并加强约束,如[31]中的外观或速度的一致。DRISF[21]通过最小化能量函数生成场景流

我们则将物体运动看做刚体变换,与Vincent[3]方法近似,预计算的实例分割用作单独物体运动估计,改进如下:(1)我们估计了组合的转换,同时封装了相机自运动物体运动。Vincentr [3]从PoseNet估计的相机自运动来估计单独物体运动。 因此,其准确性取决于PoseNet。 (2)我们估计的是物体的绝对运动,可直接在3D空间变换物体。 相比之下,Vincent 仅预测 up-to-scale运动,这意味着在他们中缺少物体运动的幅度

3.方法

3.1 图像合成

对于每个在目标图像的像素,需要已知其在相应原始图像中的位置。两者的光度一致性是监督信号。

合成静态区域

从视频中截取t,t+1 两时刻图像,相应像素计算如下:

其中代表像素的齐次坐标,为相应系统的自运动(如图2),中的的3D投影点,表示在p点的深度估计(与深度成比例),指的是中的静态区域

图2:动态物体的合成,先将投影为相应相机坐标下的3D点,然后通过(物体自运动)以及(相机自运动)进行变换,最终投影到上的

合成动态区域

动态像素由公式(2)计算,这里3D点,由刚体变换进行额外变换,

其中,指的是动态区域的像素。假如图中有n个运动物体,则为每个物体估计,然后分别有公式【1,2】对静态和动态区域进行合成(不包含复杂的行人的运动)。

3.2 框架

图3:对于图像合成,每个像素被分为静态、动态。动态像素由估计的深度单独物体运动合成,静态像素由相机自运动深度合成。相机自运动由【8】的VO库预计算得到,动静态像素基于分割mask区分,由Mask R-CNN【11】提供。

我们通过分割mask分出动静态像素,使用与训练的Mask R-CNN模型,分割mask会突出那些潜在的但不是动态的物体(如,当车辆停在信号灯时)

分割mask会分辨场景中的不同实例,我们在不同时间上对照实例mask,并利用这个mask分割不同时刻图像的同一实例,如图3所示的分割实例,这将作为网络输入预测特定物体的运动(将不通时刻同一物体喂入网络,进行位姿估计)。

实际的网络估计结果应该为相机自运动单独物体运动的乘积:

物体运动网络

ObjMotion-net用来估计单独物体运动,由Pose-Net启发,都是以序列作为输出估计6D pose,如【36】中PoseNet证明了能够推断相机自运动,可以进行特征提取和匹配。

ObjMotion-net使用mask后的图像序列作为输入,排除了无用信息。此外,一个控制信号被送入了网络,这个信号包含物体运动的幅度信息,信号表示时刻t,t+1之间第i个物体:

的向量。是做平均,是像素p在中的投影点,是图像中的动态

3.3 损失函数

四部分组成:光度差(photometric loss);左右光度差(left-right photometric loss);控制一致性(control constraint);视差平滑度(disparity smoothness)

  光度差惩罚的是合成图像和对应图像的光度一致性。合成图像是在Depth-net和ObjMotion-net结果基础上合成的,因此在两个网络均提供梯度,另外对采用SSIM相似性检测,估计的深度在不同尺度上进行监督来解决梯度局部性

  当我们计算光度差时,我们对合成图像进行动静态区域的区分,除了对整个图像的光度差取均值,还分别对动、静态分别计算均值,通过加和来得到,分别计算光度损失能够弥补动静态图像区域的不平衡。 左右光度损失能够解决尺度模糊。Depth-net的输出实际上是视差(disparity),用来合成左右图,则惩罚合成图像与真实图像之间的光度差。 实验时发现物体的偏移量估计值很小,通过施加控制约束损失解决,是估计的物体运动偏移量和计算的控制信号F为利用估计深度图生成的两个3D点之间的向量,t为posenet估计的偏移量)之间的L1标准差

视差平滑损失用来平滑视差图,如公式(6)的edge-aware smoothness,这里视差平滑度由指数梯度加权

最终损失函数:

4. 实验

4.1 细节

将图像变到192 × 640大小,输入为连续3帧图像。

对于ObjMotion-net,使用KITTI flow数据集。相机ego-motion没有使用pose-net而是使用Libviso2的VO库。Segmentation mask使用与训练的Mask R-CNN模型,分割出场景中符合刚体运动的物体,如车,公交,货车,分割mask也找到前后时刻同一实例

网络结构

 ObjMotion-net是基于Geonet【35】中的pose-net,如图4.

 图4:ObjMotion-net,A部分是分割后的连续三帧图像,按照颜色通道连接。B部分输入是控制信号,A、B部分特征图被展开并连接在一起,然后通过两个全连接层得到物体运动估计。

B部分的控制信号被整合进网络来解决物体运动的模糊,我们采用批归一化(BN)和ReLUs到所有卷积层,在全卷积层不使用BN

对于Depth-net,采用【35】的主干部分,使用encoder-decoder结果,encoder采用ResNet50,decoder则对特征图使用卷积和上采样,跳跃连接用来结合局部和整体信息。

4.2 训练细节

使用TensorFlow框架,开始单独训练Depth-net,然后整体训练Depth-net 和ObjMotion-net

训练Depth-net

先训练Depth-net,由于准确的control signal(对于ObjMotion-net必要)需要准确的深度估计。首先,Depth-net在KITTI raw数据集上训练,由左右光度一致性和视差平滑度监督,权重设为,在Cityscapes上训练200K次,KITTI上训练100K次。

训练ObjMotion-net 和 Depth-net

除了,光度一致性用来约束动态变化图像,物体运动通过控制信号进行约束。

图5:Bird’s View Box 和3D Bounding Box的可视化. 上面的是我们的结果,下面是GeoNet。红色是估计值,蓝色是真实值。

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值