发布时间:2021年
- 概率几何深度:在透视图像中检测对象
- 摘要
- 介绍
- 相关工作
- 2D目标检测
- 单目深度估计
- 单目3D目标检测
- 子网络方法
- 转换为3D数据表示
- 像2D目标检测一样的端到端设计
- 预备节和动机研究
- 我们的方法
- 基于概率表示法的不确定性建模
- 对透视几何图形进行深度传播
- 透视关系
- 基于图的深度传播
- 概率和几何深度估计
- 实验
- 数据集和评价指标
- 实施细节
- 网络结构
- 训练参数
- 数据增强
- 定量分析
- 消融实验
概率几何深度:在透视图像中检测对象
摘要
3D目标检测在辅助驾驶系统和其他各式各样的工程实践中有着极重要的作用。单目3D目标检测,作为基础图像任务中一个具有代表性的设定,虽然提供了一个比传统的依赖于激光雷达传感器的方法更具有性价比的方法,但至今无法达到一个满意的结果。本文首先对这一问题进行了系统的研究。我们注意到,当前的单目3D目标检测问题可以被简化为一个实例深度估计问题,原因是,一个不准确的实力深度估计会阻碍所有其他的3D属性预测使得最终的整体结果无法得到提升。因此,我们将预测到的物体组合起来构建一个几何关系图,并用此图来补偿深度估计。在这样一个不适定问题中,由于初步深度估计通常是不准确的,我们采用了一个概率来表示这种不准确性。它为确定可信预测和进一步指导深度传播提供了一个重要指标。尽管这样的一个想法十分的简单,但是我们的方法PGD却在KITTI和nuScenes数据集上获得了显著的性能提升,不仅在所有单目方法中排名第一,而且还保证了实时性。
介绍
3D目标检测在自动驾驶和其他机器人系统中是一项重要的任务。最近,该领域的先进方法通常依赖于各重传感器,例如激光雷达、雷达图、双目视觉或者他们的一些组合,希望通过这种方式获取准确的深度信息。但是这些感知系统是十分复杂昂贵的,并且并不容易搭建。相比之下,单目3D目标检测,一个致力于从2D图像中检测3D目标的方法,由于其低廉的成本而受到越来越多的关注。然而,由于深度信息并不作为该方法的输入,使得它成为了一个先天的不适定问题,让这个方法非常的具有挑战性。
本文首先以定量的方式在两个权威的benchmark上对该方法的问题进行了调研。尽管我们已然知晓深度信息对于该任务来说十分的重要,但是我们惊讶的发现不准确的深度信息会让所有其他定位预测无法取得较好的精度。可以看出,实例深度是方法的瓶颈,所以我们将单目3D目标检测简化为实例深度预测问题以此来从本质上解决它。
此前的一些方法首先使用一个复杂的深度估计网络来为2D目标检测器补偿深度信息。之后一些方法通过将深度的回归直接作为3D定位任务的一部分来简化网络结构。然而,他们的共同问题是,他们仍然简单的使用一个深度回归器从独立的实例或像素中回归深度。我们观察到,每一个物体都和其他的物体共同存在于同一张图像中,他们之间的几何关系对于预测出准确的深度信息很有帮助。
基于这些观测结果,我们提出了一种概率和几何深度方法,该方法通过联合概率深度的不确定性和共同存在的物体之间的几何关系来获得精确地深度估计。具体来说,由于每个实例的初始深度估计在这个不适定设置中通常是不准确的,我们加入了一个概率表示来捕获估计深度的不确定性。我们首先将深度值分割到一组区间中,并根据分布的期望值来计算深度(图1(a))。将分布中top-k置信分数的平均值作为深度的不确定性。为了模拟几何关系,我们进一步构造了一个深度传播图,以增强其上下文关系的估计。每个实例深度的不确定性为其中的传播提供了有用的指导。得益于这个总体方案,我们可以很容易地识别具有更高置信度的预测,更重要的是,利用基于图的协同机制更准确地估计它们的深度。
我们在一个简单的单目三维目标探测器FCOS3D上实现了该方法。尽管基本思想很简单,我们的PGD还是在使用不同的基准设置和评估指标下,在KITTI和nuScenes上取得了显著的性能提升。它在所有单眼视觉方法中获得第一名,同时仍然保持实时效率。这种简单而有效的方法证明,只需根据深度进行设计,二维探测器就能够检测透视物体。
相关工作
2D目标检测
现代2D目标检测方法可以分为有锚和无锚两个分支。有锚的方法由于预设了锚,使回归任务变得简单;无锚的方法由于没有复杂的先验设定使得它具有更好的普适性。考虑到FCOS处理这档和尺度方差的能力,我们使用了FCOS的3D分支——FCOS3D作为我们改进的baseline。
单目深度估计
单目深度估计和单目3D目标检测一样是一个具有挑战性的不适定问题。它的目的是在给定RGB图像的情况下预测像素级别的密集的全局景深场。早期的工作是用非参数优化方法从人造的特征中预测深度。随着cnn的快速发展,全监督方法、基于立体匹配和单目视频的自监督方法逐渐出现。虽然这个问题已经被探索了很长时间,但很少有在特定任务中专门研究它,比如物体检测,密集的深度监督总是不能保证,我们只关心实例深度的准确性,而不是全局景深场。
至于深度学习问题的重新定义,已经有人做了一些尝试,例如,DORN将深度学习问题重新定义为序数回归,并提出了一种间隔增加离散化(SID)策略来改进网络训练和减少计算。它类似于我们对不确定性建模的概率表示的基本思想,但在动机和设计细节方面有所不同。
单目3D目标检测
单目3D目标检测比2D的情况更复杂。潜在的问题是,输入的2D数据和输出的3D预测并不匹配。
子网络方法
早期的工作使用子网络来辅助3D检测。3DOP和MLFusion使用深度估计网络,而Deep3DBox使用二维目标检测器。它们依赖于这些子网络的设计和性能,甚至是外部数据和预先训练过的模型,这使得训练不方便,并引入了额外的系统复杂性。
转换为3D数据表示
另一种类型是将RGB输入转换为三维数据,如OFTNet和伪lidar。尽管这些方法有较好的效果,但它们实际上依赖于密集的深度标签,因此不被视为纯粹的单目方法。由于不同的深度传感器数据之间存在域跨度,这使得它们很难顺利地推广到一个新的实际问题当中。此外,处理大量点云的效率也是实际应用中需要处理的一个重要问题。
像2D目标检测一样的端到端设计
最近的工作注意到了这些缺点,并因此提出了端到端框架。M3D-RPN实现了一个具有端到端区域建议网络和深度感知卷积的单级多类检测器。SS3D提出了检测二维关键点,并进一步预测具有不确定性的物体特征的方法。MonoDIS引入了一种解纠缠损失来减少训练过程的不稳定性。其中一些仍然有多个训练阶段或后优化阶段。此外,它们都是基于锚点的方法,因此需要确定二维和三维锚点的一致性。相比之下,无锚点方法不需要对给定的数据进行统计,并且对更多不同的类或不同的内在设置具有更好的通用能力,所以我们选择遵循这个范式。然而,所有这些工作都很少针对实例深度估计进行定制设计,而只将其作为孤立点或实例的一个共同回归目标。它实际上阻碍了这一问题的突破,这将在我们的定量研究中讨论,并在我们的方法中具体讨论。
预备节和动机研究
在本节中,我们的目标是在一个基础的自适应的单目3D检测器上进行深入的定量误差分析,以确定特定的3D检测任务中存在的关键问题。通常,传统的2D目标检测期望模型能够预测每个感兴趣对象的2D边界框和类别标签,而单目3D检测器需要在相同输入下预测7自由度的3D框选框。从问题量化的角度来看,主要的问题在于对目标的回归。与2D相比,单眼3D检测性能更差的一个直观原因是,在定位过程中存在更多困难的回归目标。因此,我们选择了一个简单的检测器FCOS3D 来研究具体问题,它保留了二维特征提取设计,并加入了三维检测网络的基本设计元素,使它能够适用于该3D任务。如图3左侧所示,网络的两个分支分别进行分类和回归定位。从输出形式上来看,回归分支需要输出目标的3D属性,包括:
- 3D中心的偏移量,
- 深度
- 3D尺寸{}
- 航向角的值
- 方向种类
- 中心度
- 3D中心在2D平面的投影点到2D检测框四个边的距离{}
我们在3D和2D定位之间追加了一个连续性损失,这个损失将在追加材料中详细说明。
基于此,我们将这个baseline应用在两个具有代表性的banchmark上,分别是KITTI和nuScenes,并一步一步地用真值取代预测值来观察性能瓶颈(如图 2)。出乎意料的是,在两个数据集上使用不同的指标衡量性能,都表现出以下规律:一个不准确的深度信息会阻碍其他子任务准确率的提升。因此,目前的单目三维检测,特别是三维定位,可以在很大程度上简化为实例深度估计问题,这将是我们接下来提出的方法的重点。更多的关于Oracle的分析清参见补充材料。
图片译文:在使用不同数据集和策略下的Oracle分析。从左到右依次是:在KITTI数据集上基于3D IoU的mAP指标、NuScenes 检测分数(NDS)、在nuScenes上基于距离的mAP指标。我们用真值逐渐替换预测值来观察性能的改进。可以看到,一个准确的深度值可以使性能显著提升,并且,只有在有了准确精度的前提下,其他的准确信息(偏移量、尺寸等)才会对性能的提升有所帮助。
我们的方法
对于给定的一张图像,之前的做法是直接使用回归方法得到实例的深度估计,并期望模型能够学习到具有特定外观和尺寸的物体总会位于特定的深度。我们的baseline也是遵从了此类思想。然而,由于物体之间存在较大的不一致性使得这种抽象特征很难被学习到,所以这种做法显然不足以满足3D目标检测的准确性要求。考虑到对孤立点做回归的问题,我们的方法致力于构建一个不确定性感知的深度传播图,试图以实例的上下文联系促进深度估计的结果。之后我们江都所采用的概率表示和几何图构造方法进行详细说明,最后将展示如何对所获得的深度进行合并。
基于概率表示法的不确定性建模
对于一个单阶段的检测器来说,直接深度估计的一般形式是一个小的头部外加一个能够输出稠密深度图的回归分支。如图3所示,我们假定输入特征图的尺寸为,直接的深度估计的输出记为,基于此,为了建立一个有效的深度传播机制,对每个实例的深度估计的不确定性进行建模是一个重要的开始,这能为实例之间的权重传播提供有利的指导。我们采用了一个简单有效的概率表示来达到这一目的:我们假定深度值在一定范围内是连续的,我们均匀地将这些深度区间量化为离散值并用分布的期望值来表示预测结果。我们假定检测结果的范围是,离散间隔为,所以我们会得到个离散的点。我们将点集表示为权重向量,我们引入了一个和直接回归分支平行的头,用于产生概率图,他可以被表示为:
这里的就是所谓的概率深度。它等价于计算由形成的概率分布的期望。除了,我们能更进一步的从每一个实例的深度分布中获得深度的置信分数,我们将其记为。随后我们用一个单参数变量的相应混合和:
这里将{D_L}视为每个孤立实例的局部深度估计,并与由{D_PM}所得到的深度分数一起作为构造深度传播图的基础。
值得注意的是,我们的方法不同于单目深度估计的传统方法,传统方法一般通常对深度区间采用细粒度量化,并通过分类和残差回归进一步估计值。相比之下,我们的方法能够更有效的利用内存、更直接的回归连续值、并且为不确定性估计提供了一个自然而然的指标。关于与其他深度区间划分法比较的实证结果,请参考补充资料。
对透视几何图形进行深度传播
结合孤立实例之间的深度预测结果和他们的不确定估计的深度置信分数,我们能够基于上下文中的几何关系构造出传播图。一个典型的驾驶场景具有一个一般约束:所有的车都处于地面上。Hoiem等人利用这种约束,通过对不同元素进行建模,来将物体置于整个3D场景的上下文中。在这里,针对深度估计问题,我们提出了一个几何深度传播机制,并考虑了实例之间的相互依赖性。接下来,我们将首先推导出两个实例之间的透视图关系,然后给出基于边缘剪枝和门控的基于图的深度传播方案的细节。
透视关系
考虑在一般的投影场景中,假定相机的投影矩阵为:
其中,是焦距,和是相机在图像中的垂直和水平距离,和是相对于参考相机的基线(在KITTI数据集中是非零的,但在nuScenes中为0)。注意,我们用单个f来表示焦距,因为大多数相机的轴和轴共享相同的焦距。然后一个在相机坐标系中的3D点就可以被映射为一个图像中的2D点:
为了简化这个结果,我们将替换为,其中代表到地平线的距离(在图像 4中,向下是正方向)。然后我们就得到:
对于而言有相似的关系式。考虑到所有物体都在地面的约束,物体的底部中心总是拥有相同的(相机坐标系中的高)。所以接下来我们主要考虑。给定两个物体1和2,他们中心的深度关系能够从式5中推导出来:
通过该式子,我们可以在给定的情况下,利用3D中心之间的高度差精确地预测。此外,我们可以利用物体都在地面的约束,假设所有物体具有相同的底部高度,那么两个物体3D中心的高度差就可以被近似为两个物体3D框选框的高度差的一半,即,我们将他记为。
在这个关系式中,当时有,这是容易理解的。也就是说,一个更接近消失线的物体会更远。这个关系式很显然可以将不同的实例联系起来,但它也会产生错误。假设,那么深度的误差就会是。当(pixels)时,。尽管这对于以外的物体来说是可以接受的(当时),我们还是需要一种机制来避免这种潜在的巨大误差。它包括接下来要描述的边缘剪枝和门控方案,以及将在4.3节中提到的具有位置感知能力的权值图。
基于图的深度传播
通过成对透视关系,我们可以从其他物体的线索中估计出任何物体的深度。然后我们可以构造一个密集的有向图,在任意两个对象之间有两条双向边来表示深度传播(如图 4)。假定我们有个需要预测的物体,他们被编号为,对于所有的,在给定的情况下我们可以算出物体的深度,我们将其定义为几何深度。考虑到计算效率和前面所提到的可能出现的巨大误差,我们提出了一种边剪枝和门控方案来改进传播图。从我们的观察中看出,相同类别的邻近物体可以很好地满足“同一地面”条件,所以我们选择以下3个最重要的因素来决定哪些边是有影响的和可靠的,包括深度置信度,2D距离得分和分类相似度。后面两个和所有边的得分按照如下方式计算:
其中是物体和物体之间的2D距离,是图像对角线的长度,和是网络的分类分支输出的两个物体的置信度向量,是剪枝后需要保留的边的最大数目(拥有最高分数的k个边将被保留)。而后,边缘得分被用于门控,以便让每个节点根据其重要性关注其边缘:
请注意,从这个图中获得几何深度图是没有可学习的参数的。为了避免影响到其他组件的学习,我们切断了该部分计算的梯度反向传播,并且只关注如何对和进行合并,这些将在后续的章节中进行讨论。
概率和几何深度估计
到目前为止,我们已经分别从孤立的和基于图的上下文估计中得到了两个深度预测和。然后,我们以一种学习的方式来整合这两个互补的组件。与局部估计中使用的单一未知参数不同,由于和更加复杂和灵活,整合这两个结果应该更加麻烦。所以我们进一步引入了一个分支,用以产生一个位置感知权重图,并以此来融合他们(如图 3):
融合深度将取代基线中的直接回归而出的,并以相同的端到端方式使用普通的平滑损失进行训练。请注意,根据经验,添加中间监督可以使训练更稳定,但不会带来任何效益上的提高。
实验
在本节中,我们将介绍我们的实验设置和实现细节,然后对KITTI和nuScenes数据集进行定量分析,并详细介绍了性能和效率。最后,我们进行了详细的消融研究,以显示我们的方法中每种成分的有效性。有关更多的定性分析,请参考补充材料。
数据集和评价指标
我们在KITTI和nuScenes两个数据集上评估了我们的方法。在KITTI上分别有7481/7518个样本用于训练/测试,训练样本简单的划分为3712/3769个样本用于训练/验证。我们首先在这个流行的基准测试上验证我们的方法。然而,在KITTI上,场景和类别的种类是有限的,所以我们在大规模的nuScenes数据集上进一步测试了我们的方法。NuScenes由从1000个场景收集的多模态数据组成,包括来自6个摄像机的RGB图像,来自5个雷达和1个激光雷达的点云。它被分成700/150/150个场景,以进行训练/验证/测试。总共有来自10个类别的1.4M个带注释的3D边界框。此外,nuScenes使用了不同的度量标准,基于距离的mAP和NDS,这可以帮助从另一个角度评估我们的方法。请在补充材料中查看更多关于指标的解释。
实施细节
网络结构
如图3所示,我们的基线框架基本遵循了FCOS3D的设计。给定输入图像,我们使用ResNet101 作为特征提取主干,然后使用FPN来生成多级预测。检测头在多层次的特征图中共享,除了三个尺度因子,包括偏移量、深度和尺寸。对于深度估计模块中的超参数,设置为,设置为5。整个框架建立在MMTenstoch3D之上。损失设计及其他实施细节请参考FCOS3D及其补充资料。
训练参数
在所有的实验中,我们从端到端方式从头训练随机初始化的网络。模型使用SGD优化器进行训练,它采用了梯度剪切和预热策略,我们将学习率设置为0.001,预热次数为500,预热率为0.33,对于KITTI和nuScenes数据集,分别在16/4块GTX 1080Ti GPUs上进行训练,批次大小分别为32/12。
数据增强
我们仅使用翻转来增强图像,这样的做法会使得2D图像中的偏移量被翻转,同时3D框选框也在3D空间中进行相应的转换。除此之外不再有其他增强。
定量分析
我们对KITTI数据集(表1和表4,图1©)和更有难度、更少验证的nuScenes数据集(表2)进行了定量分析。可以看出,我们的方法在使用不同的设置和度量标准的前提下,在两个数据集上都达到了最先进的水平,同时保持了卓越的速度。
我们与近期的一些单目方法在KITTI数据集上进行了对比。由于小物体的样本有限,因此这里只比较汽车检测的结果。我们的框架基于简单自适应的FCOS3D,比其他框架取得了更好的性能,即使M3D-RPN和RTM3D采用了更强的骨干和数据增强。此外,我们的方法可以以36Hz的速度运行来实现这一点,这要感谢我们的大多数模块没有引入额外的计算成本来进行推断。这是性能和效率之间的一个极好的权衡。
然后对于nuScenes数据集,我们还分别比较了测试集和验证集上的结果。在测试集上,我们首先使用RGB图像作为输入数据来比较所有的方法。我们的模型以37%的mAP和42%的NDS在所有其他模型中表现最佳。并且,我们的mAP比之前最好的方法要高出3%。我们还列出了基于其他数据形式的数据集,包括PointPillars, CenterFusion和CenterPoint。可以看出,虽然我们的方法与高性能的CenterPoint有一定的差距,但它甚至在mAP上超过了PointPillars和CenterFusion。这也表明了,不适定问题在有足够多的数据的情况下也可以被妥善的解决。同时,使用其他模态数据的方法通常会产生更好的NDS,这主要是因为mAVE较小。其原因是它们可以通过连续的多帧点云或雷达所测得速度来预测物体的速度。相比之下,我们在实验中只使用了单帧图像。因此,如何从连续帧图像中挖掘速度信息将是未来值得探索的方向。在验证集上,我们将我们的方法与最好的开源的基于中心点的检测器CenterNet进行了比较。我们的方法不仅在训练和推理方面更有效(训练3天的CenterNet与仅训练一天的我们的模型效果相当),而且还取得了更好的性能,特别是在mAP和mAOE方面。在此基础上,我们最终在NDS上提高了约9%。参见补充材料中关于深度估计精度和每分类检测性能的更详细结果。
消融实验
最后,我们进行了消融研究,以验证我们提出的关键组件对KITTI(表3)和nuScenes(表5)的有效性。我们可以观察到,局部约束可以初步的增强基线,我们的概率和几何深度进一步显著提高了性能,特别是在mAP和转换误差(mATE)方面。表7和表8展示了两个核心组件在时改进深度估计的更多细节。可以看出将直接回归结果的概率表示(表7)和深度得分进行结合能够充分利用二者。对于几何深度,与局部估计的融合不能带来理想的增益。通过边缘剪枝、门控(边缘门控)和切断不需要的梯度传播(切断梯度)可以帮助消除可能存在的噪声,促使学习更加专注于最终的整合,从而使整体方案更加有效。至于替代实现,我们比较了从概率分布中计算深度得分的可行方法(表6)。与其他更复杂的方法相比(如归一化熵和标准差),我们利用最高得分的二者可以以更好的效率获得更好的结果。