FCOS升级 | FCOS在3D检测中应该如何使用呢?FCOS3D就是最好的验证(一)

简介: FCOS升级 | FCOS在3D检测中应该如何使用呢?FCOS3D就是最好的验证(一)

单目3D目标检测是自动驾驶的一项重要任务,因为它具有成本低的优点。由于其固有的不适定性,它比传统的2D检测更具挑战性,这主要反映在缺乏深度信息上。2D检测的最新进展为更好地解决这一问题提供了机会。然而,使通用2D检测器在3D任务中工作是非常重要的。

在本文中,在FCOS的基础上研究了这个问题,并提出了一个通用框架FCOS3D。具体来说:

  1. 首先将通常定义的7-DoF 3D目标转换到图像域,并将其解耦为2D和3D属性;
  2. 然后,考虑到目标的2D比例,将目标分配到不同的特征尺度,并仅根据用于训练过程的投影3D中心进行分配;
  3. 此外,利用基于3D中心的2D高斯分布重新定义中心度,以适合3D目标公式。

所有这些都使该框架简单而有效,消除了任何2D检测或2D-3D对应先验。本文的解决方案在NeurIPS 2020的nuScenes 3D检测挑战中获得了所有仅视觉方法中的第一名。

Github: https://github.com/open-mmlab/mmdetection3d


1、简介


目标检测是计算机视觉中的一个基本问题。它旨在识别图像中感兴趣的对象,并使用相应的2D边界框预测它们的类别。随着深度学习的快速发展,近年来2D检测得到了很好的探索。各种架构,如Faster R-CNN、RetinaNet和FCOS,显著促进了该领域的进步,并使自动驾驶等各种应用受益。

然而,2D信息不足以让智能代理感知3D真实世界。例如,当自动驾驶汽车需要在道路上平稳、安全地行驶时,它必须具有周围物体的准确3D信息,才能做出安全的决策。

因此,3D检测在这些机器人应用中变得越来越重要。大多数最先进的方法依赖于激光雷达点云提供的精确3D信息,但在每辆车上安装昂贵的激光雷达是一个沉重的负担。因此,单目3D目标检测作为一种简单而廉价的部署方法,成为当今一个非常有意义的研究问题。

考虑到单目2D和3D检测具有相同的输入但不同的输出,单目3D目标检测的直接解决方案是遵循2D领域中的实践,但添加额外的组件来预测目标的附加3D属性。

之前的一些工作预测2D框,并进一步回归2D中心和感兴趣区域之上的3D属性。也有工作同时预测具有与每个2D Anchor对应的3D先验的2D和3D框。另一个基于冗余3D信息的方法流,在最终预测优化结果的额外关键点。

总之,根本的问题是如何将3D目标分配到2D域,并在2D域与3D域之间建立对应关系,然后对其进行预测。

在本文中,采用了一种简单而有效的方法,使2D检测器能够预测3D定位。首先将通常定义的7-DoF 3D位置投影到2D图像上,并获得投影的中心点,与之前的2D中心相比,作者将其命名为3D中心。利用该投影,3D中心包含2.5D信息,即2D位置及其对应深度。2D位置可以进一步减少到从图像上的某一点的2D偏移,这是唯一的2D属性,可以像在2D检测中那样在不同Level的特征之间归一化。

相比之下,深度、3D大小和方向在解耦后被视为3D属性。通过这种方式,使用基于中心的范例来转换3D目标,并避免任何必要的2D检测或2D-3D对应先验。

作为一个实际的实现,在FCOS上构建了本文的方法。首先考虑目标的二维尺度,将其分布到不同的特征尺度。然后,仅根据投影的3D中心来分配每个训练样本的回归目标。与FCOS相比,FCOS表示距离边界的中心度,使用基于3D中心的2D高斯分布表示3D中心度。

本文在一个流行的大规模数据集nuScenes上评估了本文的方法,并在没有任何先验信息的情况下获得了该基准的相机跟踪的第一名。

此外,只需要0.5倍的计算资源,就可以在一天内训练出一个性能与之前最好的开源方法CenterNet相当的基线模型,速度也比它快3倍。这两者都表明本文的框架简单高效。详细的消融研究也表明了每个组件的重要性。


2、相关工作


2.1、2D目标检测

随着深度学习方法的突破,2D目标检测的研究取得了巨大进展。根据最初猜测的基础,现代方法可以分为两个分支:Anchor-Base和Anchor-Free。

Anchor-Base从预定义的Anchor中受益,回归更容易,同时也有许多超参数需要调整。相比之下,Anchor-Free方法不需要这些预先设置,因此更整洁,通用性更好。

为了简单起见,考虑到FCOS处理重叠GT和尺度方差问题的能力,本文以具有代表性的Anchor-Free检测器FCOS作为基线。

从另一个角度来看,单目3D检测是与2D检测密切相关的更困难的任务。但很少有研究他们之间的联系和差异的工作,这使得他们彼此孤立,无法从彼此的进步中受益。本文旨在以FCOS为例,进一步构建这两个任务之间的更紧密联系。

2.2、单目3D目标检测

单目3D目标检测比传统的2D检测更为复杂。潜在的关键问题是输入的二维数据模态和输出的三维预测的不一致。

1、涉及子网络的方法

第一批工作依靠子网络来辅助3D检测。仅举几个例子,3DOP和MLFusion使用深度估计网络,而Deep3DBox使用2D检测器。它们都严重依赖于子网络的性能,甚至外部数据和预训练的模型,使得整个系统变得复杂且不方便训练。

2、转换为3D表示

另一类方法将输入RGB图像转换为其他3D表示,例如体素和点云。最近的工作在采用这种方法后取得了巨大进展,并表现出了良好的性能。

然而,它们仍然依赖密集的深度标签,因此不被视为纯单目的3D检测方法。不同深度传感器和激光雷达之间也存在领域差距,使得它们很难顺利推广到新的实践环境中。

此外,当将这些方法应用于现实世界场景时,很难处理大量点云。

3、端到端设计,如2D检测

最近的工作注意到了这些缺点,并开始设计端到端框架,如2D检测器。例如,M3D-RPN提出了一种具有端到端区域建议网络和深度感知卷积的单阶段检测器。SS3D检测2D关键点,并进一步预测具有不确定性的目标特征。MonoDIS改善了多任务学习,同时消除了混乱。这些方法遵循Anchor-Base的方式,因此需要去精细化一致的2D和3D Anchor。其中一些还需要多个训练阶段或手工制作的后期优化阶段。

相比之下,Anchor-Free方法不需要对给定数据进行统计。将它们的简单设计推广到具有更多不同类或不同内在设置的更复杂的情况更方便。因此,选择遵循这种范式。

然而,这些工作几乎没有研究将普通2D检测器应用于单目3D检测时的关键困难。在提出新框架时,很少讨论其中应保留或调整的内容。

相比之下,本文着重于这一点,这可以在将典型的2D检测器框架应用于密切相关的任务时提供参考。


3、本文方法


目标检测是场景理解中最基本和最具挑战性的问题之一。传统2D检测的目标是预测每个感兴趣目标的2D边界框和类别标签。相比之下,单目3D检测需要预测3D边界框,而这些边界框需要解耦并转换到2D图像平面。

3.1、整体框架

全卷积单阶段目标检测器通常由3个部件组成:

  • 用于特征提取的Backbone
  • 用于多级分支构造的Neck
  • 用于密集预测的Head

image.png

1、Backbone

使用预训练的ResNet101和可变形卷积进行特征提取。在实验中,它在精度和效率之间实现了很好的权衡。这里作者固定了第一卷积块的参数,以避免更多的内存开销。

2、Neck

第二个模块是特征金字塔网络,它是检测不同尺度目标的主要组件。如图2所示,为了精确说明,将Level-3到Level-7的特征图表示为P3到P7。遵循原始FCOS以获得P3到P5,并用2个卷积块对P5进行下采样以获得P6和P7。所有这5个特征图都负责之后不同尺度的预测。

3、Head

最后,对于共享检测头,需要处理2个关键问题:

  • 如何将目标分配到不同尺度的特征和不同的点?
  • 如何设计架构?

作者遵循RetinaNet和FCOS的设计思想。每个共享Head由4个共享卷积块和用于不同目标的小头部组成。根据经验,为具有不同测量值的回归目标构建额外的解耦Head更有效,因此为每个目标设计了一个小Head(图2)。

4、回归目标

首先,首先回顾FCOS中目标检测的Anchor-Base方式的公式。给定Backbone第层的特征图,表示为,需要基于该特征图上的每个点来预测目标,该特征图对应于原始输入图像上均匀分布的点。

形式上,对于特征图上的每个位置,假设直到第层的总stride为s,则原始图像上的对应位置应为。与Anchor-base的检测器通过将预定义Anchor作为参考来回归目标不同,FCOS基于这些位置可以直接预测目标。

此外,由于不依赖Anchor,判断一个点是否来自前景的标准将不再是Anchor和GT之间的IoU。相反,只要该点足够靠近GT框中心,它就可以是前景点。

在2D情况下,模型需要回归点到顶部/底部/左侧/右侧的距离,如图1中的、、、所示。然而,在3D情况下,将距离回归到3D边界框的6个面是非常重要的。相反,更直接的实现是将通常定义的7-DoF回归目标转换为2.5D中心和3D尺寸。2.5D中心可以通过相机固有矩阵转换回3D空间。回归2.5D中心可以进一步简化为回归从中心到特定前景点的偏移∆x、∆y及其相应深度d。

此外,为了预测目标的异中心方向,将其分为2部分:角度θ和周期π,以及2方向分类。

第1个部分自然地用GT框来模拟预测的IOU,而第2个部分则侧重于2个框具有相反方向的对抗性情况。得益于这种角度编码,本文的方法在定向精度方面超过了另一个基于中心的框架CenterNet,这将在实验中进行比较。旋转编码方案如图3所示。

image.png

除了这些与目标的位置和方向相关的回归目标之外,还回归了类似FCOS的二维目标中心度c。它作为Softmax分类器来确定哪些点更接近中心,并有助于抑制那些远离目标中心的低质量预测。

总之,回归分支需要预测θ,方向类别θ和中心度,而分类分支需要输出对象的类别标签及其属性标签(图2)。

5、损失函数

对于分类和不同的回归目标,分别定义它们的损失,并将它们的加权和作为总损失。

首先,对于分类分支,将常用的Focal Loss用于分类损失:

image.png

其中p是预测框的类概率,α=0.25和γ=2。

对于属性分类,使用一个简单的Softmax分类损失,表示为。

对于回归分支,对每个回归目标使用Smooth L1 loss,除了中心度,并考虑其尺度,使用相应的权重:

image.png

其中θ误差的权重为1,的权重为0.2,,的权重为0.05。

注意,尽管使用进行深度预测,但仍然在原始深度空间而不是对数空间中计算损失。

根据经验,它最终导致更准确的深度估计。使用Softmax分类损失和BCE损失进行方向分类和中心度回归,分别表示为和。

最后,总损失为:

image.png

其中为阳性预测的数量,同时。

6、推理

在推理过程中,给定一个输入图像,通过框架将其推理,并获得带有类分数、属性分数和中心度预测的边界框。将类得分和中心度相乘,作为每个预测的置信度,并在鸟瞰图中进行旋转非最大抑制(NMS),作为大多数3D检测器,以获得最终结果。

3.2、2D引导多级3D预测

如前所述,为了训练具有金字塔网络的检测器,需要设计一种将目标分配到不同特征级别的策略。

FCOS讨论了其中的两个关键问题:

与Anchor-Base的方法相比,如何使Anchor-Free检测器实现类似的最佳可能召回(BPR)。原论文中的比较很好地解决了第一个问题。结果表明,通过FPN进行多层次预测可以提高BPR,甚至比Anchor-Base的方法获得更好的结果。同样,这个问题的结论也适用于FCOS3D的框架。

原始FCOS在不同Level的特征图中检测不同大小的目标。与Anchor-Base的方法不同,它不指定不同大小Anchor,而是直接将不同大小的GT框指定给不同Level的特征图。

形式上,它首先计算每个特征上每个位置的2D回归目标、、、。然后,满足或$max(l^*r^*,t^*b^*)

相比之下,考虑到2D检测的规模与本文需要关注的区域的大小直接一致,在实现中也遵循这一标准。然而,在这一分配步骤中,仅使用2D检测来过滤无意义的目标。完成目标分配后,回归目标仅包括3D相关目标。

在这里,作者通过计算投影的3D边界框的外部矩形来生成2D边界框,因此不需要任何2D检测标注或先验。

接下来讨论如何处理歧义问题

具体来说,当一个点位于同一特征的多个GT框内时,应将哪个框分配给它?

通常的方法是根据2D边界框的面积进行选择。选择面积较小的框作为此点的目标框。作者称此方案为Area-Based的范式。该方案有一个明显的缺点:这种处理会减少对大目标的关注,这也通过实验得到了验证(图4)。

考虑到这一点,作者提出了一个Distance-Based的范式,即选择中心更近的框作为回归目标。该方案与用于定义回归目标的自适应基于中心的机制一致。此外,这也是合理的,因为更接近中心的点可以获得更全面和平衡的局部区域特征,从而容易地产生更高质量的预测。

通过简单的验证(图4)发现Distance-Based方案显著提高了大目标的最佳可能召回率(BPR)和mAP,还提高了总体mAP(约1%)。

除了基于中心的方法来处理模糊性,还使用3D中心来确定前景点,即只有足够靠近中心的点才会被视为正样本。FCOS3D作者定义了一个超参数  来测量这个中心部分。距离中心小于的点将被视为正样本,其他均为负样本,这里在实验中  设置为1.5。

最后,将不同回归分支的每个输出替换为6个,以区分不同Level的特征共享头。这里是一个可训练的标量,用于调整特征的指数函数基。它在检测性能方面带来了微小的改进。

3.3、具有二维高斯分布的3D中心度

在FCOS的原始设计中,中心度由2D回归目标定义:

因为回归目标被改变为基于3D中心的范例,通过以投影的3D中心为原点的2D高斯分布来定义中心度。二维高斯分布简化为:

这里,α用于调整从中心到外围的强度衰减,并在实验中设置为2.5。将其作为中心度的GT,并从回归分支中预测它,以便稍后过滤低质量预测。如前所述,该中心度目标范围从0到1,因此使用BCE损失来训练该分支。

相关文章
|
传感器 机器学习/深度学习 自动驾驶
自动驾驶:BEV开山之作LSS(lift,splat,shoot)原理代码串讲
自动驾驶:BEV开山之作LSS(lift,splat,shoot)原理代码串讲
5063 1
自动驾驶:BEV开山之作LSS(lift,splat,shoot)原理代码串讲
|
算法 计算机视觉 异构计算
目标检测的Tricks | 【Trick7】数据增强——Mosaic(马赛克)
目标检测的Tricks | 【Trick7】数据增强——Mosaic(马赛克)
3169 0
目标检测的Tricks | 【Trick7】数据增强——Mosaic(马赛克)
|
机器学习/深度学习 传感器 算法
单目3D目标检测 方法综述——直接回归方法、基于深度信息方法、基于点云信息方法
本文综合整理单目3D目标检测的方法模型,包括:基于几何约束的直接回归方法,基于深度信息的方法,基于点云信息的方法。万字长文,慢慢阅读~ 直接回归方法 涉及到模型包括:MonoCon、MonoDLE、MonoFlex、CUPNet、SMOKE等。 基于深度信息的方法 涉及到模型包括:MF3D、MonoGRNet、D4LCN、MonoPSR等。 基于点云信息的方法 涉及到模型包括:Pseudo lidar、DD3D、CaDDN、LPCG等。
2491 2
|
Linux 开发者 iOS开发
ImportError: cannot import name ‘TypeAliasType‘ from ‘typing_extensions‘问题的解决
ImportError: cannot import name ‘TypeAliasType‘ from ‘typing_extensions‘问题的解决
1107 1
|
传感器 机器学习/深度学习 人工智能
超全汇总 | 基于Camera的3D目标检测算法综述!(单目/双目/伪激光雷达)
目前3D目标检测领域方案主要包括基于单目、双目、激光雷达点云、多模态数据融合等方式,本文主要介绍基于单目、双目和伪激光雷达数据的相关算法,下面展开讨论下~
超全汇总 | 基于Camera的3D目标检测算法综述!(单目/双目/伪激光雷达)
|
传感器 机器学习/深度学习 人工智能
史上最全综述 | 3D目标检测算法汇总!(单目/双目/LiDAR/多模态/时序/半弱自监督)(下)
近年来,自动驾驶因其减轻驾驶员负担、提高行车安全的潜力而受到越来越多的关注。在现代自动驾驶系统中,感知系统是不可或缺的组成部分,旨在准确估计周围环境的状态,并为预测和规划提供可靠的观察结果。3D目标检测可以智能地预测自动驾驶车辆附近关键3D目标的位置、大小和类别,是感知系统的重要组成部分。本文回顾了应用于自动驾驶领域的3D目标检测的进展。
史上最全综述 | 3D目标检测算法汇总!(单目/双目/LiDAR/多模态/时序/半弱自监督)(下)
|
并行计算 Ubuntu
Ubuntu16.04升级到18.04--检查更新时出现问题--解决方法
Ubuntu16.04升级到18.04--检查更新时出现问题--解决方法
249 0
|
计算机视觉
FCOS升级 | FCOS在3D检测中应该如何使用呢?FCOS3D就是最好的验证(二)
FCOS升级 | FCOS在3D检测中应该如何使用呢?FCOS3D就是最好的验证(二)
745 0
|
JSON Rust IDE
全网最全的Rust学习资源
学习Rust过程中整理了一些学习资料分享一下。
659 1
|
算法 安全 数据安全/隐私保护
【P文件破解】MATLAB P文件转变M文件
【P文件破解】MATLAB P文件转变M文件
【P文件破解】MATLAB P文件转变M文件