凩读论文第《M3D-RPN:用于物体检测的单目三维区域建议网络》(Monocular 3D Region Proposal Network for Object Detection
论文地址(ICCV2019)
代码实现(PyTorch版)
《M3D-RPN: Monocular 3D Region Proposal Network for Object Detection》
目录
- 《M3D-RPN: Monocular 3D Region Proposal Network for Object Detection》
- 0 摘要
- 1 简介
- 2 相关工作
- 2.1 二维目标检测
- 2.2 基于激光雷达的三维目标检测
- 2.3 基于图像的三维目标检测
- 3 M3D-RPN
- 3.1 整体设计
- 3.2 深度感知卷积
- 3.3 神经网络结构
- 3.4 3D到2D后优化
- 3.5 部署细节
- 4 实验
0 摘要
以三维视角理解世界是自动驾驶的一个重要组成部分。通常来说,昂贵的激光雷达传感器和立体RGB成像的结合对于成功的三维目标检测算法而言是至关重要的,而仅关注单目图像的方法,其性能会显著下降。本文提出通过将单目三维目标检测问题重新建模为一个独立的三维区域建议网络来缩小这个差距。本文利用二维视角和三维视角之间的几何关系,允许三维目标框利用图像空间中生成的强而有力的卷积特征。为了解决繁重的三维参数估计问题,作者还设计了深度感知卷积层,以实现特定位置的特征开发,从而提高三维场景的理解能力。与单目三维检测的先前工作相比,本文的方法仅包含所提出的三维区域建议网络,而不依赖于外部网络、数据或多阶段方法。在KITTI城市自动驾驶数据集中,M3D-RPN可以显著地提升单目三维目标检测和鸟瞰任务的性能表现。
1 简介
三维场景理解在设计有效的真实世界系统中起到了至关重要的作用,而目前在三维目标检测中,最为高效方法却严重依赖于价格昂贵的激光雷达传感器提供的稀疏深度数据作为输入。相比之下,由于深度信息的缺乏,仅基于图像的单目三维目标检测就要困难得多。因此,基于激光雷达的方法与单目视觉的方法之间的性能差距仍然很大。差距确实很大啊,KITTI数据集检测car的easy指标,LiDAR的方法和多模态的方法轻松干上七八十,单目图片的方法还在二三十徘徊
先前关于单目三维目标检测的工作都严重依赖于别的SOTA子网络,它们分别负责点云生成,语义分割,二维目标检测或者深度估计。这种方法的缺点是组件和系统之间固有的脱节。此外,对额外子网络的依赖可能会引入额外的噪声,从而导致框架的上限受到限制。
本文提出了一个用于多类别三维目标检测的端到端区域建议网络。二维和三维检测任务各自的目标是对待检测目标的所有实例进行分类,它们的区别在于其定位目标的维度不同。直观上,我们期望可以利用二位目标检测的能力来指导和改善三维检测的性能。最为理想的情况下,即二维目标检测与三维目标检测将在一个统一的框架之下进行,而不是将三维目标检测作为一个单独的组件出现。因此,本文提出将三维目标检测任务重新建模,使得二维和三维空间都使用共享的锚点与分类目标。这样如果能实现的话,那三维检测器的性能自然就能与二维检测器的性能相媲美。因此,剩下的问题就是解决相机坐标空间中的三维定位问题。
为了解决这个剩下的问题,本文提出了三个关键的设计来改进三维估计任务的性能。首先,构造三维的锚点以使其在三维图像空间中发挥作用,并对所有的锚点进行初始化,对其每个三维参数进行先验统计。基于固定摄像机视点的一致性以及二维尺度和三维深度之间的相关性,每个离散化的锚点在本质上都具有很强的三维推理先验。其次,设计一个能够学习空间感知特征的深度感知卷积层。传统上,为了便于检测任意图像位置的目标,卷积运算操作通常具有空间不变性。最后,使用 3 D → 2 D 3D\rightarrow 2D 3D→2D投影一致性损失在算法中优化方向估计参数 θ \theta θ,在假设二维边界框可靠的情况下,帮助纠正 θ \theta θ估计中异常。
总结如下:
- 制定了一个具有共享2D和3D检测空间的单目三维区域建议网络(M3D-RPN),同时使用先验统计数据作为每一个三维参数的初始值
- 提出深度感知卷积来改进三维参数估计,从而使得网络能够学习到更多空间感知的高级特征
- 提出一种简单的方向估计后优化算法,使用三维投影和二维检测来改善 θ \theta θ估计
-
使用单个多类网络在KITTI城市数据集基准中的单目鸟瞰图检测和三维检测上实现了SOTA当年的SOTA了
2 相关工作
2.1 二维目标检测
最近的框架基于Faster R-CNN的开创性工作,引入了区域建议网络(RPN)作为一种生成目标提议的高效方法。RPN的作用类似于滑动窗口检测器,用于检查图像的每个空间位置是否存在与一组预先定义的模板形状相匹配的目标,称为锚点。尽管RPN被认为是Faster R-CNN的一个初步阶段,单其经常被证实具有很好的效果,可以扩展成一个独立的检测器。本文的框架便建立在一个RPN的锚点上,该锚点专门设计用于在二维和三维空间之中运行,并充当一个多类三维检测器。
2.2 基于激光雷达的三维目标检测
激光雷达数据的使用已经被证实是SOTA框架应用于城市场景的三维目标检测的重要输入。目前一些领先的方法倾向于从激光雷达点处理稀疏点云或将点云投影成二维平面的集合。基于激光雷达的方法通常会在各种三维任务中获得很高的性能表现,这依赖于从激光雷达点(或直接经由点云数据)生成的深度信息的可用性。因此,这些方法并不适用于仅使用图像数据的应用场景,因为这是本文的单目三维目标检测算法的主要目的。
2.3 基于图像的三维目标检测
本文提出一种仅使用三维框训练的单一网络,而不是使用一组外部网络、数据源和由多个阶段组成的网络。先前的一些其它网络在其框架中至少有一个组件使用外部网络,其中一些也会在外部数据上进行训练。这是第一个使用单目三维区域建议网络(M3D-RPN)同时生成二维和三维目标提议框。理论上,M3D-RPN与之前的工作是互补的,可以用来替代建议框生成阶段。
3 M3D-RPN
本文的框架包含三个关键的组件。首先,本文详细介绍了多分类三维区域建议网络的整体想法。然后,本文概述了深度感知卷积的细节和集体网络架构。最后,详细介绍了一种简单但有效的提高3D → \rightarrow → 2D一致性的后优化方法。我们将这种方法称为单目三维区域建议网络(Monocular 3D Region Proposal Network, M3D-RPN)。
3.1 整体设计
本文提出的框架的核心基础是基于Faster R-CNN中首次提出的区域建议网络(RPN)的原理,基于这个原理再为三维检测量身定做的。从整体角度看,区域建议网络就像是滑动窗口检测器一样,扫描输入图像的每一个空间位置,为物体匹配一组预定义的锚点模板。然后将匹配从离散化的锚点回归为估计目标的连续参数。
锚的定义 为了同时预测二维和三维框,每个锚点模板使用两个空间的参数定义:
[
w
,
h
]
2
D
,
z
p
[w,h]_{2D},z_p
[w,h]2D,zp和
[
w
,
h
,
l
,
θ
]
3
D
[w,h,l,\theta]_{3D}
[w,h,l,θ]3D。为了放置锚点并定义完整的二维和三维框,还需要指定一个共享的中心像素位置
[
x
,
y
]
p
[x,y]_p
[x,y]p。在像素坐标中使用表示为二维的参数。作者使用以下式子,将摄像机坐标中的三维中心位置
[
x
,
y
,
z
]
3
D
[x,y,z]_{3D}
[x,y,z]3D投影到图像中,对深度参数
z
p
z_p
zp编码成一个已知的投影矩阵
P
∈
R
3
×
4
P\in \mathbb{R}^{3\times4}
P∈R3×4:
[
x
⋅
z
y
⋅
z
z
]
p
=
P
⋅
[
x
y
z
1
]
3
D
\begin{equation} \left[ \begin{matrix} x \cdot z \\ y \cdot z \\ z \end{matrix} \right]_p = P\cdot \left[ \begin{matrix} x \\ y \\ z \\ 1 \end{matrix} \right]_{3D} \end{equation}
x⋅zy⋅zz
p=P⋅
xyz1
3D
其中 θ 3 D \theta_{3D} θ3D表示观察角度,与相机坐标系中的y轴旋转角相比,观察角度更多考虑的是物体相对于相机是叫的相对方位,而不是地平面的鸟瞰图(BEV)。因此,在处理图像特征时,观察角度的估计在直观上更加具有意义。作者对相机坐标系中给出的剩余三维参数 [ w , h , l ] 3 D [w,h,l]_{3D} [w,h,l]3D进行编码。
每个 z p z_p zp和 [ w , h , l , θ ] 3 D [w,h,l,\theta]_{3D} [w,h,l,θ]3D的平均统计量是为每个锚点单独预计算的,用以减轻三维参数估计的难度。具体来说,对于每个锚点,作者使用所有与对应二维锚点 [ w , h ] 2 D [w,h]_{2D} [w,h]2D的交并比(IoU)大于0.5的相匹配的真值。因此,锚点代表一种离散化的模板,其三维先验值可以看作有效的预估初始值,从而假设相当一致的场景几何形状。如下图所示,其可视化了锚定公式以及预先计算的三维先验。
三维检测 本文的模型预测每个锚点的输出特征图为
c
,
[
t
x
,
t
y
,
t
w
,
t
h
]
2
D
,
[
t
x
,
t
y
,
t
z
]
P
,
[
t
w
,
t
h
,
t
l
,
t
θ
]
3
D
c,[t_x,t_y,t_w,t_h]_{2D},[t_x,t_y,t_z]_P,[t_w,t_h,t_l,t_\theta]_{3D}
c,[tx,ty,tw,th]2D,[tx,ty,tz]P,[tw,th,tl,tθ]3D。将
n
a
n_a
na记作锚的数量,
n
c
n_c
nc记作类别的数量,
h
×
w
h\times w
h×w记作特征图的分辨率。综上,目标框输出的总数记作
n
b
=
w
×
h
×
n
a
n_b=w\times h\times n_a
nb=w×h×na,在每个锚点的每个像素位置上跨度
[
x
,
y
]
p
∈
R
w
×
h
[x,y]_p\in \mathbb{R}^{w\times h}
[x,y]p∈Rw×h。第一个输出值c代表大小为
n
a
×
n
c
×
h
×
w
n_a\times n_c\times h\times w
na×nc×h×w的共享的分类预测,而另一个输出值具有大小为
n
a
×
h
×
w
n_a\times h\times w
na×h×w的共享分类预测。输出值
[
t
x
,
t
y
,
t
w
,
t
h
]
2
D
[t_x,t_y,t_w,t_h]_{2D}
[tx,t
上一篇: 3D 目标检测(室内)-TR3D
下一篇: 如何以图表形式展示数据?