基于深度学习的单目深度估计技术综述
2022-02-28宋巍朱孟飞张明华赵丹枫贺琪
宋巍,朱孟飞,张明华,赵丹枫,贺琪
上海海洋大学信息学院, 上海 201306
0 引 言
深度估计问题是计算机视觉领域中的一个重要分支,也是3维建模(Zeng等,2017)、基于深度感知的图像合成和同步定位与建图(simultaneous localization and mapping,SLAM)(Tateno等,2017)等应用中的重要环节。随着计算机计算能力的提升,越来越多的研究者开始关注这个问题。
场景的深度信息在许多计算机视觉问题中都发挥着极为重要的作用,而深度信息的获取方式主要可以分为两种:主动深度传感和被动测距传感。主动深度传感主要是通过机械设备来获取场景的深度信息,最常见的设备是激光雷达。传统的激光雷达设备通过在物体表面的反射来获得深度信息,而根据获得的深度信息,计算机可以快速完成表面模型构建和场景深度估算。目前,基于激光雷达的应用技术已经较为成熟。然而,由于激光雷达设备本身价格昂贵,且在获取稠密高精度的深度信息时需要耗费极高的人力成本,对于一些需要在特殊环境下进行工作的应用难以推广。随着工业技术的不断进步,价格更低廉、使用更便捷的深度相机问世,为研究者们提供了更多的选择。深度相机根据近红外光的反射,通过TOF(time of flight)测距原理直接获得场景的深度信息,并且由于深度相机中携带了RGB摄像头,因此可以在需要场景色彩信息的应用中使用。但随着研究的深入,基于深度相机的应用也暴露了一些问题:由于深度测距部件本身量程较短,且对场景环境有一定要求,因此无法在室外环境中广泛应用。
为了更便捷有效地获取深度信息,研究者们开始考虑使用被动测距传感的方式从图像中估计场景的深度信息。根据描述场景的视图数量,常见的被动测距传感方法可以分为两类:单视图和多视图。其中,基于多视图的方法主要使用双目图像进行推理,它们一般通过几何方法对双目图像进行匹配,在理想情况下,根据双目测距原理直接计算出场景的深度信息。但是基于双目图像的估计方法常常受到基线长度的限制,导致设备体积与载具平台无法匹配,制约了其在一些情况中的应用。而基于单视图的方法主要使用单一图像进行深度估计,其最容易的获取方式便是使用单目相机拍摄的单目图像。但由于缺少诸如运动、立体视觉等可靠的深度线索,且理论上单目视图中任意像素点的深度值均可以有无数个解,因此该任务非常具有挑战性。
传统的单目深度估计方法在处理时主要依赖于图像中的消隐点(Tsai等,2006)、阴影(Prados和Faugeras,2006)、对焦与离焦(Tang等,2015)等图像本身的特征来构建数学模型,实现像素值与深度值之间的映射。虽然在某些环境下这些方法取得了一定的成果,但都需要对深度估计问题附加额外假设。随着计算机视觉领域的不断发展,研究者们提出了许多人工设计的特征,例如分层梯度直方图(pyramid histogram of oriented gradients,PHOG)、尺度不变特征变换(scale-invariant feature transform,SIFT)和加速稳健特征(speeded up robust features,SURF)等(Karsch等,2012)。考虑到人工设计特征通常只能捕获图像中的局部信息,研究者们尝试利用这些人工特征构建条件随机场(conditional random field,CRF)或马尔可夫随机场(Markov random field,MRF)等概率图模型,通过在计算中引入全局特征,将估计问题转化为随机场下的学习问题。基于这一思想,研究者们取得了丰富的成果(Karsch等,2012;Liu等,2010;Saxena等,2009)。
随着深度学习的兴起和发展,其在目标识别、图像分割等视觉领域的出色表现吸引了众多的研究者。基于彩色图像与深度图像之间存在着某种映射这一基本假设, Eigen等人(2014)首次将卷积神经网络应用于单目深度估计问题,并提出了一种使用两个卷积神经网络进行场景深度估计的方法。他们通过使用相关数据训练模型,在测试时仅根据单幅图像便可获得较为准确的深度图。由此,基于深度学习的单目深度估计方法逐渐成为一个研究热点,许多不同类型的深度学习方法陆续提出(Eigen和Fergus,2015;Li等,2015;Laina等,2016;Chen等,2016;Cao等,2018;Zhou等,2017;Gan等,2018)。目前,有国内外学者对基于深度学习的单目深度估计方法进行了整理和综述(黄军 等,2019;李阳 等,2019;Zhao等,2020;Li等,2020;Khan等,2020;Ming等,2021;龙霄潇 等,2021)。黄军等人(2019)和龙霄潇等人(2021)分别从单目深度估计方法和3维视觉的角度对基于深度学习的方法进行了简略的介绍。李阳等人(2019)、Zhao等人(2020)、Khan等人(2020)、Li等人(2020)和Ming等人(2021)均从监督、无监督和半监督3类网络学习机制的角度对各种基于深度学习的单目深度估计方法进行了归纳总结。与之前的综述相比,本文在网络学习机制的基础上,从性能优化的角度对各方法的网络结构特点进行了分类总结,通过实验对比了几类典型无监督方法的优劣,并且对特殊应用场景下基于深度学习的单目深度估计技术现状进行了深入分析与讨论,指出水下环境依然是目前的研究难点之一。
本文综述了2014—2021年深度学习用于单目深度估计的经典方法以及最新进展。重点关注单目深度估计的优化思路及其在深度学习网络结构中的表现,并据此分别对监督学习和无监督学习的方法进行了细化分类。此外,对各类典型方法在公开数据集上的性能进行了综合比较及简要总结。最后,本文从深度估计精度、泛化性能和应用场景等方面对当前研究的现状、面临的问题及可能的解决方案进行了讨论。
1 基于深度学习的单目深度估计网络
与传统的深度估计方法相比,基于深度学习的单目深度估计方法使用卷积神经网络的强大性能,直接建立彩色像素与深度值之间的关系映射,并获得了比传统方法更为优秀的估计结果。虽然目前基于深度学习的单目深度估计领域的发展只有数年,但借助于深度学习相关技术的高速发展,相关论文在国内外计算机领域的会议与期刊中频繁出现。本文对近年来基于深度学习的单目深度估计技术的发展历程进行总结,将一些具有影响力的工作通过时间线的方式绘制出来。如图1所示,根据是否使用真实深度值作为标签,将基于深度学习的方法分为监督学习(supervised learning)和无监督学习(unsupervised learning),其中基于无监督学习的方法由于主要使用的是自监督策略,因此在文中也常称为自监督学习。
图1 基于深度学习的单目深度估计方法的发展历程Fig.1 Evolution of monocular depth estimation methods based on deep learning
图1中没有给出基于半监督学习的相关研究,主要是由于目前基于半监督学习的研究尚不充分。在CVPR2017(IEEE Conference on Computer Vision and Pattern Recognition)中,Kuznietsov等人(2017)曾提出一种基于半监督学习的单目深度估计网络结构。该网络使用双目图像作为训练数据,使用一个卷积神经网络来进行视差估计,并使用获得的预测视差与输入图像进行图像重建,这与结合立体视觉的无监督方法有着相同的策略。但与基于无监督学习方法不同的是该网络在损失函数中使用了真实深度值来计算预测视差对应的预测深度误差。
1.1 监督单目深度估计网络结构
基于监督学习的方法使用卷积神经网络直接建立彩色像素与深度值之间的映射,并使用真实深度值作为标签。网络的训练策略主要以端到端的模式进行训练。
1.1.1 多尺度特征融合的方法
Eigen等人(2014)提出第1个用于单目深度估计的深度卷积神经网络框架,是一种多尺度网络结构。如图2所示,该网络结构由两个卷积神经网络组成,一个网络基于全局范围对图像深度进行粗略预测,另一个网络则基于局部范围对前者的预测结果进行细化。通过对网络进行端到端的训练,他们利用训练后的网络成功实现了对单幅彩色图像的深度估计,并在当时取得了优于传统深度估计方法的结果。在上述工作的基础上,Eigen和Fergus(2015)又提出一种可用于3个视觉任务的通用多尺度网络框架。重点优化在于使用预训练网络来加快网络的收敛,以及增加水平方向与垂直方向的图像梯度损失从而提高预测结果与真实深度图之间局部结构相似性。
图2 多尺度深度估计网络结构(Eigen等,2014)Fig.2 Multi-scale depth estimation network(Eigen et al., 2014)
Lee等人(2018)提出一种基于傅里叶频域分析的单目深度估计网络框架。其图像特征提取网络基于ResNet-152设计,将ResNet-152后19个残差块所获得的特征在全连接层之前进行融合,以获得更佳的预测效果,并添加了用于输出中间特征的额外路径,如图3(a)所示。他们提出的基于傅里叶频域分析的多尺度深度图候选策略如图3(b)所示。首先通过以不同的裁剪比例裁剪输入图像来生成多个候选深度图。一般来说,小裁剪率的图像可以更准确地重建局部深度细节,而大裁剪率的图像可以更有效地恢复整体深度分布。然后在傅里叶频域中对多个候选深度图进行融合,利用不同尺度图像的互补特性获得最终的深度估计结果。此外,为了训练网络以适应不同的场景深度,还提出了一种新的损失函数——深度平衡的欧氏损失(depth-balanced Euclidean loss),计算为
(1)
(2)
图3 修改后的残差块及多尺度候选深度图网络框架 (Lee等,2018)Fig.3 Modified residual block and multi-scale depth map candidate network(Lee et al., 2018) ((a) modified residual block; (b) multi-scale depth map candidate network)
Hu等人(2019)针对深度估计过程中的物体边界扭曲和重建结果模糊的问题,提出一种新的使用多尺度特征融合策略的网络结构。网络结构如图4所示,共包含4个模块:编码器、解码器、多尺度特征融合模块和细化模块。其中,最值得关注的是,多尺度特征融合模块可以避免编码器和解码器之间的特征通道尺度固定的问题,能够在不同尺度的编解码器中灵活使用。此外,他们还提出使用由深度损失项、梯度损失项和表面法向量损失项组成的损失函数,借助3个损失项之间的关系以一种互补的方式促进了网络预测结果精度的提升,特别是对物体边缘处预测效果的提升。
图4 结合多尺度特征融合模块的单目深度估计网络结构 (Hu等,2019)Fig.4 Monocular depth estimation network combined with multi-scale feature fusion module(Hu et al., 2019)
金字塔网络结构常用于多尺度特征融合。Chen等人(2019)针对复杂场景的深度结构,提出一种基于结构感知的残差金字塔网络结构(structure-aware residual pyramid network),如图5所示。金字塔解码器(residual pyramid decoder)利用金字塔结构中的上层特征表示全局场景结构,以下层特征表示局部结构和形状细节。并且,针对金字塔结构中的不同层次,还提出了一种残差细化模块(residual refinement modules,RRM),通过预测残差图,在利用上层特征预测的粗略场景结构中逐步细化结构。此外,为了更加充分地利用多尺度图像特征,设计了自适应密集特征融合模块(adaptive dense feature fusion module)来融合所有尺度的有效特征,进一步优化残差金字塔解码器中不同尺度的残差深度图。Chen等人(2021)在他们之前工作(Chen等,2019)的基础上,提出了一种适用于单目深度估计、单视图高度估计和人群计数密度图估计等密集连续回归(dense continuous-value regression)任务的拉普拉斯金字塔网络结构。该网络与前期提出的残差金字塔网络结构具有相似的设计,包含了多尺度解码器——拉普拉斯金字塔解码器、残差细化模块和自适应密集特征融合模块。其中,拉普拉斯金字塔解码器能够更为有效地从不同的频率表达全局和局部场景结构,以及场景布局和形状细节。
图5 基于结构感知的残差金字塔网络结构(Chen等,2019)Fig.5 Structure-aware residual pyramid network(Chen et al., 2019)
1.1.2 结合条件随机场(CRF)的方法
图模型中的条件随机场(conditional random field,CRF)模型在语义分割领域中有着极为出色的表现,而深度信息与语义信息具有类似的数据分布特征,并且考虑到深度值的连续性特点,使用连续条件随机场(continuous CRFs)可以对这类数据进行有效处理。因此,近年来在单目深度估计领域中结合CRF的方法频繁出现,并往往与多尺度网络结合使用,一类在早期的网络中作为损失函数;另一类用于多尺度特征融合。
Liu等人(2015)考虑到深度值的连续特性,将深度估计问题转化为CRFs中的学习问题,提出了一种深度卷积神经场(deep convolutional neural fields,DCNF)框架。如图6所示,整个框架由一元势部分、成对势部分和CRF损失层3部分组成,网络的输入为经过超像素分割后的图像。其中,一元势部分使用卷积神经网络对超像素图像中的全局特征进行提取,输出包含所有超像素块对应深度值的多维向量;成对势部分使用全连接层计算所有超像素块间的相似度,输出包含所有相似度的1维向量;CRF损失层将一元势部分得到的多维向量和成对势部分得到的1维向量作为输入,使用最小化负对数似然来优化一元势部分得到的回归深度值。
图6 深度卷积神经场模型(Liu等,2015)Fig.6 Deep convolutional neural field model(Liu et al., 2015)
Lu等人(2018)提出一种基于光场相机和深度卷积神经场的水下图像深度估计网络框架。该框架使用去散射(descattering)操作对水下图像处理,并使用光场数据的4维切片来对处理后水下图像进行深度估计。此外,他们提出使用基于CRF设计的深度卷积神经场(Liu等,2015)模型对估计所得的深度图进行细化处理。
在Li等人(2015) 提出的基于迁移学习的多尺度超像素级深度估计网络中,使用了分层CRF(hierarchical conditional random field,HCRF)进行不同尺度超像素块深度的细化处理。如图7所示,在该网络结构中,输入数据由不同尺度的超像素分割产生的超像素块组成,并且不同尺度的超像素块会先经过上采样至相同尺度后再进行组合;特征提取网络选择使用经过预训练的AlexNet网络结构,训练网络建立超像素图像到超像素级深度间的映射;最后使用分层CRF进行细化处理,通过将数据项、超像素级深度的平滑度和自动回归模型(auto-regression model)的结果作为分层CRF中的潜在势,将深度估计结果从超像素级细化到像素级。
图7 多尺度超像素级深度估计网络结构(Li等,2015)Fig.7 Multi-scale super pixel-level depth estimation network(Li et al., 2015)
Xu等人(2017)提出一种多尺度连续CRFs结构的序列深度网络框架,如图8所示,该框架使用基于自动编码器结构的卷积神经网络进行深度估计,并设计了一个C-MF模块,通过使用由C-MF模块堆叠构成的C-RFs将解码器中输出的不同尺度的深度结果进行融合。他们还提出两种CRF结构——级联CRFs(sascade CRFs)和多尺度CRFs(multi-scale CRFs),用于进行多尺度的特征融合。其中,级联CRFs将把前一级的预测结果作为观测变量来进行处理;多尺度CRFs将在隐变量空间中对相邻尺度间的关系进行建模;而C-MF模块则可以通过均值域更新(mean-field updates),使得由其所构成得CRFs结构在网络框架中可以进行端到端的训练。
图8 结合多尺度连续CRFs的单目深度估计网络框架(Xu等,2017)Fig.8 Monocular depth estimation network combined with multi-scale continuous CRFs(Xu et al., 2017)
进一步优化结合连续CRFs的多尺度单目深度估计网络框架,Xu等人(2018)提出了一种结合结构化注意力模型的多尺度CRFs模型。如图9所示,该框架同样采用的是编解码器结构,其中编码器网络为DenseNet(Huang等,2017b)结构。对编码器输出的多尺度特征融合时引入了一种结构化注意力模型,该模型可以使用消息传递算法自动调节不同尺度上相应特征之间的信息传递量,并能完美地与CRFs进行结合,提升深度估计精度。图9中红色虚线框中的部分表示结构化注意力引导CRFs模型的示意图。其中,A1A4模块表示注意力图的估计结果,Y1Y5模块表示CRF联合推断的特征,箭头表示消息传递算法中估计变量之间的依赖关系,虚线箭头表示与注意力模型更新相关的依赖关系。
图9 结合结构注意力引导的卷积神经场的单目深度估计网络框架(Xu等,2018)Fig.9 Monocular depth estimation network with structured attention guided convolutional neural fields(Xu et al., 2018)
1.1.3 基于序数关系的方法
基于序数关系进行深度估计方法主要可以分为两类,一类是直接使用序数关系,对图像中两两像素点的相对位置进行研究的相对深度估计方法;另一类则是以间接的方式,通过结合离散化标签来对全局深度进行分类预测的离散深度估计方法。其中,第2类方法目前主要基于序数回归方法来进行网络的设计。
最早的基于序数关系的单目深度估计网络框架是由Zoran等人(2015)提出的,通过估计两两像素间的序数关系来获取图像的相对深度,而不是像常规的深度估计网络那样直接估计像素对应的深度值。在该框架中,输入图像首先进行超像素分割,根据分割结果选择点对,每一个超像素的中心都被认为是一个点,然后使用卷积神经网络从超像素图像对中提取特征信息,并对每一个图像对进行三分类估计以获得超像素图像块之间的序数关系,最后根据一些已经确定的特定先验,将图像中各超像素块之间的序数关系进行传播,获取完整图像的密集深度。
Chen等人(2016)针对相对深度估计任务提出了第1个大规模包含相对深度注释与原始图像的数据集DIW (depth in the wild)。DIW数据集由495 K幅图像组成,每幅图像都带有随机采样的点及其相对深度。数据集中每幅图像均采样一对点,以最大程度地减少注释的冗余。为验证该数据集,Chen等人(2016)还提出一种可以直接预测像素相对深度值的深度估计网络,其损失函数中使用排名损失(ranking loss)来对相对深度估计任务进行约束,该损失鼓励预测的深度图与真实相对深度的顺序关系保持一致。如式(3)所示,输入包括预测深度图z,训练图像I以及I的K个查询R={(ik,jk,rk)},k=1,…,K,其中,ik是第k个查询中第1个点的位置,jk是第k个查询中第2个点的位置,rk∈{+1,-1,0}是ik和jk之间的真实相对深度关系:更近(+1)、更远(-1)和相等(0)。
(3)
式中,ψk(I,ik,jk,r,z)是第k个查询的损失,若rk=0,则ψk将为一个较小的损失值;若rk=+1或-1,则ψk将为一个较大的损失值。
Xian等人(2020)对已有单目相对深度估计网络框架(Chen等,2016)中使用的排名损失函数进行了改进,提出两种新的采样策略——基于图像边缘的边缘引导采样策略(edge-guided sampling strategy)和基于实例分割蒙版的实例引导采样策略(instance-guided sampling strategy),以及一种由两种新采样策略组合而成的分割引导采样策略(segment-guided sampling strategy)。他们提出使用分割引导采样策略替代常见的随机采样策略,能够将网络的注意力集中在一些值得特别关注的区域上,即场景的显著深度结构。此外,Xian等人(2020)还提供了一个包含约21 K幅高分辨率网络双目照片的相对深度数据集,用于验证他们所提出的排名损失采样策略改进方案。
由于序数关系在相对深度任务上展现出了极为出色的效果,因此研究者们也尝试将序数关系应用于执行绝对深度任务的单目深度估计网络。Cao等人(2018)提出将深度估计问题视为一个像素级的分类任务,他们认为预测相对模糊的深度范围比预测精确的深度值更容易,并且通过对深度进行分类,可以更容易地以概率分布的形式获得的深度估计的置信度。于是,他们提出了一种面向分类的深度全卷积残差网络框架。如图10所示,在该框架中,首先将连续的真实深度值离散到几个“箱子”中,并根据它们的深度范围对“箱子”进行标记,生成离散的真实深度值标签,然后通过训练一个全卷积残差网络来解决针对深度估计的分类问题。为了优化深度估计结果,他们还提出在获得的离散深度估计结果上使用全连接条件随机场(fully connected CRFs)进行后处理操作,细化分类网络预测得到的深度结果。
图10 面向场景深度分类任务的深度全卷积残差网络框架(Cao等,2018)Fig.10 Deep fully convolutional residual network for scene depth classification task(Cao et al., 2018)
同时,由于将深度估计问题视为分类问题进行处理,该网络结构还使用了一种新的损失函数——像素级多项逻辑损失函数。如式(4)所示,该损失函数通过使用信息增益矩阵,将真实深度值用于网络参数的优化,即
(4)
单目深度估计网络的学习任务可以定义为一个序数回归(ordinal regression)问题。序数回归的目标是通过学习一个规则,从一个有序的尺度中预测标签,也可以将该方法理解为进行了一种有序的多分类任务。Fu等人(2018)提出了一种基于序数回归的单目深度估计网络框架。为了实现对预测结果进行监督约束,原有的真实深度值需要通过离散化处理来生成对应的分类标签。与Cao等人(2018)所做的统一离散化(uniform discretization,UD)策略不同,Fu等人(2018)提出使用间隔增加的离散化(spacing-increasing discretization,SID)策略。SID策略可以在预测较大的深度值时允许存在相对较大的误差,避免大深度值对训练过程的过度加强。如图11所示,该框架通过卷积神经网络对输入图像进行稠密特征提取,并将获得的稠密特征在新提出的场景理解模块(scene understanding modular)中进行处理,该模块包括3个子模块:萎缩空间金字塔池(atrous spatial pyramid pooling,APSS)、跨通道学习(cross-channel learner)和全图像编码(full-image encode)。由场景理解模块获得的特征最后将被进行串联,并通过序数回归来获得各像素点上离散化的深度估计结果。该网络的损失函数如式(5)所示,这是一种序数回归损失函数,即
(5)
(6)
(7)
图11 深度序数回归网络DORN框架(Fu等,2018)Fig.11 Deep ordinal regression network(DORN)(Fu et al., 2018)
Lee和Kim(2019)提出一种利用相对深度图进行结果优化的单目深度估计网络框架。他们的方法与之前所提及的针对相对深度图进行预测的深度估计方法截然不同。如图12所示,该框架使用卷积神经网络对输入图像的深度信息进行序数回归,同时获取离散深度和相对深度,并使用基于一系列数学假设的深度特征分解方法来获得两类深度的特征图,最后使用深度组件组合(depth component combination)方法将相对深度特征和离散深度特征进行融合,产生更为出色的预测深度图。此外,他们还考虑到若对所有像素对进行相对深度估计将会产生极高时间复杂度的问题,提出在进行序数回归时仅对稀疏的相对深度图进行估计,而未估计的相对深度值则使用ALS (alternating least squares)算法(Koren等,2009)进行重建,以获得特征分解所需要的稠密相对深度图。
1.1.4 结合多元图像信息的方法
图像中包含了多种不同维度(时间、空间和语义等)的信息,而这些信息往往与图像场景的深度间隐含一定的关联,通过在深度估计问题中结合多种图像信息,将有利于提升深度估计结果的精度。接下来,介绍4类结合不同图像信息的单目深度估计方法。
1)语义信息。Wang等人(2015)提出一种联合单目深度估计与语义分割的网络框架。在该框架中,两项任务的一致性是通过联合训练来学习的,并在不同阶段进行实施,以提高两项任务的性能。如图13所示,该框架先使用卷积神经网络对输入图像进行全局预测,获得对应的像素深度值和语义标签,同时使用另一个卷积神经网络对输入图像进行局部的深度预测与语义分割,然后再将全局网络与局部网络的输出作为CRF中的潜在势输入CRF处理模块,使用两层分层CRF对深度和语义信息进行联合推理。通过语义特征与深度特征间的相互优化,两项任务都获得了比单独执行更好的结果。
Jiao等人(2018)提出一种结合语义信息的协同网络结构来进行单目深度估计,网络结构如图14所示。其中最值得注意的是他们新提出的信息共享策略,该策略以动态路由的方式执行,通过横向共享单元和半密集跳跃连接实现,其允许特征信息通过内部特征的形式在两个任务之间和网络内部进行传递,从而更好地将语义信息传播到深度估计中。此外,针对深度数据分布不均衡的情况,他们提出了一种新的具有深度感知目标的注意力驱动损失,缓解数据中的偏差问题,对网络在 “长尾”分布数据集上的训练进行更有效的监督。
图14 基于信息共享策略的单目深度估计网络结构(Jiao等,2018)Fig.14 Monocular depth estimation network based on information sharing strategies(Jiao et al., 2018)
Wang等人(2020)则提出一种用于单目深度估计的语义分治网络框架(SDC-DepthNet)。该框架的基本思想是将全局的深度估计任务分解为一系列特定类型对象的深度估计任务,这样更易于网络进行特征学习,且更易于在未知场景中进行推广。如图15所示,此框架可分成4个部分:骨干网络、分割模块、深度估计模块和聚合模块。其中,骨干网络负责对图像的特征进行提取,并将特征提供给分割模块和深度预测模块;分割模块进行语义分割和实例分割,将图像分割为语义段;深度预测模块根据语义段的类别进行对应深度图的估计,并根据骨干网络提供的特征推断比例尺和偏移量;聚合模块合并每个语义段的深度图,以生成全局一致的深度预测结果。为了更好地进行聚合,Wang等人(2020)还提出了一种由分割结果引导的深度聚合(segmentation guided depth aggregation)算法来进行聚合工作。
图15 用于单目深度估计的语义分治网络框架SDC-DepthNet(Wang等,2020)Fig.15 Semantic divide-and-conquer network(SDC-DepthNet) for monocular depth estimation (Wang et al., 2020)
2)邻域信息。Gan等人(2018)提出一种利用相邻像素间深度约束的单目深度估计网络框架。如图16所示,他们在传统卷积神经网络提取的绝对特征上,通过使用一种亲和层(affinity layer)来对每个像素局部区域内的邻域信息——相对特征进行提取,并使用全连接层将绝对特征与相对特征进行融合以获得全局特征,最后将3种特征一起输入深度估计模块,估计与输入图像对应的预测深度图。同时,他们还提出了一种包含垂直池化(vertical pooling)层的细化模块,通过使用上采样操作与垂直池化获得的结果进行残差估计,生成与输入图像对应的残差图,并利用残差图对原先的预测深度图进行细化。
图16 结合邻域信息(相对特征)的单目深度估计网络框架(Gan等,2018)Fig.16 Monocular depth estimation networks incorporating neighborhood information (relative features)(Gan et al., 2018)
针对训练过程中所用数据集的真实深度图过于稀疏的问题,Gan等人(2018)使用Pang等人(2017)提出的立体匹配方法预测密集深度图来增强原本稀疏的真实深度图。而网络的损失函数使用了L2损失对模型进行约束,并在原始深度图和增强后的深度图上共同计算损失,即
(8)
3)时间信息。Zhang等人(2019)尝试将视频中的时间维度信息用于深度估计,提出了一种基于卷积长短期记忆(convolutional long short-term memory,CLSTM)网络(Shi等,2015)设计的ST-CLSTM网络结构,该网络结构能够捕获视频深度估计过程中的空间特征以及时间相关性。如图17所示,Zhang等人(2019)提出的单目深度估计网络框架由ST-CLSTM和时空损失模块组成。ST-CLSTM主要分成两个部分:空间特征提取(spatial features extraction)模块和时间相关集合 (temporal correlations collection) 模块。其中,空间特征提取模块由编解码器结构的卷积神经网路和一个多尺度特征融合模块(multi-scale feature fusion,MFF)组成,作用于每个输入的视频帧,输出对应特征图;时间相关集合模块利用CLSTM对特征图中的时间维度信息进行学习,并在下一帧计算时与输入的特征图进行结合。为了维护空间特性与时间特征的一致性,该框架的损失函数设置为空间损失与时间损失的加权和。其中,空间损失包含了深度损失、梯度损失和表面法向量损失,时间损失则是借助生成对抗网络进行计算,将ST-CLSTM作为生成器,使用3D卷积神经网络(3D convolutional neural network, 3D-CNN)作为鉴别器,通过最大化将正确标签分配给估计深度和真实深度的概率来训练鉴别器。
4)边界信息。Xue等人(2021)提出一种用于单目深度估计任务的边界诱导和场景聚合网络(boundary-induced and scene-aggregated network,BS-Net)。该网络主要解决两个问题:(1)深度特征对场景中最远区域的错误编码,导致预测深度的3维结构扭曲;(2)低阶特征利用不足,使得深度突变时的边缘深度估计更加困难。如图18所示,他们在该网络结构中设计了一种深度相关编码器(depth correlation encoder)来感知最远的区域。一方面,通过利用扩张卷积(dilation convolutions)提取远距离像素之间相互独立的相关性,建立不同独立像素之间的相对深度;另一方面,金字塔场景编码器(pyramid scene encoder)则可以提取多尺度区域的优势特征,并将其融合在一起,获得不同尺度区域之间的相关性。同时,为了有效地恢复边界,他们还设计了自底向上的边界融合(bottom-up boundary fusion)模块。该模块从编码器的第2个残差块开始,逐步融合相邻两层的特征,并将位置信息传递给高层特征,然后通过高级线索的引导,消除低级线索中的无效边(表示深度变化小),最终提取出边界边(表示深度变化突然)。此外,为了有效地利用边界,他们还设计了条带细化模块(stripe refinement module)来代替传统的回归模块。
图17 结合时间信息的单目深度估计网络框架(Zhang等,2019)Fig.17 A framework for monocular depth estimation networks incorporating temporal information (Zhang et al., 2019)
图18 结合边界信息的单目深度估计网络结构(Xue等,2021)Fig.18 Monocular depth estimation network combined with boundary information(Xue et al., 2021)
1.1.5 其他方法
除了上述几类方法,还提出了一些其他单目深度估计方法。
虽然单目深度估计网络框架可以在预测结果上有出色的表现,但训练过程与预测过程往往需要花费大量的时间,这极大地限制了该技术在实时应用中的使用。因此,研究人员也在提高网络预测精度的同时,不断提高网络的训练速度和执行效率。Laina等人(2016)提出一种用于单目深度估计的全卷积残差网络结构。该网络结构是基于经典的分类网络——ResNet进行设计的,但他们将ResNet分类网络中最后的全连接层替换为上采样模块,以获得回归结果。此外,还对标准上采样块进行创新,提出了一种新的上采样模块——上投影块,在保证更高分辨率结果的同时,将所需的参数量和训练量减少了一个数量级。在标准上采样块和上投影块的基础上,他们还提出了等价的快速上采样块和快速上投影块,有效减少了网络的训练时间。Song和Kim(2019)提出一种基于引导深度网络的单目深度估计网络框架。如图19所示,在该网络框架中,首先使用一个自动编码器结构的卷积神经网络(depth-to-depth network)作为引导网络,训练网络建立从深度值到深度值的关系映射;然后利用引导网络中的预训练网络参数,对与引导网络具有相同网络结构的深度估计网络(color-to-depth network)进行彩色像素到深度值的网络训练。同时,提出一种潜在损失(latent loss),表征预测深度图y和真实深度图y*分别通过引导编码网络提取到的不同尺度特征之间的差异。借助包含潜在损失的损失函数和引导网络在预训练过程中获得的参数特征,最后得到的深度估计网络即使在复杂的背景区域下也可以得到具有较好局部细节的预测结果。此外,该网络框架也具有极快的运行速度。
图19 结合引导网络的单目深度估计网络框架(Song和Kim,2019)Fig.19 A monocular depth estimation network framework combining guided networks(Song和Kim,2019)
基于监督学习的单目深度估计方法需要带有真实深度值作为标签的数据集进行训练,但这类数据集并不丰富,并且场景单一。对于这一问题,研究者们尝试使用合成环境数据集来训练网络从现实图像中预测深度值,同时这一想法也在一些针对特殊场景的单目深度估计方法中得到使用。Atapour-Abarghouei和Breckon(2018)提出利用风格迁移和对抗性训练的优势,基于大量合成环境数据从单一的真实世界彩色图像中预测像素深度。他们设计了一个监督网络作为生成器网络,其中使用了带有跳跃连接的轻量级架构。网络根据高质量的合成深度训练数据对深度进行预测,并通过风格迁移问题中的策略解决领域偏见的问题。Kuang等人(2019)提出一种基于监督学习的水下全景(omni-directional)图像深度估计方法,他们通过对全景图像进行坐标变换,将其在经纬坐标下进行描述,并参考了全卷积残差网络(Laina等,2016)的结构,对其中的卷积块进行修改,将常规卷积核转换为球形卷积核,修改后的球形全卷积残差网络可以适应坐标转换后的全景图像的编码形式。此外,他们针对水下深度数据集缺乏的情况,提出使用风格迁移网络WaterGan(Li等,2018)将地面图像转换为具有水下特征的合成图像,以用于网络的训练。
基于监督学习的单目深度估计方法不断被提出,但大部分方法主要是在软件层面上对网络结构进行创新。从硬件的角度来对单目深度估计方法进行优化也是一种有效的方法,例如关注图像采集设备在图像获取过程中产生的光学偏差或是将新型图像采集设备获得的数据与深度估计任务进行结合。Chang等人(2019)受到深度光学领域研究的启发,尝试将光学原理引入单目深度估计任务,把具有编码失焦模糊的深度估计问题定义为一个光学编码器—电子解码器的系统,并通过端到端的方式进行训练。其研究表明训练过程中的反向传播操作不仅可以优化网络权重,还可以优化物理镜头的参数。他们明确表示深度光学方法可以对深度估计起到优化作用。Garg等人(2019)提出利用双像素自动对焦硬件进行单目估计深度任务。经典的立体算法和大多数基于深度学习的深度估计方法在应用于这种双像素数据时表现不佳,前者是由于对彩色图像匹配的假设太强,后者是由于没有成功利用双像素图像形成的光学知识。为此,Garg等人(2019)设计了一种新的深度估计方法,现有的单目深度估计技术使用该方法可以有效地应用于双像素数据,并且可以用于构建具有高质量深度信息的小型模型。
1.2 无监督单目深度估计网络结构
虽然基于监督学习的单目深度估计方法的结果令人惊喜,但该类方法在网络训练时所需使用的真实深度值,在实际应用中难以准确且便利地获得。于是,为了改善这一问题,不少研究者尝试使用无监督的深度学习方法来解决单目深度估计问题。该类方法的基本思想借鉴了无监督学习中的自监督策略,将深度估计问题转化为其他的视觉问题(例如图像重建问题)。这类网络通常依赖多幅具有特定联系的图像,目前已提出的方法中主要使用双目图像或是视频中的连续帧作为网络的输入。需要说明的是,虽然在训练过程中网络使用了双目图像对或连续帧等多幅图像作为输入,但在测试阶段输入仅为单幅图像即可获得预测结果,所以本文仍然将这些使用了多幅视图进行训练的网络称为单目深度估计网络。
1.2.1 基于立体视觉的方法
立体视觉是计算机视觉领域中的热门领域,其目的是从两幅或两幅以上的图像中推理出图像中每个像素点的深度信息。常规的双目立体视觉是基于视差原理,由双摄像机从不同角度同时获取周围景物的两幅数字图像,再由三角法原理进行周围景物的3维几何信息的获取与重建。研究者们将深度估计问题转化为图像重建问题,利用网络预测的双目(或多目)图像和视差图来实现无监督的单目深度估计。
Garg等人(2016) 提出了一个基于立体视觉的无监督单目深度估计网络框架,他们将单目深度估计任务转化为单目视差估计任务,使用双目图像作为训练的输入,利用双目图像和预测视差图根据双目图像重建原理对输入图像进行重建。如图20所示,该框架在训练时使用包含左视图和右视图的双目图像。首先,双目图像中的左视图I1作为输入,通过卷积神经网络来预测左视图对应的视差图d。然后,根据交叉重建原理利用预测视差图d和右视图I2使用逆向映射(inverse warp)的方式重建左视图Iw。最后,该框架使用包含光度重建损失和深度梯度损失的复合损失函数对网络权重进行约束,获得最佳的预测视差图。其中,光度重建损失计算的是重建图像与输入图像间的差异。虽然该网络预测的结果是输入图像的视差图,但根据公式D(x)=B×f/d(x),可以快速地得到对应深度图D,其中B为双目视图的基线,f为相机焦距,d为预测视差图。
图20 基于双目图像立体视觉的无监督单目深度估计网络框架(Garg等,2016)Fig.20 A framework for unsupervised monocular depth estimation networks based on stereo vision of binocular images(Garg et al., 2016)
与Garg等人(2016)仅对单向视差图(左视差图)进行预测不同,Godard等人(2017)提出的基于双目图像立体视觉的无监督单目深度估计网络同时对左右视差图进行估计。如图21所示,该框架可以通过仅使用左视图作为输入,同时预测双目图像各自对应的视差图。而在得到对应的双目视差图之后,通过使用双目视差图和原双目图像进行交叉重建,得到重建双目图像。此外, Godard等人(2017)还提出了一种后处理模块对重建的双目图像进行左右一致性检查,以此提高重建图像的质量。在他们所提出的框架中,使用了由外观匹配损失、视差平滑损失和左右视差一致性损失组成的复合损失函数来对网络进行约束。其中,左右视差一致性损失针对左右一致性检查而设置,如式(9)所示。
(9)
图21 基于双视差图估计的无监督单目深度估计网络框架(Godard等,2017)Fig.21 Unsupervised monocular depth estimation network framework based on dual disparity map estimation(Godard et al., 2017)
Luo等人(2018)提出将单目深度估计定义为一个由高质量视图合成网络自动生成正确视图的立体匹配任务,从而将单目深度估计问题转换为两个子问题:图像合成与立体匹配(如图22所示)。上述的两个子问题可以不使用真实深度数据来进行训练,并且组合后的网络可以进行端到端的训练,这为无监督学习中基于立体视觉的方法提供了一个新思路。
图22 结合双目匹配网络的单目深度估计网络框架 (Luo等,2018)Fig.22 Monocular depth estimation network framework combined with stereo matching network(Luo et al., 2018)
Watson等人(2019)提出在基于双目图像立体视觉的无监督单目深度估计网络框架中引入深度提示来缓解重建过程中模糊重投影的影响。深度提示是从现成的简单立体视觉算法中获得的补充深度建议。这些提示增强了现有的光度损失函数,并可用于指导网络学习更好的权重。实验表明使用深度提示可以在训练当前较领先的无监督模型时起到实质性的促进作用。
目前,基于立体视觉的无监督单目深度估计方法主要使用双目图像作为输入与标签来训练网络以预测逆深度(视差)。然而,这些方法并未对遮挡、左图像边界未知等双目视觉中常见的问题进行处理,导致预测结果在一定程度上存在偏差。Poggi等人(2018)提出将基于双目图像立体视觉的无监督单目深度估计方法转移到三目环境下进行训练。他们的网络将中视图作为输入,训练卷积神经网络来推断左右图像视差以利用左右视图重建对应的中视图。该策略可以获得不受常见立体伪影影响的深度图。此外,由于三目数据集很少可用, Poggi等人(2018)还提出了一种新的交叉训练过程,使现有的双目数据集可以在三目假设下进行使用。
1.2.2 基于运动恢复结构(SfM)的方法
运动恢复结构(structure from motion,SfM)是一种能够从多幅图像或视频序列中自动地恢复出相机的参数以及场景3维结构的技术。基于SfM的无监督方法与基于立体视觉的无监督方法有着类似的思想,也是将深度估计问题转换为图像重建问题,但在细节上有许多不同之处。首先,基于SfM的无监督方法所处理的图像重建问题一般是连续帧之间的重建问题,即利用当前帧的图像去重建前一帧或后一帧的图像,因此这类方法通常使用单目图像序列——视频作为训练数据。其次,此类方法需要在训练过程中引入用于估计相机位姿的模块,通常选择使用基于深度学习的位姿估计网络。
Zhou等人(2017)提出一种基于SfM的无监督单目深度估计网络框架。该框架由一个预测单目图像深度的深度估计网络和一个预测相机姿态变化的位姿估计网络组成。如图23所示,输入数据为多幅连续的视频帧图像,通过深度估计网络对目标视图It进行深度估计,同时使用姿态估计网络对目标视图It和源视图It-1与It+1间的相机姿态变化进行估计。然后,利用位姿估计结果与深度估计结果,通过扭曲变换原理进行图像重建。虽然在训练过程中该框架将对深度估计网络和姿态估计网络进行联合训练,但在测试时两个网络可以单独使用。其中,深度估计网络的结构参考了DispNet (Mayer等,2016);姿态估计网络则借鉴了PoseNet (Kendall等,2015),使用连续图像序列作为训练数据,对6自由度的相机姿态进行估计。此外,该框架也提出了一种适用于基于图像序列的无监督学习方法的图像重建损失函数(Lvs),将〈I1,…,IN〉表示为训练图像序列,其中一帧为目标视图It,其余为源视图Is(1≤s≤N,s≠t),该损失通过将由源视图重建出的目标视图和真实的目标视图进行比较来对网络进行约束。除重建损失外,最终的复合损失函数还包括了深度平滑度损失和正则化损失。具体计算式为
(10)
图23 基于SfM的无监督单目深度估计网络框架 (Zhou等,2017)Fig.23 A framework for unsupervised monocular depth estimation networks based on SfM (Zhou et al., 2017)
Godard等人(2019)在提出的基于双目图像立体视觉的无监督网络框架(Godard等,2017)的基础上,参考基于SfM的无监督网络框架进行了修改和创新。在原框架中添加了姿态估计网络以进行相机的位姿估计,并将原视差估计网络修改为直接的深度估计。同时,他们还提出了一些优化方法,包括:1)采用一种简单的自动遮罩方法来处理训练样本中不能反映相机相对运动的像素;2)提出一种新的光度重建损失,解决训练时前后帧之间像素被遮挡的问题;3)提出一种多尺度采样方法,通过将不同尺度的预测结果上采样至输入分辨率后进行图像重建,并将重建结果下采样至原预测尺度来计算光度重建误差,有效促使不同尺度的预测结果向同一目标结果趋近。
Guizilini等人(2020)提出一种新的基于SfM的无监督单目深度估计网络框架——PackNet-SFM。如图24所示,在该框架中,使用PackNet进行深度估计,并提出了一种新的损失函数项——速度监督损失,如式(11)所示。该损失可以在条件允许的情况下(例如,从汽车、机器人和手机的拍摄图像中)利用相机的移动速度来解决单目视觉中固有的比例模糊问题。PackNet是一种新的卷积神经网络结构,它主要由基于3D卷积设计的打包块(packing block)和解包块(unpacking block)构成,这两个模块会通过压缩和解压缩的方式对高分辨率视觉信息进行学习,以获得更为细节的预测结果。具体计算为
(11)
Spencer等人(2020)提出了一种基于扭曲特征一致性且具有同时学习跨域稠密特征表示能力的无监督单目深度估计网络框架——DeFeat-Net(depth & feature network)。DeFeat-Net的主要目标是通过同时学习单目深度特征和密集特征,在恶劣天气环境下也能提供可靠的深度估计结果。如图25所示,该框架包含3个子网络:视差估计网络(DispNet)、位姿估计网络(PoseNet)和特征表示网络(FeatNet)。视差估计网络和位姿估计网络与大多数基于图像序列的无监督深度估计网络类似,其中由位姿估计网络预测的相机位姿Pt+k将在关联模块(correspondence module)中和深度估计的预测结果Dt产生目标视图It与源视图It+k之间的像素对应关系Ct+k;而特征表示网络(FeatNet)将生成目标视图It与源视图It+k的密集特征图Ft和Ft+k。
图24 结合PackNet的无监督单目深度估计网络框架 (Guizilini等,2020)Fig.24 Unsupervised monocular depth estimation network framework combined with PackNet(Guizilini et al., 2020)
图25 结合特征表示网络的无监督单目深度估计网络框架(Spencer等,2020)Fig.25 Unsupervised monocular depth estimation network framework combined with FeatNet (Spencer et al., 2020)
在该框架中,除了使用无监督单目深度估计网络中常见的深度平滑损失和光度扭曲损失以外,他们还提出在损失函数中添加两种与密集特征图有关的损失——特征扭曲损失和对比度损失。其中,特征扭曲损失与光度扭曲损失类似,但需要将光度替换为特征,分别如式(12)和式(13)所示。而对比度损失选用了公认的像素级对比度损失(Choy等,2016;Schönberger等,2018;Spencer等,2019),这种损失有助于对密集特征空间的学习,使得无论天气和季节外观如何变化,特征空间都可以进行匹配。
Lp=ψ(It,It+k→t)
(12)
LF=ψ(Ft,Ft+k→t)
(13)
式中,It+k→t和Ft+k→t是使用可微分双线性采样器(Heise等,2013)中对应关系生成的光度和特征的映射。扭曲损失ψ是结构相似度(structural similarity index measure, SSIM) (Wang等,2004)和L1损失的加权组合,即
(14)
式中,a是权重系数。
Luo等人(2020)提出了一种新的基于SfM的无监督单目深度估计网络框架。如图26所示,图中f为i帧图像上的点在j帧图像上的2维坐标,C为对应相机坐标系下x点在世界坐标系下的位置,z为世界坐标系下的点对应在z轴的投影位置,P为i帧图像上x点的世界坐标系的位置在j帧图像上的投影。该框架将传统方法与深度学习网络相结合,在训练时先在常见的结合位姿估计网络的无监督网络框架中训练深度估计模型,再使用传统方法对视频中的像素建立几何约束,并使用这些几何约束进行图像重建,对预训练的单目深度估计网络进行参数调整。通过传统方法与深度学习方法的结合,网络在学习生成深度细节的同时,也在学习满足特定场景的几何结构,这使得网络输出的预测结果是稠密且详细的,具有尖锐的对象边界,并在几何上保持一致。
图26 结合传统位姿估计的无监督单目深度估计网络框架(Luo等,2020)Fig.26 Unsupervised monocular depth estimation network framework combined with conventional pose estimation(Luo et al., 2020)
1.2.3 结合对抗性网络的方法
生成对抗网络(generative adversarial nets,GAN)(Goodfellow等,2014)以其强大的性能为许多图像学习任务提供了便利,其中就包括了深度估计。
Aleotti等人(2019)提出了一种结合GAN的无监督单目深度估计网络框架。如图27所示,该框架最大的特点在于引入了对抗性组件——鉴别器网络。他们将一种基于立体视觉的无监督单目深度估计网络框架作为生成器,并通过使用鉴别器网络对生成器生成的重建图像的真实性进行鉴别,鉴别器网络可以对生成器网络施加更严格的约束。由于添加了鉴别器网络,所以在该框架的损失函数中也加入了鉴别损失,它使得鉴别器的结果可以反馈到生成器网络的训练过程中。
图27 结合生成对抗网络的无监督单目深度估计网络框架 (Aleotti等,2019)Fig.27 Unsupervised monocular depth estimation network framework combined with GAN (Aleotti et al., 2019)
Kumar等人(2018)也提出了一种结合生成对抗网络GAN的单目深度估计网络框架。与Aleotti等人(2019)不同的是,他们的生成器使用了一种基于SfM的无监督深度估计网络,包含深度估计网络和姿态估计网络。在该框架中,生成器的输入数据为由连续3帧图像构成的三元组,通过两个网络输出的预测深度和预测位姿进行图像重建,而鉴别器网络对重建图像和原图像进行鉴别,加强生成器网络的约束。该框架的损失函数采用了由图像一致性损失、鉴别损失和深度损失等3种损失组成的复合损失函数。
针对水下单目深度估计,Gupta和Mitra(2019)提出一种结合循环GAN (cycle-GAN)(Zhu等,2017)的无监督网络框架。由于目前缺乏大规模标准化的水下深度数据集,并且水下真实深度图的获取十分困难,因此他们选择使用水上有雾图像作为深度估计的线索,以无监督学习的方式来处理该问题。该方法在不成对的水上有雾RGB-D图像和任意的水下图像间建立关系映射。如图28所示,该框架包含了两个基于自动编码器架构的GAN网络,并通过循环连接的方式组成了循环GAN网络结构。
图28 结合循环GAN的水下单目深度估计网络框架(Gupta和Mitra,2019)Fig.28 Underwater monocular depth estimation network framework combined with Cycle-GAN (Gupta和Mitra, 2019)
1.2.4 基于序数关系的方法
与基于序数关系的监督学习方法中的第2类方法类似,在无监督学习中进行离散视差值的估计也是一种可取的方式。
Johnston和Carneiro(2020)将无监督单目深度估计网络与自注意力机制(self-attention)和离散视差量(discrete disparity volume,DDV)进行结合。如图29所示,在他们提出的网络框架中包含了深度估计网络(图29(a))和位姿估计网络(图29(b)),其中自注意力机制和离散视差量DDV均在深度估计网络中使用。与传统的局部卷积操作相比,自注意力机制可以搜索图像中的不连续区域,并将这些区域作为上下文,以此估计不连续区域的相似深度,这解决了传统局部卷积操作无法进行全局上下文搜索的问题。而离散视差量DDV是离散视差预测(discrete disparity prediction)的结果,这与结合序数关系的监督单目深度估计网络中所提出的离散深度值是相同的概念,鉴于离散深度值取得了比常规回归预测更鲁棒和更锐利的深度估计结果(Kendall等,2017;Liu等,2019),Johnston和Carneiro(2020)认为离散化操作在无监督网络中也同样有效。除了上述两个创新点以外,该框架还提出了一种新的多尺度解码器结构来对低分辨率的视差结果进行优化,该解码器的构造如图29(c)所示,其可以在多个尺度上进行离散视差量DDV的预测。
Gonzalez和Kim(2020)提出了一种基于指数视差概率体积的无监督单目深度估计网络。其中,视差概率体积是一种离散化概念,它代表了在每一个像素上每一种可能的视差值的概率集合,并且他们指出视差概率体积在指数域上具有比线性域更好的效果。在该网络结构中,他们使用卷积神经网路估计指数域上的视差概率体积,并设计了一种新的镜像遮挡模块(mirrored occlusion module,MOM)来获得已知相机位姿情况下两幅图像间的真实遮挡图。同时,他们还提出了一种新的训练策略:先对网络进行基于图像重建的训练,再对网络进行基于深度估计的训练。在第2步的训练中,他们通过使用MOM来消除第1步训练过程中由重建右视图遮挡区域所产生的误差,以及为在图像重建过程中被忽略的左视图遮挡区域提供训练信号。在损失函数部分中,他们为两个阶段设立了两种损失函数:第1阶段,他们使用L1损失和感知损失(perceptual loss)(Johnson等,2016)结合的复合损失函数来对网络进行约束;第2阶段,他们使用遮挡自由重建损失(occlusion-free reconstruction loss)、镜像损失(mirror loss)和保持边缘平滑度损失(edge-preserving smoothness loss)结合的复合损失函数对网络进行更加严格的约束。
图29 结合自注意力机制和离散视差量的无监督网络框架及多尺度解码器的结构(Johnston和Carneiro,2020)Fig.29 Unsupervised network framework combining with self-attentive mechanism and discrete disparity and structure of multi-scale decoder (Johnston and Carneiro, 2020)((a) depth estimation network;(b) pose estimation network; (c) multi-scale decoder structure)
Bello和Kim (2021)又提出了一种基于神经位置编码(neural positional encoding)和抠图拉普拉斯提取(distilled matting Laplacian)方法(Levin等,2006)的无监督单目深度估计网络框架。该框架主要分成两个部分:深度估计网络PLADE-Net(pixel-level accurate depth estimation network)和抠图拉普拉斯提取部分。其中,在PLADE-Net中,通过加入神经位置编码帮助网络判断特定位置的图像属性,以此获得更加准确的深度预测结果。在进行网络训练时,他们延续了前一年工作(Gonzalez和Kim,2020)中的思路,把训练过程分成两个阶段来进行:第1阶段,训练卷积神经网络学习输入图像和视差图之间的映射;第2阶段,加入抠图拉普拉斯提取部分的相关操作,通过将提取得到的抠图视差(matted disparity)和原始的预测视差(initial estimate)使用5×5大小的窗口进行平均缩放,以获得细化后的视差图(scaled matted disparity),并对其进行光度检查和左右一致性检查来获得掩膜图(distillation mask)。在损失函数部分中,他们也为两个阶段设计了两个不同的损失函数:第1阶段使用了L1损失、感知损失和视差平滑损失来对网络进行约束;第2阶段在前一阶段损失函数的基础上添加了镜像损失(mirror loss)、深度相关L1损失(deep corr-L1 loss)和提取的抠图拉普拉斯损失(distilled matting Laplacian loss),促使网络在预测物体边界和高度均匀区域时可以获得更一致的深度值。
1.2.5 结合不确定性的方法
Poggi等人(2020)首次探索了如何评估无监督单目深度估计任务的不确定性,以及不确定性如何影响深度估计精度的问题,并提出了一种专为无监督方法设计的不确定性建模模式。他们使用 11种不确定性评估策略进行比较验证,其中包含了基于图像翻转的方法、基于经验的方法、基于预测的方法和基于贝叶斯的方法。
基于预测的方法主要是通过学习预测模型来编码不确定性。这一类的方法也共3种:Repr(learned reprojection) (Chen等,2020)、Log(log-likelihood maximization) (Nix和Weigend,1994)和Self(self-teaching)。基于贝叶斯的方法(Kendall和Gal,2017)主要通过边缘化所有可能的网络权重来计算不确定性。根据Neal(1996)提出的理论,通过对各模型进行采样操作,并对均值和方差进行建模,可以获得不确定性的近似解,而通过结合基于经验的方法和基于预测的方法,可以直接实现这种近似(Ilg等,2018;Kendall等,2017)。于是,Poggi等人(2020)有目的地选择经验和预测两类方法中较好的策略进行结合,得到以下4种组合策略:Boot+Log、Boot+Self、Snap+Log和Snap+Self。
其中,Self方法是Poggi等人(2020)提出的一种新的方法,参考了应用于单目深度估计的师生(teacher-student)框架(Pilzer等,2019;Zheng等,2019)。Self方法中,老师网络T与学生网络S具有相同的体系结构,图30所示为Self的流程示意图,网络T使用自监督学习进行训练,通过训练使网络S具有与网络T相同的分布参数,即节点权重相似,以进行不确定性估计。该方法在建模不确定性时试图分离深度与位姿,需要从学习后的预测模型中直接获取监督信息。
图30 Self-teaching网络框架(Poggi等,2020)Fig.30 Self-teaching network framework(Poggi et al., 2020)
随着关于深度不确定性的讨论被提出,研究者们也开始尝试运用不确定性来优化预测结果。Li等人(2021)提出了一种基于无监督学习网络的视觉里程计框架。该框架通过光流网络和深度估计网络分别预测相机的位姿变换和场景的深度信息,并在两个网络中都加入了不确定性的估计,利用光流网络中的光度不确定性图,使用可微的高斯—牛顿层对预测位姿与深度进行进一步优化。此外,他们还使用贝叶斯推理将光流网络获得的位姿信息用于场景深度图的构建,并将其与深度估计网络的预测深度和深度不确定性进行结合,优化预测的深度结果。
1.3 小结
在前文的叙述中,本文仅根据各论文中最重要的创新点进行分类,但目前提出的单目深度估计方法通常包含了不止一个创新点,包括网络结构、深度表达(序数关系或连续值)等多个方面的创新,各论文中也通过消融实验验证了各创新点的作用。因此,本文通过表格的形式对监督学习和无监督学习各论文的创新点进行全面展示,监督学习方法如表1所示,无监督方法如表2所示。
2 数据集与算法性能比较
在深度学习中,数据集的使用决定着模型的好坏。深度估计问题虽然已经存在了很长时间,但是针对该问题的数据集依然不多。在本节中,首先介绍单目深度估计任务中常用的数据集,以及在实验中用于比较深度估计结果优劣的常见评估指标。然后以定量评估的结果对各算法的性能进行比较分析,并对部分无监督算法的结果进行了定性评价。
2.1 数据集
目前,在单目深度估计任务中可用的数据集有NYU Depth V2(Silberman等,2012)、KITTI(Karlsruhe Institute of Technology and Toyota Technological Institute at Chicago)(Geiger等,2012)和Make3D(Saxena等,2005)等。这些数据集中包含了与彩色图像对应的深度信息,其中NYU Depth V2主要是室内场景,KITTI和Make3D主要是室外场景。此外,常用于图像分割的Cityscapes数据集(Cordts等,2016)由于包含视差图像,也逐渐在无监督学习方法的训练与评估中得到使用,但目前主要作为KITTI数据集的一种辅助,两种数据集通过联合训练的形式可以有效提升网络的预测精度。
NYU Depth V2数据集由纽约大学的Silberman等人(2012)构建,示例图如图31所示。他们在464个不同室内场景中利用RGB相机和微软的Kinect深度相机,同时采集了对应的彩色图像和深度图像,共收集了407 K帧RGB-D图像对。由于深度相机采集的原始深度图中存在缺失部分或是噪点,作者从数据集中选取了1 449帧图像,利用着色算法对深度图进行填充获得稠密深度图像,同时添加了人工标注的语义信息。其中,795帧为训练样本,654帧为测试样本。
表1 各监督学习方法特点Table 1 Innovation points of the supervised learning methods
表2 各无监督学习方法特点Table 2 Innovation points of the unsupervised learning methods
图31 NYU Depth V2数据集示例Fig.31 Examples of NYU Depth V2 dataset
KITTI数据集是自动驾驶领域常用的数据集,由于其包含深度数据标签,因此也常用在深度估计领域中,示例图如图32所示。KITTI数据集由Geiger等人(2012)构建,他们基于自动驾驶平台Annieway进行开发,通过一辆装有2台彩色摄像机、2台灰度摄像机、1台激光扫描仪和GPS定位系统的汽车进行数据采集,场景包含市区、野外和高速公路。数据集包含了93 K帧RGB-D图像对。由于KITTI数据集中还包含了双目图像,并提供了相关的相机参数,所以也能在基于无监督学习的深度估计方法中作为训练数据来使用。
Make3D数据集由斯坦福大学的Saxena等人(2005)提供,该数据集共包含534帧RGB-D图像对,其中400帧为训练样本,134帧为测试样本,示例图如图33所示。该数据集使用激光扫描仪来获取场景的深度信息,所选的室外场景是白天的城市和自然风光。
图32 KITTI数据集示例Fig.32 Examples of KITTI dataset
图33 Make3D数据集示例Fig.33 Examples of Make3D dataset
Cityscapes数据集(Cordts等,2016) 由德国的DAIMLER公司、马克斯普朗克信息学研究所和达姆施塔特工业大学视觉推理组共同推出与维护。这是一款提供给无人驾驶技术进行实验的图像分割数据集,主要用于评估视觉算法在城市环境下语义理解方面的性能。该数据集包含了50个城市不同季节、不同场景和不同街景的图像信息,提供了5 000幅精细标注的图像、20 000幅粗略标注的图像,共计30类的标注物体。虽然该数据集主要用于图像分割领域,但随着视差图像的提供,该数据集也在深度估计领域中得到使用,示例如图34。
图34 CityScapes数据集示例Fig.34 Examples of CityScapes dataset
2.2 评估度量指标
在单目深度估计方法的评估实验中,常用的度量标准包括绝对相对误差(absolute relative difference, Abs Rel),平方相对误差(squared relative difference, Squ Rel),线性均方根误差(root mean square error, RMSE),指数型均方根误差(RMSE log),平均log10误差及精确度(accuracy)。它们的计算方式如表3所示。
2.3 算法性能比较与分析
2.3.1 定量比较与分析
为了对近年来提出的基于深度学习的单目深度估计方法进行直观讨论,根据学习类型使用表格展示各单目深度估计方法的实验结果。由于半监督学习的文献并不丰富,本文将这部分论文的实验结果放在无监督学习的实验结果中进行展示,并在论文的年份后添加*进行标注。同时,考虑到评价各类方法的优劣需要在相同数据集条件下进行比较才有意义,因此在根据学习类型分类的基础上,本文根据数据集的不同按时间顺序展示各种方法在同一数据集下的结果对比。
表3 场景深度估计方法性能的常用度量指标Table 3 Common metrics for evaluating the performance of scene depth estimation methods
在此,先行对各表中出现的一些符号进行解释。在无监督学习网络的训练数据中,“M”表示使用连续图像序列作为训练数据,“S”表示使用立体图像对作为训练数据,“CS+KITTI”表示同时使用KITTI数据集和CityScapes数据集作为训练数据。用于比较的6种评估指标为:绝对相对误差(Abs),平方相对误差(Squ),线性均方根误差(RMSE),指数型均方根误差(RMSE-log),平均log10误差(M-log10)和精确度(δ表示精度阈值)。
1)监督学习。如表4所示,根据定量评估指标的结果,监督学习中各创新点均有方法取得了出色的结果。基于序数关系设计的网络,通过将深度估计问题假设为一个序数回归问题,有效缓解了深度估计过程边界模糊的情况,因此Fu等人(2018)以及Lee和Kim(2019)的网络均取得了较优秀的综合表现。语义信息作为一种与深度信息具有密切联系的数据,在神经网络中添加语义信息或结合语义估计任务可以有效地丰富深度估计过程中的特征信息,Jiao等人(2018)基于语义信息设计的网络通过信息共享策略有效改善了深度估计中深度分布不均匀的问题,在NYU数据集上表现出了较优秀的综合表现。而Wang等人(2020)基于语义分治策略设计的网络也有较好的综合表现。Chang等人(2019)的网络从硬件的角度进行考虑,通过对光学设备的参数进行精确估计,为深度估计过程添加物理模型的约束,促使预测结果更为合理准确,他们的网络在NYU数据集上取得了最优秀的综合表现。Song和Kim(2019)的方法采用的引导网络策略也有较好的表现,这说明提前使用相关数据进行预训练来获得合理的网络参数是一种有效的操作。
2)无监督学习。如表5所示,无监督学习方法总体呈现最新方法深度估计精度高于相对早期的方法。在基于无监督学习的方法中,Gonzalez和Kim(2020)以及Bello和Kim(2021)基于序数关系设计的网络在KITTI数据集、由KITTI数据集与Cityscapes数据集组成的联合数据集和Make3D数据集下均取得了最优和次优的综合表现。Gonzalez和Kim(2020)的网络在基于序数关系的基础上使用了一个镜像模块来处理重建过程中由遮挡产生的误差,有效地提高了预测结果。Bello和Kim(2021)在基于序数关系的基础上提出使用抠图拉普拉斯提取(distilled matting Laplacian)方法获得的抠图视差(matted disparity)与网络预测结果进行融合,提高在物体边缘处的预测结果。此外,Li等人(2021)提出的无监督学习方法在精确度上也十分具有竞争力,他们的网络通过结合不确定性估计结果来对深度估计结果进行优化,这不仅提高了预测结果的精确度,也为无监督学习所得到的预测深度提供了是否可信的依据。此外,值得注意的是,近几年提出的无监督网络在各项指标上已能媲美监督网络所取得的结果,这种无需真实深度标签的方法非常适合在实际应用中的使用。
表4 基于监督学习的深度估计方法的定量评估Table 4 Quantitative evaluation of supervised learning-based depth estimation methods
表5 基于无监督学习的深度估计方法的定量评估Table 5 Quantitative evaluation of unsupervised learning-based depth estimation methods
2.3.2 部分无监督方法的定性比较与分析
定量评估的结果通常是对预测结果的一种全局评价,而单目深度估计作为一个与实际应用密切相关的研究方向,局部细节的优劣也是十分重要的评价标准。考虑到无监督学习方法不需要使用真实深度作为标签,具有更广泛的应用前景,本文重点对无监督方法的结果进行定性分析。
受实验条件所限,本文从提供开源代码的8种无监督学习方法中选择了5种不同年份的方法进行对比。如图35所示,本文提供了5种深度学习方法在KITTI数据集4个场景中的可视化结果,需要说明的是,Kuznietsov等人(2017)的方法虽然是半监督学习方法,但其网络中使用了与基于立体视觉的无监督方法类似的重建原理,因此也将其与其他无监督学习方法一同进行比较。
根据对深度估计图的观察,Zhou等人(2017)的预测结果(图35(c))最不令人满意,其深度图只具有模糊的全局尺度,这与客观评价的结果(表5)相一致。Godard等人(2019)的预测结果具有最出色的局部细节(图35(f))。虽然Spencer等人(2020)的结果(图35(g))在局部区域上具有比Godard等人(2019)的结果更合理的深度分布,但在一些细节部分又存在更大的误差,这也导致其所对应的方法在定量评估中的结果劣于Godard等人(2019)的结果。然而,Spencer等人(2020)对应的网络本身便是针对提高泛化性进行设计,其在局部区域上对深度分布的优化已经体现了这一设计的意义。
Kuznietsov等人(2017)的半监督方法与Godard等人(2017)的无监督方法都是基于立体视觉进行图像重建来计算光度误差。从主观感受上,Godard等人(2017)的结果(图35(e))比Kuznietsov等人(2017)的结果(图35(d))有着更优秀的表现,但Kuznietsov等人(2017)的半监督方法由于额外使用了真实深度标签来对网络进行约束,在局部细节上,特别是中远距离目标的深度区分性更好。值得注意的是,这两种方法客观评价的结果与主观感受并不一致,这是由于在进行客观评价时使用的真实深度值由稀疏的点云数据获得,而客观评价的结果仅在有效像素上进行计算,这也导致局部细节会对评估结果有着较大的影响。
图35 无监督学习方法的定性评估Fig.35 Qualitative evaluation of unsupervised learning methods((a) color images; (b) ground truth; (c)Zhou et al.(2017) ; (d) Kuznietsov et al.(2017);(e) Godard et al.(2017); (f) Godard et al.(2019); (g) Spencer et al.(2020))
本文也对上述各方法对应的模型进行了参数量和大小的统计,如表6所示。可以看到主观效果较好的Godard等人(2019)和Spencer等人(2020)的网络参数量远少于之前的方法,这意味在训练网络时所需的时间大幅度减少了,并且训练时间的减少也从侧面加快了深度学习中调整参数所用的时间。模型大小与未来的实际应用密切相关,而统计的模型大小均在可接受的范围内,这说明基于无监督学习的单目深度估计技术可搭载在目前大多数的设备上。
表6 网络参数量对比Table 6 Comparison of network parameters
综合来看,近几年的无监督学习方法与早期的无监督学习方法相比在局部细节和网络参数量上均有了很大的提升,并且研究者们也开始尝试提高预测结果在局部区域深度分布的合理性,以提高深度估计技术的泛化性能。
3 思考与展望
从2014年Eigen等人(2014)首次提出基于深度学习的单目深度估计网络开始,在不足十年的时间内,该领域的研究工作已经取得巨大进展,但在很多方面仍然面临挑战。下面分别从深度估计精度、泛化性能和应用场景等角度对当前研究的成果、问题及可能的解决方案进行讨论。
1)深度估计精度。根据2.3节的定量评估结果可以看出,目前基于深度学习的单目深度估计技术在精确度上已均能取得0.8 0.9的结果,这与Eigen等人(2014)首次提出的基于深度学习的方法相比提升了近50%。
仅从定量评估结果来看,基于深度学习的单目深度估计技术的发展是令人欣喜的。但依然存在一些与精确度相关的问题值得关注,其中最重要的问题就是预测结果的分辨率。为了防止网络所需的内存空间过于庞大,输入图像在输入网络前通常需要进行压缩,以合适大小输入网络。在早期的发展中(Eigen等,2014;Liu等,2015;Li等,2015),研究者受限于设备的计算能力,输出结果的分辨率一般只有输入分辨率的1/4 1/2。随着近几年网络结构的优化和硬件设备的发展,一些算法(Laina等,2016;Godard等,2017,2019)在输出分辨率上已能达到与输入分辨率相同的水平。虽然输出分辨率已能与输入分辨率相同,但由于输入分辨率本身便是输入的原图像压缩之后的结果,并且通常该压缩比率为1/3 1/4,如KITTI数据集的图像分辨率为1 242×375 像素,而网络的输入分辨率通常为512×256 像素。因此当预测结果还原至原分辨率后,虽然在定量分析中的结果十分出色,但在定性评估中的一些细节部分难以令人满意。并且,网络的输入分辨率与训练时所需的内存空间有着直接的关系,以目前实验室的硬件条件大幅提高输入分辨率是完全可行的,但与此同时训练网络所需的时间也将大幅增加,这通常是研究者们难以接受的一种情况。综上所述,在控制网络所需的空间成本和训练时间成本的基础上,如何有效提高预测结果的分辨率将是未来研究的一个重点。
从网络结构和损失函数的设计上来看,深度学习作为一种黑盒模式,一个强有力的模型结构和一个有效的损失函数,可以将一个复杂的问题轻松解决。随着深度学习技术的高速发展,新的网络结构不断提出,将其有效地应用于深度估计任务一直是研究者们的主要工作之一;损失函数约束着网络训练的结果,多种损失结合的复合损失函数能使网络更好地收敛,这一情况在监督学习网络与无监督学习网络中均已体现,因此如何设计与网络匹配的损失函数也将是未来研究的主要工作之一。
此外,虽然无监督单目深度估计网络中与不确定性的相关研究才刚刚起步,但本文认为在预测精度已经有了巨大提升的今天,这类与实际使用相关的方法将是未来研究的一个重要方向。
2)泛化性。随着深度估计结果越来越精确,研究者也将目光投向了如何在保证精确度的前提下,改善因神经网络本身所产生的一些问题。目前的单目深度估计方法所针对的一般是光照条件良好的情况,在恶劣环境条件下使用单目深度估计技术通常难以达到理想效果,并且由于目前基于深度学习的方法普遍依赖于训练数据集的数量与种类,当处于未知环境时,未知的场景特征与不断变化的场景尺度使模型难以实现合理的深度估计,这些问题极大地束缚了单目深度估计技术在工业应用中的使用。
对此,研究者们进行了许多尝试,通过在网络结构中加入特征表示网络来加强网络对于恶劣天气环境的泛化性能(Spencer等,2020)或是利用语义分治策略使网络可以对未知环境进行深度估计(Wang等,2020)。但这些研究仍然不足以使单目深度估计技术真正地在工业应用中进行使用,因此如何提高单目深度估计技术在未知环境或恶劣环境中的泛化性能将是未来所面临的一个重要挑战。
研究者们也尝试从与模型直接相关的训练数据集出发,通过使用合成深度数据集来提高网络模型对未知环境的泛化性(Atapour-Abarghouei和Breckon,2018;Kuang等,2019)。特别是Li等人(2018)提出的MegaDepth数据集,他们使用多视角的互联网照片集合,通过结构恢复运动SfM和多视角立体MVS(multi-view stereo)方法生成大型深度数据集。他们通过实验证明在MegaDepth上训练的模型不仅对各个公开数据集具有较好的泛化能力,并且对未知环境也能保持同样的泛化性能。鉴于深度学习的方法以数据驱动为主,制作一个优秀的深度数据集也将是未来提高单目深度估计技术泛化性能的一种途径。
3)应用场景。虽然在空气介质下的深度估计问题与深度学习方法进行了广泛的结合,但水下环境的深度估计问题依然主要基于传统方法进行解决。随着基于深度学习的地面单目深度估计技术高速发展,研究人员也将目光投向了水下环境中,但深度学习方法需要足够数量的数据来支撑网络的训练,而水下环境中包含深度信息的数据集极度缺乏。
在空气介质中可高效获得深度信息的主动深度传感方式在水下环境中难以应用,并且水下环境中存在严重的退化现象,基于被动预测传感的方式需要极为庞大的工作量才能得到对应的深度信息。目前,虽然存在带有深度信息的水下数据集,但数据集的容量并不大,难以满足深度学习网络训练的需要。针对这个问题,使用迁移学习进行模型的调整、使用风格迁移网络为地面图像添加水下图像的特征(Kuang等,2019)或使用Cycle-GAN直接建立地面有雾图像与水下图像间的映射(Gupta和Mitra,2019)等不同的方法与数据生成策略相继提出,但目前尚未有一个被广泛认可的策略。如何获得有效且具有足够数量的水下深度训练数据是目前基于深度学习的水下深度估计技术研究最需要解决的问题之一。同时,与地面深度估计不同,目前水下图像的深度信息主要应用于图像增强或恢复领域,通常利用估计得到的深度信息进行相关问题的处理,使用相关问题的评估指标来对深度估计的结果进行定量评估,而直接与深度信息相关的定量评估指标未得到广泛使用。是否可以确定一系列指标来对估计结果进行评估,本文认为这将对日后的研究产生至关重要的影响。
4 结 语
本文主要阐述了深度估计问题的研究背景和意义,对国内外研究现状进行了整理和总结。以是否使用真实深度值作为依据,本文对目前基于深度学习的单目深度估计方法中基于监督学习和无监督学习的方法进行分类综述,并介绍了基于半监督学习的研究情况。除此以外,本文还对在单目深度估计中常用的数据集和评估标准进行了综述,讨论了目前基于深度学习的单目深度估计技术在精确度、泛化性和应用场景上的现状及面临的挑战。
根据综述中的方法分析,提出了一些在基于深度学习的单目深度估计方面未来可研究的方向。包括:低复杂度高效网络研究、高空间分辨率的深度图估计、利用多种信息的复合型损失函数设计、无监督深度估计网络不确定性研究、面向恶劣或未知环境的深度估计技术研究。区别于空气中的应用,单目深度估计技术在水下应用场景面临更大的困难,主要原因是难以获取精准参考深度,且目前针对水下环境深度估计的评价指标没有统一的标准。因此,建立水下环境中的深度数据集及定量评估指标是迫切需要解决的问题。