摘要
设计一个高效但易于部署的3D主干来处理稀疏点云是3D目标检测中的一个基本问题。与定制的稀疏卷积相比,Transformers中的注意力机制更适合于灵活地建模长距离关系,并且更易于在现实世界应用中部署。然而,由于点云的稀疏特性,在稀疏点云上应用标准Transformer是非常重要的。因此本文提出了动态稀疏体素Transformer(DSVT),这是一种用于室外3D目标检测的基于单步窗口的体素Transformer主干。为了有效地并行处理稀疏点云,论文提出了动态稀疏窗口注意力,它根据稀疏性在每个窗口中划分一系列局部区域,然后以完全并行的方式计算所有区域的特征。为了允许跨集合连接,论文设计了一种旋转集合分区策略,该策略在连续的自注意力层中的两个分区配置之间交替。为了支持有效的下采样并更好地编码几何信息,论文还提出了一个稀疏点云上的注意力式3D池化模块,该模块功能强大且易于部署,无需使用任何定制的CUDA操作。论文的模型在大规模Waymo开放数据集上实现了最先进的性能,并取得了显著的进步。更重要的是,TensorRT可以以实时推理速度(27Hz)轻松部署DSVT。
总结来说,本文的贡献如下:
- 论文提出了动态稀疏窗口注意力,这是一种新的基于窗口的注意力策略,用于并行有效地处理稀疏三维体素;
- 论文提出了一种可学习的3D池化操作,它可以有效地对稀疏体素进行下采样,并更好地编码几何信息;
- 基于上述关键设计,论文介绍了一种高效但易于部署的Transformer 3D主干,无需任何定制CUDA操作。
方法
本节介绍了动态稀疏体素Transformer(DSVT),这是一种高效且易于部署的仅用于Transformer的3D主干,用于增强3D目标检测。DSVT可以管理大范围内任意大小的稀疏体素化表示,并通过动态稀疏窗口注意力机制高效地并行处理它们。为了支持有效的下采样,进一步提出了一个可学习的3D池化模块,以更好地编码局部几何信息。
概览
DSVT体系结构概述如图3所示,图3说明了pillar版本(DSVT-P)。它首先通过体素特征编码(VFE)模块将输入点云转换为稀疏体素,就像先前基于体素的方法[37,45,48]。每个体素将被视为“token”。考虑到Transformer的足够感受野和室外目标的微小规模,论文遵循[8]采用单步长网络设计,而不是使用分层表示,这不会降低X/Y轴上的特征图的规模,并证明在室外3D物体检测中表现得更好。通过这种设计,在这些体素上应用了几个具有动态稀疏窗口注意力的体素transformer block(DSVTblock)。为了在稀疏体素之间提供连接,论文设计了两种方法:旋转集合和混合窗口,它们在保持高效计算的同时引入了窗口内和窗口间特征传播。为了支持3D变体并在无需任何额外CUDA操作的情况下更好地编码准确的3D几何信息,设计了一个可学习的3D池化模块用于有效的下采样。然后将提出的DSVT提取的体素特征投影到鸟瞰图(BEV)特征图中。最后应用centernet [48]样式的检测头来估计3D边界框。论文提出的架构可以方便地替代现有方法中的3D主干,以增强室外3D目标检测。
动态稀疏窗口注意力
基于窗口的Transformer架构[7,23]在2D目标检测中取得了巨大成功。然而,由于点云在3D空间中稀疏分布,许多体素是空的,没有有效点云。因此,每个窗口中非空体素的数量可能会显著变化,这使得直接应用标准Transformer变得非常重要。在每个窗口中简单地将稀疏体积填充为密集体积的计算成本是昂贵的(参见表3)。先前的方法[8,14,37]尝试通过采样[26,49]或将具有相似数量token的区域聚类在一起[8,37]来重新平衡体素数量。尽管令人印象深刻,但它们的计算冗余或性能不稳定。或者,一些方法编写定制的CUDA操作来缓解这些问题,这些问题的运行速度通常低于深度学习框架(例如PyTorch)中优化良好的简单操作,从而限制了它们在实际应用程序中的部署。
为了解决上述限制,论文提出了动态稀疏窗口注意力,这是一种基于窗口的注意力策略,用于并行有效地处理稀疏三维体素。值得注意的是,它都是由深度学习工具中经过良好优化的简单操作实现的,无需任何自行设计的CUDA操作,因此易于部署在现代GPU上。
动态集合划分:如图3所示,为了在每个窗口内的给定稀疏体素之间高效地执行标准注意力,论文将此过程重新表述为在一系列窗口有界且大小相等的局部集合内并行计算自注意力。
具体地,在将点云转换为3D体素之后,它们被进一步划分为具有固定大小的非重叠3D窗口的列表,类似于先前的基于窗口的方法[8,23,37]。对于特定窗口,具有N个非空体素:
为了生成非重叠和大小相等的局部集合,论文首先计算此窗口中所需的子集数量,如下所示:
通过这种方式,可以用最小数量的子集覆盖该窗口中的所有体素。值得注意的是,S随窗口的稀疏度而动态变化。非空体素越多,将分配越多的集合和计算资源来处理该窗口,这是论文动态稀疏窗口注意力的关键设计。
使用指定集合的数量S,论文将N个非空体素均匀分布到S个集合中。具体而言,对于属于第j个集合的体素索引,将其第k个索引计算为
注意,该操作可以为每个集合生成特定数量(即)的体素,而不考虑N,这使得可以以完全并行的方式在所有集合上执行关注层。尽管等式(9)可以复制每个集合中的一些体素以获得个体素的数量,但在进行注意力时,这些冗余体素将被掩蔽。
在获得第j个集合的划分之后,然后基于体素窗口内id收集相应的体素特征和坐标,如下所示:
通过这种方式,即获得了具有相同数量稀疏体素的一些非重叠和有界窗口的子集。值得注意的是,论文的动态集合划分高度依赖于窗口内体素ID(参见等式(4)),因此可以通过使用不同排序策略的体素ID重新排序来轻松控制每个集合的覆盖局部区域。
旋转集合窗口内特征传播的注意力:上述动态集合划分可以将稀疏体素分组为非重叠和有界窗口的子集,其中每个子集具有相同数量的体素,使得能够以完全并行的方式在每个子集内进行自注意力操作。然而,在不变划分内计算自注意力缺乏跨子集的连接,限制了其建模能力。为了在保持有效计算的同时桥接非重叠集合之间的体素,论文提出了旋转集合注意力方法,该方法在连续注意力层中的两个划分配置之间交替。
如图3所示,DSVT block包含两个自注意力层。第一层使用X轴划分,其中体素ID按照X轴主顺序中的坐标进行排序。下一层采用旋转划分配置,按Y轴主顺序排序。采用上述设计,DSVT块计算如下:
为此,原始稀疏窗口注意力将近似地重新表述为多个集合注意力,可以在同一batch中并行处理。这样,在当前流行的深度学习框架中实现有效的DSVT模块就很容易,而无需额外的工程部署。旋转集合划分方法引入了前一层中非重叠集之间的连接,并发现其在室外3D目标检测中有效,如表4所示。
用于窗口间特征传播的混合窗口划分:为了跨窗口连接体素并降低计算成本,论文提出了block level的混合窗口划分方法。作者观察到,动态窗口注意力层相对于子集的总数具有线性计算复杂性。然而,增加窗口大小将减少集合的数量,导致自注意力的计算成本下降,但也会破坏小目标的检测性能。这促使论文采用混合窗口划分来提供良好的性能效率权衡。具体而言,遵循swin-transformer [23],使用两个连续DSVT block之间的窗口移位技术来重新划分稀疏窗口,但它们的窗口大小不同。通过这种设计,论文的模块可以在不牺牲性能的情况下有效地节省计算成本。
注意力式3D池化
与pillar式2D编码器相比,基于体素的3D主干可以捕获更精确的位置信息,这有利于3D目标检测。然而,我们观察到,简单地填充稀疏区域并应用MLP网络进行下采样(如[23])会降低性能(见表6)。对于单层MLP来说,学习具有太多零填充孔洞的稀疏几何信息是一个挑战。此外还观察到在transformer block之间插入MLP也会损害网络优化。为了支持有效的3D下采样和更好地编码空间信息,论文提出了一种注意力类型的3D池化操作,该操作与论文的全注意力设置兼容,并且在没有任何自行设计的CUDA操作的情况下实现。
给定具有P个非空体素的池化局部区域,首先将该稀疏区域填充为密集区域,并沿体素维度执行标准最大池化,如下所示:
之后使用池化后的特征P来构造查询向量,而不是直接将池化后的特征提供给后续模块:
通过这种注意力式3D池化操作,论文的3D主干具有fully attention的特点,并实现了比pillar变体更好的性能。
检测器设置
主干变体:论文构建了本文的基础主干模型,称为DSVT-P,这是一种单步长基于pillar的稀疏体素主干,其模型大小与广泛使用的稀疏卷积主干相似[46,50]。论文还介绍了DSVT-V,这是一种单步长基于体素的3D主干,通过注意力式3D池化模块,它只能逐渐减小Z轴上的特征图的大小。值得注意的是,这两个变体的输出体素数和对应坐标相等,这可以很容易地用于消除论文的池化模块的有效性。
检测头和训练目标:论文的DSVT是灵活的,可以应用于大多数基于体素的检测框架[18,48]。在不失一般性的情况下,论文遵循CenterPoint-Pillar[48]的框架,并在BEV主干之前添加DSVT。除此之外,还遵循[16,21,31],其使用IoU校正方案将IoU信息纳入置信分数。
两阶段模型:尽管论文的主要贡献集中在主干网络中稀疏体素transformer架构的设计上,但一阶段和两阶段检测器之间仍有相当大的增益。为了弥补性能差距,论文提供了CT3D[30]的两阶段版本,这是一个广泛使用的两阶段框架,可以从原始点云实现提案感知聚合。
实验
数据集和评估指标
论文在具有挑战性的Waymo开放数据集(WOD)[36]上进行了实验,这是一个广泛使用的室外3D目标检测基准,共包含1150个点云序列(超过200K帧)。每一帧都涵盖了150m x 150m的大感知范围。
所有结果均通过标准方案使用3D平均精度(mAP)及其通过航向精度(mAPH)的加权变量进行评估。根据官方评估工具包,测试样本分为两个难度级别:LEVEL 1(具有五个以上激光雷达点的目标)和LEVEL 2(具有至少一个激光雷达点)。
与SOTA模型对比
对于性能基准,论文将本文的模型与Waymo验证集上的各种最先进方法进行了比较,分别用于单阶段和两阶段检测器。所有结果汇总在表1中。对于单阶段框架,DSVT-V模型在LEVEL 2困难上达到72.1 mAPH,比之前的最佳单阶段方法好+3.2[51],甚至比最佳两阶段方法高+1.3[9]。与本文的pillar变体相比,DSVT-V在小物体(即行人和自行车)方面取得了显著的改进,这证明了3D化池模块在捕获详细几何信息方面的有效性。此外,我们的模型在2、4帧设置下达到74.6、75.6的LEVEL 2 mAPH,这比之前的最佳单阶段多帧方法[51]分别提高了+1.8和+2.4。这些增益在LEVEL_1 mAPH上更显著,即+3.7和+4.3。注意,本文的模型不是专门为多帧检测(例如,多帧融合)而设计的,并且只将连接的点云作为输入。
论文还针对表1中的几个竞争性两阶段方法评估了模型。DSVT-TS体素变体在所有帧设置上都优于所有先前的方法,具有较大的裕度,分别在1帧、2帧和4帧设置上获得+2.0、+3.2和+2.0的3D mAPH(LEVEL 2)。请注意,只使用基于原始点的CT3D[30]作为第二阶段,而没有其他精心设计(即,从特征图插值的特征),这为探索更好的两阶段性能留下了巨大空间。
消融实验
与稀疏卷积主干的比较:继CenterPoint体素[48]中使用的VoxelBackBone8x之后,论文将其扩展到基于单步幅pillar的残差主干,其模型大小与我们的DSVT-P相似,名为ResBack-Bone1x。为了公平比较,只切换稀疏的3D主干,而所有其他设置保持不变。请注意,该变体是一个非常强大的基线,比LEVEL_2 mAPH的原始版本[48]高+4.9。
动态稀疏窗口注意力的效果:表3展示了动态稀疏窗口关注的建模能力和效率。在表4中进一步讨论了旋转集合划分的有效性。表5展示了论文的模型在不同混合窗口形状下的性能。混合窗口划分提供了良好的性能-效率权衡,在不牺牲性能的情况下优化了推断耗时。
3D池化模块的效果:为了证明3D池化模块的有效性,论文将几种广泛使用的池化策略作为基线,并仅在所有其他模块保持不变的情况下切换池化策略。注意,为了公平比较,论文将两种变体(即DSVT-P和DSVT-V)的设置大小统一为36,这与表1中报告的最佳设置不同。实验结果如表6所示。
推理速度
论文在表7中给出了与其他最先进方法在推理速度和性能精度方面的比较。论文的pillar变体显著优于PVRCNN++[33],同时实现了更低的耗时,即67 ms vs 113 ms。在通过NVIDIA TensorRT部署后,论文的模型可以实现实时运行速度(27 Hz),几乎与广泛使用的Centerpoint-Pillar[48]一样快,性能更高(在LEVEL_2 mAPH上+8.8)。这样的运行时间是足够的,因为激光雷达通常以10Hz至20Hz的频率工作。所有实验都在相同的工作站和环境下进行评估。
结论
本文中提出了DSVT,这是一种部署友好但功能强大的仅transformer 3D主干,用于3D目标检测。为了有效地处理稀疏点云,引入了动态稀疏窗口注意力,这是一种新的稀疏注意力策略,它将所有稀疏体素划分为一系列大小相等且窗口有界的子集。这些子集可以并行处理,而无需任何自定义CUDA操作。然后提出了一种可学习的3D池化操作,以更好地处理下采样和编码几何信息。更重要的是,NVIDIA TensorRT可以加速提出的DSVT,它以实时运行速度在Waymo基准上实现了最先进的性能。论文希望DVST不仅能够成为现实世界应用中用于3D目标检测的可靠点云处理器,而且能够为在其他任务中有效处理稀疏数据提供潜在解决方案。
原文首发微信公众号【自动驾驶之心】:一个专注自动驾驶与AI的社区(https://mp.weixin.qq.com/s/NK-0tfm_5KxmOfFHpK5mBA)