自动驾驶算法与芯片设计
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

2.3.2 基于点云的检测方法

当前,基于点云的3D物体检测方法被划分为三类:投影方法、体积卷积方法和点网方法。基于点云的检测方法比较如表2-3所示。

表2-3 基于点云的检测方法比较

1.投影方法

2D图像中的图像分类和对象检测,是计算机视觉领域中经过深入研究的一个主题。2D图像的数据集和基准架构的可用性,使检测方法更具吸引力。因此,点云投影方法首先通过平面、圆柱或球形投影将3D点转换为2D图像,然后使用标准的2D对象检测模型,对位置和尺寸进行回归来恢复3D边界框。

Li等人[19]使用圆柱投影和全卷积网络(FCN)来预测车辆的3D边界框。投影产生的输入图像,具有编码点距传感器的高度和距离的通道。该输入被馈送到2D FCN,后者对三个连续层的输入进行下采样,然后使用转置的卷积层将这些映射上采样,作为边界框(Bounding Box,BB)的预测输出。第一次输出,确定给定点是车辆还是背景的一部分,故可有效地将其作为弱分类器。第二次输出,编码3D边界框的顶点,以第一次输出为条件来限制车辆。由于每个车辆都会有很多边界框估计,因此可采用NMS(Non Maximum Suppression)策略来减少重叠预测。在KITTI数据集上,可以端到端的方式训练这种检测模型并进行损失平衡,以避免偏向于出现更频繁的负样本。

使用圆柱和球形投影,论文[20]中使用了鸟瞰投影来进行3D对象检测。其在输入表示形式上有所不同:第一次使用位于单元格内点的高度最小值、中值和最大值,作为通道来编码2D输入单元格;而后则使用高度、强度和密度通道。一种方法是使用Faster R-CNN架构作为基础,并带有调整后的修正网络。该网络的输出是具有方向的3D边界框。尽管它们的鸟瞰结果合理,但是其方法所执行的方向及角度回归效果很差。由于大多数激光雷达是具有高点密度的传感器,故限制了所得模型在低端激光雷达传感器上的应用。

Beltrán[20]提出了一种新颖的编码,该编码根据所使用的激光雷达的参数来归一化密度通道。这种归一化创建了统一的表示形式,并允许将检测模型推广到具有不同规格和光束数量的激光雷达传感器上。具有实时自动驾驶能力,是对部署在自动驾驶汽车上的安全关键系统的一项基本要求,其中包括物体检测。这些系统必须满足严格的响应时间指标,以使车辆对环境做出合理的响应。

Complex-YOLO[21]则参考了YOLO体系结构的效率,并通过扩展来预测额外的尺寸和偏航角。虽然经典的RPN方法进一步处理了每个区域以进行更精细的预测,但该体系结构被归类为单次检测器,可在单个向前步骤中获得检测。尽管检测性能较差,但是其使Complex-YOLO的运行速度达到50fps,效率比以前的方法提高了5倍。

量化自动驾驶物体检测系统做出的预测可靠性,对于车辆的安全运行至关重要。与人类驾驶员一样,如果系统对预测的信心不足,则应进入安全状态,以避免风险。尽管大多数检测模型都会为每个预测提供分数,但是其倾向于使用softmax归一化来获取类分布。由于该归一化迫使概率总和统一,因此其不一定能反映预测的绝对置信度。使用贝叶斯神经网络[22]来预测感兴趣区域合并后的类别和3D边界框,可以量化两个输出的网络置信度。

2.体积卷积方法

体积卷积方法假定对象或者场景以3D网格或体素(Volume Pixel)表示形式来表示,其中每个单元格都有属性,例如二进制占用率或连续点密度。这种方法的优点之一是,它们明确地编码形状信息。但结果是,大多数体积是空的,导致在处理其空单元格时效率低下。另外,由于数据实际上是三维的,因此3D卷积是必需的,从而大大增加了此类模型的计算成本。

为此,在论文[23-24]中,在整个场景体积表示中,解决了使用一级全连接网络对驾驶场景进行目标检测的问题。一级检测不同于二级检测的地方在于:它首先生成区域提议,然后在第二个处理阶段进行细化。

Li在论文[23]中使用二进制体积输入,仅检测车辆。该模型的输出是“对象”和对象框顶点预测坐标。第一个输出预测估计的区域是否属于感兴趣的对象;第二个输出预测其坐标。作者使用了昂贵的3D卷积来限制时间性能。为了更有效地实施检测,在论文[24]中固定了每个类别对象框的大小,只检测汽车、行人和骑自行车的人。

只检测车和人的假设简化了架构,并与稀疏的卷积算法配合,极大地降低了模型的复杂性。L1正则化和ReLU用于维持卷积层之间的稀疏性。在推理过程中,并行网络可独立用于每个类别,而固定对象框大小的假设,则允许直接在正样本3D截取的区域来训练网络。在训练过程中,作者通过旋转和平移变换来增强数据,并采用严格的负面挖掘来减少误报。

3.点网方法

点云是由稀疏分布在空间中的可变数量的3D点组成的。那么,如何将其结构合并到假定输入数据大小固定的传统深度前馈神经网络中呢?以往的方法是使用投影,将点云的原始点转换为图像,或者使用体素表示,将其转换为体积结构。还有一类方法是使用点网,它通过使用原始点作为输入来处理不规则性,以试图减少3D空间中投影或量化所引起的信息丢失。

论文[25]中介绍了点网类别中的开创性工作,即将3D点云分段作为输入来执行对象分类和对象分割。网络使用全连接(FC)层逐点执行转换,并通过最大池化层聚合全局功能,从而确保了点顺序的独立性。实验结果表明,这种方法优于体积卷积方法。该模型在PointNet++[26]中得到了进一步扩展,其中对每一层都以分层结构逐步编码更复杂的特征。

在基于点云的检测方法中,投影方法因接近标准图像的对象检测方法而备受关注,特别是它在时间复杂度和检测性能之间提供了良好的折中。但是,大多数方法在投影点云时,比如密度、高度等都依赖于手工设计的功能。反之,PointNet方法则使用原始3D点来学习特征空间中的表示。在点网类别中,仍然有必要研究使用整个场景点云作为输入的新形式,因为常规的PointNet[25]模型采用分段对象。同样,体积卷积方法将点云转换为体素表示,要求对其中的空间信息进行明确编码。这种方法需要3D卷积,从而导致稀疏表示效率低下。