monodepth论文翻译

摘要

学习方法在单张图像深度估计任务中显示出非常有希望的结果。然而,大多数现有方法将深度预测视为监督回归问题,因此需要大量相应的已标注的深度数据进行训练。记录各种环境中的高质量深度数据是一个具有挑战性的问题。在本文中,我们创新地超越了现有方法,用更容易获取的双目立体镜头拍摄的影片替代了在训练过程中使用明确的深度数据。

我们提出了一种新颖的训练目标,使得我们的卷积神经网络能够在没有已标注的深度数据的情况下学习执行单张图像深度估计。利用极线几何约束,我们通过训练网络生成视差图,采用图像重构损失。我们发现仅解决图像重构问题会导致深度图质量较差。为了克服这个问题,我们提出了一种新的训练损失,强制执行相对于左右图像的生成视差的一致性,从而提高性能和鲁棒性,超过了现有方法。我们的方法在KITTI驾驶数据集上实现了单眼深度估计的最新结果,甚至胜过了使用已标注的深度进行训练的监督方法。

1. 序言

从图像中进行深度估计在计算机视觉领域有着悠久的历史。富有成果的方法包括来自运动结构、X形状、双目和多视图立体等。然而,大多数这些技术都依赖于一个假设,即对感兴趣场景的多次观测是可用的。这可以采用多个视点的形式,或者在不同光照条件下观察场景。为了克服这个限制,近年来涌现出许多将单眼深度估计任务作为监督学习问题的研究 [32, 10, 36]。这些方法试图使用在大量地面真实深度数据上进行离线训练的模型,直接预测图像中每个像素的深度。尽管这些方法取得了巨大的成功,但到目前为止,它们仅限于在大量图像集合及其相应像素深度可用的场景中应用。

从单张图像中独立于其外观地理解场景的形状是机器感知中的一个基本问题。有许多应用,如计算机图形学中的合成对象插入 [29]、计算摄影中的合成景深 [3]、机器人学中的抓取 [34]、在人体姿势估计中使用深度作为线索 [48]、机器辅助手术 [49] 以及电影中的自动二维到三维转换 [53]。在自动驾驶汽车中,从一个或多个摄像头获取准确的深度数据对于使用昂贵的基于激光的系统非常关键。


图1. 我们在KITTI 2015数据集上的深度预测结果。从上到下:输入图像、ground truth视差图和我们的结果。我们的方法能够估计细小结构的深度,如道路标志和杆子。

人类通过利用诸如透视、相对于熟悉物体的已知大小的缩放、照明和阴影的外观以及遮挡等线索,在单眼深度估计方面表现良好 [24]。这种自上而下和自下而上线索的结合似乎将全景理解与我们准确估计深度的能力联系起来。在这项工作中,我们采用一种替代方法,将自动深度估计视为训练期间的图像重建问题。我们的完全卷积模型不需要任何深度数据,而是在训练过程中被训练成合成深度作为中间表示。它学会了预测具有已知相机基线的一对矫正立体图像之间的像素级对应关系。虽然已有一些方法也解决了相同的问题,但存在一些限制。例如,它们不是完全可微分的,使得训练不够理想 [16],或者具有不适用于大输出分辨率的图像形成模型 [53]。我们通过一种新颖的训练目标和增强的网络架构改进了这些方法,显著提高了最终结果的质量。我们算法的一个示例结果如图1所示。我们的方法速度快,在现代GPU上为一张512×256图像预测密集深度图只需约35毫秒。具体而言,我们提出以下贡献:
1)一种进行端到端无监督单目深度估计的网络架构,具有一种新颖的训练损失,可以在网络内部强制执行左右深度一致性。
2)对几种训练损失和图像形成模型的评估,突出了我们方法的有效性。
3)除了在具有挑战性的驾驶数据集上展示出色的结果外,我们还展示了我们的模型对三个不同数据集的泛化能力,包括我们自己收集的一个新的户外城市数据集,我们将其公开提供。

2. 相关工作

有大量的研究集中在从图像中进行深度估计,无论是使用成对的图像[46],从不同视点捕获的几个重叠图像[14],时间序列[44],还是假设摄像机固定、场景静态且光照变化[52, 2]。这些方法通常只适用于场景有多个输入图像可用的情况。在这里,我们关注与单目深度估计相关的研究,即只有一个输入图像,并且不对场景几何形状或存在的对象类型做任何假设。

Learning-Based Stereo

绝大多数立体匹配算法都有一个数据项,该项计算第一幅图像中每个像素与第二幅图像中每个其他像素之间的相似性。通常,立体对被矫正,因此视差(即缩放的逆深度)估计问题可以被看作是每个像素的一维搜索问题。最近的研究表明,与使用手动定义的相似性度量相比,将匹配视为一个监督学习问题,并训练一个函数来预测对应关系会产生更好的结果[54, 31]。还表明,将这种双目对应搜索作为多类分类问题提出在结果质量和速度方面都具有优势[38]。Mayer等人[39]不仅学习匹配函数,还引入了一个名为 DispNet 的全卷积[47]深度网络,直接计算两个图像之间的对应场。在训练时,他们试图通过最小化回归训练损失来直接预测每个像素的视差。DispNet与他们之前的端到端深度光流网络[12]具有类似的架构。

上述方法依赖于在训练时拥有大量准确的视差地图数据和立体图像对。对于真实场景来说,获取这种类型的数据可能很困难,因此这些方法通常使用合成数据进行训练。合成数据变得越来越逼真,例如[15],但仍然需要为每个新的应用场景手动创建新的内容。

有监督单目深度估计

单视图或称为单目深度估计,是指在测试时只有一张图像可用的问题设置。Saxena等人提出了一个基于补丁的模型,称为Make3D,该模型首先将输入图像分割成补丁,然后估计每个补丁的局部平面的3D位置和方向。平面参数的预测是使用离线在激光扫描数据集上训练的线性模型进行的,然后使用MRF将预测组合在一起。这种方法及其他基于平面的近似方法(例如[22])的缺点是它们可能难以建模细小结构,并且由于预测是在局部进行的,缺乏生成逼真输出所需的全局上下文。Liu等人采用卷积神经网络(CNN)学习一元和二元项,而不是手动调整这些项。在另一种局部方法中,Ladicky等人将语义信息融入模型中,以改善每像素深度估计。Karsch等人尝试通过从训练集复制整个深度图像来产生更一致的图像级预测。这种方法的缺点是在测试时需要整个训练集。

Eigen等人[10, 9]表明,可以使用双尺度深度网络在图像和相应深度值上进行训练,从而产生密集的像素深度估计。与大多数以前的单图深度估计工作不同,他们不依赖于手工制作的特征或初始的过分割,而是直接从原始像素值中学习表示。一些工作在这种方法的成功基础上进行了进一步的研究,使用诸如CRFs改善准确性[35]、将回归损失改为分类损失[5]、使用其他更强大的损失函数[33]以及在表面法线估计的相关问题中引入强大的场景先验[50]等技术。与前述的立体方法一样,这些方法在训练时依赖于高质量、像素对齐的地面真实深度。我们也进行单深度图像估计,但在训练时使用了附加的双目彩色图像,而不是需要已标注深度。

无监督深度估计

最近,提出了一小部分无需在训练时使用地面真实深度的基于深度网络的新视图合成和深度估计方法。Flynn等人[13]引入了一种称为DeepStereo的新型图像合成网络,通过从附近的图像中选择像素来生成新视图。在训练过程中,多个摄像机的相对姿势用于预测一个被持有的附近图像的外观。然后,基于平面扫描体积,选择最合适的深度来从邻近图像中采样颜色。在测试时,对重叠小块执行图像合成。由于在测试时需要多个附近的姿势图像,因此DeepStereo不适用于单目深度估计。

Xie等人的Deep3D网络[53]也解决了新视图合成的问题,其中他们的目标是在双目图像对的背景下从输入左图像(即源图像)生成相应的右视图。再次使用图像重建损失,他们的方法为每个像素产生了所有可能视差的分布。生成的右图像像素值是左图像同一扫描线上的像素的组合,其权重由每个视差的概率加权。他们的图像形成模型的缺点是增加候选视差值的数量会大大增加算法的内存消耗,使得难以将其扩展到更大的输出分辨率。在这项工作中,我们与Deep3D图像形成模型进行了比较,并展示了我们的算法产生了更优越的结果。

在灵感上与我们的模型最接近的是Garg等人的同时工作[16]。与Deep3D和我们的方法一样,他们使用图像重建损失训练用于单视图深度估计的网络。然而,他们的图像形成模型并非完全可微。为了补偿这一点,他们进行了泰勒近似以线性化损失,导致了一个更具挑战性的优化目标。与其他最近的工作类似,例如[43, 56, 57],我们的模型通过使用双线性采样[27]生成图像来克服这个问题,从而产生一个完全(次级)可微的训练损失。

我们提出了一个完全卷积的深度神经网络,受到Mayer等人提出的监督DispNet架构的启发[39]。通过将单目深度估计构建成一个图像重建问题,我们可以在不需要地面真实深度的情况下解决视差场。然而,仅最小化光度损失可能会导致图像重建的质量良好但深度质量较差。在我们的全可微训练损失中,除了其他项外,我们还包括了一个左右一致性检查,以提高我们合成的深度图像的质量。这种一致性检查通常用作许多立体方法的后处理步骤,例如[54],但我们将其直接融入到我们的网络中。

3. 方法

该部分描述了我们的单图深度预测网络。我们引入了一种新颖的深度估计训练损失,其中内置了左右一致性检查,使我们能够在图像对上进行训练,而无需以地面真实深度的形式进行监督。

3.1 深度估计作为图像重建

在测试时,给定一张单眼图像 I,我们的目标是学习一个函数 f,该函数能够预测每个像素的场景深度,即 ˆd=f(I)。大多数现有的基于学习的方法将其视为一个监督学习问题,在训练时使用彩色输入图像及其相应的目标深度值。然而,对于各种场景获取这样的地面真实深度数据目前并不切实际。即使使用昂贵的硬件,如激光扫描仪,在具有运动和反射的自然场景中也可能不够精确。作为替代方案,我们在训练过程中将深度估计视为图像重构问题。这里的直觉是,给定一对经过校准的双目摄像头,如果我们能够学习一个能够从另一张图像重构出一张图像的函数,那么我们就学到了有关被成像场景的 3D 形状的信息。

具体而言,在训练时,我们有两个图像 I l I^{l} Il I r I^{r} Ir,对应于从校准的立体对中捕获的左右彩色图像,这两个图像是在同一时刻捕获的。我们不试图直接预测深度,而是尝试找到密集的对应场 d r d^{r} dr,当应用到左图像时,它能够使我们能够重构右图像。我们将重构后的图像 I l ( d r ) I^l(d^r) Il(dr) 称为 I ~ r \widetilde{I}^r I r。类似地,我们也可以根据右图像估计左图像, I ~ l \widetilde{I}^l I l= I r ( d l ) I^r(d^l) Ir(dl)。假设图像经过矫正[19],d 对应于图像的视差 - 每个像素的标量值,我们的模型将学会预测这个视差。给定相机之间的基线距离 b 和相机焦距 f,我们可以轻松地从预测的视差中恢复深度, d ^ \hat{d} d^=bf/d。

3.2 深度估计网络

在高层次上,我们的网络通过推断将左图像变形以匹配右图像的视差来估计深度。我们方法的关键见解是,我们可以同时推断出左到右和右到左的两个视差,仅使用左输入图像,并通过强制它们彼此保持一致来获得更好的深度。

在这里插入图片描述
图3. 反向映射的采样策略。朴素采样中,CNN生成的视差图与目标对齐而不是与输入对齐。No LR对此进行了校正,但存在伪影。我们的方法使用左图像生成两个图像的视差,通过强制执行相互一致性来提高质量。

在这里插入图片描述
图5. 我们方法在有左右一致性和没有左右一致性时的比较。我们的一致性项在物体边界产生了更好的结果。两个结果均未经过后处理。

我们的网络使用双线性采样器生成预测图像,从而形成一个完全可微的图像形成模型。如图3所示,通过从左侧采样生成右侧图像的简单学习将产生与右侧图像(目标)对齐的视差。然而,我们希望输出的视差图与输入的左侧图像对齐,这意味着网络必须从右侧图像采样。我们可以改为训练网络通过从右图像采样生成左视图,从而创建一个与左视图对齐的视差图(图3中的"No LR")。尽管这样可以工作,但推断出的视差图表现出“纹理复制”伪影和深度不连续性处的错误,如图5所示。我们通过训练网络通过从相反的输入图像进行采样来解决这个问题,从而预测两个视图的视差图。这仍然只需要单个左侧图像作为卷积层的输入,右侧图像仅在训练期间使用(图3中的“Ours”)。通过使用这种新颖的左右一致性损失来强制保持两个视差图之间的一致性,可以得到更精确的结果。

我们的全卷积架构灵感来自 DispNet [39],但进行了几个重要的修改,使我们能够在不需要地面真实深度的情况下进行训练。我们的网络由两个主要部分组成 - 编码器(从 cnv1 到 cnv7b)和解码器(从 upcnv7),详细描述请参见补充材料。解码器使用来自编码器激活块的跳跃连接 [47],使其能够解析更高分辨率的细节。我们在四个不同的尺度(disp4 到 disp1)输出视差预测,在随后的每个尺度上,空间分辨率加倍。尽管它只接受单个图像作为输入,但我们的网络在每个输出尺度上都预测两个视差图 - 从左到右和从右到左。

3.3 训练损失

在这里插入图片描述
图2. 我们的损失输出左右视差图, d l d^l dl d r d^r dr。损失结合了平滑度、重构和左右视差一致性项。这个相同的模块在四个不同的输出尺度上都重复使用。C: 卷积, UC: 反卷积, S: 双线性采样, US: 上采样, SC: 跳跃连接。

我们在每个输出尺度s上定义损失 C s C_s Cs,总体的损失作为一个和 C= ∑ s = 1 4 \sum_{s=1}^4 s=14 C s C_s Cs。我们的损失模块计算损失 C s C_s Cs主要由三部分组成,
C s = α a p ( C a p l + C a p r ) + α d s ( C d s l + C d s r ) + α l r ( C l r l + C l r r ) C_s = α_{ap}(C_{ap}^l+C_{ap}^r)+α_{ds}(C_{ds}^l+C_{ds}^r)+α_{lr}(C_{lr}^l+C_{lr}^r) Cs=αap(Capl+Capr)+αds(Cdsl+Cdsr)+αlr(Clrl+Clrr)
其中, C a p C_{ap} Cap鼓励重构图像与相应的训练输入相似, C d s C_{ds} Cds强制使视差平滑, C l r C_{lr} Clr则偏好预测的左右视差一致。每个主要项都包含左右图像的变体,但只有左图像被馈送通过卷积层。

接下来,我们将每个损失组件用左图像的术语表示(例如, C a p l C_{ap}^l Capl)。右图像版本,例如 C a p r C_{ap}^r Capr,需要将左侧替换为右侧,并在相反的方向进行采样。

外表匹配损失 在训练过程中,网络通过从相对的立体图像中采样像素来生成图像。我们的图像生成模型使用了空间变换网络(STN)[27]中的图像采样器,通过视差图对输入图像进行采样。STN使用双线性采样,其中输出像素是四个输入像素的加权和。与其他方法[16, 53]相比,所使用的双线性采样器在局部是完全可微分的,并且可以无缝集成到我们的完全卷积架构中。这意味着我们不需要对我们的代价函数进行任何简化或近似。

受到[55]的启发,我们使用L1和单尺度SSIM单元作为我们的光度图像重建损失 C a p C_{ap} Cap,用于比较输入图像 I i j l I_{ij}^l Iijl和它的重建 I ~ i j l \widetilde{I}_{ij}^l I ijl,其中N是像素的数量,
C a p l = 1 N ∑ i , j α 1 − S S I M ( I i j l , I ~ i j l ) 2 + ( 1 − α ) ∣ ∣ I i j l − I ~ i j l ∣ ∣ C_{ap}^l=\frac{1}{N}\sum_{i,j}α\frac{1-SSIM(I_{ij}^l, \widetilde{I}_{ij}^l)}{2}+(1-α)||I_{ij}^l-\widetilde{I}_{ij}^l|| Capl=N1i,jα21SSIM(Iijl,I ijl)+(1α)∣∣IijlI ijl∣∣
在这里,我们使用一个简化的SSIM,采用3×3的块滤波器而不是高斯滤波器,并设置 α=0.85。

视差平滑损失 我们鼓励视差在局部平滑,通过在视差梯度 ∂d 上引入L1惩罚。由于深度不连续通常发生在图像梯度处,类似于[21],我们使用图像梯度 ∂I 对这一代价进行加权,以考虑边缘感知。
C d s l = 1 N ∑ i , j ∣ ∂ x d i j l ∣ e − ∣ ∣ ∂ x I i j l ∣ ∣ + ∣ ∂ y d i j l ∣ e − ∣ ∣ ∂ y I i j l ∣ ∣ C_{ds}^l=\frac{1}{N}\sum_{i,j}|∂_xd_{ij}^l|e^{-||∂_xI_{ij}^l||} +|∂_yd_{ij}^l|e^{-||∂_yI_{ij}^l||} Cdsl=N1i,jxdijle∣∣xIijl∣∣+ydijle∣∣yIijl∣∣
左右视差一致性损失 为了生成更准确的视差图,我们训练网络来同时预测左视图和右视图的视差,但在网络的卷积部分只提供左视图作为输入。为了确保一致性,我们引入了一个L1左右视差一致性惩罚作为我们模型的一部分。该代价的目标是使左视图的视差图等于投影的右视图的视差图,
C l r l = 1 N ∑ i , j d i j l − d i j − d i j l r C_{lr}^l=\frac{1}{N}\sum_{i,j}d_{ij}^l-d_{ij-d_{ij}^l}^r Clrl=N1i,jdijldijdijlr
与所有其他项一样,这个代价也针对右视图的视差图进行镜像,并在所有输出尺度上进行评估。

在测试时,我们的网络在最精细的尺度级别上为左图像 d l d^l dl 预测视差,其分辨率与输入图像相同。然后,利用训练集中已知的相机基线和焦距,我们将视差图转换为深度图。虽然在训练过程中我们也估计右视差 d r d^r dr,但在测试时不使用它。

4. 结果

在这里,我们将我们的方法的性能与监督和无监督的单视图深度估计方法进行比较。我们在校正后的立体图像对上进行训练,并不需要任何形式的地面真实深度监督。现有的单图像数据集,比如[41, 45],缺乏立体图像对,不适用于评估。相反,我们使用流行的KITTI 2015 [17]数据集来评估我们的方法。为了评估我们的图像生成模型,我们将其与使用原始Deep3D [53]图像生成模型和带有额外平滑性约束的修改版Deep3Ds的算法变体进行比较。我们还评估了我们的方法是否使用左右一致性约束。

4.1 实施细节

ChatGPT 该网络是使用 TensorFlow [1] 实现的,包含3100万个可训练参数,使用单个Titan X GPU在包含30,000张图像的数据集上进行50个epochs的训练大约需要25小时。推断速度很快,对于一张512×256的图像,包括与GPU之间的传输时间,推断时间少于35毫秒,即每秒超过28帧。请参阅附加材料和我们的代码1以获取更多详细信息。

在优化过程中,我们将不同损失组件的权重设置为 α a p α_{ap} αap=1 和 α l r α_{lr} αlr= 1。可能的输出视差通过使用缩放的 Sigmoid 非线性被限制在 0 到 d m a x d_{max} dmax 之间,其中 d m a x d_{max} dmax = 0.3X 给定输出尺度的图像宽度。由于我们的多尺度输出,相邻像素的典型视差在每个尺度之间将相差两倍(因为我们通过两倍的上采样来获得输出)。为了纠正这一点,我们将每个尺度的视差平滑度项 α d s α_{ds} αds 缩放 r,以在每个级别获得等效的平滑度。因此, α d s α_{ds} αds=0.1/r,其中 r 是相对于输入图像的分辨率而言,对应层的下采样因子。

在网络的非线性部分,我们使用指数线性单元 [7],而不是通常使用的修正线性单元(ReLU)[40]。我们发现ReLU倾向于过早地将中间尺度上的预测视差固定为单个值,使得难以进行后续改进。根据 [42],我们用最近邻上采样代替了通常的反卷积,然后进行卷积。我们从头开始训练我们的模型进行了50个epochs,使用Adam [30],其中 β1 = 0.9,β2 = 0.999,而 ε = 10^-8。我们使用了 λ=10^-4的初始学习率,保持在前30个epochs内恒定,然后每10个epochs减半一次直到结束。我们最初尝试了渐进式更新计划,如 [39] 中所述,其中首先优化较低分辨率的图像尺度。然而,我们发现同时优化所有四个尺度导致更稳定的收敛。同样地,我们对每个尺度的损失使用相同的权重,因为我们发现对它们进行不同的加权导致不稳定的收敛。我们尝试过批归一化 [26],但发现它并没有带来显著的改进,最终排除了它。

数据增强是实时进行的。我们以50%的概率水平翻转输入图像,并确保同时交换两个图像,使它们相对于彼此处于正确的位置。我们还添加了颜色增强,以50%的概率进行,其中我们通过从分别在范围[0.8,1.2]的均匀分布中采样,对gamma进行随机增益、亮度和颜色进行随机偏移。对于亮度,采样范围是[0.5,2.0],对于每个颜色通道,采样范围是[0.8,1.2]。

Resnet50 为了完整起见,类似于[33],我们还展示了我们模型的一种变体,使用Resnet50 [20]作为编码器,其余的架构、参数和训练过程保持不变。这个变体包含4800万个可训练参数,并在结果表中以resnet标示。

为了减少双目空洞的的影响,该效应会在图像的左侧和遮挡物上产生视差坡道,我们在输出上进行了最后的后处理步骤。对于一张测试时输入的照片,我们也计算它的水平翻转照片 I ′ I' I的视差地图 d l ′ d_l' dl。通过将视差图翻转回去我们获得了一个视差图 d l ′ ′ d_l'' dl′′,它是和 d l d_l dl对齐的,但是视差坡道位于遮挡物的右侧以及图像的右侧。我们在最终的结果中结合两个视差图,使用 d l ′ ′ d_l'' dl′′在图像的左侧分配前百分之五并且在图像右侧的最后5%使用 d l d_l dl分配视差。最终视差图的的中心部分是 d l d_l dl d l ′ d_l' dl的平均值。这个最后的后处理步骤在提高准确性和减少视觉伪影的同时,会以加倍测试时间计算量为代价。在结果表中,我们使用 “pp” 表示经过这种后处理的结果。

4.2 KITTI

我们使用两个不同的测试拆分为KITTI数据集[17]提供结果,以便与现有的研究进行比较。在其原始形式中,该数据集包含来自61个场景的42,382个校正后的立体图像对,典型图像大小为1242×375像素。

KITTI Split 首先,我们比较了我们方法的不同变体,包括不同的图像生成模型和不同的训练集。我们在KITTI官方训练集的一部分提供的200张高质量视差图像上进行评估,该训练集共包含28个场景。剩下的33个场景包含30,159张图像,我们保留29,000张用于训练,其余用于评估。尽管这些视差图像比投影的Velodyne激光深度值质量更好,但它们在移动车辆的位置插入了CAD模型。这些CAD模型导致在透明表面(如汽车窗户)上出现模糊的视差值,以及在CAD模型与图像不完全对齐的对象边界处出现问题。此外,KITTI数据集中存在的最大深度大约为80米,我们将所有网络的最大预测值限制为此值。结果使用来自[10]的深度指标以及KITTI [17]的D1-all视差误差进行计算。[10]中的指标测量了与地面真实值的误差,以及在某个阈值内的深度百分比与正确值的误差。需要注意的是,在给定地面真实值的视差的情况下测量深度空间的误差会导致精度问题。特别是,非阈值测量可能对由于小视差值处的预测误差引起的深度的大误差敏感。

在这里插入图片描述
表1. 不同图像生成模型的比较。结果基于KITTI 2015 stereo 200训练集的视差图像[17]。在训练方面,K表示KITTI数据集[17],CS表示Cityscapes [8]。我们带有左右一致性的模型表现最佳,并且通过添加Cityscapes数据进一步改进。最后一行显示了我们模型在两个输入图像而不是一个输入图像上进行训练和测试的结果(见第4.3节)。

在这里插入图片描述
图6.
在KITTI上的图像重建误差。虽然所有方法都输出了合理的右视图,但没有平滑性约束的Deep3D图像生成模型没有产生有效的视差。

在表格1中,我们可以看到,除了在缩放性能(分辨率和能够表示的视差数量)方面表现差之外,当使用与我们相同的网络架构从头开始训练时,Deep3D [53]图像生成模型的性能也较差。从图6中我们可以看到,Deep3D产生了合理的图像重建,但输出的视差较我们的模型差。我们的损失在所有指标上均优于Deep3D的基线,而左右一致性检查的添加则提高了性能。在图5中,我们展示了一些放大的比较,清晰地显示了左右检查的加入如何改善结果的视觉质量。通过首先使用来自Cityscapes数据集 [8]的额外训练数据对我们的模型进行预训练,我们进一步改善了结果。Cityscapes数据集包含在德国各个城市捕获的22,973对训练立体图像。与KITTI相比,这个数据集具有更高的分辨率、图像质量和多样性,同时具有类似的设置。我们裁剪了输入图像,仅保留图像的顶部80%,去除了输入中非常反光的汽车引擎盖。有趣的是,我们仅在Cityscapes上训练的模型在数值上表现并不好。这可能是由于两个数据集之间相机校准的差异造成的,但在与测试集相关的数据上进行微调明显有优势。

Eigen Split 为了能够与现有工作进行比较,我们还使用了由[10]提出的包含697张图像的测试拆分,该拆分覆盖了总共29个场景。剩下的32个场景包含23,488张图像,我们保留22,600张用于训练,其余用于评估,类似于[16]。为了生成地面真实深度图像,我们将Velodyne激光视图中的3D点重新投影到左侧输入彩色摄像机。除了仅为输入图像中不到5%的像素生成深度值之外,还因Velodyne的旋转、车辆和周围物体的运动,以及由于物体边界的遮挡而导致的深度读数不正确而引入了误差。为了公平对待所有方法,我们使用与[10]相同的裁剪,并在输入图像分辨率上进行评估。除了Garg等人[16]的结果外,基线方法的结果由我们重新计算,以确保所有分数是直接可比的。这产生了与先前发布的数字略有不同的数字,例如,在[10]的情况下,他们的预测是在较小的深度图像上进行评估的(原始大小的1/4)。对于所有基线方法,我们使用双线性插值将预测调整为正确的输入图像大小。
在这里插入图片描述
表2. 这是使用Eigen等人[10]的分割对KITTI 2015 [17]的结果。在训练中,K表示KITTI数据集[17],CS表示Cityscapes [8]。Liu等人[36]*的预测是在左右图像的混合上生成的,而不仅仅是左侧输入图像。为了公平比较,我们相对于正确的图像计算他们的结果。与提供的源代码一样,Eigen等人[10]的结果是相对于velodyne而不是相机计算的。Garg等人[16]的结果直接取自他们的论文。除[10]外的所有结果都使用[16]的裁剪。我们还展示了使用相同裁剪和最大评估距离的我们的结果。最后两行是基于未裁剪的地面真实深度计算的。

在这里插入图片描述
图4. 在KITTI Eigen Split上的定性结果。由于地面真实velodyne深度非常稀疏,我们进行插值以进行可视化。我们的方法在解决小物体,如行人和杆子方面效果更好。

表2显示了一些例子的定量结果,图4展示了其中一些示例输出。我们可以看到,我们的算法在所有其他现有方法中表现最好,包括那些使用地面真实深度数据进行训练的方法。再次看到,在Cityscapes数据集上进行预训练可以提高结果,相较于仅使用KITTI数据集。

4.3 Stereo

在这里插入图片描述
图8. 我们的双目结果。虽然双目视差图包含更多细节,但我们的单目结果是可比的。

我们还实现了我们模型的双目版本,参见图8,其中网络的输入是左右视图的串联。也许并不令人惊讶,立体模型在每个度量上都优于我们的单目网络,特别是在D1-all视差度量上,如表1所示。由于该模型在训练时间较长时变得不稳定,因此此模型仅进行了12个epochs的训练。

在这里插入图片描述
表3. 在Make3D数据集[45]上的结果。所有标有*的方法都是监督方法,并使用来自Make3D训练集的地面真实深度数据。使用标准的C1度量,仅在中心图像裁剪中深度小于70米的位置计算误差。
在这里插入图片描述
图7. 尽管我们的方法是在不同的数据集(Cityscapes)上训练的,但在Make3D上,我们的方法取得了更好的定性结果。

4.4 make3D

为了说明我们的方法可以推广到其他数据集,我们在[45]的Make3D测试集上与几种完全监督的方法进行了比较。Make3D只包含RGB/深度对,没有立体图像,因此我们的方法无法在这个数据上进行训练。我们使用仅在Cityscapes数据集上训练的网络,尽管数据集在内容和相机参数上存在差异,我们仍然取得了合理的结果,甚至在一个度量上超过了[28],在三个度量上超过了[37]。由于Make3D数据集的不同纵横比,我们对图像进行中心裁剪进行评估。在表3中,我们将我们的输出与其他方法的相似裁剪结果进行了比较。与KITTI数据集的情况一样,这些结果很可能通过更相关的训练数据得到改善。图7展示了与一些相关方法的定性比较。虽然我们的数值结果不如基线好,但在定性上,我们与监督竞争对手相比表现得很好。
在这里插入图片描述
图9. 在Cityscapes、CamVid和我们自己步行捕获的城市数据集上的定性结果。有关更多结果,请参阅我们的视频。

4.5 推广到其他数据集

最后,我们在图9中展示了我们的模型推广到其他数据集的一些例子。使用仅在Cityscapes [8]上训练的模型,我们在CamVid驾驶数据集[4]上进行了测试。在附带的视频和补充材料中,我们可以看到,尽管位置、图像特征和相机校准存在差异,我们的模型仍然生成了视觉上合理的深度。我们还捕获了一个包含60,000帧的数据集,以每秒10帧的速度在城市环境中使用广角消费级1080p立体摄像头拍摄。在这个数据集上微调Cityscapes预训练模型,为使用相同摄像头在不同天拍摄的测试集生成了视觉上令人信服的深度图像,请查看补充材料中的视频以获取更多结果。

4.6 局限性

尽管我们的左右一致性检查和后处理都提高了结果的质量,但由于遮挡区域的像素在两个图像中不可见,仍然可以看到一些在遮挡边界处的伪影。在训练期间明确推理遮挡[23, 25]可能会改善这些问题。值得注意的是,根据相机和深度传感器之间的基线大小,完全监督的方法也不总是对所有像素都有有效深度。

我们的方法在训练期间需要经过校正和时间对齐的立体图像对,这意味着目前无法使用现有的单视图数据集进行训练,例如[41]。然而,可以在特定应用的地面真实深度数据上对我们的模型进行微调。

最后,我们的方法主要依赖于图像重建项,这意味着镜面反射[18]和透明表面会产生不一致的深度。通过使用更复杂的相似性度量[54],这个问题可能会得到改善。

5. 结论

我们提出了一种用于单图深度估计的无监督深度神经网络。我们没有使用对齐的地面真实深度数据,这既罕见又昂贵,而是利用了获取双目立体数据的简便性。我们的新型损失函数在训练期间强制执行了从每个摄像机视图预测的深度图之间的一致性,从而改善了预测。我们的结果优于完全监督的基线,这对未来不需要昂贵的地面真实深度数据的研究是令人鼓舞的。我们还展示了我们的模型可以推广到未见的数据集,并且仍然能够生成视觉上合理的深度图。

在未来的工作中,我们希望将我们的模型扩展到视频。尽管我们目前的深度估计是每帧独立进行的,但添加时间一致性[28]可能会改善结果。研究将稀疏输入作为替代训练信号[58, 6]也是一个有趣的方向。最后,虽然我们的模型估计每个像素的深度,但也有预测场景的完整占据情况[11]的研究价值。

  • 12
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值