点击上方“计算机视觉life”,选择“星标”
快速获得最新干货
今天给大家分享的论文是2020年最新的综述:A Survey on Deep Learning Architectures for Image-based Depth Reconstruction
作者单位:University of South Australia
论文下载链接:https://arxiv.org/pdf/1906.06113
在计算机视觉、图形学、机器学习领域中,从RGB影像中恢复深度已经研究了数十年。而深度学习与大规模训练集的出现颠覆了传统的方法。本文综合介绍利用深度学习恢复单视或多视影像深度的方法,总结了常用的处理流程并分析优缺点。
本文创新点:
第一篇综述深度学习重建影像深度的论文。
收集了2014至2018年间,超过100篇在计算机视觉、计算机图形学和机器学习领域的论文。
对深度学习训练集、网络结构、训练方式和应用场景(单视、双视、多视)做了分析。
对诸多方法结果做了综合比较。
图像三维重建的目的在于恢复真实物体和场景的三维结构,在机器人导航、物体识别、场景理解、三维建模等领域有重要应用。
从2D影像恢复深度可分为两部分。
传统方法方法:具体指理解和构建3D到2D投影过程。要想获取较优的结果,需要多视影像,并且相机需要标定。该方法在影像遮挡、特征缺失、纹理重复的环境难以准确估计深度。
深度学习方法:人眼在单眼观测的情况下,可根据先验知识建立模型推断物体的大概尺寸和几何位置。所以可基于深度学习利用先验知识将深度估计问题建立为识别任务。
而深度学习方法分两类:
双像匹配方法:用深度学习完成特征提取、特征匹配、视差(深度)估计、视差(深度)修正。
回归方法:深度学习直接预测,无需匹配。
该方法模仿传统双像匹配原理进行学习,匹配结果可转光流或视差图,进而可得深度图。含四个部分。
特征提取
求特征匹配cost
视差(深度)计算
视差(深度)修正
优化量 如公式1。 为像素, 为对应的深度。 为匹配的cost, 为正则项。四个部分中前两个部分构建 ,后两个部分构建 并估计深度(视差)。
综合,可对所有双像匹配方法进行分类。如TABLE 1。
基于CNN结构,编码器输入局部影像或全局影像,生成2D的特征图。特征图分两种:
单尺度特征图。如Fig. 1,该网络模型有2个分支,每个分支都是一个CNN。提取单尺度特征的网络结构如TABLE 2。
多尺度特征图。如Fig. 2。可通过修改中心像素的块尺寸或利用中间层计算的特征图来实现多尺度。注意,层数越深,计算出的特征尺度就越大。
匹配的cost(即为公式1的 )有两种计算方法。
由同名特征点的特征向量直接计算距离(如欧氏距离,余弦距离等)求得。
使用相似度-学习网络,先集成不同的网络生成的特征向量,再通过全连接网络或卷积网络输出匹配cost,最后由于有多个像对,产生多个cost,所以对诸多cost进行集成(如最大池化),生成最终匹配的cost 。
两种方法如Fig. 3。
3.1和3.2已经计算了匹配的cost,现在通过最小化 计算深度(视差)图。如图Fig. 4,分两步进行。
一般情况下,预测的视差(深度)图分辨率较低,细节部分会缺失,且在边界处容易过于平滑。甚至有些方法输出的图不完整或者很稀疏。直接预测高分辨率和高质量视差(深度)图的神经网络有很多参数,很难训练。进而需要一个修正模块。它有三个作用。
在利用深度学习进行修正时,可以有五种输入。
深度学习方法修正如表。分四种方法(如图):
从下往上方法。第一种策略类似于滑动窗口的处理方法,以小块为单元处理,估计小块中心像素的深度。另外一种从下而上的策略是利用不完整的深度图的各向异性扩散来填补未知区域的深度。
从上往下方法。直接处理整个视差(深度)图。第一种策略采用反池化实现解码,好比池化和卷积的逆过程。第二种策略采用编码和解码网络,先编码到另一个空间,再从这个空间恢复高分辨率视差(深度)图。
特定目标(错误的、深度太小或太大的)修正。直接估计深度或进行深度修正不是最优的方法。可将修正任务分解为三个部分。探测错误的估计,替换掉错误的,再进行修正。
依据其他信息(如同时优化深度和法线)进行修正。
除了从一个像对中重建深度(视差)图,也可以从n个像对中重建,也就是说将特征计算的网络分支复制n次。多像匹配网络分两种。
前期融合网络:如Fig. 5(a), (b), (c)。由不同分支计算的特征可通过池化等方式集成之后,再送入神经网络生成深度图。
后期融合网络:如Fig. 5(d)。对每个像对计算cost,再根据池化等方式合并所有的cost。
该方法不学习如何匹配,直接对每个像素预测深度(视差)。该方法可对单视或双视影像估计深度,且可生成任意角度深度图。网络结构可分4种。
本部分具体含四个部分。
不同的训练集与数据增强方式。
不同的loss函数
不同的监督程度
训练技巧
TABLE 4为双目深度估计数据集。另外多视的算法测视需要人工合成数据集。
现实中有深度标注的自然影像是比较难获取的。所以可基于已有数据集进行数据增强。有以下三种数据增强策略。
loss函数的功能在于描述估计视差(深度)和真实值的差异,并用它来调整网络权重。一般来说loss由两部分组成,如公式7。 为估计的深度图, 为真实深度图, 为训练集, 为网络权重。
描述估计的深度与真实深度的误差。可分为以下几类。
注意, 可由以上多种loss构成。
平均绝对误差类loss
交叉熵类loss。 为像素 具有视差(深度) 的概率。 为常数。
子像素交叉熵。对 进行修改。
基于合页loss。现有双像,一张属于正类,一张属于负类。在双像上考虑同一位置周围的像素。 为正类输出, 为负向输出, 为间隔,则合页损失定义为:
重投影loss。利用相机参数将预测的视差(深度)图投影到参考视差(深度)图上,可不需要真值。
匹配loss。 作为真实标签,描述左片像素 和右片像素 的匹配程度。 是预测的匹配得分。
语义loss。可利用语义信息构建loss。比如基于边缘特征图。 是边缘概率图,像素位置 。
作为正则项加了诸多限制。有如下四种考虑因素。
平滑度。由估计的视差(深度图)的一阶或二阶导数构成。
一致性。左片为 ,利用右片计算的视差图将右片转到左片坐标系下得到 ,利用左右视差将左片转到右片坐标系得到 ,则正则项为:
另外,有左视差 和将右视差投影到左片的 ,则正则项为
最大深度启发。在纹理较少区域,多个投影函数和得到近似的投影loss。为了在这些区域采取较强正则化,可用:
尺度不变性。
获取真实深度的方式(传统双目匹配或3D扫描设备)比较困难,价格昂贵,并且易受噪声影响,精度不高。通过三种机制可以调整监督机制。
有监督的深度学习经常受限于没有足够的训练数据。另外,当使用测距传感器时,噪声是存在的并且结果有可能很稀疏。但是,合成的影像以及对应的深度图采用计算机图形学技术是比较容易生成的。然而真实影像和图形学生成的影像时有区别的。通过一些手段可以直接训练生成的影像并且可以将真实影像学习的结果迁移过来。为了使生成的影像适合,有两类方法。
有如下定量评价方式。
训练时间和预测时间
对内存的占用
计算终点误差。真值为 ,预测值为 ,则误差为
预测错误像素比例。错误像素指真值和预测值相差超过阈值。
绝对相对误差。如公式34。 为每个像素。
平方相对误差。如公式35,与公式34类似。
线性均方根误差。
对数均方根误差。
最大相对误差。指像素 的占比, 满足:
密度。指完成深度估计像素的占比。
除了定量,还有定性评价质量的方式。
总表如TABLE 5。
大多数效果比较好的方法都需要真实深度图。但是真实深度比较难获取,所以非监督的训练方式更吸引人。无监督训练的关键在于基于重投影误差构建loss函数,但这需要相机参数。根据TABLE 5可知,有真实深度图训练效果更好,比如 Yang et al. [25] 。
由TABLE 5,估计深度最慢需超过40s,最快需0.1s。
TABLE 6比较了五种深度学习多视重建算法。TABLE 6中大多使用了有监督学习,且大多没有达到子像素精度,需要提前给定深度的计算范围且在不调整网络结构重新训练的情况下,无法更改范围。另外,这些方法在重建细微的特征(比如植被)时会计算失败。
TABLE 7总结了深度学习方法回归深度的结果。有如下四个结论。
深度学习搭载在移动和便携平台,需要轻小型深度学习网络。
深度学习难以恢复细小物体(比如植被和头发)深度,且大多数方法会离散化深度图。另外在复杂环境下精度很容易受影响,比如遮挡区域、高密度聚集场景和具有复杂材料属性的物体。
估计深度时需要较大计算机资源,尤其是需要输出高精度深度图和输入高分辨率影像时。尽管可通过多尺度等方式解决,计算时间也是比较长的。
有真实深度的训练集比较难获取,可通过构造不需要真值的loss函数或迁移学习等训练策略来解决。
提高模型对不同数据集的适应能力。
从0到1学习SLAM,戳↓
欢迎加入公众号读者群一起和同行交流,目前有SLAM、三维视觉、传感器、自动驾驶、计算摄影、检测、分割、识别、医学影像、GAN、算法竞赛等微信群(以后会逐渐细分),请扫描下面微信号加群,备注:”昵称+学校/公司+研究方向“,例如:”张三 + 上海交大 + 视觉SLAM“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进入相关微信群。请勿在群内发送广告,否则会请出群,谢谢理解~
投稿、合作也欢迎联系:simiter@126.com
长按关注计算机视觉life