购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

2.4 实战项目:3D物体检测

近年来,由于对汽车激光雷达传感器的大幅度改进,使得点云处理对自动驾驶越来越重要。而供应商的传感器能够实时提供周围环境的三维点,其优点是可以直接测量对象的距离,因此得以开发出用于自动驾驶的物体检测算法。这些算法可精确估算3D空间中不同物体的位置和方向。与图像相比,激光雷达点云稀疏,且分布在整个测量区域。然而,这些点是无序的,它们在本地相互作用,且不能被孤立地分析。通常,基于深度学习的对象检测和分类是一项众所周知的任务,并且广泛用于图像的2D边界框回归。其研究的重点主要是准确性和效率之间的折中。而对于自动驾驶,效率更为重要。因此,最好的物体检测器,使用区域提议网络(RPN)或类似的基于网格的RPN方法。这些网络非常高效、准确,甚至可以在专用硬件或嵌入式设备上运行。目前,点云上的对象检测仍然做得很少,但是越来越重要。这些应用程序必须能够预测3D边界框。当前,使用深度学习主要有如下三种方法:

● 使用多层感知器的直接点云处理。

● 使用卷积神经网络(CNN)将点云转换为体素或图像堆栈。

● 组合融合方法。

这里选取一篇论文 [32] 作为参考,介绍目前3D物体检测方面的最新发展,并结合其对应的源代码进行讲解。

2.4.1 算法概述

令人惊讶的是,到目前为止,还没有一个模型能够满足自动驾驶的实时性要求。因此,这里试图介绍一个小而精确的模型。该模型在NVIDIA TitanX GPU上的运行速度高于50fps,其使用多视图思想(MV3D)进行点云预处理和特征提取,但是其中忽略了多视图融合,只生成了一张基于激光雷达的单目RGB图像,以确保效率。

图2-1展示了Complex-YOLO,它是YOLOv2的3D版本,而且是最快和最新的图像对象检测器之一。特定的E-RPN用于支持Complex-YOLO,该E-RPN估计了每个盒子的虚部和实部编码对象的方向。其思路是要有一个不带奇数的封闭数学空间,以便对精确的角度进行泛化。即使对象只有几个点(例如,行人),该模型也仍然能够实时预测定位精确的3D边界框和对象的精确方向。为此,这里为其设计了特殊的锚盒(Anchor Box)。此外,它仅通过使用激光雷达输入数据,就可预测所有8个KITTI类。它在KITTI基准套件上评估模型,就准确性而言,它在汽车、行人和骑自行车的人等方面均取得了同等的成绩;就效率而言,其表现至少优于现有的方法5倍。其主要贡献如下:

● 通过使用新的E-RPN,为3D锚盒估计提供了可靠的角度回归功能。

● 提供了在KITTI基准套件上评估高精度实时性能的方法,其速度比当前领先的模型快5倍以上。

● 估计E-RPN支持的每个3D边界框的精确方向,从而能够预测周围物体的轨迹。

● 与其他基于激光雷达的方法相比,该模型可以有效地在一条前向路径中同时估计所有类别。

图2-1 算法流程,对点云进行快速而准确的3D边界框估计 [32]

2.4.2 点云预处理

首先将Velodyne HDL-64E激光扫描仪采集的单帧3D点云转换为一张鸟瞰RGB图像,它覆盖了正前方80m×40m的区域(如图2-2所示)。

图2-2 鸟瞰图 [32]

受MV3D [28] 的启发,点云的高度、强度和密度可以被编码组成RGB图像。网格图的大小被定义为 n =1024, m =512。因此,将3D点云投影,并离散化为2D网格,其分辨率约为 g =8cm。与MV3D相比,略微减小了像元的大小,以实现更小的量化误差,同时具有更高的输入分辨率。由于效率和性能方面的原因,这里仅使用一张而不是多张高度图。因此,针对覆盖区域 Ω 内的整个点云 ∈R 3 ,计算所有三个特征通道( z r z g z b z r g b ∈R m × n )。定义 P Ω

考虑到激光雷达的 z 的1.73m位置,应选择 z ∈[-2m,1.25m],以覆盖地面上方约3m高的区域,并以卡车为最高对象。再定义一个映射函数 ,其中 S R m × n ,将每个索引为 i 的点映射到RGB映射图的特定网格单元 S j 中。然后用一个集合描述映射到特定网格单元中的所有点: ,因此,可以将Velodyne强度视为 I P Ω )来计算每个像素的通道:

式中, N 表示从 P Ωi 映射到 S j 的点数,而 g 是网格单元大小的参数。显然, z g 编码表征了最大高度, z b 编码表征了最大强度, z r 编码表征了映射到 S j 中的所有点的归一化密度。下面这段代码实现了点云预处理。

代码2-1 点云预处理

2.4.3 网络结构

Complex-YOLO网络将鸟瞰RGB映射图(参考点云预处理)作为输入,它使用了简化的YOLOv2 CNN架构,如图2-3所示,并通过复杂的角度回归和E-RPN进行扩展,以检测准确的面向多类的3D对象,同时仍可实时运行。

图2-3 简化的YOLOv2 CNN架构。最终模型分别具有18个卷积层、5个最大池化层和3个用于特征重组的中间层 [32]

2.4.4 欧拉区域提议

E-RPN根据输入的特征图,可以解析3D位置 b x b y 、对象尺寸(宽度 b w 和长度 b l )和概率 p 0 ,类别得分为 p 1 p 2 p n ,并确定其方向 b 。为了获得正确的方向,可通过向其添加复杂的角度 来修改常用的Grid-RPN方法:

式中, t x t y 表示每个方框的起始坐标, p w p l 表示方框的大小, c x c y 表示方框与图像左上角的距离。在此扩展的支撑下,E-RPN可根据直接嵌入网络中的虚部和实部来估计准确的物体方向。对于每个网格单元(32×16,参见图2-3),预测了5个对象,包括概率得分和类别得分,每个对象都能产生75个特征。代码如下:

代码2-2 网络的特征提取

2.4.5 锚盒设计

对象检测器预测每个网格单元有5个盒子。所有这些盒子都使用有益的先验(即锚定框)进行初始化,以便在训练过程中更好地收敛。由于角度回归,自由度(即可能的先验数量)增加了,但由于效率方面的原因,并没有增加预测的数量。因此,根据KITTI数据集内的边界框分布,仅将3个不同的尺寸和2个角度的方向定义为先验:车辆尺寸(抬头)、车辆尺寸(朝下)、骑自行车的人数(抬头)、骑自行车的人数(朝下)、行人的大小(朝左)。

2.4.6 复角度回归

根据回归参数 t im t re 可以计算出每个对象的方位角 b ,该参数表征了复数的相位。通过使用arctan 2 t im t re ),即可直接给出角度。这一方面避免了奇异性,另一方面可实现封闭的数学空间,因此对模型的泛化具有有利的影响。将角度的回归参数直接连接到损失函数,如图2-4所示,实现了3D边界框的回归估计。

图2-4 3D边界框的回归估计。基于YOLOv2中显示的回归参数以及面向边界框方向的复杂角度来预测3D边界框,从2D到3D的过渡是根据每个类别的预定高度完成的 [32]

2.4.7 损失函数的构建

基于YOLO和YOLOv2的概念可以构建网络优化损失函数 L ,使用引入的多部分损失,将 L yolo 定义为平方误差的和,通过欧拉回归 L Euler 扩展此方法以利用复数。该复数可被应用于进行角度比较的封闭数学空间。

损失函数的欧拉回归部分是借助于ERP定义的。假设预测的复数与真实情况之间存在差异,即 始终位于具有| z |=1和 =1的单位圆上,便可最小化平方误差的绝对值以获得实际损失:

式中, λ coord 是确保最初阶段能稳定收敛的比例因子,而 则表示与预测的真实情况相比,单元格 i 中的第 j 个边界框预测因子具有最高的交并比(IoU)。

代码2-3 损失函数的构建

使用网络设计的主要优点在于,在一次推理中能预测所有的边界框。E-RPN是网络的一部分,其使用最后一个卷积层的输出来预测所有的边界框。如果只有一个网络,则无须使用特定的训练方法,即可以端到端的方式进行训练。因此,和其他模型相比,该模型的运行时间较短,而其他模型则以滑动窗口的方式生成区域提议,并预测每个提议的集合及其类别。

2.4.8 实验结果

在具有挑战性的KITTI对象检测基准上评估Complex-YOLO,该基准分为汽车、行人和骑自行车的人三个子类别,并对它们进行了2D对象检测、3D对象检测和鸟瞰检测。考虑到对象的大小、距离、遮挡和截断,以“容易”、“中度”和“困难”三个级别对每个类别进行了评估。该公共数据集提供了7481个用于训练的样本(包括带注释的图像)和7518个带有Velodyne激光扫描仪的点云的测试样本。注意:由于只考虑激光雷达的输入,因此这里仅专注于鸟瞰检测,并未运行2D对象检测基准。

2.4.9 训练细节

通过随机梯度下降,从零开始训练模型,权重衰减为0.0005,动量为0.9kg·m/s。这里的实现基于Darknet神经网络框架的修改版本,首先进行了预处理,从Velodyne样本中生成鸟瞰RGB贴图;然后将训练集细分为公开可用的ground truth,但是使用了85%的训练率和15%的验证率,因为是从头开始训练的,并且对所针对的模型能够进行多类预测。反之,例如,VoxelNet修改和优化了针对不同类别的模型,应从可用的ground truth数据中获取数据,因为它首先是用于摄像机检测的,对超过75%的汽车、少于4%的骑自行车的人和少于15%的行人的分配方案是不利的。同样,在所有带注释的对象中,90%以上都面向汽车方向。但是,对于验证集和覆盖了多个用例场景(如城市、高速公路或内城区)的其他未标记KITTI序列,我们看到了令人惊讶的良好结果。

2.4.10 鸟瞰检测

将论文中提出的架构与KITTI基准测试中的一些模型进行了比较,这里的方法实现了更高的帧速率,同时保持了不错的平均精度。

在图2-5中,列出了鸟瞰检测性能的评估结果。此基准使用了边界框重叠来进行比较。为了更好地进行表述,并对结果进行排名,这里还列出了类似的当前靠前的方法,但它们是在官方的KITTI测试集上执行的。在运行和效率方面,Complex-YOLO始终优于所有竞争对手,同时设法达到可比的准确性。在Titan X GPU上其运行时间约为0.02s,考虑到使用功能更加强大的GPU(Titan Xp),其速度比AVOD快5倍。与仅基于激光雷达的VoxelNet相比,其速度要快10倍以上,而在运行时间上却比最慢的竞争对手MV3D长18倍。

图2-5 鸟瞰检测性能的评估结果 [32]

2.4.11 3D对象检测

在图2-6中,给出了3D对象检测性能的评估结果。由于不直接通过回归来估计高度信息,因此这里使用了类似于MV3D的ground truth提取的固定空间高度位置来运行此基准。此外,仅根据对象的类别,为每个对象都注入了预先定义的高度,该高度是根据每个类别的对象的高度平均值计算得出的。这自然降低了所有类别的精度,但是确认了在鸟瞰检测基准上测得的结果良好。

图2-6 3D对象检测性能的评估结果 [32] N4IAga2k3n/IDbqY3tRTgSxqvbCR3EVgf25KYOioP9mrsLApRRtfNaR4fgfB9DHN

点击中间区域
呼出菜单
上一章
目录
下一章
×