(2022 CVPR)P3Depth: Monocular Depth Estimation with a Piecewise Planarity Prior

本文提出了一种利用分段平面性先验的单目深度估计方法,通过学习选择性地结合像素及其共享平面的种子像素信息,提高深度预测的准确性。网络结构包括两个头,一个输出平面系数,一个输出偏移向量和置信度图,实现了自适应融合和边缘清晰的深度图预测。实验结果在多个数据集上超越了现有技术。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在这里插入图片描述

Abstract

单目深度估计对于场景理解和后续任务至关重要。我们关注的是有监督的设置,在这种设置中,真实深度仅在训练时可用。基于对真实3D场景高度规律性的认识,我们提出了一种学习选择性地利用共面像素信息来提高预测深度的方法。特别地,我们引入了分段平面性先验,即对于每个像素,都有一个种子像素与前者共享相同的平面三维表面。在这个先验的激励下,我们设计了一个有两个头的网络第一头部输出像素级平面系数,而第二头部输出标识种子像素位置的密集偏移向量场。然后使用种子像素的平面系数来预测每个位置的深度。结果预测通过学习置信度自适应地与第一个头部的初始预测融合,以考虑与精确的局部平面度的潜在偏差。由于所提出模块的可微分性,整个架构是端到端训练的,并且它学习预测规则的深度图,在遮挡边界处具有锋利的边缘。对我们方法的广泛评估表明,我们在监督单目深度估计中设置了新的技术状态,超过了之前在NYU deep -v2和KITTI的Garg分割上的方法。我们的方法提供深度图,产生输入场景的可信3D重建。
Code is available at: https://github.com/SysCV/P3Depth

1. Introduction

深度估计是计算机视觉中的一个基本问题。它包括预测在每个像素处描绘的3D点的垂直坐标。应用范围从机器人到自动驾驶汽车。有实验证据[85]表明,深度和语义分割是执行动作最重要的视觉层面线索。在这项工作中,我们专注于单目深度估计,这涉及到尺度模糊的挑战,因为相同的输入图像可以由无限多个3D场景生成。

目前解决这一任务的趋势涉及到输出密集深度预测的全卷积神经网络,要么采用标准的深度监督[10,13,33,72],要么采用自我监督,使用预测的深度重建场景的邻近视图[17,19,20,86]。大多数监督方法使用像素级损失,分别处理不同像素的预测。这种模式忽略了现实世界3D场景的高度规律性,后者通常会产生分段平滑的深度图。

对真实3D场景的几何知识进行建模的一个常见选择是平面[2,6,42,43]。平面是局部可微深度图的局部一阶泰勒近似,它们很容易用三个独立系数进行参数化。一旦像素与平面相关联,则可以从像素的位置和相关平面的系数中恢复其深度。在[84]中,这种平面系数表示被用来学习明确地预测平面。

我们采用了[84]中的平面表示,但我们脱离了平面的显式预测,而是使用这种表示作为适当的输出空间,用于定义基于平面先验的像素之间的相互作用。特别是,我们的网络的第一个头部输出密集平面系数图,然后转换成深度图,如图2所示。预测平面系数的动机是这样一个事实,即属于同一平面的两个像素p和q在理想情况下具有相等的平面系数表示,而它们通常具有不同的深度。因此,如果像素属于同一平面,则使用q的平面系数表示来预测p位置的深度,结果是正确的预测

我们通过学习识别与检测像素共享同一平面的种子像素来利用这一特性,无论这些像素何时存在,以便有选择地使用这些像素的平面系数来提高预测深度。这种方法是出于一个分段平面先验即为每个像素p与一个关联的3 d平面,在P附近有一个种子像素q与P相同的3 d平面。预测深度用这个框架,我们需要确定(i)先验的区域是有效的,(2)这些地区的种子像素通过预测映射q->p。我们因此设计网络中的另一头,输出密集偏移向量场和置信度图,如图2所示。预测的偏移量用于从第一个头部重新采样平面系数并生成第二个深度预测。然后,使用置信度图作为融合权值自适应地融合来自两个头部的深度预测,以便降低基于偏移的预测的权重,并在分段平面性先验无效的区域主要依赖基本深度预测,例如在场景中具有高频结构的部分。通过监督融合深度预测,对偏移量和置信度图进行隐式监督。由于使用种子像素进行预测,我们的模型隐式学习基于深度图平滑区域中的隶属度对像素进行分组。这有助于保持明显的深度不连续,如图1所示。最后但并非最不重要的是,我们提出了一个平均平面损失,它强制我们预测的3D表面与地面真实情况的一阶一致性,并进一步提高了性能。
在这里插入图片描述
图1 现实世界的3D场景具有高度的规律性。我们提出了一种可以利用这种规律性的方法,通过隐式学习包含有关场景中局部平面的有用信息的中间表示。提出的端到端模型预测高质量的深度图,在遮挡边界处具有锋利的边缘,从而产生一致的3D重建。

我们在NYU deep -v2、KITTI、ScanNet、SUN-RGBD、DIODE Indoor和ETH3D 6个有监督的单目深度估计数据集上广泛评估了我们的方法。与竞争方法的比较表明,我们在NYU deep -v2和KITTI上设置了一个新的技术水平,在NYU和KITTI的Garg分割[17]的所有常用评估指标上超过了以前的最佳表现方法。此外,在具有挑战性的零射传输设置中,我们在ScanNet, SUN-RGBD, DIODE Indoor和ETH-3D上优于先前的艺术状态。我们进行了彻底的烧蚀研究,并定量地展示了我们的深度预测新公式的优点。我们还提供了与先前技术状态的定性比较,这证明了我们的预测的高质量,特别是当后者用于3D重建时。

2. Related Work

有监督的单目深度估计假设真实深度图可用于训练图像,并且需要对单个图像进行推理。早期一个值得注意的方法是Make3D[60],它明确地在场景中手工制作一个分段平面结构,并使用马尔可夫随机场在局部学习相关参数。[10]的多尺度网络通过学习从图像到深度图的端到端映射,开创了深度cnn在深度估计中的应用。之后有几篇文章关注了这一设置,提出了(i)更先进的架构,如残差网络[33]、卷积神经场[44,74]、频域多尺度融合[35]、用于全局深度统计的基于变压器的块[1]和用于处理多分辨率的深度合并网络[51]、(ii)更适合深度预测的损失,如反向Huber损失[33]、分类损失[3]、有序回归损失[13],成对排序损失[72]和几种深度相关损失的自适应组合[36],以及(iii)与法线或语义标签的深度联合学习[9,54,73]。在[79]中,通过将3D点云编码器应用于提升的深度图,解决了混合数据设置中深度偏移和焦距尺度的模糊性。我们的方法属于这一类,将深度预测投射到一个更合适的空间,以利用输入场景的规律。

其他深度估计设置包括无监督和半监督单目深度估计以及基于立体的深度估计。[17]中介绍了基于新型视图合成[11]的立体对深度的无监督学习,该方法使用图像重建损失,其中预测的深度用于将一对图像中的一个图像扭曲到另一个图像的帧中,并在[19]中以完全可微的形式进行了描述。这方面的进一步研究利用了时间信息[48,53,83]。在该框架中对立体对的需求在[86]中被解除,它适用于单目视频。在[28,41,49]中,估计的3D结构和跨视频帧的自我运动的一致性被强制执行。在[27,80]和[77]中,深度和自我运动与光流和语义结合在一起。在[20]中以最小的重投影损失实现了对视频帧间遮挡的鲁棒性。在[21,62]中,专门的损失有助于优化。最近的方法利用测试时间的视频输入[70]、分割输出的一致性[87]和相邻帧之间的比例一致性[68]。无监督方法通常比有监督方法假设更复杂的训练数据,并且存在规模模糊和违反Lambertian假设的问题。半监督深度估计在[30]中被引入,它将稀疏深度测量与图像重建损失相结合。对数据集的特定假设在[40]和[57]中,深度监督的格式也有所放宽,前者利用多视图图像集生成可靠的大规模深度监督,后者利用不同的数据集为单目深度估计提供不同形式的监督,从而更好地泛化未见数据。早期的立体方法依赖于手工制作的匹配成本[23]来估计视差。最初学习匹配函数的方法包括[31,66],而随后的工作依赖于全卷积架构[5,50]。在训练和测试中,立体方法也以立体对的形式假设更复杂的数据,这阻碍了它们在更一般和不受控制的单目环境中的应用。

深度的几何先验在文献中得到了广泛的研究。特别是,分段平面性先验在多视图立体[15]和三维重建[2,6]中被传统地使用,以使这些问题能够更快地优化。这些方法涉及明确的深度平面,并将这些平面拟合到图像超像素或输入点云的点集上。超像素级深度平面也被用于深度去噪和补全[59,67]。在最近的基于深度学习的方法中,几何先验的结合要么通过分割平面显式地执行[37,42,43,82],要么通过适当地设计损失来隐式地执行[81]。在[78]的虚拟法线框架中,通过使用虚拟平面的监督来利用非局部3D上下文,虚拟平面对应于深度图的非共线点的三元组。在[24]中,非局部共平面约束通过深度注意体积嵌入到网络中。在[47]中使用表面法线来增加规则结构的几何一致性。[75,84]中使用了与图像空间中3D平面系数直接相关的表示,而不依赖于相机的固有参数,用于估计场景中的主要深度平面。在[34]中,采用了相同的平面系数表示来指导深度网络解码器部分的上采样模块,达到了最先进的性能。我们也使用平面系数的这种表示,但与[75,84]相反,我们学习它时不需要对平面进行注释。相反,我们将平面系数与空间偏移向量一起优化,以学习识别共面像素,并使用该共面性预测深度。虽然偏移向量在[55]中也被用于仅通过重新采样预测来进行后处理深度,但我们将偏移向量合并到单个端到端架构中,并通过与偏移所指向的种子像素相关的平面进行插值来生成预测

我们的方法受到[52]的启发,该方法训练偏移向量以从注释图像中识别实例分割中心,而我们专注于深度预测并在没有监督的情况下对平面实例进行操作

3. Method

如第1节所述,我们的网络通过选择性地组合每个像素及其对应的种子像素的深度来估计深度。为了使这个公式有效,使用一个可以捕获像素深度和平面信息的通用表示是至关重要的。我们通过使用类似于[84]的平面系数表示来实现这一点。在第3.2节中,我们解释了这种表示,并推导出平面系数和深度之间的解析关系,这使我们能够仅用深度来监督网络平面系数表示的主要优点是,在假设两个像素在同一平面上的情况下,可以通过不同像素的平面系数直接计算图像中像素的深度。这一优势构成了我们的平面先验使用种子像素的选择性平面深度引导的基础,我们将在第3.3节中解释。最后,在第3.4节中,我们提出了一个额外的补丁级平均平面损失,它与前面的组件互补,并独立地有助于学习规则深度图。

3.1. Preliminaries

单目深度估计需要学习一个密集映射fθ: I(u, v)→D(u, v),其中I是空间维度为H ×W的输入图像,D是相同分辨率的相应深度图,(u, v)是图像空间中的像素坐标,θ是映射f的参数。在监督设置中,每个图像I在训练时都有一个真地深度图D∗。在训练过程中,对参数θ进行优化,使函数fθ在训练集T上最小化预测深度与真实深度之间的差值。

这可以形式化为
在这里插入图片描述
其中L是一个损失函数,用于惩罚预测与基本事实之间的偏差。此外,给定深度图D和相机特性,我们可以将每个像素反向投影到3D空间。使用针孔相机模型,给定焦距(fx, fy)和主点(u0, v0),每个像素p = (u, v)T映射到一个三维点p = (X, Y, Z)T,根据
在这里插入图片描述

3.2. Plane Coefficient Representation for Depth

假设后投影的三维点P对应于三维场景的平面部分。对应平面的点法向式方程可以写成n·P + d = 0,其中n = (a, b, c)T是平面的法向量,- d是平面到原点的距离。将式(2)中的P代入点法方程得到
在这里插入图片描述
因此,对于描绘平面3D曲面的图像区域,逆深度是像素位置的仿射函数,其中系数编码相机本征和3D平面。引入ρ = q - α2 + - β2 + - γ2,并将α = - α ρ, β = - β ρ和γ = - α ρ归一化为
我们把C = (α, β, γ, ρ)T作为平面系数。使用这种符号,(4)可以写成Z = h(C, u, v)。我们没有直接预测深度,而是设计了一个平面系数头,它首先预测一个密集的平面系数表示C(u, v),然后应用(4)来计算一个初始深度预测,我们用Di表示。更正式地说,3.1节中的映射fθ现在是一个复合fθ = h◦(gθ, p),其中gθ: I(u, v)→C(u, v)将输入图像映射到平面系数表示,h: (C(u, v), u, v)→Di(u, v)在每个像素上应用(4)。通过(1)对输出深度Di进行监督。

与直接预测深度相比,预测平面系数作为中间输出并不具有直接优势。然而,描绘相同3D平面的两个像素具有相同的参数C,但通常具有不同的深度。这一事实是网络下一部分的核心,它允许通过选择性地从种子像素引导平面系数来预测深度

3.3. Learning to Identify Seed Pixels

假设我们有一个像素p,它属于三维平面。根据定义,该平面上的每个其他像素具有相同的C值。因此,在理想情况下,网络只需要在这些像素之一q处预测C,就可以获得所有正确的深度值。这个像素可以被解释为描述平面的种子像素。然而,定义这个种子像素和深度应该从它引导的区域是不平凡的。因此,在这项工作中,我们让网络发现这个种子像素和相应的区域。

正式地,让我们从定义分段平面性开始,这是之前思想的放松版本。

定义1。(分段平面性先验)对于每一个与三维平面相关联的像素p,在p的邻域存在一个种子像素q,该种子像素q也与p在同一平面相关联。

注意,一般来说,p可能存在多个种子像素,也可能没有种子像素

鉴于先验成立,p的深度预测任务也可以通过识别q来解决,即通过预测偏移量o§ = q−p。

因此,我们设计了我们的模型,使其具有第二个偏移头,并让该偏移头预测密集的偏移向量场o(u, v)。网络的两个头共享一个公共编码器,并具有单独的解码器,如图2所示。我们使用预测的偏移向量场来重新采样平面系数
在这里插入图片描述
使用双线性插值来处理部分映射。然后使用重新采样的平面系数来计算第二次深度预测
在这里插入图片描述
根据种子的位置。这允许网络从种子像素引导深度。

然而,先验并不总是有效的,因此初始深度预测Di实际上可能比基于种子的预测Ds更可取。为了解释这种情况,第二个头部还预测了一个置信度map F (u, v)∈[0,1],表示模型使用预测的种子像素通过Ds估计深度的置信度。利用置信度图自适应融合Di和Ds来计算最终深度预测:
在这里插入图片描述
我们对模型中的Df、Di和Ds分别施加监督,通过优化以下损失:
在这里插入图片描述
λ和µ是超参数。通过这种方式,我们鼓励(i)平面系数头输出一个在所有像素上都准确的表示,即使它们具有高置信度值;(ii)偏移头学习平面先验持有的像素的高置信度值和相反的低置信度值。

然而,在这个公式中有一个警告。特别是,模型不直接监督偏移量。事实上,它可以简单地预测任何地方的零偏移仍然可以得到有效的预测Ds和Df,它们和Di是一样的。由于神经网络的映射fθ的规律性,最初的预测Di在深度边界附近被错误地平滑,因此在实践中避免了这种不必要的行为。因此,对于边界两侧的像素,预测指向远离边界的非零偏移量会产生较低的Ldepth值,因为这样的偏移量使用距离边界更远的Ds种子像素,并且由于平滑而遭受较小的误差。此外,由于产生偏移向量场的映射的规律性,这些非零偏移从边界传播到具有平滑深度的区域的内部部分,有助于网络预测非平凡偏移。

在我们方法的完整版本中,我们在重新采样平面系数映射之前多次级联偏移向量。例如,单个级联步骤对位置p + o§ + o(p + o§)进行采样。我们进行这种级联细化的动机是同一平面区域内的种子像素应该收敛到区域的中心,这有助于从更多像素中积累信息来预测区域的平面系数。同时,没有可靠种子像素的像素无论如何被分配一个低置信度值,因此级联偏移量不会损害各自的深度预测

3.4. Mean Plane Loss

我们用来表示平均平面损失的假设是,给定一个像素坐标,它的邻近像素应该位于3D空间的同一平面上。这个平面的法向n应该满足一个超定的线性方程组。然而,地面真实深度图通常是由具有噪声测量和有限精度的消费者级传感器捕获的,这使得上述法线局部拟合的制度不适用,因为不能保证找到真正的最优解。

尽管这是一个有效的观察结果,但深度测量仍然包含了关于场景结构的全面细节。这些信息可以在局部聚合,以加强预测和地面真实3D表面之间的一阶一致性。法线是跨补丁执行聚合的一种方式。对于一个输入patch,对应的法向n需要满足An = b, s.t∥n∥2 = 1,其中A是由patch中三维点叠加而成的数据矩阵,b是1的向量。根据[12,54],该最小二乘问题的闭型解为:
在这里插入图片描述
为了计算平均平面损失,我们首先估计D和D *中所有K个非重叠斑块的表面法线,然后对它们的差进行惩罚
在这里插入图片描述
对于具有深度不连续的斑块,即使斑块k的n∗k不对应于真实三维平面,平均平面损失仍然提供了一个有用的监督信号,因为它惩罚了与n∗k不一致的局部深度剖面。此外,与[54]相反,我们不需要真标准线。由式(9)可知,损失(10)通过a直接影响patch内所有点的深度,最终完全损失为Ltotal = Ldepth + LMPL

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值