Deep Continuous Fusion for Multi-Sensor 3D Object Detection

文章目录

    • Abstract
    • Introduction
    • Relative Works
    • Multi-Sensor 3D Object Detection
        • 3.1 Continuous Fusion Layer
        • 3.2 Multi-Sensor Object Detection Network

Abstract

本文提出了一种新型的3D物体探测器,它可以利用激光雷达和摄像机,能进行非常精确的定位。为此,本文设计了一个端到端的可学习架构,利用连续卷积将图像和激光雷达特征映射融合到不同分辨率级别。本文提出的连续融合层既能编码离散状态的图像特征,又可以编码连续的几何信息。这使本文能够设计一种基于多个传感器的新型、可靠和高效的端到端可学习 3D 物体检测器。本文对 KITTI 以及大规模 3D 对象检测基准的实验评估表明,与最先进的技术相比,本文的方法有显著改善。

Introduction

最近的一些基于激光点云的方法对于远距离的目标和遮挡物体的3D检测效果较差。

基于图像的3D目标检测,由于缺少深度信息,导致精度较差。

基于点云和图像的方法基本的思路是:首先在相机视图中,生成region,然后使用激光雷达进行最终的目标定位。但是这些方法不能够对图像和点云进行联合推理。因此,3D检测的性能收到了2D图像检测的约束。其他的一些方法在相机视图和激光雷达的鸟瞰图中进行2D卷积操作,并在中间卷积层,通过特征串联的方式进行特征的融合,但这种方法由于在粗糙的水平上进行,因此分辨率会显著降低。

本文提出的方法能够根据鸟瞰图的特性进行推理,使得通过学习实现特征在鸟瞰图下进行融合。并设计了一个全新的端到端的网络,利用连续的卷积将点云和图像的特征进行不同分辨率的融合。网络的连续融合层能够编码两种模式下位置之间的密集精确几何关系。这使本文能够设计一种基于多个传感器的新型、可靠和高效的 3D 物体探测器。 实验数据表明,本文的网络性能优异。

Relative Works

本节主要回顾了3D目标检测的几种常见方法。

Multi-Sensor 3D Object Detection

鸟视图(BEV)保留了3D传感器如Lidar的原生结构,因此在BEV中进行3D目标检测,十分有效。
在点云和图像之间做融合是十分重要的。原因在于,图像表示的世界投影到了相机平面,激光雷达则保存的是世界的局部3D结构。一种融合方式是将点云投影到相机平面上,并增加一个额外的通道,用于保存深度信息,并且利用传统的2D目标检测体系。这在图像中进行推理已经证明了十分有效。但从2D输出的结果推广到3D目标检测仍需进一步的工作。
不同的是,本文采取的是相反的思路。本文利用卷积神经网络提取图像的特征,然后将图像特征投影到BEV中去,并将其与基于激光雷达的卷积层进行融合。此种融合是十分必要的,原因在于图像的特征采集是在离散的位置间。因此需要使用“插值方法”创建稠密的BEV特征映射。为了执行这个操作,本文利用连续卷积操作从BEV中的每个点所对应的最近的图像特征中提取信息。本文的整体架构主要有两个处理流,一个是提取图像特征的流,另一个是从LIDAR BEV中提取特征。本文设计了连续融合层,以连接两个层的多个中间层,以实现在多个尺度上进行多传感器融合。所设计的架构实现了在BEV空间中实现最终的结果输出,即在自动驾驶中所需要的结果。可参考下图。
Deep Continuous Fusion for Multi-Sensor 3D Object Detection_第1张图片
网络架构图:有两个处理流:相机图像流和激光雷达点云流。连续融合层将图像的特征图融合到BEV的特征中去。

3.1 Continuous Fusion Layer

Deep Parametric Continuous Convolution: 深度参数连续卷积 [36] 是一个可学习的运算符,可对非网格结构数据进行操作。此运算符背后的动机是将标准网格结构卷积扩展到非网格结构数据,同时保持高容量和低复杂性。关键思想是利用多层感知器作为参数化内核函数进行连续卷积。此参数内核函数跨越完整的连续域。此外,对有限数量的相邻点的加权求和用于近似计算禁止的连续卷积。每个相邻邻居的权重根据其相对于目标点的相对几何偏移量不同。更具体地说,参数连续卷积执行以下操作:
h i = ∑ j MLP ⁡ ( x i − x j ) ⋅ f j \LARGE \mathbf{h}_{i}=\sum_{j} \operatorname{MLP}\left(\mathbf{x}_{i}-\mathbf{x}_{j}\right) \cdot \mathbf{f}_{j} hi=jMLP(xixj)fj
其中索引j位于点i的邻域上, f j \mathbf{f}_{j} fj是输入的特征, x j \mathbf{x}_{j} xj是该点所关联的连续坐标。MLP用于计算每个相邻点的卷积权重。参数连续卷积的优点是,它利用标准卷积的概念从相邻观测值中捕获局部信息,而不可能会导致几何信息损失的栅格化阶段。在本文中,本文认为连续卷积非常适合本文的任务,这是因为相机视图和BEV都通过3D点集连接起来,以无损的方式进行建模它们之间的几何关系是融合信息的关键。
Continuous Fusion Layer:

本文提出的连续融合层利用连续卷积来解决两个问题:观测中的稀疏性和相机视图中图像空间离散特征的处理。给定输入相机图像特征图和一组激光雷达点,连续融合层的目标是创建一个稠密的BEV特征图,其中每个离散像素包含从相机图像中生成的特征。然后此稠密的特征图可以与从LIDAR中提取的BEV特征图轻松地融合。图像BEV融合的一个难点是,并非所有BEV空间上的离散像素都可以在相机中观察到。为了克服这一点,对于密集地图中的每个目标像素,本文使用欧氏距离在 2D BEV 平面上找到其最近的 K个 LIDAR 点。然后,本文利用 MLP 将来自这些 K 近邻点的信息融合在目标像素处"插值"未观察到的特征。对于每个源激光雷达点,本文的 MLP 的输入包含两个部分:首先,本文将源 LIDAR 点投影到图像平面上来提取相应的图像特征。其次,对源激光雷达点与密集BEV特征图上目标像素之间的3D相邻偏移进行编码,以便对每个激光雷达点相对于目标位置的贡献的依赖性进行建模。总体而言,这为本文提供了每个目标像素的 K × ( D i + 3 ) − d K \times\left(D_{i}+3\right)-\mathrm{d} K×(Di+3)d输入到 MLP,其中 D i D_i Di 是输入特征维度。对于每个目标像素,MLP 通过对其所有相邻像素的 MLP 输出求和来输出 Do-维输出特征。这就是说:

h i = ∑ j MLP ⁡ (  concat  [ f j , x j − x i ] ) \mathbf{h}_{i}=\sum_{j} \operatorname{MLP}\left(\text { concat }\left[\mathbf{f}_{j}, \mathbf{x}_{j}-\mathbf{x}_{i}\right]\right) hi=jMLP( concat [fj,xjxi])

其中 f j \mathbf{f}_{j} fj是点 j 的输入图像特征, X j − X i \mathbf{X}_{j}-\mathbf{X}_{i} XjXi 是从邻点 j 到目标 i 的 3D 偏移, c o n c a t ( ⋅ ) concat (\cdot) concat() 是多个矢量的串联。在实践中,本文使用 3 层感知器,其中每个层都有 Di 隐藏特征。然后,通过元素求和与前一层的 BEV 特征结合 MLP 的输出特征,以融合多传感器信息。总体计算图如图2所示。
Deep Continuous Fusion for Multi-Sensor 3D Object Detection_第2张图片
图2, 连续卷积层:给定BEV图像上的目标像素,本文首先提取K个最近的激光雷达点。然后,将3D点投影到相机平面上,这有助于检索相应的图像特征。最后将图像特征+连续集合偏移反馈到MLP中,生成目标像素的特征。
Comparison against Standard Continuous Convolution:

与标准参数连续卷积 [36] 相比,本文的连续融合层利用 MLP 直接输出目标特征,而不是将权重输出到特征的总和.这为本文提供了更强大的能力和更大的灵活性来聚合来自多个邻居的信息。另一个优点是内存效率。由于 MLP 直接输出特征而不是权重,因此本文的方法不需要在 GPU 内存中显式存储额外的加权矩阵。

3.2 Multi-Sensor Object Detection Network

本文的多传感器检测网络有两个流:图像特征网络和 BEV 网络。本文使用四个连续融合层将多个比例的图像特征融合到 BEV 网络中,从较低级别到更高级别。图 1 描述了整体体系结构。在本节中,本文将更详细地讨论每个单独的组件。

骨干网络:由于其效率,本文选择轻量级ResNet18作为图像网络的主干。在本文的应用领域,实时估算对于安全性至关重要。BEV 网络经过自定义,具有一组卷积层(第一组)和四组剩余块。每组卷积数分别为 2、4、8、12 和 12。除第一组外,所有组均以步长 2 卷积开始,所有其他卷积都有步长 1。每个组的特征维度分别为 32、64、128、192 和 256。

融合层 :四个连续融合层用于将多比例图像特征融合到 BEV 网络的四个残层中。每个连续融合图层的输入是从所有四个图像残差组的输出组合的图像特征图。本文使用与特征金字塔网络 (FPN) [21] 相同的组合方法。BEV 空间中的输出特征与相应的 BEV 层具有相同的形状,并通过元素求和组合到 BEV 中。本文的最终 BEV 功能输出还以与 FPN [21] 类似的方式组合了最后三个剩余组的输出,以便利用多尺度信息。

检测头 : 本文使用简单的检测标头来提高实时效率。在最终的 BEV 层上计算 1 × 1 卷积层以生成检测输出。在每个输出位置,本文使用两个具有固定大小和两个方向的锚点,分别为 0 和 π / 2 \pi / 2 π/2 弧度。每个锚点的输出包括每像素类置信度及其关联框的中心位置、大小和方向。接下来是非最大抑制 (NMS) 图层,用于生成基于输出映射的最终对象框。
训练 :本文使用的是一个多任务损失函数用于训练。

L = L c l s + α L r e g L=L_{c l s}+\alpha L_{r e g} L=Lcls+αLreg

I C l S I_{C l S} IClS被定义类别置信度和标签之间的二值交叉熵损失函数

L c l s = 1 N ( l c log ⁡ ( p c ) + ( 1 − l c ) log ⁡ ( 1 − p c ) ) L_{c l s}=\frac{1}{N}\left(l_{c} \log \left(p_{c}\right)+\left(1-l_{c}\right) \log \left(1-p_{c}\right)\right) Lcls=N1(lclog(pc)+(1lc)log(1pc))

其中 p c p_c pc代表预测的分类分数, l c l_c lc代表二值标签。N是所有样本的数目。

L r e g L_{reg} Lreg是七个项目的和。

L r e g = 1 N p o s ∑ k ∈ ( x , y , z , w , h , d , t ) D ( p k , l k ) L_{r e g}=\frac{1}{N_{p o s}} \sum_{k \in(x, y, z, w, h, d, t)} D\left(p_{k}, l_{k}\right) Lreg=Npos1k(x,y,z,w,h,d,t)D(pk,lk)

D is a smoothed L1-norm defined as:

D ( p k , l k ) = { 0.5 ( p k − l k ) 2  if  ∣ p k − l k ∣ < 1 ∣ p k − l k ∣ − 0.5  otherwise  D\left(p_{k}, l_{k}\right)=\left\{\begin{array}{ll}0.5\left(p_{k}-l_{k}\right)^{2} & \text { if }\left|p_{k}-l_{k}\right|<1 \\ \left|p_{k}-l_{k}\right|-0.5 & \text { otherwise }\end{array}\right. D(pk,lk)={0.5(pklk)2pklk0.5 if pklk<1 otherwise 

with p k p_{k} pk and l k l_{k} lk the predicted and ground truth offsets respectively. For k ∈ k \in k ( x , y , z ) , p k (x, y, z), p_{k} (x,y,z),pk is encoded as:
p k = ( k − a k ) / a k p_{k}=\left(k-a_{k}\right) / a_{k} pk=(kak)/ak
where a k a_{k} ak is the coordinate of the anchor. For k ∈ ( w , h , d ) , p k k \in(w, h, d), p_{k} k(w,h,d),pk is encoded as:
p k = log ⁡ ( k / a k ) p_{k}=\log \left(k / a_{k}\right) pk=log(k/ak)
with p k p_{k} pk and l k l_{k} lk the predicted and ground truth offsets respectively. For k ∈ k \in k ( x , y , z ) , p k (x, y, z), p_{k} (x,y,z),pk is encoded as:
p k = ( k − a k ) / a k p_{k}=\left(k-a_{k}\right) / a_{k} pk=(kak)/ak
where a k a_{k} ak is the coordinate of the anchor. For k ∈ ( w , h , d ) , p k k \in(w, h, d), p_{k} k(w,h,d),pk is encoded as:
p k = log ⁡ ( k / a k ) p_{k}=\log \left(k / a_{k}\right) pk=log(k/ak)
where a k a_{k} ak is the size of anchor. The orientation offset is simply defined as the difference between predicted and labeled orientations:
p t = k − a k p_{t}=k-a_{k} pt=kak
当仅需要 BEV 检测时,z 和 d 项将从回归损失中删除。正样本和负样本根据与真实中心的距离确定。特别是,本文首先随机选择5%的负锚点,然后根据分类分数,只使用其中的top-k进行训练。本文使用 ImageNet 预训练的权重初始化图像网络,并使用 Xavier 初始化初始化初始化 BEV 网络和连续融合层 [14]。整个网络通过反向传播进行端到端训练。请注意,对图像流没有直接的监督;相反,误差沿 BEV 特征空间的连续融合层进行传播。

由于 KITTI 的培训数据有限,本文采用多种数据扩充技术来缓解过度拟合。对于训练期间的每个帧,本文对所有 3 个轴应用随机缩放(0.9~1.1)、平移(-5 ~5 米用于 xy 轴,-1 ~ 1 表示 z 轴)和旋转(沿 z 轴 -5 ~5 度),并在 3D 激光雷达点云上应用随机缩放(0.9~ 1.1)和平移(-50~50像素)。本文将从 LIDAR 的变换矩阵相应地修改为摄像机,以确保其对应性。在测试期间,本文不会应用数据扩充。

你可能感兴趣的:(3D物体检测)