经典!!单目深度估计方向整理--Digging Into Self-Supervised Monocular Depth Estimation

论文链接(ICCV2019):http://openaccess.thecvf.com/content_ICCV_2019/html/Godard_Digging_Into_Self-Supervised_Monocular_Depth_Estimation_ICCV_2019_paper.html

论文代码:www.github.com/nianticlabs/monodepth2

后面文档整理是之前汇报的PPT,截图形式附上啦

Abstract

每像素的地面实况深度数据在大规模获取方面具有挑战性。为了克服这一限制,自监督学习已经成为训练模型执行单目深度估计的一种有前途的替代方案。在本文中,我们提出了一系列改进,与竞争的自监督方法相比,这些改进共同导致了定量和定性的深度图改进。

自我监督单目训练的研究通常探索越来越复杂的架构,损失函数和图像形成模型,所有这些最近都有助于缩小与全监督方法的差距。

我们表明,一个令人惊讶的简单的模型,以及相关的设计选择,导致上级的预测。特别是,我们提出了(i)最小重投影损失,旨在鲁棒地处理遮挡,(ii)全分辨率多尺度采样方法,减少视觉伪影,以及(iii)自动掩蔽损失,忽略违反相机运动假设的训练像素。我们证明了每个组件的有效性,并在KITTI基准测试中显示出高质量、最先进的结果。

  1. 简单模型:作者指出,尽管深度估计领域通常探索复杂的模型架构,但他们发现一个相对简单的模型,结合恰当的设计选择,能够产生高质量的预测结果。

  2. 最小重投影损失:这是一种新的损失函数,用于处理遮挡问题。在深度估计中,遮挡是一个常见问题,即某些像素在源图像中可见,但在目标图像中由于遮挡而不可见。最小重投影损失通过只匹配每个像素在可见视图中的深度,而不是平均所有源图像的重投影误差,从而提高了对遮挡处理的鲁棒性。

  3. 全分辨率多尺度采样方法:这是一种改进的采样策略,它在输入图像的原始分辨率上进行所有图像采样和损失计算,而不是在低分辨率上。这样做可以减少在深度图中出现的视觉伪影,如纹理复制错误。

  4. 自动掩蔽损失:这是一种损失函数,它能够自动识别并忽略那些在训练过程中违反相机运动假设的像素。例如,当相机静止不动或场景中的对象以与相机相同的速度移动时,这些像素的深度估计可能会产生问题。自动掩蔽损失通过计算一个掩蔽掩模来过滤这些像素,从而提高深度估计的准确性。

  5. KITTI基准测试:作者在KITTI基准测试上验证了这些改进的有效性。KITTI是一个广泛使用的自动驾驶汽车视觉系统评估平台,提供了深度估计的标准化测试。作者的方法在KITTI上取得了高质量的、最先进的结果,表明其在深度估计任务上的性能优越。

引言

  1. 研究目标:作者旨在从单个彩色输入图像中自动推断出密集的深度图像。尽管没有第二张输入图像来进行三角测量,但人类可以通过在现实世界中的导航和互动来估计新场景的深度。

  2. 应用前景:高质量的单目深度估计对于自动驾驶汽车中的激光雷达传感器是一个有益的补充,并且可以用于图像编辑和增强现实(AR)合成等新的单张照片应用。

  3. 挑战:收集带有精确地面真实深度的大型多样化训练数据集对于有监督学习来说是一个巨大的挑战。自监督学习方法提供了一种替代方案,它不需要深度的标注数据。

  4. 自监督学习:自监督学习方法通过使用同步的立体图像对或单目视频序列来训练深度估计模型。这些方法通过最小化图像重建误差来训练模型,而不是依赖于深度的标注数据。

  5. 研究贡献:作者提出了三个主要的改进措施,这些措施在训练时结合使用,可以显著提高单目深度估计的性能。这些改进包括最小重投影损失、全分辨率多尺度采样方法和自动掩蔽损失。

  6. 实验验证:作者在KITTI基准测试上展示了他们方法的有效性,并与现有的自监督方法进行了比较,证明了其在定量和定性上都取得了改进。

深度估计方法

在自监督学习中,估计深度和相机自我运动(ego-motion)的方法通常涉及以下几个步骤:

  1. 基于立体视觉(Stereo-based)的深度估计

    1. 立体匹配:在立体视觉中,使用两个或多个相机从不同视角拍摄的图像对。通过比较这些图像对中的像素点,可以找到对应点(匹配点),这些对应点在不同图像中的水平位移(视差)可以用来计算深度。

    2. 相机姿态估计:由于立体图像是同时拍摄的,相机之间的相对位置和方向(即相机姿态)是已知的。这允许直接使用视差来计算深度,而不需要额外的自我运动估计。

  1. 基于单目视频(Monocular Video)的深度估计

    1. 光流估计:在单目视频中,由于只有单一视角的图像序列,需要估计连续帧之间的像素运动(光流)。这可以通过比较连续帧来实现,找出哪些像素在时间上移动了。

    2. 自我运动估计:为了估计深度,模型还需要估计相机在连续帧之间的运动。这通常通过训练一个姿态估计网络来完成,该网络接收一系列连续帧作为输入,并输出相机在这些帧之间的变换(旋转和平移)。

    3. 深度估计:结合光流和相机自我运动的信息,可以估计每个像素在连续帧中的深度。这通常涉及到解决一个优化问题,以最小化重投影误差,即预测的深度和相机运动下的图像重建与实际图像之间的差异。

在这两种方法中,深度估计的关键在于如何准确地匹配图像中的像素点,并利用这些匹配点来计算深度。对于立体视觉,这涉及到立体匹配技术;而对于单目视频,这涉及到光流估计和相机自我运动的估计。这些步骤通常需要复杂的算法和神经网络模型来实现,并且需要大量的计算资源。在自监督学习中,这些估计过程不依赖于外部的深度标注,而是通过图像序列本身来训练模型。

比较

基于立体视觉(stereo-based)的监督和基于单目视频(monocular video)的监督。作者指出,尽管单目视频是一个吸引人的替代方案,但它带来了一系列独特的挑战。以下是对这段话的详细解释:

  1. 单目视频的优势:单目视频作为一种自监督方法,与基于立体视觉的方法相比,具有吸引力,因为它不需要成对的立体图像,而是使用单个相机拍摄的视频序列。

  2. 额外的挑战:在使用单目视频进行训练时,除了估计深度之外,模型还需要估计时间图像对之间的自我运动(ego-motion),即相机在两个连续帧之间的运动。这通常涉及到训练一个姿态估计网络,该网络接收一系列有限的帧作为输入,并输出相应的相机变换。

  3. 立体视觉的局限性:相反,使用立体数据进行训练可以将相机姿态估计作为一个一次性的离线校准过程。然而,这种方法可能会导致与遮挡和纹理复制伪影相关的问题。遮挡问题是指在立体图像中,一个物体可能遮挡另一个物体,使得深度估计变得困难。纹理复制伪影是指在重建的深度图中,由于纹理的相似性,错误地将一个区域的纹理复制到另一个区域。

总的来说,这段话强调了单目视频自监督方法的潜力以及它所面临的挑战,同时也指出了立体视觉自监督方法的局限性。作者在文中提出的改进措施旨在解决这些挑战,以提高深度估计的性能。

创新

  1. 最小重投影损失:这是一种新的损失函数,用于处理遮挡问题。在深度估计中,遮挡是一个常见问题,即某些像素在源图像中可见,但在目标图像中由于遮挡而不可见。最小重投影损失通过只匹配每个像素在可见视图中的深度,而不是平均所有源图像的重投影误差,从而提高了对遮挡处理的鲁棒性。

  2. 全分辨率多尺度采样方法:这是一种改进的采样策略,它在输入图像的原始分辨率上进行所有图像采样和损失计算,而不是在低分辨率上。这样做可以减少在深度图中出现的视觉伪影,如纹理复制错误。

  3. 自动掩蔽损失:这是一种损失函数,它能够自动识别并忽略那些在训练过程中违反相机运动假设的像素。例如,当相机静止不动或场景中的对象以与相机相同的速度移动时,这些像素的深度估计可能会产生问题。自动掩蔽损失通过计算一个掩蔽掩模来过滤这些像素,从而提高深度估计的准确性。

相关工作

  1. 有监督深度估计

    1. 探索了多种方法,包括结合局部预测、非参数场景采样,以及端到端的有监督学习。(立体估计和光流估计)

    2. 在多样化的真实世界环境中是一个挑战

    3. 利用弱监督训练数据,例如已知的物体尺寸、稀疏的序数深度、有监督的外观匹配项,或者未配对的合成深度数据。这些方法仍然需要收集额外的深度或其他类型的注释数据。

    4. 合成训练数据

    5. 结构从运动(Structure-from-Motion, SfM)传统的SfM流程可以为相机姿态和深度生成稀疏的训练信号。最近的工作在现有模型的基础上,通过结合传统立体算法中的噪声深度提示,提高了深度预测的准确性。

  2. 自监督深度估计

    1. 在没有地面真实深度的情况下,一种替代方案是使用图像重建作为训练信号来训练深度估计模型。通过将一组图像(立体对或单目序列)作为输入,并通过最小化图像重建误差来训练模型。

作者在这部分还提到了一些特定的研究工作,这些工作通过不同的方法来提高自监督深度估计的性能,例如通过引入额外的一致性约束、使用生成对抗网络、利用时间信息等。此外,作者还提到了一些在自监督学习中用于处理遮挡和纹理复制伪影的方法。

图像重建”是指在自监督学习框架下,用于训练深度估计模型的一种方法。在这种情况下,没有可用的地面真实深度数据来指导模型的训练。因此,研究者们利用图像本身的信息来创建训练信号。具体来说,这个过程通常包括以下几个步骤:

  1. 生成深度假设:模型首先尝试从单个图像中估计深度图。这个深度图是一个假设,它代表了场景中每个像素到相机的距离。

  2. 图像投影:使用估计的深度图,模型将源图像中的像素投影到一个或多个新的视角。这通常涉及到根据估计的深度和相机的运动模型(在单目视频中)来调整像素的位置。

  3. 图像重建误差:通过比较投影后的图像与目标图像(通常是源图像的另一个视角或时间点),计算重建误差。这个误差反映了深度估计的准确性。

  4. 训练模型:模型通过最小化重建误差来调整其参数,以便在未来的预测中减少这种误差。这个过程不需要深度的地面真实值,因为训练信号直接来自于图像本身。

在这种自监督学习方法中,图像重建作为训练信号,允许模型在没有深度标注的情况下学习深度估计。这种方法的一个关键优势是它可以利用大量未标注的图像数据来训练模型,从而在资源有限的情况下提高深度估计的性能。

slam:最小化重投影误差(LK光流法,直接法)假设相邻帧的同一像素点像素的灰度不

自监督立体训练

“立体对(stereo pairs)”是指在立体视觉(stereo vision)中使用的一对图像,它们是从两个不同的视角拍摄的同一场景。这两个视角通常由两个并排放置的相机捕获,它们之间的水平距离(基线距离)是已知的。立体对的目的是利用两个图像之间的视差(即同一物体在两个图像中的相对位置差异)来估计场景的深度信息。

立体对在深度估计中的应用通常涉及以下步骤:

  1. 立体匹配:通过比较两个图像中的像素点,找到对应的点(匹配点)。这些对应点在两个图像中的水平位移(视差)与场景深度成正比。

  2. 深度计算:根据视差和相机的基线距离,可以计算出每个对应点的深度。这通常涉及到三角测量原理,即通过两个视角的光线交汇来确定物体的深度。

  3. 深度图生成:将所有匹配点的深度值组合起来,生成整个场景的深度图。这个深度图包含了场景中每个像素的深度信息。

立体对是在没有真实深度标签的情况下学习深度估计。通过训练模型来预测视差,然后从视差计算深度,模型可以在没有显式深度数据的情况下提高其性能。这种方法在自动驾驶、机器人导航、三维建模等领域有着广泛的应用。

自监督单目训练

单目视频用于训练深度估计模型,其中连续的时间帧(temporal frames)提供了训练信号。这意味着模型需要利用这些连续帧之间的视觉变化来学习深度信息。具体来说,模型需要执行以下任务:

  1. 深度预测:模型需要预测每一帧图像中每个像素的深度值。

  2. 相机姿态估计:除了深度预测之外,模型还需要估计连续帧之间的相机姿态变化。这包括相机在空间中的旋转和平移。由于场景中物体的运动,这一步骤尤其具有挑战性,因为物体的运动可能会影响像素之间的视觉对应关系。

  3. 训练信号的利用:在训练过程中,这些估计的深度和相机姿态被用来帮助约束深度估计网络,使其能够更准确地预测深度。然而,一旦模型被训练好,这些估计的相机姿态就不再需要了,因为在实际应用中,我们通常只关心深度的预测,而不关心相机的具体运动。

使用单目视频允许在没有立体相机或深度传感器的情况下训练深度估计模型。这种方法在资源有限或无法获取立体数据的情况下特别有用。(先训练一个姿态估计网络模型,再进行单目视频训练---在哪看的?

作者提出的改进不仅适用于单目训练,还可以应用于立体训练。这意味着这些改进措施具有通用性,可以在不同的深度估计场景中提高性能。(曲面法线和强制边缘一致性)

几何约束,深度归一化,segmentation masks分割掩码

"Segmentation masks"(分割掩模)是计算机视觉和图像处理中的一个术语,它指的是一种图像或图像序列,用于标识和区分图像中的不同对象或区域。在深度学习和自监督学习中,分割掩模通常用于以下几个方面:

  1. 对象分割:分割掩模可以用于对象分割任务,其中模型需要识别图像中的各个对象并为每个对象分配一个唯一的标签。例如,在自动驾驶场景中,分割掩模可以帮助模型区分车辆、行人、道路等。

  2. 语义分割:在语义分割中,分割掩模用于为图像中的每个像素分配一个类别标签,从而创建一个像素级的分类图。这有助于理解场景的语义内容,例如,哪些区域是道路,哪些是建筑物,哪些是植被等。

  3. 实例分割:实例分割不仅区分不同的对象类别,还区分同一类别中的不同实例。分割掩模在这里用于区分和识别图像中各个独立的对象。

  4. 自监督学习:在自监督学习中,分割掩模可以作为一种训练信号,帮助模型学习到有用的特征。例如,在深度估计任务中,分割掩模可以用来忽略那些由于遮挡或运动而难以估计深度的区域。

  5. 数据增强:分割掩模还可以用于数据增强,通过在训练过程中对图像进行变换(如裁剪、旋转、缩放等),可以增加模型的泛化能力。

一些关键假设和技术,以及它们如何提高深度估计的性能:

  1. 外观和材质属性的假设:自监督训练通常依赖于对物体表面在连续帧之间的外观(例如亮度恒定性)和材质属性(例如兰伯特反射模型)的假设。亮度恒定性假设指的是在不同视角下,同一物体的亮度应该是一致的。兰伯特反射模型假设物体表面的反射是各向同性的,即反射光的强度与观察方向无关。

  2. 局部结构基础的外观损失:引用[15]的研究表明,与传统的简单像素差异比较方法相比,包含基于局部结构的外观损失[64]可以显著提高深度估计的性能。这意味着在计算损失时,不仅考虑单个像素之间的差异,还考虑像素周围的局部结构信息。

  3. 误差拟合项:引用[28]扩展了这种方法,包括了一个误差拟合项。这可能涉及到在损失函数中加入额外的项,以更好地拟合或平滑深度估计中的误差。

  4. 对抗性损失:引用[43]探索了将基于局部结构的外观损失与对抗性损失结合起来的方法。对抗性损失通常用于生成对抗性网络(GANs),以鼓励生成看起来更真实的合成图像。

  5. 使用真实深度训练外观匹配项:最后,引用[72]和[73]受到启发,使用真实的深度数据来训练外观匹配项。这可能意味着在训练过程中,模型会尝试最小化预测的深度与真实深度之间的差异,以此来提高外观匹配的准确性。

重投影误差

自监督深度估计模型

面临的挑战

方法介绍

Per-Pixel Minimum Reprojection Loss

Multi-scale Estimation

Auto-Masking Stationary Pixels

  • 41
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值