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

  • Perspective projection带来的近大远小关系(下图1);

  • 景深变化带来的模糊感(下图2);

  • 遮挡效应,被遮挡物应该距离更远(下图3);

以上种种原因很难具体解释单目深度估计的效果,因为单目深度估计本身就是一个ill-posed的问题,这也造成了单目深度的精度远远低于双目深度(Stereo Depth),多目深度(MVS)。

那么有没有一种方案可以大大提升单目深度估计的精度,并且增加其可解释性呢?答案就是“单目多帧深度估计”。单目多帧深度估计方案使用的仍然是单个相机,不过从原来的单帧(Frame )输入,变为了多帧(Frame , Frame , ...)输入。如下图所示,当相机在运动时,不同时刻拍摄的照片之间自然构成了多目立体几何的视觉关联,所以我们可以利用现有的几何技术(MVS), 来提升我们的单目深度估计精度。

值得一提的是,MVS只能应用在静态场景中(i.e., 上图时刻和时刻被拍摄物体object没有移动),对于自动驾驶场景,静态条件很难满足,因为大多数时刻路面上的车、行人都是在运动的。因此我们可以大致得出一个结论:多帧深度估计在静态区域的精度会比单帧深度估计准确,但是在动态区域(或者其他MVS会失效的情况,例如弱纹理区域、反光区域、相机静止(static frame)等),单帧深度估计的结果会比多帧深度估计准确许多。

在本篇Blog中,我们将分享2021-2022年的几篇多帧自监督深度估计方案,看看他们是如何结合单帧、多帧深度估计方案,去得到更加鲁邦、精确的深度结果。在开始之前,我们先回顾一下单帧自监督深度估计方案(MonoDepth)的基本pipeline:

  1. 通过encoder+decoder将输入的单帧图像编码成深度.

  2. 输入的图像,通过编码器得到他们之间的外参矩阵.

  3. 通过外参矩阵以及深度, 我们可以将把时刻的图像 warp到时刻,得到预测的时刻图像,然后与真实的时刻图像计算loss,从而完成自监督训练。

The Temporal Opportunist: Self-Supervised Multi-Frame Monocular Depth (CVPR2021)

本篇论文别名ManyDepth,它的网络结构图如下图所示,虽然看起来比较复杂,但是如果将红色框部分换成单帧图像的特征,那么就变成了上图MonoDepth的深度估计部分.所以本文的亮点就在于将单帧图像的输入拓展为多帧图像构建的cost volume作为输入。

本文使用MVS领域常用的Plane Sweep Stereo方案构建cost volume:

  1. 通过faeture extractor提取多帧图像(、)的特征(、);

  2. 利用PoseCNN计算至的相机外参;

  3. 进行逐像素的深度假设(depth candidates);

  4. 根据深度假设、相机外参,将 warp 至的图像平面,用二者之差的绝对值构建cost volume;

除了cost volume作为输入之外,本文还有很多“细节”:

  1. 将单目特征与cost volume结合在一起(Concatenation)作为输入:正如本Blog在绪论中提到的,单帧和多帧深度估计各有优缺点,这种特征结合的方案可以让网络自适应选择合适的特征来估计深度;

  2. Adaptive cost volume:在MVS领域,深度假设(depth candidates)的范围往往是利用COLMAP软件计算得到,但是在单目自监督深度估计的setting下,深度是没有尺度的,因此很难去人为计算深度范围。因此ManyDepth通过学习得到场景的深度范围,具体来说,通过指数滑动平均去更新场景的最小深度和最大深度。

  3. Addressing cost volume overfitting:正如本Blog开头提到的, MVS在动态区域,弱纹理区域会失效。ManyDepth也提到如果在训练过程中"all in" cost volume的学习会导致overfit问题,为了解决该问题,本文提出了teacher-student的学习结构,用单帧深度作为teacher,多帧深度作为student,student在不可信区域(动态区域、弱纹理、反光区域等)的输出应该像teacher学习。如果cost volume计算出来的深度()过分偏离单目深度():

    那么这部分就视为student网络的不可信区域,在这部分有一致性loss来迫使student像teacher学习:

    值得注意的是,此处的是cat[cost volume, 单目特征]经过decoder出来的深度结果,而是cost volume直接regress得到的深度结果。

  4. training-time augmentation: 为了强化上述提到的teacher-student学习,ManyDepth在输入数据时按照一定概率将cost volume全部置零,然后迫使多帧深度逼近单帧深度,这样可以有效防止网络overfit cost volume。这一点可以视为第三点的延伸。

结果:在KITTI数据集上ManDepth与单帧输入方法和之前的多帧输入方法相比,都有了显著的提升(Abs Rel)。更多的实验细节见paper。

总结一下:ManyDepth是第一篇使用多帧图像构建cost volume来改进单目深度估计的方法,实验部分可以看出显示的借鉴MVS区构建cost volume会对预测单目深度有很大的帮助。不过笔者认为还有以下几点值得思考的地方:

  • 在MVS领域,一般直接从cost volume中regress得到深度估计,而ManyDepth依然使用单目深度估计的decoder来隐式地从cost volume中学习深度,这可能会抑制cost volume的几何性质。

  • 为了从cost volume中decode出高精度深度,ManyDepth提出了很多technique contributions,包括和单目特征结合(1), 动态计算深度范围(2), teacher-student网络结构(3), trating-time augmentation(4)。这些方案固然能得到很不错的结果,但是也造成了网络训练结构偏向复杂和臃肿。

Multi-Frame Self-Supervised Depth with Transformers (CVPR2022)

本文别名DepthFormer(project page),主要结构与ManyDepth一致,但是提出了以下改进:

  • ManyDepth使用绝对值误差构建cost volume,DepthFormer使用cross attention构建cost volume,如下图。

  • ManyDepth在深度假设范围内等间距采样深度,而DepthFormer使用spatial-increasing discretization(SID)构建深度假设,SID在log space等监督采样深度,这样可以让采样点不要集中在深度值较大的区域。

  • ManyDepth直接从cost volume中decode出深度,而DepthFormer使用以下techniques:

    • self-attention & cross attention 交替优化cost volume;

    • 使用high-response window解码深度,与传统的全局regress相比,这种方式可以避免multi-modal distributions对训练的干扰。

    • context-adjust refinement:在最后的深度估计层,经过优化的cost volume特征与原图的RGB特征融合后一起解码深度信息。这可以增加深度的context信息。

    • ManyDepth从cost volume中解码出的深度仅用于判断多帧深度的可信区域,但是DepthFormer对这部分的深度也用自监督的方式构建loss进行学习,进一步加强了对cost volume部分的学习。

结果:在KITTI上取得了SOTA效果,与ManyDepth相比,Abs Rel从0.098降到了0.090。更多实验细节见原文(DepthFormer在相当多的数据集上做了丰富的实验,感兴趣的研究人员可以参考)。

总结:DepthFormer是ManyDepth的follow up,本文使用了较多的技术细节全面提升了ManyDepth的性能,这些性能的提升主要来自于对cost volume的优化。笔者认为DepthFormer可能存在的问题有:

  • 在ManyDepth较为的“复杂”的结构上,进一步提出了各种技术增量,并没有删繁就简,导致网络更加“沉重”,inference time和显存消耗也大大增加。这很难让后续研究者继续follow。

Disentangling Object Motion and Occlusion for Unsupervised Multi-frame Monocular Depth (ECCV2022)

本文别名DynamicDepth (github),如本文的名字所示,本文着重处理的就是动态场景下的多帧自监督深度估计问题。正如本篇Blog在开篇是描述的,MVS在动态场景下会失效,所以在动态区域的多帧深度并不可靠。现在的已有方法例如ManyDepth,利用teacher-student网络结构,让多帧部分的网络在不可信区域向单帧部分的网络学习,但是所谓不可信区域的判断准则仅仅是依靠多帧深度和单帧深度的差异来计算的,不一定准确。所以DynamicDepth提出的核心论点就是显示地构建动态区域的优化。

DynamicDepth的网络结构主体部分与ManyDepth一致,主要提出的改进点就是有两点:

  • Dynamic Object Motion Disentanglement(DOMD):首先我们来回顾一下动态场景会对多帧深度学习造成什么样的影响,如下图所示,在MVS的静态假设下,我们认为被拍摄的物体没有移动,从时刻和时刻观察该物体,他们的位置都在,因此他们在图象上的对应区域是和。但是在实际场景中,物体已经从移动到,在图像上匹配的区域应该是 和。为了避免这种匹配错误,本文提出的DOMD模块先利用预训练的分割网络分割出人,车等动态区域,然后利用单目深度先验将动态区域给映射到静态场景下应该存在的位置(在上图的例子中就是将crop出, 并将其粘贴在区域)。

  • Occlusion-aware的cost volume:在DOMD进行crop-粘贴的操作之后,图片中已不存在动态物体,但是新的问题又出现了,那就是遮挡区域,如下图的输入部分,我们可以看到crop后的部分区域是黑色的,因为该部分实际被遮挡了,因此本文在构建cost volume的时候需要考虑到被遮挡的情况。如下图所示,被遮挡部分的特征被临近部分的数据所填充,这样可以促进训练的梯度流向附近的non-occluded区域。

结果:和DepthFormer相比DynamicDepth在KITTI上的结果不算突出,但是在Cityscape上DynamicDepth有更强的性能。这是因为Cityscape存在更多的动态场景,DynamicDepth能从中受益。

总结:DynamicDepth在动态区域进行了理论分析,并提出了两大模块针对动态区域进行有效改进,并在动态场景丰富的Cityscape上验证了自己的方法。笔者认为Dynamic依然存在的问题是:

  • 利用了预训练的分割网络,导致预测的深度结果和分割网络的性能密切相关。

Crafting Monocular Cues and Velocity Guidance for Self-Supervised Multi-Frame Depth Learning (arXiv 2022.8)

本文别名MOVEDepth (github),与前几篇不同的是,MOVEDepth不再使用MonoDepth的decoder直接从cost volume中解码出深度,而是follow MVS领域的范式,从cost volume中回归得到深度,MOVEDepth认为显示利用cost volume能够最大程度保留几何信息,得到更准确的深度估计结果。然而如ManyDepth和DepthFormer中提到的,直接从cost volume回归出深度结果并不理想,这是因为在单目多帧深度估计领域,有很多“不确定因素”,例如相机静止(static frame),弱纹理、反光区域,动态场景等。为了解决这些问题,MOVEDepth利用单帧深度先验以及预测的车身速度等信息,构建了一个轻量的cost volume以回归深度。

MOVEDepth的结构如下图所示:

  • Pose branch利用posenet估计相机外参,这部分和之前的工作一致。

  • Monocular branch利用单目深度估计网络预测出“粗糙”的先验深度,其中DepthNet可以是现在的任意一款单目模型,作者在实验部分给出了MonoDepth2和PackNet两种模型。

  • MVS branch遵循了传统的MVSNet范式,唯一不同点在于在Homo-warp阶段,MOVEDepth不在再全局采样深度,而是在单目先验深度(monocular priority)附近进行采样,如下图所示。(注意到ManyDepth和DepthFormer分别使用了96和128个先验深度,而MOVEDepth由于有了先验深度,所以仅采样了16个depth candidates)

  • Velocity guidance sampling,上文提到了MOVEDepth在深度先验附近采样16个深度点,但是并没有约束深度采样的范围。与ManyDepth不同的是,MOVEDepth不再使用学习的方案学习出要采样的范围,而是根据预测的车身速度(posenet估计得到)动态调整深度搜索范围。其Motivation是:如果相机移动速度大,那么前后两帧的stereo baseline就较大,这样比较符合MVS的triangulation prior,可以得到更准确的深度,也就是说MVS会更加的可靠,所以本文增加深度搜索范围。相反,如果相机移动速度较慢,甚至是静止的,那么前后两帧拍摄的场景并没有变化,也没有MVS的几何关联。所以MVS在此时并不可靠,我们要缩小深度搜索范围,让MVS的输出接近单目深度估计的结果,具体的深度搜索范围公式如下(值得一提的是,作者在附录部分给出了具体的几何推导,推导出前后两帧stereo basleine和相机运动速度是线性相关的):

为了解决动态场景等问题,MOVEDepth提出了Uncertainty-Based Depth Fusing,具体来说,从cost volume的熵函数中学习出MVS局部区域的可靠程度,然后作为权重将单帧深度先验和多帧深度进行融合:

从可视化可以看出,深度融合部分的网络从cost volume中学到的不确定区域在动态的车辆、行人上,这有助于缓解动态场景对多帧深度估计带来的问题:

实验:MOVEDepth在KITTI上取得了SOTA效果,值得注意的是,当单目深度先验网络从MonoDepth2变为PackNet时,MOVEDepth的性能也随之提高,可以看出MOVEDepth可以利用当前的单帧深度估计网络的一些研究进展,泛化出更好的结果。

总结:MOVEDepth利用单目深度先验和预测的车速信息,动态构建cost volume并按照MVS领域的范式回归出深度,并探究了如何更好的结合单帧深度估计和多帧深度估计得到更精准的预测结果。笔者认为MOVEDepth可能存在的问题有:

  • 虽然在MVS部分只采用了16个深度假设点,但是依旧需要单目先验网络,这无疑增加了学习负担。

  • 在处理动态部分,依旧是“曲线救国”,从cost volume的熵函数入手,学习动态物体带来的不可信区域,并不是直接处理动态物体,所以性能还有待提升。(值得一提的是,目前的处理动态物体的方法除了类似于这种“曲线救国”的方案,就是利用预训练的分割网络,并不“美观”,效果也不经验,所以如何elegent地处理动态物体将会是一个open problem)。

往期回顾

2022最新 | 室外单目深度估计研究综述​​​​​​​

单目多帧自监督深度估计(2021-2022)研究进展相关推荐

  1. 从ICCV 2021看夜间场景自监督深度估计最新进展

    ©作者 | 青青韶华 单位 | 中科院自动化所博士生 研究方向 | 计算机视觉 单目深度估计虽然在数学和几何上是一个不适定问题(ill-posed),但是随着卷积神经网络的发展,依靠数据驱动的单目深度 ...

  2. ICCV 2021 | OPPO提出室内环境自监督深度估计算法,比肩“有监督”,泛化性能更佳!...

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 来源丨将门创投 室内环境的自监督深度估计向来比室外环境更具挑战性,OPPO提出了一种新颖的单目自监督深 ...

  3. 鱼眼图像自监督深度估计原理分析和Omnidet核心代码解读

    作者丨苹果姐@知乎 来源丨https://zhuanlan.zhihu.com/p/508090405 编辑丨3D视觉工坊 在自动驾驶实际应用中,对相机传感器的要求之一是拥有尽可能大的视野范围,鱼眼相 ...

  4. 三种基于自监督深度估计的语义分割方法(arXiv 2021)

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 作者丨泡泡机器人 来源丨泡泡机器人SLAM 标题: Three Ways to Improve Sem ...

  5. 基于单目RGB的3D人体姿态估计

    基于单目RGB的3D人体姿态估计 1. 简介 2. 实现方案 1. 简介 3D Human Pose Estimation 目标:3D人体姿态估计是从图片或视频中估计出关节点的三维坐标 (x, y, ...

  6. 深度学习的最新研究进展(三)

    本文我们将简要讨论其他深度架构,它们使用与深度神经网络类似的多个抽象层和表示层,也称为深度生成模型(deep generate Models,DGM).Bengio(2009)解释了深层架构,例如Bo ...

  7. 深度人脸表情识别研究进展

    近年来,随着人工智能与人机交互技术的发展,人脸检测.对齐.识别技术的不断跟进,自动人脸表情识别由于其潜在的社交媒体分析和情感计算能力而成为了计算机视觉领域的热点研究话题,并在众多商业场景中有着巨大的应 ...

  8. 深度学习的最新研究进展(二)

    神经网络的功能与人脑相似,它们主要由神经元和连接组成.当我们说深度神经网络时,我们可以假设有相当多的隐藏层,可以用来从输入中提取特征和计算复杂的函数.Bengio(2009)解释了深度结构的神经网络, ...

  9. 流体力学深度学习建模技术研究进展

    流体力学深度学习建模技术研究进展 王怡星.韩仁坤.刘子扬.张扬.陈刚 摘要: 深度学习技术在图像处理.语言翻译.疾病诊断.游戏竞赛等领域已带来了颠覆性的变化.流体力学问题由于维度高.非线性强.数据量大 ...

最新文章

  1. Postfix邮件服务搭建
  2. oracle rman备份时间,Oracle使用RMAN进行备份详述
  3. Android NDK环境搭建
  4. ASP.NET_读写Cookie
  5. 【大数据】通过女票的淘宝历程,大白话讲解大数据各个方向的分工
  6. vmware centos6.4挂载ntfs移动硬盘
  7. Report Builder:SRW包
  8. linux codeblocks汉化
  9. SpringCloud(8)— 使用ElasticSearch(RestClient)
  10. Android 补间动画及动画组合AnimationSet常用方法整理
  11. 亿级流量电商JVM调优(转图灵学院)
  12. 如何开始创业(催生全美最大孵化器YC的文章)
  13. apm软件仿真+QGC地面站 环境搭建
  14. 助你深刻理解——最长公共子串、最长公共子序列(应该是全网数一数二的比较全面的总结了)
  15. 统计学之Bonferroni-corrected
  16. 华为BGP协议基础配置
  17. 噼里啪荣膺信息化影响中国·2017年行业领军企业奖
  18. Linux LVM逻辑卷管理及扩容(二)
  19. 属性动画-Property Animation之ViewPropertyAnimator 你应该知道的一切
  20. Zmeet云会议私有化部署--真正能私有化部署的类zoom会议

热门文章

  1. Jzoj3176 蜘蛛侠
  2. 一级造价工程师(安装)- 计量笔记 - 第四章第二节热力设备工程
  3. 哪个软件可以制作GIF表情包
  4. vue3.2+ 滑动验证组件,pc/手机通用,即插即用
  5. 【Google Earth Studio】进阶编辑技巧
  6. 计算机网络centos下实验1.1(Linux常用命令+Linux网络基础)
  7. repo file=sys.stderr 错误完美解决
  8. 跳槽谋发展:人生发展的一些思考和最近找工作的坎坷经历
  9. 牛牛和DRB迷宫Ⅰ【动态规划】
  10. 关于在微软学生资源中心下载软件