摘要
深度预测是理解场景三维几何结构的重要组成部分。对于立体图像来说,局部匹配就足够进行估计了,但是从单个图像中找到深度关系就不那么简单了,需要从各种线索中整合全局和局部信息。此外,这项任务本身是含糊不清的,很大一部分不确定性来自于总体规模。在本文中,我们提出了一种新的方法,通过使用两个深层网络栈来解决这个问题:一个是基于整个图像进行粗略的全局预测,另一个是在局部细化这个预测。我们还使用标度不变误差来帮助测量深度关系而不是标度。通过利用原始数据集作为训练数据的大来源,我们的方法在NYU Depth和KITTI上都获得了最先进的结果,并且在不需要超像素化的情况下匹配了详细的深度边界。
(一)介绍
本文提出了一种从单个图像估计深度的新方法。我们使用一个包含两部分的神经网络直接回归深度:一个是先估计场景的整体结构,另一个是利用局部信息对其进行细化。训练网络使用的是一种损失,它明确地解释了像素位置之间的深度关系,以及点对点的误差。我们的系统在NYU Depth和KITTI上达到了最先进的估计速率,并且改进了质量输出。
(二)相关工作
与我们的工作直接相关的是几种从单个图像估计深度的方法。Saxena等人使用线性回归和MRF预测一组图像特征的深度,然后将他们的工作扩展到Make3D[16]系统用于3D模型生成。然而,该系统依赖于图像的水平对齐,并且在较少控制的设置下受到影响。kharem等人[6]没有明确地预测深度,而是将图像区域划分为几何结构(地面、天空、垂直),用来构成场景的简单3D模型。
Ladicky等人展示了如何将语义对象标签与单目深度特征相结合以提高性能;然而,他们依靠手工制作的功能和使用超像素分割图像。Karsch等人的[7]利用基于SIFT Flow[11]的kNN传递机制来估计单个图像的静态背景深度,通过增加运动信息来更好地估计视频中的运动前景主体。这可以实现更好的对齐,但需要整个数据集在运行时可用,并执行昂贵的对齐过程。相比之下,我们的方法学习了一组更容易存储的网络参数,可以实时应用于图像。
更广泛地,立体深度估计已被广泛研究。Scharstein et al.[17]通过匹配、聚集和优化技术对2帧立体匹配的许多方法进行了调查和评估。Snavely et al.[20]在一个创造性的多视图立体声应用中,通过对同一场景的许多未经校准的消费者照片的视图进行匹配,以创建普通地标的精确3D重建。
机器学习技术也被应用到立体视觉中,通常在获得更好的效果的同时,也放松了对相机精确对准的需求[8,13,21,19]。与这项工作最相关的是Konda et al.[8],他在图像块上训练一个分解的自动编码器来预测立体序列的深度;然而,这依赖于立体视觉提供的局部位移。
对于单图像深度估计,也有几种基于硬件的解决方案。Levin等人使用改进的相机光圈在离焦后进行深度处理,而Kinect和Kinect v2使用主动立体声和飞行时间来捕捉深度。我们的方法是在训练中间接使用这种传感器来提供地面真实深度目标;然而,在测试时,我们的系统完全是基于软件的,可以通过RGB图像预测深度。
(三)方法
3.1. 模型架构
我们的网络由两个组件栈组成,如图1所示。粗尺度的网络首先在全局范围内预测场景的深度。然后,通过一个精细的网络在局部区域内进行细化。两个堆栈都应用于原始输入,但另外,粗网络的输出作为附加的第一层图像特征传递给细网络。通过这种方式,本地网络可以编辑全球预测以包含更精细的细节。
3.1.1. Global Coarse-Scale Network
粗尺度网络的任务是使用全局视图预测整体深度地图结构。这个网络的上层是完全连接的,因此在他们的视野中包含了整个图像。同样,底层和中间层的设计目的是通过最大池化操作将来自图像不同部分的信息组合到一个较小的空间维度。通过这样做,网络能够整合全球对整个场景的理解来预测深度。在单幅图像的情况下,需要这样的理解,才能有效地利用诸如消失点、目标位置和房间对齐等线索。局部视图(通常用于立体匹配)不足以注意到诸如此类的重要特性。
如图1所示,全局粗尺度网络包含卷积和max-pooling的五个特征提取层,然后是两个全连通层。输入,功能图和输出尺寸在图1给出最终的输出是相比输入1/4分辨率(这本身就是降低采样从原始数据集的2倍),对应于一个中心作物包含大部分的输入(如我们描述之后,我们失去了一个小边境地区由于第一层的精细网络和图像转换)。
注意,输出的空间维度大于最顶层的卷积特征图。而不是限制输出到特征图的大小和依赖硬编码的上采样。在将预测传递给精细网络之前,我们允许顶层的完整层在更大的范围内学习模板(对于NYU Depth来说是74x55)。这些都将是模糊的,但将比8x6预测(顶部特征图大小)的上采样输出更好;本质上,我们允许网络学习它自己的基于特征的向上采样。样本输出权值如图2所示
除了粗输出层7是线性的外,所有隐藏层都使用经过修正的线性单元进行**。中途退出应用于全连通隐藏层6。粗尺度网络的卷积层(1-5)在ImageNet分类任务1中进行预训练,在模型开发过程中,我们发现在ImageNet上进行预训练比随机初始化效果更好,尽管差异不是很大。
3.1.2 Local Fine-Scale Network
在从全局角度预测粗深度图之后,我们使用第二个精细的网络进行局部细化。这个组件的任务是编辑它接收到的粗预测,以与本地细节(如对象和墙壁边缘)对齐。精细规模的网络堆栈仅包含卷积层,以及第一层边缘特性的池化阶段。
当粗网络看到整个场景时,细网络中输出单元的视场。为45x45像素的输入。卷积层应用于目标输出大小的特征图,允许在输入比例的1/4处有相对高分辨率的输出。
更具体地说,粗输出被作为一种附加的低级特征图输入。通过设计,粗预测与第一个细尺度层(池化后)的输出空间大小相同,我们将两者连接在一起(图[1]中的细2)。后续层使用零填充卷积来保持这个大小。
所有隐藏单位使用修正的线性**。最后一个卷积层是线性的,因为它预测目标深度。我们先对粗网进行训练,然后对粗网进行训练,使粗网的输出保持不变(即在训练细网时,不对粗网进行反向传播)。
3.2. Scale-Invariant Error
在深度预测中,场景的全局规模是一个基本的不确定性。实际上,使用当前的元素智能度量方法产生的许多错误都可以简单地用平均深度的预测值来解释。例如,在NYUDepth上训练的Make3D使用RMSE在日志空间中得到了0.41的误差(见表1),但是,使用oracle将每次预测的平均日志深度替换为相应的ground truth的平均值,可以将误差降低到0.33,相对提高20%。对于我们的系统,这些错误率分别是0.28和0.22。因此,仅仅是找到场景的平均尺度,就占了总误差的很大一部分。
我们使用尺度不变误差来测量场景中各点之间的关系,而不考虑绝对全局尺度。对于预测的深度映射y和ground truth y*,每一个都有n个像素被i索引,我们将标量不变的均方误差(在日志空间中)定义为
Eqn. 2通过比较输出中像素i, j对之间的关系来表示误差:为了获得较低的误差,预测中的每一对像素在深度上的差异必须与对应对在ground truth上的差异相同。Eqn. 3将度规与原始的l2错误联系起来,但是加上一个额外的术语dd,如果错误在同一个方向上,就会被记为错误,如果错误在相反的方向上,就会受到惩罚。因此,一个不完美的预测,如果它的错误是一致的,那么它的误差就会更小。Eqn. 3的最后一部分将其改写为线性时间计算。
除了尺度不变误差外,我们还根据先前工作中提出的几个误差指标来衡量方法的性能,如第4节所述
3.3. Training Loss
除了性能评估之外,我们还尝试使用尺度不变误差作为训练损失。受Eqn. 3的启发,我们将每个样本的训练损失设置为
在训练过程中,大多数目标深度地图都会有一些缺失值,特别是在物体边界、窗口和镜面附近。我们只是通过掩盖它们并仅在有效点上计算损失来处理这些问题,例如,我们将Eqn.4中的n替换为具有目标深度的像素数量,并执行不包含无深度值的像素i的和。
3.4. Data Augmentation
我们使用随机在线转换(NYUDepth显示的值)来增加训练数据
- scale:输入和目标图像按s属于[1,1.5]缩放,深度用s来分割。
- rotation:输入和目标旋转在 -5到5之间
- translation:(平移)输入和目标被随机裁剪成图一所示的大小
- color:输入值被全局乘以一个随机的RGB值c在0.8至1.2之间
- flips:输入和目标水平翻转的概率为0.5
注意,图像缩放和平移并不能保留场景的世界空间几何形状。在缩放的情况下,这是很容易纠正的,方法是将深度值除以比例s(使图像s倍大,有效地移动相机s倍近)。虽然翻译不容易固定(他们有效地改变了相机与深度值不兼容),我们发现他们提供的额外数据有利于网络,即使他们代表的场景稍微扭曲。其他的变换,翻转和平面内旋转,都是几何保持。在测试的时候,我们使用一个1.0版本的中心裁剪,没有旋转和颜色变换。
(四) 实验
我们在NYU Depth v2(18|和KITTI 3)的原始版本上训练我们的模型。未经雕琢的假面具包含了许多额外的图片,这些图片来自于更常用的小发行版,但没有经过预处理;特别地,没有深度值的点是空的。然而,我们的模型处理这种差距的自然能力以及对大型训练集的需求使得这些拟合数据来源。
4.1. NYU Depth
NYU Depth数据集[181]由464个室内场景组成,使用微软Kinect摄像头作为视频序列拍摄。我们使用官方的train/test split,使用249个场景进行训练,215个场景进行测试,并使用这些场景的原始数据构建我们的训练集。RGB输入被下采样一半,从640x480到320x240。由于深度和RGB摄像机以不同的可变帧速率工作,我们将每个深度图像与其最接近的RGB图像进行关联,并丢弃与一个以上深度相关联的帧(这样的一个到多个映射是不可预测的)。我们使用数据集提供的摄像机投影来对齐RGB和深度对;没有深度值的像素会丢失并被掩盖。删除许多无效。由窗户,打开的门和镜面造成的区域,我们也掩盖了深度等于最低或最高记录的每幅图像。
训练集有120K的独特图像,我们在晚上之后将其放入一个220K的列表中,场景分布(每个场景1200张)。我们测试了694-image NYU Depth v2测试集(带有. Depth值)。我们使用批量为32的SGD对2M样品的粗网进行训练,然后固定它,对1.5M样品的细网进行训练(从已经训练好的粗网输出)。学习率:粗卷积层1-5为0.001,粗完整层6和7为0.1,细层1和3为0.001,细层2为0.01。这些比率是通过在验证集上反复试验得出的(折叠回训练集进行最终评估),所有比率的全球范围调整到5倍。动量是0.9。粗网训练38小时,细网训练26小时。总共2.6天使用NVidia GTX泰坦黑色。测试预测每批0.33秒(0.01秒/张)。
4.2. KITTI
KITTI数据集[3]由几个室外场景组成,这些场景是在开车时用车载摄像头和深度传感器拍摄的。我们使用56个场景从“城市”,“住宅”和“道路”的原始数据类别。它们分为28个用于培训和28个用于测试。RGB图像最初是1224x368,向下采样一半形成网络输入。
这个数据集的深度是在不规则间隔的点上采样的,在不同的时间使用旋转激光雷达扫描仪捕捉。在为训练构建地面真值深度时,可能存在价值冲突;由于RGB摄像机是在扫描器指向前方时拍摄的,所以我们通过选择最接近RGB捕捉时间的深度来解决每个像素的闪烁问题。深度只在RGB图像的底部提供,但是我们将整个图像放入模型中,为全局粗尺度网络提供额外的上下文(细网络看到与目标区域相对应的底层裁剪)。
训练集每个场景有800张图片。我们排除了汽车静止(加速度低于阈值)的射击,以避免重复。左边和右边的RGB摄像机都被使用,但是被处理。不相联系的镜头。训练集有20K的独特图像,我们在晚上场景分发后将其放入40K•(包括重复)的列表中。我们先对粗模型进行1.5M的训练,然后对细模型进行1M的训练。学习速度和纽约大学的深度是一样的。粗模型训练30小时,细模型训练14小时;测试预测取0.40s/批(0.013s/image)。
4.3. Baselines and Comparisons
我们将我们的方法与在相同数据集上训练的Make3D以及其他当前方法发布的结果进行比较[12.7]。作为额外的参考,我们还比较了通过训练集计算得到的平均深度图像。我们使用700幅图像(每个场景25幅)的子集在KITTI上训练Make3D,因为系统无法扩展到超过这个大小。在NYUDepth开发包中使用着色例程填充深度目标。对于NYUDepth,我们使用了795张图像的公共分布训练集。我们使用以前作品中的一些错误来评估每个方法,以及我们的尺度不变度量:
注意,Make3D和我们的网络的预测与输入的中心产量略有不同。我们比较了它们区域的交点,并使用最近邻法将样本预测与完整的原始输入分辨率进行了比较。与向下采样相比,向上采样对地面真值和输出分辨率的评估具有显著的影响。
(五)结论
5.1 NYU Depth
如4.3节所述,NYU Depth数据集的结果如表1所示,我们将数据平均值和Make3D作为基线进行对比。(Ladicky等人使用的联合模型是通过深度和语义标签来训练的)。我们的系统在所有指标上都达到了最好的性能,与亚军相比平均获得35%的相对收益。请注意,我们的系统是使用原始数据集进行训练的,它包含的示例实例比其他方法使用的数据多得多,并且能够有效地利用它来学习相关特性及其关联。
这个数据集打破了Make3D所做的许多假设,特别是地面平面的水平对齐;因此,Make3D在此任务中的性能相对较差。重要的是,我们的方法在尺度依赖和尺度不变度量上都有改进,表明我们的系统能够预测更好的关系和更好的方法。
图4的左侧用标度不变的MSE从上到下进行分类,定性结果如图4所示。虽然精细尺度的网络在误差测量中没有改进,但其效果在深度地图中是明显可见的——地表边界有更清晰的过渡,与局部细节保持一致。然而,一些纹理边缘有时也包括在内。图3用λ=0和λ=0.5比较了我们训练的网络的Make3D以及输出。虽然我们没有观察到使用λ=0.5的数值增益。它确实在更详细的领域中产生了细微的质量改进。
5.2. KITTI
接下来我们将检查KITTI 驱动数据集的结果。在这里,Make3D基线非常适合于由水平对齐的图像组成的数据集,并取得了相对较好的结果。我们的方法在所有指标上都优于它,平均相对增益为31%。同样重要的是,在标度相关误差和标度不变RMSE误差中都有25%的增益,这表明预测结构有了实质性的改进。同样,在错误度量中,细尺度的网络没有比粗尺度的网络改进多少。但两者之间的差异可以从定性产出中看出。
图4的右侧显示了预测的例子,同样是按误差排序的。精细的网络在这里也产生了更尖锐的过渡,特别是在道路边缘附近。然而,这些变化是有限的。这可能是由于旋转扫描仪设置导致的深度图和训练数据输入之间的未校正对齐问题造成的。这将边缘与它们的真实位置分离开来,导致网络对它们更随机的位置进行平均。如图3所示,Make3D在此数据上的表现要比预期的好得多,而使用尺度不变误差作为损失在这种情况下似乎没有什么效果。
(六)讨论
从单个图像中预测深度估计是一项具有挑战性的任务。然而,通过将来自全球和本地视图的信息结合起来,它可以相当好地执行。我们的系统通过使用两种深度网络来实现这一点,一种是估计全局深度结构,另一种是在局部以更好的分辨率对其进行细化。我们为NYU Depth和KITTI数据集实现了一个新的最先进的任务,有效地利用了完整的原始数据分布。
在未来的工作中,我们计划扩展我们的方法来吸收更多的三维几何信息,如表面法线。Fouhey在法线地图预测方面取得了良好的效果。我们还希望通过重复应用连续细分的局部网络,将深度映射扩展到完全原始的输入分辨率。