读论文1-Unsupervised Learning of Depth and Ego-Motion from Monocular Video Using 3D Geometric(老师让看)

打算以后每天看一篇论文并做记录,现在处于菜鸟水平,希望半个月后的自己可以根据自己看的论文写一个小的 无监督单目视觉测量深度/姿态 的一个综述
code地址
自己绘制的本文的模型框架
在这里插入图片描述

摘要

本文的创新点在于

  1. 在整个场景中使用 3D geometry,并且在视频连续帧之间 点云于ego-motion进行强制一致性约束;
  2. 使用validity masks 避免对无效区域的引入(文中指的是,重构图像与原图因为相机移动 漏掉或者多出的部分);
  3. 本文指出,因为此方法具有强大的鲁棒性,因此在手持未校准不稳定的普通相机拍摄的视频中也可使用,使得可使用数据及扩大。

本文使用KITTI数据集和手持相机相机数据集进行了评测,结果优于此前的所测量 深度和ego-motion的方法

1. 介绍

此部分写了

  • 深度信息和ego-motion 对于robot和自动驾驶领域 等的重要性;
  • 无监督方法的重要性:深度GT难以和camera信息对齐;
  • 展开说了创新点,同上。

2.相关工作

此前 深度和ego-motion估计的技术包括:

  1. 立体和特征匹配技术(stereo and feature matching techniques );
  2. 从深度传感器获取监督信息学习深度,后续也是使用fully-convolutional architectures such as FCN [19] or U-Net 将depth estima- tion as a dense prediction problem;
  3. 校准的立体摄像机对:使用立体图像对的彼此重构,利用立体图像本身已知的摄像头间旋转矩阵;
  4. 在训练的时候使用立体图像对,利用视差匹配问题进行深度估计;
    等其他相关方法不在此一一列出。

3. 方法

这里它主要说了自己的新提出的3D损失函数的优点:3D损失考虑整个场景及其几何图形

3.1 Problem Geometry

在这里插入图片描述

主要写了几何原理:输入 t,t-1 时刻的图片得到其深度图Dt-1 、Dt和ego-motion转换矩阵T,通过深度图到点云转换计算得到t-1时刻图像点云后利用ego-motion转换矩阵T得到t时刻的点云,通过点云转换到图像 ,最终得到t时刻的图像,将t时刻的预测图像与实际图像进行比较进行损失约束,使用同样的办法重构另外一张图片(以下损失计算同样需要重复,下面省略说明)。此部分的计算公式如下:
在这里插入图片描述
这里重构图像像素值得获得是通过:
在这里插入图片描述
现在还不明白什么意思,和双线性差的区别,以后再看看

3.2 Principled Masks

因为相机移动,相邻帧图像可能出现一些像素点移除图像边界,可以使用validity masks 来解决这一问题:对每个帧图像对Xt−1, Xt,得到一个mask对 Mt−1, Mt,它指示了Xt−1,和Xt都有效的区域。
自己还没搞清楚这个mask怎么来的,自己的猜测是网络mask分支生成的,稳重这样写的
在这里插入图片描述

3.3 Image Reconstruction Loss图像重构损失

使用重构图与原图践行光度一致性损失计算在这里插入图片描述
因为重构图片是近似图片,它对照明、阴影、半透明或反射等情况的变化较为敏感,因此这部分损失是有噪声并且会产生伪像?(artifacts)为了减少artifacts,就要给他正则化,但这反过来又会导致leads to
smoothed out predictions ?这句没看懂(同学解释:相邻像素点之间的预测值过渡比较平滑)

3.4 A 3D Point Cloud Alignment Loss 3D点云对齐损失

在这里插入图片描述

此部分主要是说使用重构的点云和原点云图进行直接比较,此部分3D损失使用ICP来进行计算转换矩阵T´,同时可以得到残差表示使用转换矩阵T´修正后的图像间距离
在这里插入图片描述
使用计算出的T´作为 ego-motion Tt的损失的负梯度,

ICP是计算一个转换矩阵,这个转换矩阵可以使得两个点云图之间相应点对距离最小,他的主要方法是找到一个转换矩阵,使得两个图像间对应点距离最小,再根据计算的相应点之间的距离修正转换矩阵,再重新找到对应点对,再计算转换矩阵,以此进行迭代。最后输出转换矩阵T和平移t

在使用T´ 校正结束后使用moving the points in the direction rt would decrease the loss,使用 rt 作为深度Dt 的负梯度的 近似。
最后,完整的3D损失如下:
在这里插入图片描述
I是单位矩阵

3.5 基于图像的额外损失

使用结构一致性损失SSIM,方差 σ和均值µ 是使用simple (fixed) pooling计算得到,c1= 0.01^2
and c2= 0.03^2,考虑到ssim是越大越好,因此使用这个式子:在这里插入图片描述
使用深度平滑损失考虑相应输入图片的梯度:
在这里插入图片描述
通过考虑图像的梯度,该损失函数允许在图像中有急剧变化的像素坐标处,有深度的急剧变化

没理解

3.6 学习设置Learning Setup

  • 在4个不同的图像尺度s下,把图像输入网络计算损失函数,尺度由原图到1/8原图大小
  • α, β, γ, ω 是超参数被设置为 α =0.85, β = 0.1, γ = 0.05, ω = 0.15
  • 使用SFMLearner 架构(是基于DispNet)
  • 神经网络由两部分组成,depth tower接收单图输入,分辨率为 128 × 416输出dense depth estimate mapping each pixel of the input to a depth value,ego-motion tower的输入为一堆视频帧,输出ego-motion estimate,
  • 训练的时候,深度估计部分送入图片,ego-motion部分送入视频,并使用3-frame training sequences进行计算,输出6个数字,表示了两个相邻帧对应的相对 3D rotation and translation,
  • 使用TensorFlow, Adam optimizer 的参数设置为β1= 0.9, β2= 0.999,
    α = 0.0002
  • 训练20 epochs

在这里插入图片描述

4 实验结果

4.1 数据集

  • 在KITTI数据集上进行了训练以及测试,本文使用单目视频进行了训练,并使用数据及中的点云和车辆姿势进行了训练模型的评估

KITTI数据集上有完整的数据源,包括stereo video, 3D point clouds from LIDAR, 车辆轨迹等。

  • Uncalibrated Bike Video Dataset是在骑自行车的时候使用手持的iphone相机进行拍摄的,帧率是30fps,分辨率是720×1280,训练集为了与KITTI匹配选择了5fps,使用 91,866 frames from the videos,没有排除任何特定部分,查询了相机的信息构建了相机的内参矩阵

4.2 深度估计的评估

下图是与其他无监督方法进行比较
在这里插入图片描述

下图是定量比较(包括一些有监督)Eigen [6] test set
在这里插入图片描述

模型在Cityscapes数据集进行预处理,在KITTI进行微调,absolute relative depth prediction error(Abs Rel 降低)
在这里插入图片描述

4.3 3D损失的评估Evaluation of the 3D Loss

有3D损失和没有3D损失训练出来的模型,出来的结果区别:有3D损失的模型reduce artifacts in low-texture regions of the image
在这里插入图片描述
由下明显可以看出,有ICP误差的结果好很多
在这里插入图片描述

4.4Ego-Motion的评价

depth and ego-motion are learned jointly and their accuracy is inter-dependent
在这里插入图片描述

4.5. Learning from Bike Videos

使用自行车手持相机视频进行训练,KITTI数据集进行测试,效果接近最好的无监督在这里插入图片描述

4.6 Ablation Experiments消融实验

用来验证实验中每个组件的重要性
在这里插入图片描述
待补充:代码部分—tensorflow的,看不懂,先扔着吧

个人感觉他写的更好

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值