目录
基本情况
摘要
1 介绍
2 相关工作
有监督的方法
无监督方法
3 方法
A.无监督网络架构
DenseDepthNet
PoseNet
B. 损失函数
1)成对对应像素
2)深度一致性损失 Depth Consistency Loss
3)颜色对应损失
4)深度平滑损失
5)总损失
4 试验
基本情况- 出处:Zhang Y, Xu S, Wu B, et al. Unsupervised Multi-View Constrained Convolutional Network for Accurate Depth Estimation [J]. IEEE Transactions on Image Processing, 2020, 29: 7019-7031.
- School of Artificial Intelligence, University of Chinese Academy of Sciences and National Laboratory of Pattern Recognition, Institute of Automation, Chinese Academy of Sciences.
- 开源代码:https://pan.cstcloud.cn/s/Lw2uZgdRno
从图像进行准确的深度估计是计算机视觉中的一个基本问题。在本文中,我们提出了一种基于无监督学习的方法来预测多幅图像的高质量深度图。为此任务设计了一种新颖的多视图约束DenseDepthNet。我们的DenseDepthNet可以有效利用输入图像的低级和高级功能,并产生引人入胜的结果,尤其是在锐利细节方面。我们采用公共数据集KITTI和Cityscapes以端对端无监督的方式进行训练。基于多视角几何约束的新颖深度一致性损失,也被应用于成对图像中的对应点,这有助于显着提高预测深度图的质量。我们对DenseDepthNet和深度一致性损失函数进行综合评估。实验证明,我们的方法优于最新的无监督方法,并能与监督方法产生可比的结果。
关键词:无监督学习,DenseDepthNet,多视图几何约束,深度一致性
1 介绍深度估计是视觉感知和3D场景理解中的一个长期挑战性问题,同时它也是众多计算机视觉应用程序的基础,包括自动驾驶汽车,机器人导航,虚拟现实等。
人们已经为这个问题付出了很多努力。传统方法[2],[3],[4],[5]试图通过手工特征和精心调整的参数来预测深度图。受手工特征功能的限制,这些工作很难为复杂场景产生准确而有效的结果。
最近,深度神经网络在计算机视觉的传统问题(例如图像分类,分割和目标检测)中取得了巨大的成功。在深度估计问题中也已采用它们,例如[6],[7],[8],[9]将深度预测视为监督回归任务。这些监督学习方法通常需要高质量的大规模数据集以及相应的地面真相深度注释。然而,由于需要具有长捕获时间的特殊设备(激光,深度相机)来收集深度信息,因此获得这样的注释是昂贵的。
为了突破该限制,一些方法[10],[11],[12],[13],[14]尝试使用无监督框架,该框架不需要任何真实的标签。这些工作的关键思想是利用输入图像(立体或多视图)之间的颜色对应关系来构建损失函数,以训练网络。这些方法没有标记的数据集,并显着降低了收集数据的成本,但是,它们的深度估计质量不如最新的监督方法。
由于场景的多样性和复杂性,当前的方法仍不足以从单个图像预测深度图。为了进一步提高深度预测质量,我们提出了一种训练流水线,该训练流水线基于无监督方法[12],[13]-Geonet 共同学习多视图约束深度估计器和相机姿态估计器。
我们的方法只需要多个顺序图像,而无需训练的真实深度。代替使用诸如Dispnet [15]和基于Resnet的编码器-解码器[13]之类的常见深度估计网络,我们精心设计了一种新颖的多视图约束DenseDepthNet。 DenseDepthNet的多视图约束训练策略的动机是为深度预测提取更好的低层和高层特征。此外,为了进一步提高深度精度,我们引入了极线几何约束,并在输入的配对图像之间定义了一种新颖的深度一致性损失,以训练我们的网络。
简而言之,我们有以下主要贡献:
- (1)我们提出了一种新颖的多视图约束DenseDepthNet,它具有很强的特征提取能力,并且可以为连续图像预测具有丰富细节的深度图。
- (2)我们基于几何约束定义了一种新颖的深度一致性损失,可以显着提高DenseDepthNet的准确性。
- (3)针对深度估计问题,我们对不同的损失函数和网络架构进行了综合评估,从而验证了该方法的有效性。
与最新技术相比,我们的多视图约束DenseDepthNet可以生成具有高质量细节的动人的深度预测。对几个公共数据集的评估证明,我们的方法始终优于其他非监督方法,并且与监督方法相当。图1显示了我们的方法产生的一些结果。
通过利用诸如立体设备,动作以及先验知识之类的线索,人类非常有能力感知深度。然而,由于其不适定的特性和几何模糊性,从单个图像估计深度在计算机视觉中是一个难题。在传统方法中,采用附加的输入信息来减轻歧义。基于多视图几何[16]的方法,包括从运动恢复结构(SfM)[2],[3],[17],[18],[19]和同时定位和建图(SLAM)[4],[20] ],[5],[21]在许多情况下被证明是有效的。然而,这些方法在提取和匹配过程中极度依赖手工特性,在优化过程中仔细地调整参数,这使得它们在复杂场景中退化。对于单图像深度估计,基于图形模型[22],[23]的学习方法被提出,然后通过最近的深度学习方法[6],[24],[7],[25],[12]进一步开发[14]。在这里,我们将最先进的单图像深度估计(single image depth estimation)工作分类为监督学习方法和非监督学习方法。两种方法之间的主要区别是监督信号的来源:监督方法需要训练的真值深度,而无监督方法则没有这种要求。
有监督的方法- Eigen等[6]在多级流水线中采用了两个卷积神经网络进行单图像深度估计。他们基于粗到精策略进一步改进了网络[24],以生成更准确的结果。
- 刘等[7],[25]证明了离散条件随机场(CRF)可以被集成到卷积神经网络中进行深度图估计。然而,离散的CRF导致不连续的深度预测,这与深度值的性质不一致。
- 徐等 [8]通过提出一个连续的CRF模型解决了这个问题,该模型有效地利用了从多个内部CNN层获得的多尺度信息来预测连续的深度图。此外,他们将CRF注意力机制集成到其模型中,以提高深度估计的准确性[9]。
尽管这些方法产生相对较高质量的结果,但是它们需要具有很难获得的地面真实深度的训练数据集。
无监督方法为了在没有地面真理深度的情况下处理数据,有许多工作试图以无监督的方式训练网络。
- Garg等 [10]通过最小化输入立体图像之间的相应色差,采用了无监督学习方法。
- Godard等[11]通过引入左右一致性损失来增强左右图像之间的对应关系,从而改进了这种立体方法。尽管它们在深度估计中取得了相对较好的结果,但立体图像之间的摄像机运动对于建立无监督的损耗是必不可少的。
-
相反,Zhou等 [12]提出了一种基于SfM思想的PoseNet来预测输入图像对之间的运动。通过将颜色对应的损失与预测的运动相结合,他们的整个训练过程完全不受监督。但是,他们的模型有时会产生嘈杂的结果。
-
基于[12],Yin&Shi [13]引入了一个附加的光流网络来处理场景中的物体运动并优化输出。但是,额外的网络组件只会改善光流预测,而对深度估计的影响很小。
-
-
此外,詹等 [14]使用PoseNet并在立体图像之间,使用已知的摄像机运动来训练其网络并产生更精确的结果。他们的方法与Zhou等人 [12]的方法几乎相同。它仍然不能解决由无监督损失引起的错误。
相比之下,我们引入了深度一致性损失以减少估计误差并显着提高深度预测的准确性。
3 方法我们提出了一种新颖的无监督学习方法来预测顺序图像的深度图。图2说明了我们方法的框架。在训练阶段,我们使用两个子网(我们的多视图约束DenseDepthNet和PoseNet [12]),并同时向它们提供成对的顺序图像。我们的DenseDepthNet旨在根据每个输入图像预测深度图,而PoseNet [12]用于获取输入图像之间的空间变换。我们利用像素之间的对应关系,输入对图像的深度和空间变换来采用精心设计的损失函数。训练后,我们的DenseDepthNet可以完全用于预测连续图像的深度图。我们的方法的源代码已经发布,可以在 https://pan.cstcloud.cn/s/Lw2uZgdRno 中找到。
受DenseNet [27],[28]的启发,我们设计了一种名为DenseDepthNet的新型架构来进行深度估计。在训练阶段,我们的DenseDepthNet获取成对的顺序图像,并同时输出相应的深度图。为了实现高质量的深度估计,要求网络具有强大的功能,不仅要提取高级全局图像属性(例如,类别和位置),还要提取低级像素特征(例如,边缘和像素)。纹理)。为了更好地利用全局和局部图像功能,我们采用了UNet样式的基本结构。 UNet [26]是一种流行的带有跳转连接的编码器-解码器结构,可以有效捕获多尺度特征并产生具有丰富细节的结果。为了进一步增强网络的特征提取能力,我们将DenseBlock [27],[28]集成到UNet样式结构中作为基本单元。
具体来说,我们的DenseDepthNet可以分为两部分:编码器和解码器。编码器由几个DenseBlock组成,解码器由相应的UpDenseBlocks组成。 DenseBlock和UpDenseBlock都由几个密集连接的卷积单元(1×1 Conv和3×3 Conv)堆叠,其结构能够利用所有先前的输出进行更有效的特征计算。 DenseBlock和UpDenseBlock之间的唯一区别是,块中最后一个单元的输出是否与先前的单元输出合并。对于UpDenseBlock,它以更高的分辨率处理特征图,这是通过双线性上采样模块实现的。因此,为了使UpDenseBlock输出的特征图的大小保持在合理范围内以节省计算资源,它被设计为在UpDenseBlock的最后一个单元中压缩全部信息。此外,对于每个UpDenseBlock,它不仅接收前一个直接连接层的输出,而且还通过跳过连接从相应DenseBlock接收相应的信息,这意味着可以利用更多级别的信息。我们的DenseDepthNet的详细信息如图3所示。
实际上,我们测试了不同级别的最新编码器,其复杂性要比具有不同解码器类型的DenseNet或多或少复杂,经过深入研究,我们证实DenseDepthNet的性能非常好。此外,为了最大程度地利用多视图约束,我们可以在训练阶段进一步使用多幅图像来组成训练批次,因为我们的损失是以成对的方式描述的。具体而言,批次X中的一个样本x由n + 1个图像组成,它们具有相似的视野。中心视图的图像表示为,其余图像为
x,与
配对以计算我们的多视图总损失。通过这种方式,网络受到了更强的约束训练,从而获得了更好的结果。
为了构建完全无监督的损失来训练我们的DenseDepthNet,需要进行摄像机转换以弥合不同视图中图像之间的间隙。因此,我们采用PoseNet [12]预测输入图像对的相对变换,以计算训练阶段的无监督损失。
B. 损失函数作为一种无监督的学习方法,我们的损失函数是基于DenseDepthNet的预测深度图和从PoseNet获得的相对摄像机变换而构建的。
1)成对对应像素考虑从同一静态场景拍摄的两个摄像机视图(t和s),令和
是在视图s和t中相同3D点的相应像素点坐标,而ds和dt分别是它们的深度值。给定相对姿势变换
和相机固有矩阵K,像素之间的投影关系可以公式化为:
在两个视图中没有遮挡的每个3D位置都满足方程式1,以此来建立跨视图的像素对应关系。
2)深度一致性损失 Depth Consistency Loss为了利用成对连续图像的深度图之间的像素对应性,我们提出了一种新的损失,称为深度一致性损失。
- 对于视图t,中具有深度值
的点
,
- 我们可以根据等式1获得具有深度值ds的相应像素坐标
。使用视图s中的深度图Ds,我们还可以查询深度值
。
然后,我们的深度一致性损失定义为两个对应深度值的L1差:
这里N是图像的像素数。图4示出了深度一致性损失的构造。由于我们使用图像对作为输入,因此我们将同时考虑和
来计算两个视图之间的深度一致性:
应用我们的深度一致性损失是提高深度估计精度的直接但有效的方法。我们的深度一致性损失会强制执行满足几何约束的深度估计,从而有可能消除由没有地面真理的无监督学习的性质所引起的歧义。此外,我们的深度一致性损失明确介绍了几何关系,而其他损失(例如基于颜色对应的损失)很难很好地学习它。据我们所知,我们的深度一致性损失是第一个在输入的成对连续图像之间采用深度关系的无监督损失。先前的大多数工作在训练阶段仅使用一个深度图,因此无法利用这种像素对应性。尽管最近将光流作为几何约束条件引入了无监督训练损失[13],[29],但实验表明,我们提出的方法可以产生更好的结果。
3)颜色对应损失对于不同视图中相同3D点的像素pt及其对应的像素ps无遮挡,我们假设它们具有相同的颜色,即和
是相等的。因此,它与之间的色差可以用作我们的第二个监控信号。为了更好地量化差异,我们采用结合SSIM [30]和L1 范数 [31]的鲁棒图像相似性度量:
其中[13]建议α= 0.85。与深度一致性损失相同,可以针对输入的成对连续图像在两个方向上计算图像相似性度量,并且颜色对应的损失之和为:
无监督损失中固有地存在噪声,这对整个训练过程都具有负面影响。为了尽可能减少这种影响,我们采用深度平滑损失[11]作为正则化器,来促进DenseDepthNet的输出,其公式如下:
其中分别是深度图D 和 图像I 中像素p的梯度。根据等式6,将对应于Dt和Ds的深度平滑损失相加,得到总的深度平滑损失函数Ls:
对于深层神经网络,从粗到细的策略,通常可以加快训练过程并提高结果质量。受益于UNet结构,我们计算了多尺度深度输出(图3)的总损耗。最后,总损失由下式得出:
是每个损失函数的权重,l 代表深度图的空间尺寸大小(the spatial scale)。