单目自监督稠密景深估计

Unsupervised Learning of Depth and Ego-Motion from Video

CVPR 2017:基于非结构化的视频输入,采用无监督学习框架得到了单目景深和相机运动估计。在训练时,景深和相机运动耦合在一起训练;但是在应用时可以单独使用。

文章材料(论文,源码,演示视频)链接:https://people.eecs.berkeley.edu/~tinghuiz/projects/SfMLearner/

算法原理

整个算法的训练输入就是视频的三帧子序列。其中深度估计只基于当前帧作为输入,得到目标图像每个像素点的深度估计。而位姿估计网络,同时基于前后两帧图像来得到前后两帧的空间变换矩阵。而最终的 loss 是基于深度和位姿的估计综合定义的。

监督信号

该算法将相邻图像经过映射之后的差异作为 loss。

首先基于景深和位姿估计将目标图像上的像素点投影到前后帧上。然后使用双线性插值获取在同一位置前后帧的像素值。

而 pt 到 ps 的变换由下式给出,其中用到了估计的景深和变换矩阵,其中 K 为相机内参。

模型的局限性

  1. 场景中不能存在移动的目标
  2. 在相邻三帧中不存在遮挡
  3. the surface is Lambertian so that the photo-consistency error is meaningful

为了解决这个问题,同时也提高算法的鲁棒性,论文中提到可以单独训练一个网络来估计每个像素的 mask。原理大致是估计出哪些像素点存在运动目标或遮挡,那么这些像素点将不参与 loss 的计算。

局部梯度问题

如果待估计像素周围像素值差异不大(缺少纹理)或者估计点远离真实点,此时将阻碍训练的进行。

解决这一问题有两种常用思路:

  1. 使用一个小 bottleneck 的编码和解码网络,从而隐式的获取全局的平滑结果
  2. 通过显示的定义多尺度的平滑 loss

文中采用了第二种方式,最后的 loss 定义如下:

其中最后一项是为了在无监督的情况下,限制 mask 的估计,避免造成 mask 全部估计为零的情况。

网络结构

整个网络结构借鉴了 N. Mayer, E. Ilg, P. Hausser, P. Fischer, D. Cremers, A. Dosovitskiy, and T. Brox. A large dataset to train convolutional networks for disparity, optical flow, and scene flow estimation. In Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition, pages 4040– 4048, 2016. 中的 DispNet。

FisheyeDistanceNet: Self-supervised Scale-Aware Distance Estimation using Monocular Fisheye Camera for autonomous Driving

arXiv 2020:在没有对鱼眼图像进行校正的前提下,仅通过单目鱼眼视频得到了一个能够估计景深和相机运动的尺度自适应网络。

论文地址:https://arxiv.org/abs/1910.04076

效果视频:https://www.youtube.com/watch?v=Sgq1WzoOmXg&feature=youtu.be

本文是在上文的基础上引入了诸如鱼眼镜头的畸变模型等先验信息从而大幅提高了景深估计的精度。

算法细节

鱼眼镜头建模

从 3D 空间上的点  到图像上的像素位置 p= 之间的映射可以通过以下几个公式建模:

对应反变换也可以直接推导得到。

训练时的尺度模糊问题

由于单目景深估计本质上存在尺度模糊问题(即估计景深为1,但无法确定 1 的单位是米还是厘米),因此论文中使用两个时刻车的速度来解决尺度模糊问题。

静止物体 mask

为解决上一篇文章中提到的运动物体的问题,本文增加了一个静止物体标识 mask 的计算。在网络 forward 阶段,将输出一个 0-1 的二值 mask 用来标识静止物体。同时,只有在经过变换后的像素值误差小于原始图像的像素值误差时,对应位置的 mask 才为 1。

Photometric Loss

基于估计得到的深度,通过上面定义的反投影关系可以得到图像中实际物体的 3D 点云。

之后再根据投影关系,就可以将 3D 点云重新投影回目标图像。

其中由于重构像素位置是连续的,因此过程中也需要使用双线性插值。

最后的目标损失函数参考 Z. Wang, A. C. Bovik, H. R. Sheikh, E. P. Simoncelli, et al., “Image quality assessment: from error visibility to structural similarity,” IEEE transactions on image processing, vol. 13, no. 4, pp. 600–612, 2004. 中定义的 Structural Similarity (SSIM)

其中 M 就是上面介绍的静止物体 mask

多次误差计算

为了引入更多约束,论文中不止计算前后帧图像向当前帧的投影误差,同时考虑当前帧向前后帧的投影误差。这增大的计算量和训练时间,但是提高的精度。

边缘平滑损失

为了归一化遮挡和缺少纹理区域的距离并避免发散,因此额外引入几何平滑误差。

这个没太看懂,说是可以借鉴一下三篇文章:

  1. C. Godard, O. Mac Aodha, and G. J. Brostow, “Unsupervised monocular depth estimation with left-right consistency,” in Cvpr, 2017.
  2. R. Mahjourian, M. Wicke, and A. Angelova, “Unsupervised learning of depth and ego-motion from monocular video using 3d geometric constraints,” in Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition, 2018, pp. 5667–5675.
  3. Y. Zou, Z. Luo, and J.-B. Huang, “Df-net: Unsupervised joint learning of depth and flow using cross-task consistency,” in Proceedings of the European Conference on Computer Vision (ECCV), 2018, pp. 36–53.

景深一致性损失

由于不同帧中对应相同静止物体的景深应该具有一致性,因此文中进一步引入了景深一致性损失。本质就是通过上面的公式 6 和 7,统计不同帧上相同静止物体的景深估计差异。

最后的训练误差

式中为了避免收敛于局部最优点,采用了四个不同尺度计算的误差加权和作为最后的训练误差。

网络细节

具体网络结构感觉跟上一篇文章类似。

最后再给一张效果图

单目自监督稠密景深估计相关推荐

  1. ECCV 2020 | 基于分割一致性的单目自监督三维重建

    论文地址:在公众号「3D视觉工坊」,后台回复「单目自监督」,即可直接下载. 概述 本文主要从二维图像及其轮廓的集合中,学习一个自监督的.单视图的三维重建模型,预测目标物体的3D网格形状.纹理和相机位姿 ...

  2. DeepFusion:基于单视图深度和梯度预测的单目SLAM实时稠密三维重建

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 标题:DeepFusion: Real-Time Dense 3D Reconstruction fo ...

  3. 单目多帧自监督深度估计(2021-2022)研究进展

    自从17年MonoDepth系列论文问世, 单目自监督深度估计算法越来越受到研究者的重视.人们发现, 在自动驾驶场景中,原来单目自监督方法也能计算出不错的深度效果.但是单目深度估计方法的可解释性比较弱 ...

  4. 用于自动驾驶的混合稀疏-稠密单目SLAM系统

    点击上方"计算机视觉工坊",选择"星标" 干货第一时间送达 作者丨泡椒味的口香糖 来源丨 GiantPandaCV 0. 引言 随着自动驾驶系统的推广,越来越多 ...

  5. 单目深度估计 | Learning Depth from Monocular Videos using Direct Methods 学习笔记

    文章目录 摘要 1. 论文主要贡献: 2. 从视频中学习预测深度 2.1 尺度模糊 2.2 建模姿态估计预测器 3. 可微分直接视觉测距法 3.1 直接视觉测距法(DVO) 3.2 可微分的实现 4 ...

  6. 最新综述|深度学习的单目人体姿态估计

    向大家推荐一篇今天新出的人体姿态估计综述文章 Monocular Human Pose Estimation: A Survey of Deep Learning-based Methods ,对20 ...

  7. 【今晚七点】:单目3D人体姿态估计的挑战和探索

    点击上方"LiveVideoStack"关注我们 单目3D人体姿态估计(aka. 3D HPE)在视频动作分析.计算机图形学(CG)等领域有广泛的应用场景,同时,由于无需复杂的人体 ...

  8. 半并行深度神经网络(SPDNN)混合架构,首次应用于单目相机的深度

    摘要:近年来,深度神经网络应用于广泛的问题.在这项工作中,卷积神经网络(CNN)应用于从单个摄像机图像(单眼深度)确定深度的问题.设计八个不同的网络来执行深度估计,每个网络适合于特征级别.具有不同池大 ...

  9. 史上最全 | 单目相机测距测速方法大盘点!

    点击下方卡片,关注"自动驾驶之心"公众号 ADAS巨卷干货,即可获取 点击进入→自动驾驶之心技术交流群 后台回复[ECCV2022]获取ECCV2022所有自动驾驶方向论文! 论文 ...

最新文章

  1. Java主方法引用传递_java方法中的参数传递是值传递还是引用传递(转)
  2. MSTP多业务传输平台对设备接口的要求有哪些?
  3. 数学建模:Leslie离散人口发展模型
  4. python查询12306余票_12306火车票余票查询Python实现邮件发送
  5. 关于ASCII码的理解
  6. 【实现】Java实现的文件批量改名
  7. Java核心技术 学习记录1
  8. 【重要公告】包头市新型冠状病毒感染肺炎防控工作指挥部公告(2022年第4、5、6、7号)
  9. 我的C盘满了 如何清理一下
  10. python自动化测试面试题代码_Python自动化测试面试题-编程篇
  11. Adobe Acrobat DC无需注册登陆版
  12. Adobe After Effect (AE) cc2020 安装教程【64位】
  13. jeesite4 下拉框
  14. 当领导招了100个初级开发去做3个资深开发的工作
  15. Kafka rebalance触发条件
  16. php开发服务器电脑,如何在自己电脑搭web服务器开发环境
  17. SpringBoot+vue大学生就业服务平台
  18. sql注入漏洞和sqlmap的使用
  19. 【PMP机构推荐】PMP考试培训机构如何选择,真实报班感受,全面避坑指南
  20. TCP和UDP都是全双工通信的吗

热门文章

  1. 如何“用脑子”有效学习?这可能是一篇能让你破解学习焦虑的文章
  2. Linux命令及使用方法new
  3. 名帖61 褚遂良 楷书《雁塔圣教序》
  4. 实现json解析工具jcat
  5. html空格语言,html的空格代码是什么
  6. 教给大家怎么跟好友一起看视频?亲测可用
  7. Java学习之八皇后
  8. 无套路送 8 个小米手环4,价值 1500 元
  9. Matlab多核并行计算parfor的那些事儿【注意事项】
  10. 老是自动弹出输入iTunes store 的apple ID 账号密码的窗口 解决