(单目深度估计)笔记

一、Digging Into Self-Supervised Monocular Depth Estimation

        通过该论文,了解到单目深度估计这个技术,指的就是输入一张图片,模型输出可以得到每一个像素的深度值(深度图):"我们试图从一个单一的彩色输入图像中自动推断出一个密集的深度图像",为了解决这个问题进行了自我监督学习训练模型。其在Github的项目说明上可以看到,使用的数据集是KITTI,且建议将KITTI数据集中的PNG图片格式改为JPEG压缩再训练,否则训练过程会变长。

       该篇论文提出了一系列的改进措施,使得深度图在数量和质量上得到了改善。文章有提到,通常的改进方法都是在探索越来越复杂的架构、损失函数和图像,在这三方面进行研究。这些研究也确实减少了与全监督学习的差距。而该论文使用了一个简单模型和相关的设计选择,就得到了非常显著的提升:

        1)提出并引入了最小重投影损失的概念,用于更健壮的地处理闭塞问题(什么是闭塞问题?)。

        2)全分辨率多尺度采样,用于减少视觉伪影。

        3)自动屏蔽损失:忽略违反相机运动假设的训练像素。

        结果在KITTI基准上显示出了高质量、最先进的结果。

1.1该研究的必要性:

        1)代替自动驾驶汽车中使用的激光雷达传感器,因为它更廉价,可以降低成本。

        2)图像编辑和AR合成相关领域

        3)解决深度问题也是使用大型无标签图像数据集对深度网络进行预训练以完成下游判别任务的一种有力方式。

        且这种基于单目视频来训练单眼深度估计模型是被表明出其可行性的。

        基于单目视频做为训练样本更有吸引力,但是它也有一些挑战:

                1)该模型还需要估计(时空,图像)对之间的自我运动。

                        怎么解决?答:训练一个姿势估计网络,将有限个帧序列作为输入,输出对应的相机位置变换。

        使用立体数据进行训练不在毕设范围之内,就不学习了。

1.2 提出的创新点

        提出了三个架构和损失的创新:

                1)一种新的外观匹配损失,解决使用单眼监督时出现的遮挡像素问题。(加入一个损失函数,如果相邻两帧的差异过大则弃用该帧找别的帧代替?不太确定)

                2)一种简单而新颖的自动屏蔽方法。用来屏蔽输入中违反相机运动假设的像素。

                3)全分辨率多尺度采样,用于减少视觉伪影。伪影:本不存在却出现在的影像片子上的一种成像。

      

(单目深度估计)笔记_第1张图片

 1.3 一些模型的回顾:

        1.3.1 Supervised Depth Estimation:

                从单张图片去估计深度,可能会有多个可以相信的深度,对于此问题的解决方法有:

                        结合局部预测,非参数场景采样,直到端到端监督学习。

                上述的方法很多都是完全监督学习,需要在训练期间给出地面真实深度的数据。这种数据集在现实世界难以获得。因此有一些研究成果提出了用一些弱监督的训练数据进行训练,这样仍然需要收集额外的深度和其他注释。也有在模型的基础上,加入了来自传统立体算法的噪声深度提示,改善了深度预测。

       1.3.2 Self-supervised Depth Estimation

                基于单目视频来训练单眼深度估计模型的一些相关研究:

                        最早的单眼自我监督方法之一中,周廷辉等人训练了一个深度估计网络和一个单独的姿势网络。去处理非刚性场景的运动和一个额外的运动解释掩码允许模型忽略违反刚性场景假设的特定区域。而他们后来的模型迭代又禁用了这个术语,取得了卓越的性能。

                        受Arunkumar Byravan等人研究的启发,Sudheendra Vijayanarasimhan等人提出了一个使用多个运动掩码的更复杂的运动模型。但是其并没有得到充分的评估,因此很难理解其效用。

                        尹志超等人也将运动分解为刚性和非刚性成分,使用深度和光流来解释物体运动。这改善了流量估计,但他们报告说,在联合训练流量和深度估计时没有改善。

                        在光流估计的背景下,Joel Janai等人的研究表明该研究有助于明确地建立闭塞模型。

                最近的方法已经开始缩小基于单眼的自我监督和基于立体的自我监督的差距。(先省略)

                1)外观匹配损失:Cl ́ement Godard等人的研究表明,与简单的成对像素差异相比,加入基于局部结构的外观损失明显改善了深度估计性能。

1.4 方法

        It:单张的颜色图输入        Dt:返回的深度图

        “我们首先回顾了单眼深度估计的自我监督训练背后的关键想法,然后描述了我们的深度估计网络和联合训练损失。”

        对于每个像素可能存在大量不正确的深度的问题,可以根据两个视图之间的相对姿态,正确地构建新的视图。其方法是通过在深度图中强制执行平滑性,以及在通过全局操作解决每像素深度问题时计算补丁上的照片一致性。我们也将我们的问题表述为训练时光度重投影误差(不理解)的最小化。

        对于光度重投影,利用图像确定像素在三维空间的位置和相机的位置和姿态,进行重投影(得到一个根据模型在三维空间模拟出的相同场景,并对其“拍照”得到模拟空间的图像)将该图像与实际输入进行对比,使它们的差值最小。根据输入得到三维空间的建模,再从这个建模环境中“拍照”,将这个图像与原来的输入做对比。

        设源视图为It',目标视图为It,It’相对于It的姿势为T(t->t'),需要预测一个Dt,使得测光重投影的误差Lp最小

 pe指的是光度重建误差,比如可以用像素空间的L1距离来量化这个误差。

  第二个公式等式左边为根据模型结果Dt,和T(t->t')算出的推测It

 proj指的是投影深度Dt在It'中的二维坐标结果

 < >表示取样操作符。

pe函数使用SSIM和L1构建pe函数:

 其中α=0.85。

        除此之外,使用边缘感知的平滑度:

(单目深度估计)笔记_第2张图片

 其中 是来自[62]的平均归一化反深度,以阻止估计深度的缩小。

在立体训练中,It'是和It相邻的第二个视图,它有已知的相对姿势。

        对于单眼序列来说,相对位置是不知道的,但是[76]表明,可以训练第二个姿势估计网络来预测投影函数proj中使用的相对位置Tt→t′

         在训练过程中,我们同时求解摄像机的姿势和深度。以最小化Lp。

         对于单目训练,我们使用与它在时间上相邻的两个帧作为 帧作为我们的源帧,也就是说。
It′∈{It-1, It+1}。

(单目深度估计)笔记_第3张图片

 现有的单眼方法产生的深度质量比最好的全监督模型要低。为了缩小这一差距,我们提出了几项改进措施,以显著提高预测的深度质量,而不需要增加同样需要训练的模型组件。

1)每像素最小重投影损失

        以往在取两帧It'和It,并根据它们得出的重投影I(t'->t)的像素于It像素之间的误差时,损失函数L要取It和多个相邻帧之间的平均值。(选取的两个输入It和It'中,It'可以取It前一个帧,也可以取It后一个帧,最后损失函数L(误差)取平均值,但是该论文提出了让L取从这几个帧中算出误差的最小值),该方法可以有效解决被遮挡像素产生深度判断错误的问题,

2)自动屏蔽静止的像素

        自我监督的单目训练一般是场景静态,相机移动的场景。当这个场景变化时:相机静止或者场景开始移动,则性能会受到很大的影响,其表现为:场景出现移动物体对应的像素会出现无限深度的洞。该论文针对这一问题的解决方案是:把两帧中没有发生改变的像素过滤掉(如果在相机静止时甚至可能会过滤掉整个帧):

        对损失应用了一个每像素的掩码μ,选择性地对像素进行加权。μ是一个二进制的掩码,并且是在模型的前向传递(前向传递目前还没搞懂)中自动计算出来的,而不是学习或估计的。

         如果我们得出来的It'->t和It的误差小于It'和It的误差,才将这个数据视为有效的。小于时μ

 即括号内成立时μ=1,否则为0。这样就可以很好地改善相机静止或场景中的运动物体带来的误差了 。

3)多尺度估计

        在低分辨率深度图中的大的低纹理区域产生 "洞 "的趋势,以及纹理复制的伪影,深度图中的洞可能会出现在光度误差模糊的低纹理区域。

        首先将较低分辨率的深度图(来自中间层)上采样(将深度图放大)到输入图像的分辨率,然后在这个较高的输入分辨率下重新投影、重新采样并计算误差pe,而不是在模糊的低分辨率图像上计算光度误差。

 

你可能感兴趣的:(人工智能,深度学习)