【3D目标检测】DSVT-2023CVPR

论文:https://arxiv.org/pdf/2301.06051.pdf

作者:北大,华为

 代码:https://github.com/Haiyang-W/DSVT ( OpenPCDet 框架已集成)

讲解:实时部署!DSVT:3D动态稀疏体素Transformer主干(北大&华为) - 知乎

  • 论文提出了动态稀疏窗口注意力,这是一种新的基于窗口的注意力策略,用于并行有效地处理稀疏三维体素;

  • 论文提出了一种可学习的3D池化操作,它可以有效地对稀疏体素进行下采样,并更好地编码几何信息;

  • 基于上述关键设计,论文介绍了一种高效但易于部署的Transformer 3D主干,无需任何定制CUDA操作。

【3D目标检测】DSVT-2023CVPR_第1张图片

  1. 稀疏窗口划分成subsets,每个subsets体素数量相同,以进行并行计算。这些子集的分区配置将根据x轴和y轴之间的旋转分区轴在连续的自关注层中进行更改。

  2. Hybrid window partition:窗口内部特征融合,编码多尺度信息

  3. 3D sparse pooling operation:首先将稀疏下采样区域转换为密集下采样区域,并进行关注式3D池化操作,自动聚合局部空间特征。

网络结构

  1. VFE模块:将input point clouds 划分成稀疏 voxel,每个voxel 视作token。考虑到感受野的限制,只采用单步下采样网络,该方法不会降低X/ y轴特征图的比例。

  2. 动态稀疏窗口attention:保证了每个window中的subsets内非空voxel数量相同。旋转集和混合窗口:并行计算,在保持高效计算的同时,引入窗内和窗间特征传播。

  • 参数:x,y,z坐标,voxel 坐标,voxel id(根据x或y坐标排序可得到voxel ID)

  • 非空、不重叠、相同数量的子集:首先计算每个window内的sub-sets的数量。windows设定12*12*1,windows内的非空voxel数量N。设定每个subsets内非空voxel 数量r(代码中为36个),计算每个windows内的subsets数量S,保证每个subsets中的voxels数量是一致的。

  • 根据voxel id 将所有的voxel 划分到subsets 中。windows的数量由spares_shape得出,在每个windows内的subsets中完全并行计算attention。

a. 旋转集合注意力

由于在固定的windows内计算attention缺乏子集间的连接,使用旋转集合注意力方法,在连续的注意力层之间交替使用两种分区配置。DSVT块包含两个自注意力层。第一层采用X轴分区,其中体素ID根据其在X轴主序中的坐标排序。接下来的一层采用旋转分区配置,按Y轴主序排序。

【3D目标检测】DSVT-2023CVPR_第2张图片

非空体素越多,就会分配更多的子集和计算资源来处理该窗口,这是动态稀疏窗口注意力设计的关键。增加window 会减少sets数量降低计算量,但是对小目标效果不好。因此采用混合窗口分割来提供良好的性能-效率权衡。

b.混合窗口

参考swin-transformer的窗口移位技术来重新分割稀疏窗口,但它们的窗口大小是不同的。

  1. 基于注意力的3D池化:应用在DSVT中downsample_stride的下采样中。

  2. 然后将我们提出的DSVT提取的体素特征投影到鸟瞰(BEV)特征图中

  3. Centerhead 预测头:

在补充材料中,首先阐述了§A中非重叠集划分的证明,然后提供了§B中网络架构、训练方案和消融基线的更多实现细节。最后,对§C中的超参数分析和§D中定量结果的可视化进行了进一步的研究。还讨论了§E中轴-注意的区别和§F中DSVT的局限性。

你可能感兴趣的:(目标检测,人工智能,计算机视觉)