M3D-RPN: Monocular 3D Region Proposal Network for Object Detection(2019.7)

摘要

    将世界进行三维描述是现代自动驾驶领域的重要部分。目前,昂贵的雷达立体RGB成像结合对于成功进行三维目标检测算法至关重要,而单目的方法则大大降低了性能。

    我们通过将单目3D检测问题重新定义为一个独立的3D区域提案(region proposal network)网络来缩小差距,利用了2D和3D的视角几何关系,使3D boxes利用在图像空间生成的显著卷积特征。为了解决复杂的3D参数估计,我们还设计了depth-aware卷积层使得局部特定位置的特征开发,从而提高对三维场景的理解。

    我们的方法与之前的单目3D检测相比,我们的方法只包含建议的三维区域建议网络,而不依赖外部网络、数据或多个阶段。M3D-RPN能够明显提高在KITTI数据集上进行的单目3D物体检测以及鸟瞰任务, 使用一个共享的多类模型

 

1、介绍

    3D场景理解对于设计有效的真实世界系统有着重要作用,例如城市自动驾驶机器人学。目前,对3D检测问题最主流的方法是使用雷达传感器来获取稀疏的深度信息作为输入。相比而言,单目3D检测由于先天缺少深度信息变得更加困难。因此,基于雷达的方法和单目方法效果相差过大。

    以前的单目三维检测工作都严重依赖于外部最先进的子网络,他们分别负责点云生成语义分割2D检测深度估计。这种方法的一个缺点组件学习中固有的脱节以及系统的复杂性。 此外,对附加子网络的依赖可能会引入持久性噪声, 导致框架上限的有限性

    相比之下,我们提出单独的端到端区域提议网络进行多分类3D物体检测(Figure1),使得2D对象检测执行合理并快速提升效果。 二维和三维检测任务目的是最终对对象的所有实例进行分类;而它们在定位目标的维度上有所不同。

M3D-RPN: Monocular 3D Region Proposal Network for Object Detection(2019.7)_第1张图片

      图1: M3D-RPN采用单目三维区域方案网络,具有全局卷积(橙色)和局部深度感知卷积(蓝色)来预测多类3D bounding box。

    直观上,我们希望2D检测的信息能够对3D检测提供帮助,理想情况下使用一个整体网络而不是单独的部分。 因此,我们建议重新构造三维检测问题,使二维和三维空间都使用共享anchors分类目标

    从可靠分类对象的角度来看这样做之后,3D检测器自然能够与其2D对应的性能相当。 因此,剩余问题只有在相机坐标空间内进行3D定位。剩下的问题,我们提出了三个关键设计来改进3D估计。

  1. 建立3D anchor使其在图像空间起作用,并用其每个3D参数的先验统计量初始化所有anchor,因此每个离散的anchor在3D空间都有很强的先验知识,这基于固定相机视角一致性以及二维尺度与三维深度之间的相关性
  2. 我们设计了一个新的深度感知卷积层能够学习空间感知的特征,一般来说卷积运算优先对空间不变处操作,以便在图像任何位置检测对象。 然而,这一般对低级特征有效,当知道更多深度信息并假定相机场景几何一致时,高级特征也会得到改善

  3. 我们使用了后优化算法中的3D->2D投影一致性损失(projection consistency)优化了对θ的方向估计 ,因此在假设是一个可靠的bounding box同时,修正了不正确的θ

    贡献:

  1. 建立了一个带有共享2D、3D探测空间的固定单目3D区域提议网络(M3D-RPN),同时使用先验概率为每个3D参数提供有效初始值;

  2. 使用深度感知卷积来提升3D参数估计,使网络能学习更多空间感知高级特征( spatially-aware high-level)

  3. 提供了一个简单的角度估计后优化算法,通过使用3D投影2D检测改进 θ估计

  4. 使用一个单独的多类网络在城市KITTI的单目鸟撖图以及3D检测上取得好成果

 

2、相关工作

  2D检测:

    许多工作都是在通用城市场景中进行2D检测,大多数框架使用的是Faster R-CNN [34] 由于区域提议网络region proposal network (RPN) 对于生成物体提议是一个高效方法。RPN函数作为一个滑动窗口监测器去检测图像每个空间位置存在的物体并与一系列提前定义好的类模板相匹配,称为anchors。尽管RPN被认为是Faster-Rcnn的初级阶段,但是它的有效性常常被用来作为单目多类(single-shot multi-class)检测器。我们的框架建立在RPN的anchors上,并在2D和3D空间起作用,作为单目多分类3D检测器(single-shot multi-class 3D detector)使用。

 雷达3D检测:

    对于城市场景的3D物体检测的SOTA框架来说使用雷达(LiDAR )数据作为输入是必要的,主要方法是处理来自雷达点的稀疏点云或者将点云数据投影到2D平面,虽然基于雷达的方法在3D任务表现很好,但是每个效果都取决于从雷达点或直接通过点云处理生成的深度信息可靠性。 因此,该方法不适用于仅使用相机(camera-only)的应用,也是我们单目三维检测算法的主要改进目标。

 只有图像的3D检测:

  由于缺乏可靠的深度信息,仅使用图像数据的3D检测本质上是具有挑战性的。基于图像的3D检测方法一般使用一系列子模块来帮助检测。比如,使用立体(stereo)处理的深度估计算法来估计点云, 使得给定已知的摄像机投影矩阵后,将三维立方体完全放置在平面上,然后根据立体区的密度和估计的点云进行评分(score[7]将这个将这个模型从立体调整到了单目,通过将估计的语义分割实例分割位置空间背景以及形状先验进行结合来代替点云的密度比较。

    近期工作:

        [28]使用其他目标检测来生成2D提议,然后将修改过的提议经过深层神经网络估计3D维度和取向(orientation)。与我们的网络相似,2D和3D boxes之间的联系被映射到了图像平面然后利用后处理技术求解三维参数。然而,我们的模型直接估计了3D参数并且只优化改进θ,迭代8次就收敛了。

        Xu.[40]利用额外的网络估计深度图并使用它估计出类似雷达生成的点云图。然后点云使用单独的2D RPN生成的2D bounding box进行采样。最后,一个R-CNN分类器得到一个包含采样后的点云以及图像特征的输入向量,来估计3D box参数

    与之前的工作相比,我们只使用3D box训练一个单独网络,而不是用一堆额外的子网络、数据并且由多阶段构成。我们是第一个使用单目3D区域建议(M3D-RPN)对2D和3D同时生成提议。理论上M3D-RPN对之前的工作进行了补充,并有可能代替提议生成阶段。我们的方法和之前的方法更详细的对比见图2(Figure2

M3D-RPN: Monocular 3D Region Proposal Network for Object Detection(2019.7)_第2张图片

     图2:Deep3DBox [28]、Multi-Fusion [40] 以M3D-RPN 之间的比较。 Note:先前的工作由多个内部阶段(橙色)和外部网络(蓝色)组成,而M3D-RPN是一个经过端到端训练的单图像网络。

 

3、M3D-RPN

本架构包含三个关键部分。

  1. 描述了我们的多分类3D区域提议网络的总体构造。
  2. 概述了深度感知卷积和整体网络体系结构
  3. 介绍了一种简单有效的后优化算法,提高了 3D->2D的一致性。如Figure3所示

M3D-RPN: Monocular 3D Region Proposal Network for Object Detection(2019.7)_第3张图片

    图3:M3D-RPN概述。 所提出的方法包括用于 全局(橙色)局部(蓝色)特征提取的并行路径。全局特征使用规则的 空间不变卷积,而局部特征表示 深度感知卷积,如右图所示。 深度感知卷积在行空间 ki(i=1...b)中使用 non-shared卷积核。 其中b表示不同核的总数。为了利用两种功能,我们将来自并行路径的每个输出参数进行 加权组合
 

3.1、构造

    结构的核心是区域提议网络(RPN),首先是在Faster R-CNN针对3D领域提出。区域提议网络充当滑动窗口检测器,它会扫描输入图像的每个空间位置,以查找与预定义anchor模板匹配的对象。 然后将匹配从离散anchor回归为估计对象的连续参数

    Anchor定义:

    为了同时预测2D和3D boxes,每个anchor模板都是使用 [w, h]2D, Zp[w, h, l, θ]3D两个空间参数定义的。为了代替anchor并且定义完整的2D/3D box,必须指定出一个共享的中心像素位置[x, y]P。表示2D的参数用来提供像素坐标。我们通过将相机坐标的3D中心位置[x, y, z]3D投影到一个已知投影矩阵P的图像来对深度参数Zp进行编码,如下所示:

M3D-RPN: Monocular 3D Region Proposal Network for Object Detection(2019.7)_第4张图片

  θ3D表示观察视角,与在相机坐标系下Y轴旋转相比,观察角度考虑了物体相对于相机视角的相对方向,而不是地面平面的鸟瞰(BEV)。因此,当处理图像特征时观察角度能够更合理的去估计,我们像相机坐标系统所给的一样对其余3D坐标[w, h, l]3D 进行编码。

   每个Zp[w,h,l,θ]3D的平均统计量是分别对每个anchor预先计算的,能够提供很强的先验条件来减少估计3D参数的差别。特别地,对于每个anchor我们对所有匹配到的正确结果进行统计,当真值与相对应的[w, h]2D anchor 的bounding box的intersectionover union (IoU)值大于等于0.5。结果anchor代表了离散模板,其中三维先验可以作为一个有效初始假设,从而假设一个合理一致的场景几何。 我们将anchor构造以及预先计算的三维先验表示在图4(Figure4).

    M3D-RPN: Monocular 3D Region Proposal Network for Object Detection(2019.7)_第5张图片

    图4:anchor定义3Danchor的可视化。 我们描绘了2D / 3D anchor 定义中的每个参数(左)。当12个anchor被用来投影到图像视角时我们对预估计的3D先验进行可视化(中)。以及鸟撖图(右)。 仅用于可视化目的,我们在特定的x3D位置上放置anchor,这是为了查看时能够最小化重叠的部分。

    3D检测:

    我们的模型对每个anchor预测出特征图c, [tx, ty, tw, th]2D[tx, ty, tz]P,  [tw, th, tl, tθ]3D.其中,Na是anchor的数量,Nc是种类数量,h*w为特征图分辨率。所有的box的输出总数是nb=w*h*na,每个anchor位置[x, y]P来表示,输出C代表的na*nc*h*w大小的共享分类预测,每一类的大小是na*h*w。输出[tx, ty, tw, th]2D代表的是2D bounding box的转化,统称为b2D,按照[34]做法,bounding box是使用 [w, h]2D对anchor进行转换:

    xP、yP代表每个box的空间中心位置

    转换后的box b'2D因此被定义为[x, y, w, h]'2D,接下来的七个输出代表着投影中心[tx, ty, tz]P,大小[tw, th, tl]3D方向(orientation)  tθ3D,归纳为b3D。与2D相似,使用参数[w, h]2D, zP, 和  [w, h, l, θ]3D 对anchor进行转换:

M3D-RPN: Monocular 3D Region Proposal Network for Object Detection(2019.7)_第6张图片

因此,b'3D用[x, y, z]P和 [w, h, l, θ]3D表示,我们对投影的3D中心进行估计而不是相机坐标来更好利用仅基于图像空间的卷积特征。因此,我们将投影的3D中心位置利用公式1从图像空间[x, y, z]'P反投影到相机坐标系下[x,y,z]'3D

  损失定义:

    我们的结构将网络损失定义为多任务学习问题,包含分类Lc,以及2D、3D box 回归损失 Lb2D,Lb3D。对于每个生成的box,我们检查是否存在于真实值具有至少0.5的IoU。 如果满足的话,那么我们对每个box使用最佳匹配的真值生成τ类目标、2D box b^2D3D box b^3D。如果不满足, τ被分配给 catch-all背景类,bounding box回归被忽略.。

基于softmax的多项式逻辑损失用于监督定义为:

我们使用一个的Logistic损失应用于匹配的真值b^2D与转化的b'2D之间的IoU的负物流损失Lb2D,定义为:

其余的3D bounding box参数每次对转化的b3D以及真实变换gˆ3D(对b^3D进行公式3的逆变换)使用平滑L1回归损失进行优化

因此,总体的多任务网络损失L,包含正则化权重λ1 λ2

  3.2、深度感知卷积

    空间不变的卷积已经成为计算机视觉的深层神经网络的主要操作。我们希望网络前几层的低级特征能够合理共享,并且在其他时候不改变对深度或者目标尺度。我们希望当假定固定相机视角时,与三维场景理解相关的高级特征取决于深度。 因此,我们提出深度感知卷积来提高区域提案网络对高层特征的空间感知,如图3。

    深度感知卷积层与二维卷积相似,利用一组离散深度就能够学习非共享权值特征。我们引入一个超参数 b表示将特征图分割的行条的数量,其中每行学习一个独特的内核 K

    实际上,深度感知核让网络学习局部特殊的特征偏差,理想情况下在城市场景且相机视角固定前提下能够学习出几何关系。例如,高级语义特征,例如对大轮子进行编码来检测一辆汽车,在深度是有意义的,但在深度通常不是。类似地,我们希望与3D场景理解相关的特性与它们的行方向图像位置有关

   缺点:使用深度感知卷积会增加内存使用。

 

3.3、网络结构

   我们在主干网络最后连接了两个平行通道。

  1. 使用普通卷积,卷积核为空间共享的,作为全局
  2. 单独使用深度感知卷积并作为局部使用。 

   对于每各通道,我们使用各自的卷积操作并附加提议特征提取层来生成FglobalFlocal。每各特征提取层使用3*3卷积核、外围补充一行来生成512个特征并且后面接RELU非线性激活函数。然后将这12个输出连接到每个对应的F的c,[tx,ty,tw,th] 2D[tx,ty,tz] P[tw,th,tl,tθ] 3D。 每个输出使用1×1内核,并统称为OglobalOlocal。为了利用深度感知和空间不变性,我们用学习出的注意度α应用在每个输出融合处,其中I=1...12 如下:

 

3.4、3D->2D投影优化

    我们使用后处理算法(Algorithm1)优化方向参数θ:

M3D-RPN: Monocular 3D Region Proposal Network for Object Detection(2019.7)_第7张图片

算法将2D3D box作为输入,估计b′2D[x,y,z]′P ,  [w,h,l,θ]′3D,以及步长σ,终止β,和衰变γ。然后算法通过θ进行迭代,并且使用L1损失对投影3D box和b′2D进行比较,投影函数定义如下:

M3D-RPN: Monocular 3D Region Proposal Network for Object Detection(2019.7)_第8张图片

  其中P−1是在填补 [0, 0, 0, 1],后的反投影矩阵,φ代表[x, y, z]轴的索引,然后我们使用参数ρ = [xmin , ymin , xmax , ymax ]的投影box,以及原始b′2D 去计算L1损失,作为初始,当损失不再增长时使用θ ±σ,用γ衰减过程并且当σ ≥ β时重复进行。

 

你可能感兴趣的:(#,3D目标检测,单目深度估计)