点击下方卡片,关注“自动驾驶之心”公众号
ADAS巨卷干货,即可获取
点击进入→自动驾驶之心技术交流群
后台回复【深度估计综述】获取单目、双目深度估计等近5年内所有综述!
摘要
从RGB图像估计深度是一个长期存在的不适定问题,计算机视觉、图形和机器学习社区已经探索了几十年。在现有技术中,双目匹配仍然是文献中使用最广泛的技术之一,因为它与人类双目系统有很强的联系。传统算法通过在多个图像中匹配人工设计特征来完成深度估计。尽管进行了大量的研究,但这些传统技术仍然受困于高纹理区域、大面积均匀区域和遮挡的问题。受益于深度学习的快速发展,基于双目深度估计的深度学习算法引起了研究人员越来越多的关注,在2014年至2019年期间在该领域发表了 150 多篇论文。这种新一代方法已经展示了性能的重大飞跃,使自动驾驶和增强现实等应用成为可能。论文对这一不断发展的新研究领域进行了全面调查,总结了最常用的范式,并讨论了它们的优点和局限性。回顾迄今为止所取得的成就,论文还推测基于深度学习的双目匹配在深度估计研究中的未来的发展方向。
论文的主要贡献如下:
据论文称,这是首篇调研基于深度学习的双目深度估计的综述。调研了过去六年在主要会议和期刊上发表的150 多篇论文。
提供最先进的综合分类。首先阐述常见的范式,然后讨论每个范式中方法之间的异同。
对问题的所有方面进行了全面的回顾和深刻的分析,包括训练数据、网络架构及其对重建性能、训练策略和泛化能力的影响。
使用公开可用的数据集和室内图像对一些关键方法的属性和性能进行了比较总结。选择室内图像来测试这些方法在全新场景中的表现。
数据集
下表总结了相关公开数据集。进一步,论文根据这些数据集的大小、空间和深度分辨率、深度注释类型以及现有算法面临的域差距(或偏移)问题来讨论这些数据集。
1)数据集大小:由于数据标注比较困难,出现在2016年之前的第一个数据集规模较小。一个例子是两个KITTI数据集 [15]、[21],包含了200个双目对及其对应的视差GT。它们已被广泛用于训练和测试基于patch的相关双目匹配算法,这些算法具有较小的感受野。因此,单个双目对可以产生数千个训练样本。然而,在端到端结构中,一个双目对只对应一个样本。端到端网络参数量很大,一般需要大量数据才能有效训练。虽然收集大型图像数据集非常容易,例如,通过使用 NYU2 [17]、ETH3D [25]、SUN3D [19] 和 ETH3D [25] 中的视频序列,但使用3D标签进行标注却非常耗时。最近的工作,例如 ApolloScape [34] 和 A2D2 [35],使用 LIDAR 来获取密集的3D标注。还有一些特定于深度估计的策略。包括人工合成和渲染来自各种(随机)视点、姿态和照明条件的 3D CAD 模型的 2D/2.5D 视图。这些方法已经用于生成FlyingThings3D、Monkaa等相关数据集。
2)空间和深度分辨率:视差/深度信息可以是与输入图像相同或更低分辨率的map形式,也可以是参考图像中某些位置的稀疏深度值的形式。大多数现有数据集的空间分辨率都很低。然而,近年来研究人员越来越关注高分辨率图像的双目匹配。一个例子是 Yang 等人的 HR-VS 和 HRRS。然而,该数据集仅包含 800 对双目图像,对于端到端训练来说相对较小。其他数据集,如 ApolloScape [34] 和 A2D2 [35] 的分辨率很高(3130×960),ApolloScape包含超过 100 小时的双目驾驶视频,专门用于测试自动驾驶算法。
3)euclidean versus Ordinal Depth:一些论文(例如 MegaDepth [28])不是用精确的(即欧几里得)深度值标注图像,而使用有序深度标注,即像素与像素越近、越远或具有相同的深度。ordinal标注比euclidean标注更简单、快捷。事实上,它可以使用传统的双目匹配算法准确的计算得到,因为Ordinal 深度对深度估计中的不准确性不太敏感。
4)域差距:虽然人为地增加训练数据集可以丰富现有数据集,但由于真实数据和合成数据之间的域差距可能会导致应用于真实环境时的准确性降低。论文后续会展开讨论。
基于双目匹配的深度估计
基于双目的深度重建方法使用个RGB图像并生成视差图,以最小化下述能量函数:
传统上,这个问题可以使用四个模块[11]来解决,即:
特征提取;
跨图像的特征匹配;
视差计算;
视差细化及后处理。
本节重点介绍如何使用基于深度学习的方法实现这些模块,下表总结了最先进的相关算法。
特征提取和匹配学习
早期相关算法使用可学习的特征[37]、[38]、[39]、[42]替换了人工设计的特征(下图模块A)。它们需要两个patch,左图以像素为中心,右图以像素为中心,使用 CNN 计算它们对应的特征向量,之后进行匹配(下图模块B)以输出相似度分数,相似度可以使用标准的相似度度量(如L1、L2和相关性度量),或使用上游网络学习得到的度量进行计算。这两个组件可以单独或者联合训练。
基础网络结构
[37]、[38]、[39]、[42] 中介绍的基本网络架构如下图a所示,由两个CNN编码分支组成,用于充当描述符计算模块。[42]使用由四个卷积层组成的编码器,见下图a。除最后一层外,每一层后面都有一个ReLU层。Komodakis [37]和Han [38]等人使用类似的结构,但添加了:
除了最后一层 ,使用max-pooling降采样,如上图所示。与 [39]、[42] 相比,网络允许更大的分辨率输入和更大的视点变化。
特征提取分支 [37]的末尾增加空间金字塔池化(SPP)模块,以便网络处理任意大小的patch,同时输出固定大小的特征,如下图c所示。SPP将卷积层输出的特征处理为固定大小,且无需更改网络结构或重新训练。
之后将学习到的特征送到下游模块,输出相似度分数。该模块可以用标准的相似度度量进行计算(L2距离、余弦距离等)。使用L2距离的优点在于可以用一层 2D [51] 或 1D [22] 卷积操作来实现,又被称为相关层。相关层不需要训练,且已在文献[22]、[39]、[41]、[42]、[44] 中广泛使用。使用决策网络而不是人工设计的度量可以从数据中学习合适的相似性度量,其比相关层更准确,但速度要慢得多。
网络结构变体
基线网络结构近年来已有多种变体。如:
使用残差网络[46]改进训练:Shaked等人[46]使用具有多级加权残差连接的残差模块,以训练大模型。它的特殊性在于网络自己学习如何调整添加的跳跃连接的贡献。这种架构被证明优于[39]。
扩大网络的感受野而不损失分辨率或计算效率[48]、[49]、[52]:学习特征的规模由输入patch的大小、网络的感受野、卷积核大小和池化操作来决定。虽然增加卷积核的大小允许网络捕获像素之间更多的全局交互,但会导致计算量增加。此外,池化层在降低分辨率的同时会导致局部细节信息的损失,这对密集估计任务并不友好。为了扩大感受野且不损失分辨率或增加计算量,空洞卷积[52]应运而生。也有一些方法使用SPP模块[48]、[49],如上图d和e所示。
处理多尺度特征[37]、[40]:目前为止的方法都可以通过使用多流网络来扩展以学习多个尺度的特征,每个patch大小的[37]、[40] 一个流,如下图所示。Komodakis [37] 提出了一个双流网络,本质上由两个孪生网络组成,如下图a所示。第一个孪生网络,称为central high-resolution stream,输入是以像素为中心的两个32×32大小的patch。第二个网络称为surround lowresolution stream,输入是两个64×64大小的patch,但下采样至32×32。之后将两个流的输出连接起来并输入至下游决策网络并返回匹配分数。类似的方法还有[40],见下图b。多流架构的主要优点是可以在单个前向传递中计算多个尺度的特征。但是需要每个尺度一个流,这对两个以上的尺度输入比较困难。
减少前向路径的数量[37]、[44]:上述相关算法都是使用类似移动窗口的方法推理raw cost volume,这需要多次前向推理。不过相关性是高度可并行化的,因此可以通过并行推理减少前向的次数。Luo等人[44]使用孪生网络减少前向次数。其他的算法如[37
基于深度学习的双目深度估计综述

最低0.47元/天 解锁文章
8552





