本文首发于微信公众号 CVHub,不得以任何形式转载到其它平台,仅供学习交流,违者必究!
本文正在参加 人工智能创作者扶持计划
Title: FastPillars: A Deployment-friendly Pillar-based 3D Detector
Paper: arxiv.org/pdf/2302.02…
Code: github.com/StiphyJay/F…
导读
近几年,随着深度学习算法与硬件平台的快速发展,在自动驾驶和机器人领域利用LiDAR点云的3D目标检测技术得到了广泛的关注。然而,与基于RGB图像相比,3D点云对光照变化不太敏感,并且能够准确地表示场景的几何信息。然而,基于 LiDAR 的3D目标检测也有自身的局限,主要体现在以下几点:
- 图像是密集的,点云稀疏且离散;
- 图像是规则的,点云是不规则且无序的;
- 3D目标检测需要估计比2D检测更高的空间维度信息(如3D位置、3D大小、方向)。
基于 LiDAR 的3D目标检测算法主要有两种范式。第一种方法直接将原始点云作为网络的输入进行特征编码,尽管这些方法尽可能地保留了点云的原始几何信息,但对硬件部署极度不友好。另一种主流算法为基于体素的3D检测算法。它们首先将不规则的点云转换为规则的网格即体素,然后使用 2D/3D CNN 提取特征。进一步地,为了提高计算效率,它们使用3D稀疏卷积来跳过空网格上的卷积计算。然而,稀疏卷积在一般硬件平台的部署与量化存在极大的困难。
目前,业界最常用的部署方法是PointPillars。它首先把点云转换成柱子即在平面上体素化,然后利用PointNet来学习每个柱子中的点特征。这种网络结构由 2D 卷积组合,对部署极度友好。然而,PointPliiars 只是利用最大池化将所有点特征聚合在一个柱子中,这会导致损失许多局部细粒度信息。基于此,PillarNet使用稀疏卷积提高了有效空间特征的提取,但由于其使用的SPConv加大了部署的难度。
为此,本文提出了一种基于 LiDAR 3D 点云的高效 3D 目标检测器,称为FastPillars。FastPillars 完全基于标准卷积,可以轻松部署在工业应用中,无缝享受TensorRT和网络量化的加速。FastPillars的网络结构特点如下:
- 一个简单但有效的
Max-and-Attention Pillar Encoding, MAPE模块,自动学习局部几何图案,且几乎没有额外的延迟(大约 4 ms); - 设计一个紧凑高效的骨干网络·CRVNet`提取更具有判别力的特征;
- 基于中心头部回归目标的分数、维度、位置、旋转和框交集(IOU)信息。
总的来说,本文的主要贡献如下:
- 提出了一种易于部署的基于柱子的单阶段 3D 检测器,称为
FastPillars。 - 引入了一个简单但有效的
MAPE模块,在没有额外延迟的情况下提高每个柱子特征的表示能力。 - 设计了一个紧凑的全卷积主干网络
CRVNet,它具有有竞争力的特征学习能力和推理速度,无需稀疏卷积。 - 在
nuScenes数据集上进行了广泛的实验,验证了FastPillars具有卓越的效率和准确的检测性能。
欢迎大家关注我们的公众号CVHub,每日都给大家带来更多原创、多领域、有深度的前沿 AI 论文解读与工业成熟解决方案!
方法
FastPillars网络框架如上图所示,这是一种端到端可训练且无 SPConv 的深度神经网络,主要由以下四部分组成:
- 支柱编码模块
- 特征提取的主干
- 特征融合的颈部
- 3D 框回归的头部
Max-and-Attention Pillar Encoding
MAPE 是一种简单但高效的 Pillar 编码模块,它考虑了每个 Pillar 的局部几何信息,计算负担可忽略不计,有利于小物体的性能。如上图所示,MAPE 模块主要由三个单元组成,即点编码单元、最大池化编码单元以及注意力池化编码单元。下面简要介绍下。
Point Encoding
首先,我们将每个 Pillar 中的点扩充为 p_i = {[x_i, y_i, z_i, r_i, t_i, x_i^c, y_i^c, z_i^c, x^r_i, y^r_i, z_i^r]∈R^{N×11}}[x_i, y_i, z_i][x_i^c, y_i^c, z_i^c]p_i[x_i^r, y_i^r, z_i^r]p_ivp_i$ 映射到高维特征空间。这个过程被表述为:
其中函数 表示具有 BN 和 Leaky ReLU 的多个 MLP 层的堆积, 表示可学习函数 的权重, 是逐点特征。
Max-pooling Encoding
这个操作是将 Pillar 内的所有点特征聚合为单个特征向量,同时它对每个 Pillar 中的点排列具有不变性,公式为:
其中 表示最大池化操作, 是每个 Pillar 的最终特征向量。
Attention-pooling Encoding
这个单元用于维护局部细粒度信息。具体来说,我们使用由共享 MLP 组成的函数 来预测注意力分数,学习到的注意力分数可以看作是动态加权点的soft mask。最后,加权求和的特征为:
最大池化操作能够保留每个 Pillar 中的最大响应特征,而注意力池化特征保持局部细粒度信息。通过结合这两个特征,可以有效地保留更丰富的信息,用于增强 Pillar 的表示。尽管是一种简单的方法,但我们的 MAPE 模块会显著增强小物体的性能,且仅增加了 4 毫秒的延迟。
CRVNet Backbone
受 RepVGG 和 CSPNet 的启发,本文提出了 CRVNet。该网络的主要组成部分如上图所示。训练阶段的每个 block 如上图(a)所示。在推理阶段,每个 Rep-Block 都被转换成一堆具有激活函数的 3×3 卷积层。这是因为 3×3 卷积具有更高的计算密度并且在大多数设备上都非常高效。此外,作者发现如果模型容量进一步扩大,单路径普通网络中的计算成本和参数数量呈指数增长。因此,本文进一步将 RepBlock 与 CSP 结构结合起来。
如上图(d)所示,CSP 结构由三个 1×1 卷积层和原始网络结构组成。我们在骨干网络的每个阶段都使用 CSP 结构,其中每个阶段包含 N 个 RepConv。 通过引入 CSP 结构,整个网络参数更少,更紧凑高效。值得注意的是,尽管 RepBlock 和 CSP 在基于 2D 图像的任务中被证明是有效的,但它们尚未被完全用于 3D 点云任务。
Neck and Center-based Heads
颈部模块将特征与来自主干的 8× 和 16× 特征图融合,以实现不同空间语义特征的有效交互。 我们通过大量实验分析发现在这种颈部设计中,连接操作之前的卷积层数会对最终性能产生重大影响。对于回归头,我们除了沿用主流的结构外,还添加了一个 IoU 分支来预测预测框和真实框之间的 3D IoU。 此外,我们还使用了 IoU-Aware 校正函数用于弥合分类和回归预测之间的差距:
其中 是预测的分类分数, 是预测的 IoU 值, 是平衡 和 贡献的超参数。
Loss Functions
整体的损失函数由以下四部分组成:
其中 、 和 表示这些损失的平衡权重。对于分类分支,使用 Focal loss 作为热图损失 。对于 3D 框回归,采用 L1 损失 来监督它们的定位偏移、大小和方向。此外,对于 IoU 分支,则利用 L1 损失 进行监督,其中目标 3D IoU 分数 为 。最后,在回归分支中添加了 DIoU 损失。
实验
在nuScenes测试集上,对比其他SOTA方法,本文方法在多个指标上均能获得最高的精度表现
本文方法在精度和速度两个指标下取得了最好的平衡。
MAPE 结合了最大池化和注意力池化两种不同操作的各自优势,首先了**“1+1>2”**的效果。
通过结合 CSP 和 Rep 两种有效卷积结构,网络不仅降低了模型大小和延时,同时也提升了精度。
总结
本文提出了FastPillars,一种实时单阶段基于Pillar的3D检测器,不但能够提高检测精度和运行时效率,同时还能够轻松部署。值得注意的是,作者通过重新设计的强大架构安全地回避了不利于部署的SPConv。 此外,额外引入了MAPE模块来补偿PointPillars的Pillar编码中的信息损失。最后,通过大量的实验分析,FastPillars在速度和准确性之间实现了更好的权衡,并且可以通过TensorRT进行定量部署,用于实时设备上的应用程序。
写在最后
如果您也对人工智能和计算机视觉全栈领域感兴趣,强烈推荐您关注有料、有趣、有爱的公众号『CVHub』,每日为大家带来精品原创、多领域、有深度的前沿科技论文解读及工业成熟解决方案!欢迎扫码与我交流,一起探讨更多有趣的话题!
本文正在参加 人工智能创作者扶持计划