基于深度学习的影像深度重建综述
论文名称:A Survey on Deep Learning Architectures for Image-based Depth Reconstruction
作者单位:University of South Australia
论文下载链接:https://arxiv.org/pdf/1906.06113
1 本文核心思想
在计算机视觉、图形学、机器学习领域中,从RGB影像中恢复深度已经研究了数十年。而深度学习与大规模训练集的出现颠覆了传统的方法。本文综合介绍利用深度学习恢复单视或多视影像深度的方法,总结了常用的处理流程并分析优缺点。
本文创新点:
- 第一篇综述深度学习重建影像深度的论文。
- 收集了2014至2018年间,超过100篇在计算机视觉、计算机图形学和机器学习领域的论文。
- 对深度学习训练集、网络结构、训练方式和应用场景(单视、双视、多视)做了分析。
- 对诸多方法结果做了综合比较。
2 研究背景介绍
图像三维重建的目的在于恢复真实物体和场景的三维结构,在机器人导航、物体识别、场景理解、三维建模等领域有重要应用。
从2D影像恢复深度可分为两部分。
- 传统方法方法:具体指理解和构建3D到2D投影过程。要想获取较优的结果,需要多视影像,并且相机需要标定。该方法在影像遮挡、特征缺失、纹理重复的环境难以准确估计深度。
- 深度学习方法:人眼在单眼观测的情况下,可根据先验知识建立模型推断物体的大概尺寸和几何位置。所以可基于深度学习利用先验知识将深度估计问题建立为识别任务。
而深度学习方法分两类:
- 双像匹配方法:用深度学习完成特征提取、特征匹配、视差(深度)估计、视差(深度)修正。
- 回归方法:深度学习直接预测,无需匹配。
3 双像匹配方法
该方法模仿传统双像匹配原理进行学习,匹配结果可转光流或视差图,进而可得深度图。含四个部分。
- 特征提取
- 求特征匹配cost
- 视差(深度)计算
- 视差(深度)修正
综合,可对所有双像匹配方法进行分类。如TABLE 1。
3.1 特征提取
基于CNN结构,编码器输入局部影像或全局影像,生成2D的特征图。特征图分两种:
- 单尺度特征图。如Fig. 1,该网络模型有2个分支,每个分支都是一个CNN。提取单尺度特征的网络结构如TABLE 2。
- 多尺度特征图。如Fig. 2。可通过修改中心像素的块尺寸或利用中间层计算的特征图来实现多尺度。注意,层数越深,计算出的特征尺度就越大。
3.2 求特征匹配cost
3.3 视差(深度)计算
3.4 视差(深度)修正
一般情况下,预测的视差(深度)图分辨率较低,细节部分会缺失,且在边界处容易过于平滑。甚至有些方法输出的图不完整或者很稀疏。直接预测高分辨率和高质量视差(深度)图的神经网络有很多参数,很难训练。进而需要一个修正模块。它有三个作用。
- 提高输出视差(深度)图的分辨率。
- 修正在细节处的重建效果。
- 补全视差(深度)图。
在利用深度学习进行修正时,可以有五种输入。
- 估计的视差(深度)图。
- 估计的视差(深度)图与参考影像合并。
- 估计的视差图,匹配cost和重建误差(由左右影像和视差图可得)
- 估计的视差(深度)图和将右影像转为左影像(利用视差)
- 估计的视差(深度)图和参考影响的特征图(第一卷积层结果)
深度学习方法修正如表。分四种方法(如图):
- 从下往上方法。第一种策略类似于滑动窗口的处理方法,以小块为单元处理,估计小块中心像素的深度。另外一种从下而上的策略是利用不完整的深度图的各向异性扩散来填补未知区域的深度。
- 从上往下方法。直接处理整个视差(深度)图。第一种策略采用反池化实现解码,好比池化和卷积的逆过程。第二种策略采用编码和解码网络,先编码到另一个空间,再从这个空间恢复高分辨率视差(深度)图。
- 特定目标(错误的、深度太小或太大的)修正。直接估计深度或进行深度修正不是最优的方法。可将修正任务分解为三个部分。探测错误的估计,替换掉错误的,再进行修正。
- 依据其他信息(如同时优化深度和法线)进行修正。
3.5 多像匹配网络
除了从一个像对中重建深度(视差)图,也可以从n个像对中重建,也就是说将特征计算的网络分支复制n次。多像匹配网络分两种。
- 前期融合网络:如Fig. 5(a), (b), ©。由不同分支计算的特征可通过池化等方式集成之后,再送入神经网络生成深度图。
- 后期融合网络:如Fig. 5(d)。对每个像对计算cost,再根据池化等方式合并所有的cost。
4 回归方法
该方法不学习如何匹配,直接对每个像素预测深度(视差)。该方法可对单视或双视影像估计深度,且可生成任意角度深度图。网络结构可分4种。
- 直接对影像进行编码获得深度。一般来说编码网络主要包含卷积层和全连接层。另外,之前的修正方法再获得较高分辨率结果的同时对资源的要求是比较高的,所以加上池化层降低特征图分辨率。
- 先用一个卷积神经网络对输入影像进行编码,将影像转到隐藏空间(latent space)。再指定一个视角,用一个网络(由一系列全连接层或反卷积层)对编码后的影像进行深度估计。
- 多个网络搭在一起能够提高效果。
- 估计深度的同时解决多个任务。深度估计和其他基于影像理解的问题,比如影像分割,语义标注和场景解译,都有强烈的关系。通过利用这些任务之间的复杂属性,可以联合解决这些任务进而互相增强任务效果。另外,尽管能够显著提升各任务的效果,对训练集的要求也是比较大的,需要同时有各个任务的标注。
5 网络训练
本部分具体含四个部分。
- 不同的训练集与数据增强方式。
- 不同的loss函数
- 不同的监督程度
- 训练技巧
5.1 训练集与数据增强
TABLE 4为双目深度估计数据集。另外多视的算法测视需要人工合成数据集。
现实中有深度标注的自然影像是比较难获取的。所以可基于已有数据集进行数据增强。有以下三种数据增强策略。
- 3D数据增强。为了给已有数据集增加多样性,可增加一些几何转换。如旋转、平移、缩放、噪声、光照变化等。这样的好处能够减少网络的泛化误差。
- 使用合成的3D模型和场景。可从3D的CAD模型人工渲染获取影像深度标注。
- 使用真实影像和3D场景。把从3D模型渲染的影像覆盖到真实影像上从而合成训练集。
5.2 loss函数
5.3 监督程度
5.4 训练技巧
有监督的深度学习经常受限于没有足够的训练数据。另外,当使用测距传感器时,噪声是存在的并且结果有可能很稀疏。但是,合成的影像以及对应的深度图采用计算机图形学技术是比较容易生成的。然而真实影像和图形学生成的影像时有区别的。通过一些手段可以直接训练生成的影像并且可以将真实影像学习的结果迁移过来。为了使生成的影像适合,有两类方法。
- 第一类是训练网络,在生成的影像和真实影像之间互相转化。
- 第二类在生成影像网络和真实影像网络之间,进行权值共享等迁移学习操作。
6 实验评价标准
- 平方相对误差。如公式35,与公式34类似。
- 线性均方根误差。
- 对数均方根误差。
除了定量,还有定性评价质量的方式。
- 监督程度。需要很少的的真值或者甚至不需要真值的训练是优先选择的。
- 端到端训练。有些方法分开训练几个网络,有些一起训练直接输出结果,即为端到端。
- 子像素精度。如果结果直接就有子像素精度,而不需要后处理或正则化,这将是极好的。
- 对视差结果范围是否需要修改。
7 基于双像数据实验
总表如TABLE 5。
7.1 有无真实深度图的影响
大多数效果比较好的方法都需要真实深度图。但是真实深度比较难获取,所以非监督的训练方式更吸引人。无监督训练的关键在于基于重投影误差构建loss函数,但这需要相机参数。根据TABLE 5可知,有真实深度图训练效果更好,比如 Yang et al. [25] 。
7.2 计算时间和内存
由TABLE 5,估计深度最慢需超过40s,最快需0.1s。
8 基于多像数据实验
TABLE 6比较了五种深度学习多视重建算法。TABLE 6中大多使用了有监督学习,且大多没有达到子像素精度,需要提前给定深度的计算范围且在不调整网络结构重新训练的情况下,无法更改范围。另外,这些方法在重建细微的特征(比如植被)时会计算失败。
9 回归方法实验
TABLE 7总结了深度学习方法回归深度的结果。有如下四个结论。
- 依据深度的大小采取不同的处理方式,这样精度更高。比如在loss函数中多关注深度较大的像素。
- 没有训练样本(使用重投影误差构建loss)的预测结果接近于有训练样本预测结果。
- 采用相对深度能提高深度估计精度。这是因为相对深度比绝对深度更精确,所以获取训练用的相对深度更容易。
- 联合估计深度和其他属性(如法线、语义分割)能提高深度估计精度。
10 未来发展方向
- 深度学习搭载在移动和便携平台,需要轻小型深度学习网络。
- 深度学习难以恢复细小物体(比如植被和头发)深度,且大多数方法会离散化深度图。另外在复杂环境下精度很容易受影响,比如遮挡区域、高密度聚集场景和具有复杂材料属性的物体。
- 估计深度时需要较大计算机资源,尤其是需要输出高精度深度图和输入高分辨率影像时。尽管可通过多尺度等方式解决,计算时间也是比较长的。
- 有真实深度的训练集比较难获取,可通过构造不需要真值的loss函数或迁移学习等训练策略来解决。
- 提高模型对不同数据集的适应能力。
本文由计算机视觉life 公众号旗下从零开始学习slam知识星球成员 杨俨棣 翻译。