查看原文
其他

FastPillars实时3D目标检测 | 完美融合PointPillar、YOLO以及RepVGG的思想

The following article is from 集智书童 Author 小书童

点击下方卡片,关注“新机器视觉”公众号

重磅干货,第一时间送达

3D检测器的部署是现实世界自动驾驶场景中的主要挑战之一。现有的基于BEV(即鸟瞰图)的检测器支持稀疏卷积(称为SPConv),以加快训练和推理,这为部署(尤其是在设备上应用)带来了困难。

在本文中解决了从LiDAR点云中高效检测3D目标的问题,并考虑了部署。为了减少计算负担提出了一种从行业角度来看具有高性能的基于Pillar的3D检测器,称为FastPillars。与以前的方法相比,本文引入了一个更有效的最大和注意力Pillar编码(MAPE)模块,并以重参化的方式重新设计了一个功能强大、轻量级的骨干CRVNet,CRVNet结合了Cross Stage Partial network(CSP),形成了一个紧凑的特征表示框架。

大量实验表明,FastPillars在设备速度和性能方面都超过了最先进的3D检测器。具体而言,FastPillars可以通过TensorRT有效部署,在nuScenes测试集上使用64.6 mAP的单个RTX3070Ti GPU获得实时性能(~24FPS)。

1、简介

使用LiDAR点云的3D目标检测在自动驾驶和机器人领域有着广泛的应用。与RGB图像相比,3D点云对照明变化不太敏感,可以准确地表示场景的几何信息。然而,基于激光雷达的3D目标检测有其自身的挑战。

首先,与规则矩阵的图像不同,点云是不规则和无序的。第二,与密集图像不同,点云是稀疏的,并且在空间上是离散的,尤其是远离自身的点。第三,与2D检测相比,3D目标检测需要估计更高的空间维度信息(例如,3D位置、3D大小、方向),这使其更加复杂。

主流方法之一是直接从原始点云中学习区分表示,而不将其转换为体素网格。在这些方法中,对称函数被用来处理点的无序性。尽管这些方法尽可能保留点云的原始几何信息,但这些方法可能对有效的硬件实现不友好,因为它们通常需要在3D空间中进行点查询/检索(例如,PointNet++)。

基于体素的3D检测器是另一种主流解决方案。在这些方法中,首先将不规则点云转换为排列的网格(即体素),然后使用2D/3D CNN提取特征。在体素化过程之后,由于点云的稀疏性,将生成许多空网格,这将导致巨大的冗余计算开销。

为了提高计算效率,一些方法使用三维稀疏卷积来跳过空网格上的卷积计算。尽管稀疏卷积是有效的,但当转换为ONNX/TensorRT进行部署和网络量化时,它会带来挑战,并阻碍通过这些技术进一步加速。这些技术通常将模型推理速度提高几倍,并广泛用于工业深度学习模型部署,特别是在资源受限的平台上。

目前,设备上部署的流行方法之一是PointPillars。在该方法中,首先将点云转换为Pillar(即,仅在平面中进行体素化),然后使用PointNet学习每个Pillar中的点的特征。然后,应用2D检测器流水线来预测3D边界框。该方法仅采用2D卷积,易于转换为ONNX/TensorRT进行部署,并利用各种精度的网络量化FP32/FP16/Int8,满足不同嵌入式平台的要求。

然而,PointPillars只是利用最大池化操作来聚合一个Pillar中的所有点特征,这会大量减少局部细粒度信息,并降低性能,尤其是对于小目标。此外,基于特征金字塔网络(FPN),PointPillars以1×、2×和4×的步长直接融合多尺度特征,但不同层之间缺乏充分的特征交互。虽然PointPillars在速度上有很大的优势,但其性能仍远远落后于其他方法。

为了提高基于Pillar的方法的性能,提出了PillarNet,它可以在保持实时性的同时实现高性能的3D检测性能。PillarNet使用基于稀疏卷积的编码器网络进行空间特征学习,使用Neck模块进行高级和低级特征融合。

然而,在PillarNet中使用SPConv使得很难通过TensorRT进行量化和部署。具体而言,SPConv将难以量化的3D坐标作为输入。此外,如果想将常用的TensorRT用于量化部署,SPConv不是TensorRT中的内置操作。因此,需要在CUDAC++中编写一个自定义插件,并具有固定形状输入和兼容性降低等几个限制。它还需要考虑融合以实现快速执行,从而使部署过程更加复杂。

在本文中提出了一种来自LiDAR点云的高效3D目标检测器,称为FastPillars。FastPillars完全基于标准卷积,因此可以在工业应用中轻松部署,并无缝享受TensorRT和网络量化的加速。FastPillars由4个块组成,分别用于Pillar编码、特征提取、特征融合和3D边界框回归。

对于Pillar编码,本文提出了一种简单但有效的最大和注意力Pillar编码(MAPE)模块,该模块几乎无需额外延迟(4ms)即可自动学习局部几何图案。MAPE模块专注地整合了每个Pillar中的重要局部特征,这大大提高了小目标的准确性。

对于特征提取,为了增强模型的表示能力并减少低延迟机载部署的计算负担,设计了一个紧凑高效的骨干网络,名为CRVNet(Cross-Stage Patrial RepVGG style network)。

从CSP结构和重参化的RepVGG网络中汲取灵感,并提出了一个紧凑的网络,同时保持了强大的特征提取能力。此外,在特征融合块中,通过分层地融合来自不同层次和感受野的特征来丰富语义特征。对于回归模块,采用了一个高效的基于中心的Head来分别回归目标的得分、维度、位置、旋转和在联合上的框相交(IOU)信息。

将这些组件组合在一起,作者构建了FastPillars,这是一个完全卷积部署友好的基于柱的3D检测器。对于实时嵌入式应用,所提出的方法在速度和精度之间实现了更好的权衡。此外,大量实验表明FastPillars在nuScenes数据集上实现了最先进的性能。此外,它可以通过TensorRT无缝加速,达到24 FPS的速度。

贡献总结如下:

  1. 提出了一种基于Pillar的单阶段3D检测器,称为FastPillars。所提出的方法是部署友好的,消除了稀疏卷积的需要。作者还提出了FastPillars的两个实例,即FastPillars-s和FastPillars-m,在24 FPS和nes测试集上分别达到64.6 mAP和70.1 NDS,在16 FPS上达到66.0 mAP和71.1 NDS。
  2. 并提出了一种简单而有效的 Max-and-Attention Pillar Encoding(MAPE)模块。MAPE可以提高每个Pillar特性的表示能力,几乎不需要额外的延迟(只有≈4 ms)。
  3. 设计了一个紧凑的全卷积主干网络CRVNet,它具有竞争性的特征学习能力和推理速度,而不需要稀疏卷积。同时,还证明了专门为二维图像设计的轻量级网络结构可以很好地处理3D点云的任务,并在性能和速度之间实现了良好的权衡。
  4. 在nuScenes数据集上的大量实验表明,FastPillars具有优越的效率和准确的检测性能。还提供了一个详细的性能与推理速度分析,以进一步验证方法的优越性。

2、相关方法

2.1 基于Voxel的三维探测器

基于体素的3D检测器通常将非结构化点云转换为紧凑形状的规则柱/体素网格。这进一步允许通过利用成熟的2D/3D卷积神经网络来学习点特征。

VoxelNet是一项开创性的工作,它对输入点云进行密集体素化,然后利用体素特征提取器(VFE)和3D CNN来学习几何表示。其缺点是由于3D卷积的巨大计算负担,推理速度相对较慢。

为了节省内存成本,SECOND使用3D稀疏卷积来加速训练和推理。这里,稀疏卷积仅对非空体素进行操作,这大大提高了计算和存储效率。SPConv的一个缺点是它对部署不友好,这使得在嵌入式系统上应用它们很困难。

为此,PointPillars被提议将体素进一步简化为Pillar(即,在高度上没有体素化),并利用高度优化的2D卷积,这在低延迟的情况下获得了良好的性能。同时,易于部署的优势使PointPillar成为实践中的主流方法。

之后,提出了CenterPoint,它使用几乎实时且Anchor-Free的管道,实现了最先进的性能。最近,PillarNet项目指向BEV空间,并使用基于“编码器颈部头部”架构的2D SPConv以实时速度提高3D检测性能。由于SPConv的使用,它不可避免地面临着在工业应用中部署的困难,并随着网络量化而进一步加速。

2.2 用于对象检测的工业级轻量级网络结构

多年来,YOLO系列一直是轻量级2D检测的事实上的行业标准,其主干设计主要继承了CSPNet的思想。通过在两个单独的分支中处理部分特征以获得更丰富的梯度组合,CSPNet不仅降低了内存和计算成本,而且提高了性能。

最近,RepVGG使用基于重参化的结构设计重构了著名的普通网络VGG。在训练期间,普通的Conv-BN-ReLU被其过度参数化的3分支对应物(即Conv3×3-BN、Conv1×1-BN和Identity BN)所取代,然后是3个分支相加后的ReLU函数。3分支结构实质上有助于网络优化,而重参化在推理时将3个分支相同地转换为一个分支,提高了推理效率。由于这一优势,这一趋势席卷了2D检测器,并在极端速度下表现出高性能,如PPYOLOE、YOLOv6和YOLOv7。

3、本文方法

在本节中将介绍用于实时基于Pillar的单阶段3D目标检测的FastPillars,这是一个端到端可训练和无spconv的神经网络。如图1所示,本文的网络架构由4个部分组成:Pillar编码模块、用于特征提取的主干、用于特征融合的Neck和用于3D框回归的头部。

在介绍详细的方法之前,给出了基于激光雷达的3D检测的基本任务定义。给定一个点集与N点在三维空间,定义为,其中分别表示每个点的坐标值沿轴X,Y,Z,和是激光反射强度。是相对时间戳,它是可选的,并取决于数据集的特定设置。

给定一组对象在三维场景,M是对象的总数,是j对象,是对象的中心,是对象的大小,θ是对象的航向角和是对象的类。3D目标检测的任务是从点云P中准确地检测出3D Box B。

3.1 Max-and-Attention Pillar Encoding

点云体素/Pillar编码对于基于网格的3D检测方法至关重要。开创性的PointPillars积极利用最大池化来聚合每个Pillar中的点特征,以表示相应的Pillar。然而,最大池化操作将导致细粒度信息的丢失,而这些局部几何模式对于基于Pillar的对象非常关键,尤其是对于小目标。

在本文中提出了一种简单但有效的Pillar编码模块,称为最大和注意力Pillar编码(MAPE),它考虑了每个Pillar的局部详细几何信息,计算负担可忽略不计,并有利于BEV中小目标(例如行人等)的性能。同时,MAPE模块的轻量级Pillar编码方法使其非常适合实时嵌入式应用。如图2所示,MAPE模块由3个单元组成:

  1. 点编码单元

  2. 最大池化编码单元

  3. 注意力池化编码单元

假设一个点云P在3d空间的范围L,W,H沿轴X,Y,zP同样分为一个特定的Pillar网格的大小,H。这里PointPillar只体素化点云在XY平面没有高度维度。设是一个具有空间形状的为Pillar的索引。

1、Point Encoding

首先,将每个Pillar中的点扩充为,其中是自我坐标系中的原始点坐标,是与当前Pillar中心的偏移量,是通过减去点云的最小值得到的相对坐标。值得注意的是,在每个Pillar中没有采用任何采样策略来保持每个Pillar中的点的数量相同,因为这种操作可能会减少有用的点,并损害原始的几何模式。其次,将v内的增广点向特征通过MLP层映射到高维特征空间。这个过程被表述为:

其中,函数m(·)表示具有批处理归一化(BN)层和LeakyReLU层的多个MLP层的堆栈,表示函数m(·)的可学习权值,是点向特征。

2、Max-pooling Encoding

该单元用于将一个Pillar内的所有点特征聚合成一个单一的特征向量,而它对每个Pillar内的点排列是不变的,其表述为

其中,max(·)表示跨这些点特征的最大池化操作,是每个Pillar的结果特征向量。

3、Attention-pooling Encoding

该单元被设计用于维护局部细粒度信息。最大池化很难在每个Pillar v中整合点级特性,因为它只取最大值。然而,从BEV的角度来看,丰富的局部模式对于较小的目标检测非常有用。因此,转向强大的注意力机制来自动学习重要的局部特征。

具体地说,首先,使用一个由共享MLP组成的函数来预测Pillar中这些点的注意分数,即,其中表示MLP的可学习权重,表示注意力分数。其次,学习到的注意力分数可以看作是一个动态加权点态特征的Soft Mask。最后,加权求和特征如下:

其中,是结果Pillar 注意池化特征。

最后,将学习到的Pillar最大池化和注意力池化特征平均,即,其中是最终的Pillar 特征,包括一个Pillar 内部的全局感知和局部感知信息。最大池化操作保持了每个Pillar 中的最大响应特性,而注意力池化特性保持了局部细粒度信息。

通过结合这两个特性,可以有效地保留更丰富的信息,以增强Pillar的表示。尽管这是一个简单的方法,但MAPE模块显著地影响了小目标的性能,如实验所示。值得注意的是,MAPE模块在nuScenes数据集上提高了大约0.6 mAP性能,只有额外的4ms延迟。

3.2 CRVNet Backbone

主干网络的目的是从投影的二维伪图像或三维体素特征中分层提取不同层次的语义特征。之前的工作通常使用稀疏卷积来基于ResNet或VGG 架构提取体素/Pillar 特征。稀疏卷积大大提高了计算效率,因为大多数体素/Pillar 都是空的。

例如,在nuScenes数据集中的单帧点云中,空Pillar 的比例约为90%。然而,在稀疏特征图上直接使用二维卷积会导致过高的计算负担和高延迟,这促使设计一个更紧凑、更有效的骨干网络。

受RepVGG和CSPNet的启发,提出了CRVNet((Cross-Stage-Patrial RepVGG-style Network)。网络的主要组成部分如图3所示。训练阶段的每个模块如图3(a)所示。在推断阶段(图3(b)),每个RepBlock被转换为具有激活函数的3×3卷积层(表示为RepConv)的堆栈。这是因为3×3卷积具有更高的计算密度,并且在大多数设备上效率很高。

因此,RepBlock骨干网络以优异的特征表示能力显著降低了推断延迟。此外,作者注意到,如果模型容量进一步扩大,单路径网络中的计算成本和参数数量将呈指数增长。因此,进一步将RepBlock与CSP结构结合起来。如图3(d)所示,CSP结构由3个1×1卷积层和原始网络结构组成。

作者在主干网络的每个阶段使用CSP结构,其中每个阶段包含N个RepConv(图3(c))。通过引入CSP结构,整个网络具有更少的参数,并且更加紧凑和高效。值得注意的是,尽管RepBlock和CSP在基于2D图像的任务中被证明是有效的,但它们尚未被充分用于3D点云任务。

FastPillars-s和FastPillar-m模型分别建立在VGG和ResNet-34网络上。作者发现,最终性能对后期的容量不敏感,但对早期的容量非常敏感,这与FCOS LiDAR中的情况一致。因此,将FastPillers-s中VGG的块数从(4,6,16,1)更改为(6,16,1,1),FastPiller-m中ResNet-34的块数从(3,4,6,3)更改为(6,6,3,2),同时都删除了第一级中的前2×下采样。

3.3  Neck and Center-based Heads

在Neck模块中,采用了PillarNet中的丰富Neck设计。Neck模块将特征与来自主干的8×和16×特征图融合,以实现不同空间语义特征的有效交互。作者发现,在这种Neck设计中,级联操作之前的卷积层的数量显著影响最终性能。将在实验中详细讨论这一点。对于回归头,直接遵循3D Center-Track使用其简单但有效的头设计。

此外,还添加了一个IoU分支来预测预测框和GT之间的3D IoU。然后,Afdetv中的IoU-Aware校正函数用于弥补分类和回归预测之间的差距。具体而言,非最大抑制(NMS)后处理的校正置信分数C通过以下公式计算:

其中,S为预测的分类分数,I为预测的IoU值,α∈[0,1]为平衡S和I贡献的超参数。

3.4 Loss Functions

遵循3D Center-Track来设计损失函数。具体来说,对于分类分支使用Focal Loss作为Heatmap损失

。对于3D框回归,使用L1损失来监督它们的定位偏移、大小和方向。对于IoU分支,也利用L1损失来监督,其中目标3D IoU评分I是。此外,在Pillarnet之后,在回归分支中添加DIoU损失的。总损失包括以下四个部分:


其中,λ1、λ2和λ3表示这些损失的平衡权重。

4、实验

4.1 消融实验

1、Max-and-Attention Pillar Encoding Module

2、 CSP Ratios Selection

3、 Lightweight Backbone Architecture

4、MAPE中不同池化操作的消融实验

4.2 SOTA对比

4.3 速度对比

4.4 可视化

部分可视化结果如图4所示。在这里,基于FastPillars-s模型在场景上的一些具有挑战性的场景中可视化检测结果。正如所看到的,FastPillars可以在各种具有挑战性的环境下可靠地工作。可以清楚地看到,提出的FastPillars能够检测小目标,如行人、障碍和自行车。

5、参考

[1].FastPillars: A Deployment-friendly Pillar-based 3D Detector.


本文仅做学术分享,如有侵权,请联系删文。

—THE END—

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存