左右(视差)一致的非监督式单目深度估计
摘要
以学习为基础的方法已经在对单张图片的深度估计上取得了可观的结果。大多数现有的方法是将深度预测作为监督式的回归问题来处理,然而这种方式需要大量相应的真实深度数据用于训练。然而,单单从复杂环境中获取高质量的深度数据就已经很有难度了。我们将在本文中对已有方式进行创新,不再对深度数据进行训练,而是训练更容易获得的双目立体连续镜头。
我们提出了一种新颖的训练目标,即使在缺少真实深度数据的情况下,仍然能够使用卷积神经网络来完成单张图片的深度估计。利用极线几何限制,我们通过训练有图像重构损失函数的网络生成了视差图像。我们曾发现单独进行图像重构会导致深度图像质量很差。为了解决这个问题,我们提出了一个新颖的训练损失函数,可以使左右图像产生的视差趋于一致,以此来提高当前方式的表现和健壮度。我们的方法在KITTI驾驶数据集上展示出艺术般的单目深度估计效果,甚至优于基于真实深度数据的监督式学习的效果。
1. 简介
在计算机视觉领域,对图片进行深度估计已经有了很久的历史。目前的成熟方式依赖于连续动作、X射线下的形状、双目和多视角立体模型。然而,多数的上述技术是基于可获取相关场景的观测数据的假设。其中,数据可能是多角度的,或者观测是在不同的光线环境下进行的。为了突破这个限制,近期涌现出大量在监督式学习下对单目深度识别的讨论。这些方法试图直接在线下通过大量真实深度数据训练的模型来对图像中的每一个像素进行深度估计。这些方法虽然已经取得巨大的成功,但是是建立在可获取大量图像数据集和相应的像素深度的情况下的。
在单张图像里获取不受外表干扰的场景形状是机器感知的基础问题。很多此类的应用,比如在计算机图形学中合成对象的插入、在计算机摄影学中对深度的合成、机器人抓握,会使用深度为线索进行人体姿态估计、机器人辅助手术和电影业中2D向3D的自动转换。从一个或多个摄像机获取准确的深度数据对于自动驾驶来说是极其重要的,通常使用的设备是昂贵的激光摄像机。
在单目深度估计中,通过利用焦点等为线索、依照熟悉目标的大小和在光线、阴影以及遮挡下的外形进行比例缩放等方式,人们已经取得了不错的成果。这种自顶向下和自底向上的线索的结合连接起对全场景的理解和我们对深度准确估计的能力。本文中,我们采取另一种办法,在训练中以图像重构的方式来对待自动深度识别。我们的全连接模型不需要任何深度数据,反而通过训练可以立即生成深度数据。通过学习,它可以预测/有摄像机基线的/矫正立体图像对/的像素级别相关度。现有的一些方法也解决了上述问题,但是仍然存在一些限制。比如非完全可辨别的、训练效果非最优的或者图像生成模型不能扩展到大输出分辨率。在对这些方法的优化中,我们通过新颖的训练目标和加强的网络模型,显著地提高了最终效果。
图1 我们在KITTI 2015上的深度预测结果。从上至下:输入图像,真实视差数据,我们的结果。
我们的方法能够对如街道标志和杆子之类的薄结构进行深度估计。
图1展示了一个我们算法的运行结果。在一个时下的GPU上运行对一个512*256的图像的稠密深度预测,我们的方法速度很快,只需要35毫秒。特别的,我们做出了以下贡献:
1) 一个执行端到端非监督式单目深度估计的网络结构,其中一个新颖的训练损失函数可以保证左右深度的一致。
2) 一个对多种训练损失函数和图像生成模型的评估,显示出我们的方法具有很好的效果。
3) 除了在一个极具挑战性的驾驶数据集上展示出艺术般结果,我们的模型还推广到三个不同的数据集,包括一个已经开源的、由我们自己采集的全新城市户外数据集。
2. 相关工作
目前有大量对于图像的深度估计研究,要么使用不同视角或者瞬时序列获取成对的或多个重叠图片,要么对假定固定位置的摄像机和静态场景改变光线。这些方法很典型的建立在必须有相关场景的多于一个输入图像的条件上。在此,我们集中于只使用一张输入图像的单目深度估计研究,并且不对场景几何学和目标呈现类型做任何假设。
基于学习的立体模型
绝大多数立体估计算法都有用于计算图像中每一像素与其他图像中任何一个像素的相似度的数据项。典型地,立体数据对是被矫正过的,因此视差(如按比例放缩的逆深度)估测问题可被转化为对每个像素的一维搜索问题。最近研究表明,将匹配相似作为一个监督式的学习问题并训练一个预测一致性的功能,将能够获得远优于手动定义的相似度数据,而且将这种双目一致性搜索当做多类别的分类问题来对待,具有在结果质量和速度上双重的优势。相比单纯的学习匹配功能,Mayer等人引入了可以直接计算两个图片中一致区域的全卷积深度网络DispNet。在训练时他们试图通过最小化一个回归训练损失函数来直接预测每个像素位的视差。DispNet和他们之前的端到端深度光学流网络具有相似的结构。
上述方法在训练时依赖大量准确的真实视差数据和立体图像对,这种数据在真实场景中很难获取,所以一般使用合成数据进行训练。尽管合成数据变得越来越贴近真实,但是仍然需要针对每一个新的应用场景由人来创造新内容。
监督式的单张图像深度估计
单视角,或者说单目的深度估计,指的是测试时只有单张图像的问题。Saxena等人提出了基于补丁的模型Make3D,第一次对输入图像过分割为补丁并通过估测局部平面的3D位置和方向来解释每一个补丁。这些对平面参数的预测是由经过激光扫描数据集线下训练过的线性模型获取的,然后使用MRF将其结合起来。这种方法以及其他基于平面的近似估计的弊端在于对薄结构的建模有难度,另外由于这种预测是在局部建立的,因此缺少全局环境来生成更真实的数据。相比于手动调节一元和成对的项,Liu等人使用卷积神经网络来学习它们。在另一种局部方式里,Ladicky等人将语义合并进他们的模型来提高每一个像素的深度估计。Karsch等人试图通过从训练集里复制全部深度图像来获取更多一致的图像级别的预测。这种方式的缺点在于在测试时仍需要全部的训练集。
Eigen等人表示使用由图像和其对应深度数据训练过的two scale深度网络获取稠密的像素深度估计是可行性的。和很多先前的单张图像深度估计方法不同,他们并不依赖于手工获取的特征或者起初的过分割,而是直接在未加工的像素值上学习表现形式。一些建立在这种方法的成功之上的研究,使用诸如条件随机场之类的技术来提高准确度,将损失函数从回归改变到分类,使用更健壮的损失函数函数,在相关的表面常规预测问题中合并强壮场景。与之前提到的立体模型一样,这些方式在训练时依赖大量高质量的、像素对齐的真实深度数据。我们同样进行单张图像的深度估计,但是不需要真实深度数据来训练,而是额外的双目彩色图片。
非监督式深度估计
最近,用于新颖角度合成和深度估计的少量基于深层网络的方法被提出,这些方法不需要训练真实数据。Flynn等人介绍了一个新颖的图像合成网络DeepStereo,通过从附近图像挑选像素来生成新的视角(下的图像)。在训练中,多个摄像机的相对位置被用来预测一个特定的附近图像的表现,然后最合适的深度将基于平面扫描体积对邻居图像色彩进行抽样。在测试时,图像合成是建立在小的重叠补丁上。因为在测试时需要一些附近生成的图像,DeepStereo不适合单目深度估计。
Xie提出的Deep3D网络也解决了新视角合成的问题,他们的目标是在双目对中通过输入的左目图像生成相应的右目图像。通过再一次使用图像重构损失函数,他们的方法获得了每一个像素上可能的视差分布。生成的合成右目图像像素值是左目图像相同扫描行的像素在经过视差可能性加权后的和。这种图像生成方式的缺点在于,潜在视差值数目的增长极大地增加了此种算法的内存消耗,导致难以输出大分辨率图像。在本文中,我们将与Deep3D图像生成模型进行对比,并展示我们的算法生成了更好的结果。
同时进行的、在精神上最贴近我们的模型的是Garg等人的研究。类似Deep3D和我们的方法,他们训练网络并使用图像重构损失函数来进行单目深度估计。然而他们的图像生成模型不是完全可辨别的。为了弥补这点,他们使用泰勒近似来线性化损失函数,这导致了一个更难以优化的目标。类似其他最近的研究,我们的模型通过使用双线性过滤生成图像来解决这个问题,得到了完全可辨识的训练损失函数。
受启发于Mayer的监督式DispNet结构,我们提出了全卷积的深度神经网络。通过转化单目深度估计为图像重构问题,我们可以在没有真实数据的情况下解决视差场。只是最小化光度损失函数可以做到高质量图像重构,但是区别会导致深度数据质量很差。在其他方面,我们的完全可辨别训练损失函数包括了左右目一只检查来提高合成深度图像的质量。这种一致性检查普遍用于很多立体模型的后处理中,但是我们直接将它用在网络里。
3. 方法
本节将描述我们的单张图片深度预测网络。我们引入了一个新颖的深度估计训练损失函数,以内嵌的左右目一致性检查为特点,这个功能可以帮助我们实现在不需要真实深度数据形式的监督的情况下训练图像对。
图2 我们的损失组件输出左右视差图dl和dr。这个损失组件结合了平滑化、重构和左右视差一致检查。
相同的组件将在四组不同尺度的输出中重复执行。
C:卷积。UC:上卷积。S:双线性采样。US:上采样。SC:跳连接。 3.1. 以图像重构的形式进行深度估计
在测试时给定一张图像I,我们的目标是学习到一个功能f来预测每一像素的场景深度,d~=f(I)。大多数现有的基于学习的方法将它以监督式的学习问题来对待,使用彩色输入图像和相应目标深度值来训练。目前来说,获取大量不同场景下的此类真实深度数据是不可行的。即使使用激光扫描仪之类的昂贵硬件,在自然场景中的特征移动和映射也是不精确的。作为替代方案,我们在训练时将深度估计问题转化为图像重构问题。这种想法来自于,对于一对校准的双目摄像机,如果我们可以学习到一个能够从给定图像重构另一张图像的功能,则可以获取关于此图像内场景的3D形状的一些数据。
详细来讲,在训练时我们有两张图像Il和Ir,对应于拍摄在同一时刻的校准过的立体模型对的左目彩色图像和右目彩色图像。我们试图寻找到密集对应场dr,当应用到左目图像时能够重构出右目图像,而不是直接预测深度。我们将重构得到的图像Il(dr)记为I~r。类似的,我们也利用右目图像来估计左目图像,I~l= Ir(dl)。假定图像是经过校准的,d对应于图片视差-在我们的模型中每个像素都将学习得到的一个标量。给定一个摄像机间的基线距离b和摄像机焦距f,我们可以通过预测的视差来简单地恢复深度 =bf/d.
3.2. 深度估计网络
在高层次,我们的网络通过扭曲左目图像以匹配右目图像来获取视差。我们的方法的关键在于,我们可以只用左目输入图像并通过强迫左目到右目和右目到左目的视差保持一致,而同时推测得出两个视差。
图3 反向映射的采样策略。在朴素采样下,CNN生成的视差图与目标一致而非与输入一致。
NoLR修正了这一点,但是却受到人工痕迹干扰。
我们的方法使用左目图像为两个视角生成视差,通过强迫双向一致提高质量。
我们的网络使用双线性采样器生成反向映射的预测图像,从而形成完全可辨识的图像生成模型。如图