翻译-Frustum PointNets for 3D Object Detection from RGB-D Data

Frustum PointNets for 3D Object Detection from RGB-D Data

  • 摘要
  • 介绍
  • 相关工作
    • 从RGB-D数据中检测三维物体
      • 基于前视图图像的方法:
      • 基于鸟瞰图的方法:
      • 基于3D的方法:
    • 点云的深度学习
  • 问题定义
  • 三维检测与截锥体PointNets
    • 截锥体提出
    • 3d 语义分割
      • 三维实例分割PointNet
    • 规范3D包围盒估计
      • 基于学习的T-Net三维对齐方法
      • 规范包围盒估计PointNet
      • 多任务损失的训练
      • 用于包围盒参数联合优化的角损失

摘要

在这项工作中,我们研究了使用RGB-D数据在室内和室外场景下的进行三维目标检测的方法。以前的方法侧重于图像或3D体素,往往模糊了3D数据固有的3D模式和不变性,而我们直接通过弹出RGB-D扫描对原始点云进行操作。然而,该方法的一个关键挑战是如何在大规模场景的点云中有效地定位目标(region proposal)。我们的方法不是仅仅依靠3D方案,而是利用成熟的2D物体探测器和先进的3D深度学习来进行物体定位,即使是小物体也能实现高效率和高回召回忆率。得益于直接在原始点云中学习,我们的方法也能够精确地估计三维边界盒,即使在强遮挡或非常稀疏的点下。在KITTI和SUN RGB-D 3D检测基准上进行评估后,我们的方法在具有实时性能的同时,显著优于目前的技术水平。

介绍

近年来,二维图像理解任务,如目标检测[13]和实例分割[14]方面取得了很大的进展。然而,除了2D边框或像素掩码,3D理解在许多应用程序中都有迫切的需求,如自动驾驶和增强现实(AR)。随着在移动设备和自动驾驶车辆上部署的3D传感器的普及,越来越多的3D数据被捕捉和处理。在本研究中,我们研究了三维感知中最重要的任务之一——三维物体检测,它将物体分类并从三维传感器数据中估计出三维物体包围框的朝向。
虽然3D传感器数据通常以点云的形式出现,但是如何表示点云以及使用什么深层网络架构来进行3D对象检测仍然是一个悬而未决的问题。现有的大部分作品通过投影将三维点云转换为图像[36,26],或者通过量化将其转换为体积网格[40,23,26],然后应用卷积网络。然而,这种数据表示转换可能会掩盖数据的自然3D模式和不变性。最近,许多论文提出直接处理点云,而不把它们转换成其他格式。例如,[25,27]提出了一种新的深度网络架构,称为pointnet,它在一些3D理解任务如对象分类和语义分割中表现出了优越的性能和效率。
虽然pointnet能够对整个点云进行分类,或者为点云中的每个点预测语义类,但是还不清楚如何将该结构用于实例级3D对象检测。为了实现这一目标,我们必须解决一个关键的挑战:如何有效地提出3D对象在3D空间中的可能位置。模拟图像检测的实践,通过滑动窗口[8]或通过三维区域建议网络如[33]等来枚举候选的三维盒是很简单的。然而,3D搜索的计算复杂度通常会随着分辨率的增大而增大,对于大型场景或实时应用(如自动驾驶)来说,这变得过于昂贵。
相反,在本工作中,我们遵循降维原则缩小搜索空间:我们利用成熟的二维物体检测器(图1)。首先,我们从图像检测器中挤出二维边界盒,提取物体的三维边界截锥体。然后,在每个3D frustums裁剪的3D空间内,使用Point-Net的两个变量连续执行3D对象实例分割和3D边界包围盒回归。分割网络预测感兴趣对象的三维掩码(即实例分割);回归网络估计了一个近似的3D边界框(即使只有一部分是可见的,也会覆盖整个对象)。
翻译-Frustum PointNets for 3D Object Detection from RGB-D Data_第1张图片
图1 3D对象检测流程 给定RGB-D数据,首先使用CNN在RGB图像中生成2D目标区域建议。之后每个2D区域被挤压到一个3D视锥体,在那里我们从深度数据中得到一个点云。最后,我们的截锥PointNet从截锥体内的点为对象预测一个(有方向的和规范的)三维边界框。

与之前在CNNs中将RGB-D数据视为2D地图的工作相比,我们的方法更强调3D中心化,因为我们将深度地图提升到3D点云中,并使用3D工具对其进行处理。这个以3D为中心的视图支持以更有效的方式探索3D数据的新内容。首先,在我们的pipeline中,在3D坐标上依次应用了一些转换,这些转换将点云排列成一个更约束和规范的框架序列。这些对齐方法剔除了数据中的位姿变化,使三维几何图形更加明显,因此使得三维学习者的工作更加轻松。其次,在三维空间中学习可以更好地利用三维空间的几何和拓扑结构。原则上,所有的物体都生活在三维空间中;因此,我们认为,学习者直接在三维空间中操作,许多几何结构,如重复、平面、对称等,会更自然地参数化和捕捉。这种以3d为中心的网络设计方法的有用性已经被许多最近的实验所验证。
我们的方法在KITTI 3D物体检测[1]和鸟瞰图检测[2]基准上达到领先地位。与之前的[6]相比,我们的方法在3D car AP上的效率提高了8.04%(运行速度为5 fps)。我们的方法也很适合室内的RGBD数据,在SUN-RGBD上,3D mAP比[16]和[30]好8.9%和6.4%,同时运行速度快一到三个数量级。
我们工作的主要贡献如下:

  • 我们提出了一种新的基于RGB-D数据的三维物体检测框架,称为Frustum PointNets。
  • 我们将展示如何在我们的框架下训练3D对象检测器,并在标准3D对象检测基准上实现最先进的性能。
  • 我们提供了广泛的定量评估,以验证我们的设计选择,以及丰富的定性结果,以理解我们的方法的优势和局限性。

相关工作

从RGB-D数据中检测三维物体

研究人员通过采用多种方法表示RGB-D数据来解决三维检测问题。

基于前视图图像的方法:

[4,24,41]采用单目RGB图像和形状先验或遮挡模式推断出三维包围盒。[18, 7]将深度数据表示为二维地图,应用CNNs对二维图像中的对象进行定位。相比之下,我们将深度表示为点云,并使用可以更有效地利用3D几何特性的先进3D深度网络(PointNets)。

基于鸟瞰图的方法:

MV3D[6]将Li- DAR点云投影到鸟瞰图中,并训练一个区域建议网络(RPN[29])用于3D包围盒提议。但是,该方法在检测行人、自行车等小物体方面比较落后,难以适应垂直方向有多个物体的场景。

基于3D的方法:

[38,34]利用支持向量机在手工设计的从点云中提取的几何特征上训练3D对象分类器,然后使用滑动窗口搜索来定位对象。[8]在体素化的三维网格上扩展了[38],用3D CNN代替SVM。[30]为点云中的3D对象检测设计了新的几何特征。[35,17]将整个场景的点云转换为一个体积网格,并使用3D体积CNN进行对象建议和分类。这种方法的计算成本通常相当高,因为3D卷积的开销很大,3D搜索空间也很大。[16]最近提出了一种2D驱动的3D物体检测方法,这种方法在精神上与我们的相似。然而,他们使用手工制作的特征(基于点坐标直方图)和简单的全连接网络来回归三维盒的位置和姿态,这在速度和性能上都不是最优的。相比之下,我们提出了一种更灵活和有效的使用深度3D特征学习(PointNets)的解决方案。

点云的深度学习

在特征学习之前,现有的大多数作品都将点云转换为图像或体积形式。[40,23,26]将点云voxelize为体积网格,并将图像CNNs推广为3D CNNs。[19, 31, 39, 8]利用点云的稀疏性设计更高效的3D CNN或神经网络架构。但是这些基于CNN的方法仍然需要一定体素分辨率的点云量化。最近,一些工作[25,27]提出了一种新型的网络架构(PointNets),它直接使用原始点云,而不将其转换为其他格式。虽然PointNets已经应用于单一对象分类和语义分割,但我们的工作探索了如何扩展该体系结构以用于3D对象检测。

问题定义

以RGB-D数据作为输入,我们的目标是在三维空间中对对象进行分类和定位。由激光雷达或室内深度传感器获得的深度数据,表示为RGB摄像机坐标下的点云。投影矩阵也是已知的,这样我们就可以从一个二维图像区域得到一个三维截锥。每个对象由一个类(k个预定义类中的一个)和一个三维边界盒表示。即使对象的一部分被遮挡或截断,规范框也可以限定完整的对象。3D包围盒通过其尺寸 h , w , l h,w,l h,w,l,中心 c x , c y , c z c_x,c_y,c_z cx,cy,cz和相对于每个类别的预定义标准位姿的方位 θ , ϕ , ψ \theta,\phi,\psi θ,ϕ,ψ进行参数化。在我们的实现中,我们只考虑绕朝上坐标轴来表示方向的航向角 θ \theta θ

三维检测与截锥体PointNets

如图2所示,我们的三维物体检测系统包括三个模块:截锥体提出、三维实例分割和三维边界盒估计。我们将在下面的小节中介绍每个模块。我们将重点介绍每个模块的流程和功能,并请读者参阅补充部分了解所涉及的深度网络的具体架构。
翻译-Frustum PointNets for 3D Object Detection from RGB-D Data_第2张图片
图2 用于三维对象检测的截锥体PointNets。我们首先利用一个2D CNN对象检测器来提出2D区域并对其内容进行分类。之后将2D区域提升为3D,从而成为截锥体建议。给定锥体中的一个点云( n × c n\times c n×c表示n个点,每个点有XYZ方向、强度等c个通道),通过每个点的二值分类对对象实例进行分割。基于分割的对象点云( m × c m\times c m×c),轻量级回归PointNet(T-Net)尝试通过平移对点进行对齐,使点的质心接近一个规范盒中心。最后通过包围盒估计网络估计出目标的三维边界盒。图4和图5是所涉及的坐标系统和网络输入、输出的详细说明。

截锥体提出

大多数3D传感器,特别是实时深度传感器产生的数据分辨率仍然低于普通相机的RGB图像。因此,我们利用成熟的2D目标检测器来提出RGB图像中的2D目标区域,并对目标进行分类。
有了已知的摄像机投影矩阵,2D边界框就可以被提升到一个锥体(近面和远面由深度传感器范围指定),该锥体定义了对象的3D搜索空间。然后我们在截锥内收集所有的点,以形成一个截锥点云。如图4 (a)所示,frustum可能会朝向很多不同的方向,这导致点云的位置变化很大。因此,我们通过将圆锥台向中心视图旋转来对其进行规格化,使圆锥台的中心轴正交于接收平面。这种归一化有助于提高算法的旋转不变性。我们将从RGB-D数据中提取截锥点云的整个过程称为截锥提议生成。虽然我们的3D检测框架与二维区域方案的精确方法无关,但我们采用了基于FPN [20]的模型。我们在ImageNet分类和COCO目标检测数据集上预先训练模型权重,并在KITTI 2D目标检测数据集上进一步微调,以分类和预测一个2D规范包围盒。关于2D检测器训练的更多细节在补充部分提供。
翻译-Frustum PointNets for 3D Object Detection from RGB-D Data_第3张图片
图4 点云的坐标系统 人工点(黑点)用于举例说明 (a)默认摄像机坐标;( b)将截锥体旋转到中心视图后的截锥体坐标(第4.1节);©掩码原点与物体质心点坐标(第4.2节);(d) T-Net预测的物体坐标(第4.3节)。

3d 语义分割

给定一个二维图像区域(及其对应的三维截锥体),可以使用几种方法来获得物体的三维位置:一种直接的解决方案是使用二维cnn从深度图中直接返回三维物体位置(如通过三维边界盒)。但是,这一问题并不容易解决,因为在自然场景中,物体遮挡和背景杂波很常见(如图3所示),这可能会严重干扰三维定位任务。由于物体在物理空间中是自然分离的,因此在3D点云中分割要比在图像中分割更自然、更容易,因为在图像中,来自遥远物体的像素可能是彼此接近的。观察到这一事实,我们提出基于三维点云的语义分割来代替2D图像或者深度图。与Mask-RCNN[14]通过图像区域内像素的二值分类实现实例分割相似,我们使用基于PointNet的网络在截锥体内的点云上实现三维实例分割。
翻译-Frustum PointNets for 3D Object Detection from RGB-D Data_第4张图片
图3 三维点云检测的挑战 左:RGB图像与一个人的图像区域建议。右图:从2D方框中挤压出的圆锥台的激光雷达点的鸟瞰图,在那里我们看到前景遮挡(自行车)和背景杂乱(建筑)的点广泛分布。

基于三维实例分割,实现了基于残差的三维定位。也就是说,相比于回归传感器测量偏移变化范围大的目标的绝对3D位置(例如从5米到50米之外KITTI数据),我们预测局部坐标系下的3D边界框中心-3d掩码坐标如图4所示©。

三维实例分割PointNet

该网络在锥体中取一个点云,并为每个点预测一个概率分数,该分数表示该点属于感兴趣对象的可能性有多大。注意,每个截锥只包含一个感兴趣的对象。这里的其他点可以是不相关区域的点(如地面、植被)或其他遮挡或在目标后面的实例。类似于二维实例分割的情况,依赖于截锥体的位置,在一个截锥体中的对象点可能在另一个截锥体中会变得杂乱或闭塞。因此,我们的分割PointNet网络在学习遮挡和杂乱模式的同时,也识别了特定类别的物体的几何形状。
在多类检测的情况下,我们也用一个2D检测器的结果利用语义更好的实例分割。例如,如果我们知道感兴趣的对象是一个行人,那么分割网络就可以在找到看起来像人的几何图形之前使用它。具体来说,在我们的体系结构中,我们将语义类别编码为one-hot类向量(使用k维向量表示预定义的k类目标),并将one-hot向量连接到中间点云特征层。关于具体架构的更多细节在补充部分进行了描述。
在三维实例分割后,提取出被划分为感兴趣对象的点(图2中的掩码)。得到这些分割的目标点后,我们遵循与截锥体提议步骤相同的原理进一步对其坐标进行规格化,以提高算法的平移不变性。在我们的实现中,我们通过用质心减去XYZ值来将点云转换为局部坐标。如图4 ©所示。注意,我们有意不缩放点云,因为部分点云的边界球大小会受到视点的很大影响,而点云的真实大小有助于估计盒的大小。
在我们的实验中,我们发现上面的坐标变换和前面的截头体旋转对3D检测结果至关重要,如表8所示。

规范3D包围盒估计

给定分割后的对象点(三维掩模坐标),利用盒回归PointNet和预处理转换网络对对象的三维边界盒进行估计。

基于学习的T-Net三维对齐方法

即使我们将分割后的目标点按照质心位置对齐,我们仍然会发现掩码坐标系的原点(图4 ©)可能仍然离标准包围盒中心很远。因此,我们建议使用一个轻量级回归PointNet(T-Net)来估计完整对象的真实中心,然后变换坐标,使预测的中心成为原点(图4 (d))。
我们的T-Net的结构和训练类似于[25]中的T-Net,可以看作是一种特殊类型的空间转换网络(STN)[15]。但是,不同于对变换没有直接监督的原始的STN,我们明确监督我们的平移网络预测从掩模坐标原点到真实物体中心的中心残差。
翻译-Frustum PointNets for 3D Object Detection from RGB-D Data_第5张图片
图5 PointNets的基本架构和IO。架构说明了带有集合抽象层和特性传播层(用于分割)的pointnet++ [27] (v2)模型的体系结构。所涉及的坐标系如图4所示。

规范包围盒估计PointNet

包围盒估计网络预测给定3D坐标系中目标的点云的一个近似的边界盒(Fig. 4 (d))(对于即使部分不可见的完整目标)。网络架构类似于对象分类器[25,27],但输出的不再是对象类得分,而是一个3D边框的参数。
如第3节所述,我们通过中心 ( c x , c y , c z ) (c_x, c_y, c_z) (cx,cy,cz)、大小 ( h , w , l ) (h, w, l) (h,w,l)和航向角 θ \theta θ(沿up-axis)来参数化一个3D边框。采用残差的方法进行包围盒中心估计。通过包围盒估计网络预测中心残差,结合前面的基于T-Net的中心残差和掩码质心来恢复绝对中心(Eq.1)。包围盒大小和航向角,我们参考以前作品【29,24】并混合使用分类和回归公式来获得。具体地说,我们预先定义了 N S N S NS大小模板和 N H N H NH等分割角单位。我们的模型将同时对尺寸/航向(尺寸的 N S N S NS评分,航向的 N H N H NH评分)进行分类,并预测每个类别的残差数(高度、宽度、长度的 3 × N S 3\times NS 3×NS残差维度,航向的 N H NH NH残差角)。最终总的网络输出为 3 + 4 × N S + 2 × N H 3 + 4 \times NS + 2\times NH 3+4×NS+2×NH
在这里插入图片描述

多任务损失的训练

我们同时优化了涉及的三种具有多任务损失的网络(如Eq. 2)(三维实例分割PointNet、T-Net和规范包围盒估计PointNet)。 L c 1 − r e g L_{c1-reg} Lc1reg是T-Net损失函数, L c 2 − r e g L_{c2-reg} Lc2reg是中心回归包围盒网络的损失函数。 L h − c l s L_{h-cls} Lhcls L h − r e g L_{h-reg} Lhreg是航向角预测损失函数, L s − c l s L_{s-cls} Lscls和$L_{s-reg}是包围盒尺寸的损失函数。所有分类任务使用Softmax损失函数,所有回归任务使用smooth- l 1 l1 l1 (huber)损失。
在这里插入图片描述

用于包围盒参数联合优化的角损失

虽然我们的三维边界盒参数是紧凑和完整的,但学习并没有为最终的三维盒中心优化精度——尺寸和航向角有单独的损失项。想象一下这样的情况:中心和大小被准确地预测,但航向角有偏差——与真值包围盒的3D IoU就会被角度误差主导。理想情况下,这三项(中心、大小、朝向)应该联合优化以获得最佳的3D框估计(IoU度量)。为了解决这一问题,我们提出了一种新的正则化损失,即角损失:在这里插入图片描述
从本质上说,角损失是一个预测盒与真值盒的八个角之间距离的总和。由于角点位置是由中心、大小和朝向共同确定的,因此角点损失可以使这些参数的多任务训练规范化。
为了计算角损失,我们首先从所有尺寸的模板和航向角箱中构造 N S × N H N S\times N H NS×NH锚盒。之后将锚盒转换到估计的框中心。我们将锚盒角记作 P k i j P^{ij}_k Pkij,其中i、j、k分别是size类、heading类和(预定义)角阶的索引。为了避免翻转朝向估计带来的巨大损失,我们进一步从翻转真值盒计算到角 P k ∗ ∗ P_k^{**} Pk的距离,并使用原始的和翻转后结果的最小值。 δ i j \delta_{ij} δij,是 size/heading 类的真值和其它零项,是一个用于选择我们关心的距离项的二维掩码。

你可能感兴趣的:(目标跟踪,深度学习)