新闻  |   论坛  |   博客  |   在线研讨会
史上最全综述:3D目标检测算法汇总!(2)
数据派THU | 2022-10-20 20:22:00    阅读:1598   发布文章

4基于LiDAR的3D目标检测


激光雷达数据主要包括点云、深度图数据等,以下时间轴将较为经典的算法做了个列举。

图片


3D目标检测的数据表示


点云数据和深度图数据与一般的图像不同。点云是稀疏、不规则的,需要设计特殊模型提取特征。而深度图是密集紧凑,深度像素存的是3D信息,而不是RGB值。
这些都是需要打破原先的常规卷积网络的固有思维,而且自动驾驶需要检测目标的实时性,推理要快,如何设计一个在点云和深度图上推理更快的模型也是一个挑战。


1、基于点的3D目标检测


基于点的目标检测成功在点云上应用深度学习方法,提出了一系列框架,可以直接从原始点数据来预测3D目标。将点云通过基于点的主干网络,通过点云算子来提取点云特征,基于下采样的点和特征预测3D框。
基于点的3D目标检测器主要组成部分为:点云采样和特征学习。整体流程示意图和代表性工作见下图和表。
图片图片
点云采样。PointNet++[208]的FPS在基于点的检测器中被广泛采用,这种检测器从原始点集中依次选择最远处的点。PointRCNN[234]是一项开创性的工作,它采用FPS逐步下采样输入的点云,并从下采样点中生成3D候选。
类似的设计范式在随后的许多工作中也被采用,并进行了分割引导滤波[318]、特征空间抽样[321]、随机抽样[189]等改进。
特征学习。上下文点首先用一个预定义的查询球半径进行选择,然后上下文点和特征经过多层感知机和max-pooling,得到新的特征。其它点云操作,包括图操作、注意力操作、Transformer等。
基于点的3D目标检测器受制于特征学习中采用的上下文点数量和上下文半径。增加上下文点数量可以获得更强的表达能力,但会增加内存,在球查询中,上下文半径太小,会造成上下文信息不足,半径太大,造成3D细粒度信息丢失。
对于大部分的基于点的3D目标检测器,推理时间上的瓶颈是点云采样。随机均匀采样因为可以并行,效率最高,但激光雷达扫描点分布不均匀,随机均匀采样会对点云密度高的地方过采样,而稀疏的地方欠采样。
最远点采样及其变体通过从已有的点集中依次选择最远点获得更加均匀的采样结果,但其不能并行,耗时较大,较难做到实时。


2、基于网格的3D目标检测


基于网格的3D目标检测器首先将点云栅格化为离散的网格表示,即体素、柱体和鸟瞰视图(BEV)特征图。然后应用传统的2D卷积神经网络或3D稀疏神经网络提取特征。最后,可以从BEV网格中检测出3D目标。
下图展示了基于网格的3D目标检测的示例,下表给出了基于网格的检测器的分类。网格检测有两个基本组成部分:基于网格的表示和基于网格的神经网络。
图片图片
基于网格的表示。目前有3种主要的网格表示类型:体素、柱体和BEV特征图。
体素。体素是3D立方体,体素细胞内包含点。点云可以很容易地通过体素化转化为体素。由于点云分布稀疏,3D空间中的大部分体素细胞都是空的,不包含点。在实际应用中,只有那些非空体素被存储并用于特征提取。
VoxelNet[359]是一项利用稀疏体素网格的开创性工作,提出了一种新的体素特征编码(VFE)层,从体素细胞内的点提取特征。此外,还有两类方法试图改进用于3D目标检测的体素表示:

  • 多视图体素。一些方法从不同的视角提出了一种动态体素化和融合方案,例如从鸟瞰图和****图[360],从圆柱形和球形视图[34],从深度视图[59]等。
  • 多尺度体素。一些论文生成不同尺度的体素[323]或使用可重构体素。


柱体。柱体可以被视为特殊的体素,其中体素的大小在垂直方向上是无限的。通过PointNet将点聚集成柱状特征[207],再将其分散回去,构建二维BEV图像进行特征提取。PointPillars[117]是一个开创性的工作,介绍了柱体表示,随后的是[283,68]。
BEV特征图。鸟瞰特征图是一种密集的二维表示,其中每个像素对应一个特定的区域,并对该区域内的点信息进行编码。BEV特征图可以由体素和柱体投影到鸟瞰图中获得,也可以通过汇总像素区域内的点统计数据,直接从原始点云中获得。
常用的统计数据包括二进制占用率[314,313,2]和局部点云高度和密度[40,10,342,3,245,346,8,119]。
基于网格的神经网络。目前主要有两种基于网格的网络:用于BEV特征图和柱体的2D卷积神经网络,以及用于体素的3D稀疏神经网络。
与BEV特征图和柱体2D表示相比,体素包含更多结构化的3D信息。此外,可以通过3D稀疏网络学习深度体素特征。
但是,3D神经网络会带来额外的时间和内存成本。BEV特征图是最有效的网格表示,它直接将点云投影到2D伪图像中,而无需专门的3D算子,如稀疏卷积或柱体编码。2D检测方法也可以在BEV特征图上无缝应用,无需太多修改。
基于BEV的检测方法通常可以获得高效率和实时推理速度。然而,简单地汇总像素区域内的点统计信息会丢失太多的3D信息,与基于体素的检测相比,这会导致检测结果不太准确。
基于柱体的检测方法利用PointNet对柱体单元内的3D点信息进行编码,然后将特征分散回2D伪图像中进行有效检测,从而平衡3D目标检测的效果和效率。
选择合适大小的网格单元是所有基于网格的方法都必须面对的关键问题。通过将连续点坐标转换为离散网格索引,网格表示本质上是点云的离散形式。
在转换过程中不可避免地会丢失一些3D信息,其效果很大程度上取决于网格单元的大小:网格小,分辨率高,可以保持更细粒度的细节,对于准确检测3D目标至关重要。然而,减小网格单元又会导致2D网格表示(如BEV特征图或柱体)的内存消耗呈二次方增长。至于像体素这样的3D网格表示,问题可能会变得更加严重。
因此,如何平衡更小网格尺寸带来的效果和内存增加影响效率,仍然是所有基于网格的3D目标检测方法的一个挑战。

3、基于Point-Voxel的3D目标检测方法


基于点-体素的方法采用了一种混合架构,利用点和体素进行3D目标检测。主要分为两类:单阶段检测框架和两阶段检测框架。下图显示了这两个类别的示例及分类:

图片图片
单阶段基于点-体素的3D目标检测器通过骨干网络中的点-体素和体素-点的变换来连接点和体素的特征。点包含细粒度的几何信息,体素计算效率高,在特征提取阶段将它们结合在一起更加有利。
代表性工作包括:PVCNN、SPVNAS、SA-SSD、PVGNet等。
两阶段的基于点-体素的3D目标检测器,在第一阶段,使用基于体素的检测器来生成一组3D候选目标。在第二阶段,首先从输入点云中采样关键点,然后通过新的点算子对关键点进行进一步细化。代表工作包括:PV-RCNN、LiDAR R-CNN、Pyramid R-CNN、CT3D等等。
与纯体素检测方法相比,基于点-体素的3D目标检测方法在增加推理时间的同时,可以获得更好的检测精度。

4、基于Range的3D目标检测


Range图像是一种密集而紧凑的2D表示,其中每个像素包含3D深度信息,而不是RGB值。需要针对Range图设计模型和算子,并要选择合适的视图。
图片图片
Range图是2D的,可以借鉴2D目标检测方法,比如LaserNet,还有一些借鉴了U-Net、RPN、R-CNN、FCN、FPN等。
Range图的像素包含的是距离信息,而非颜色值,因此传统的2D标准卷积算子无法完全适用,滑动窗口中的像素在3D空间中可能会相距很远。一些工作采用了新算子来有效地从Range像素中提取特征,包括深度扩张卷积[11]、图算子[26]和元核卷积[67]等。
Range图是从Range视图(Range View)中获取的,RangeView是点云的球面投影。对于许多基于深度的方法[178,11,67,26]来说,直接从Range视图检测3D目标是很自然的。
然而,从Range视图进行检测不可避免地会遇到球面投影所带来的遮挡和尺度变化问题。为了规避这些问题,许多方法尝试利用其他视图来预测3D目标,例如[219]中利用的圆柱形视图(CYV),其它方案尝试Range视图和鸟瞰视图(BEV)、点视图(PV)的组合。
Range视图由于可以借鉴2D卷积的优点,做特征提取比较好,但由于遮挡和尺度问题,直接在上面做检测效果不好,需要结合BEV来做检测,所以现在一般是Range图做特征提取,BEV上做检测。


*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。

参与讨论
登录后参与讨论
推荐文章
最近访客