DSVT 3d backbone

Abstract

由于点云数据稀疏的特点,比起稀疏3d卷积,transformer更适合对远距离的relationship进行建模。但是直接用标准的transformer处理点云数据不易实现。论文提出了Dynamic Sparse Voxel Transformer (DSVT)不仅性能优越,而且易于部署,只需要深度学习工具就可以实现,无需在cuda上实现自定的功能。

Methodology

目前处理点云的方法有基于point-net的方法,通过MLP和maxpololing的提取feature,以及通过稀疏卷积将点云转化为regular grids再处理。但是这些方法1.需要大量的计算。2. 受submanifold dilation影响表达能力有限。3.无法只靠深度学习工具实现,需要自定义的cuda操作。

submanifold dilation:一个active site在通过一个3*3的卷积核会发生扩散,产生9个activate site,随着网络的加深,数据稀疏性极速下降。

论文采用了基于voxel的方法(voxel feature encoding (VFE) module),先将点云数据处理成voxel。每个voxel就相当于transformer中的一个token。考虑到tansformer充足的感受野,和户外检测物体的尺寸都比较小,论文采用single-stride的网络设计。不会减少feature map的尺寸。通过若干个DSVT Block处理voxel

vfe:实际就是将两个pointnet拼在一起

 

Dynamic Sparse Window Attention

为了能够并行的处理稀疏点云,提出了Dynamic Sparse Window Attention。

由于3d 点云的稀疏性,大量的voxel中是没有点的,而且非空voxel中点的数量差异也很大,直接使用标准的transformer不易实现,对没有点的区域做padding是一件计算复杂度很高的事情。论文提出了Dynamic Sparse Window Attention。可以并行处理稀疏的3d voxels。

Dynamic set partition.

在将点云转换成voxel之后,将voxel进一步划分成一系列non-overlapping的window(尺寸固定L × W × H),每一个window包含N(N对每个window都不同)个非空的voxel。

对于每一个window内部,再将其进一步划分为大小相等的subsets. 每个subset包含不超过τ个非空voxels(τ是一个超参数)。最后window被划分成S(N / τ ,向上取整)个subset。

每个window根据自身的稀疏程度会计算出对应的S值,并按照其大小分配对应的计算资源。

然后将非空的voxels均匀的分配成S份,使个subset都包含τ个voxels,以实现全并行的处理方式。为了实现每个subset都严格包含τ个voxels可能会复制一些voxels,这些多余的voxels会在执行attention的时候被mask掉。(eg,τ = 3,N = 10,S = 4,subset_1: 3, subset_2: 3, subet_3: 2, subset_4: 2 不足3的subset会复制voxel)

最后获取从每个voxel中的feature,以及该voxel在坐标系中的位置(x, y, z)。到此我们获得了一些window,每个window中都包含了数目不等的subsets,每个subset都包含同样数量的非空voxel。

Rotated set attention for intra-window feature propagation

为了建立同一个window下不同voxel之间的联系。论文提出了rotated-set attention。论文的DSVT包含两层self-attention layers。在两层采用不同的voxels的排序方式来生成不同的subsets。第一层沿x轴的方向对voxel排序,并赋予下标,根据下标生成subets,然后过一次Multi-head Self-Attention layer,第二层沿y轴的方向排序,再过一次Multi-head Self-Attention layer。两层layer的subset中voxels的组成方式不同,通过这种方式建立不同subsets之间的联系。

Hybrid window partition for inter-window feature prop- agation

为了建立不同window之间的voxels的联系,提出了hybrid window partition。

dynamic window attention layer的线性复杂度随所有subsets的数量线性增加。增大window的size可以减少复杂度,但是会影响检测小物体的性能。

论文采用了swin-transformer的方式,在两个block之间通过滑动窗口的方式来重新划分window,而且window的尺寸也会发生变化。

Attention-style 3D Pooling

直接使用MLP网络做下采样很难学习到稀疏区域的空间信息(有太多zero-padded holes)。论文尝试在两个transformer blocks之间插入MLP层,但是会影响到网络的优化。为了更有效的进行下采样并对空间信息进行编码,论文提出了attention-style 3D pooling。

给定一个l × w × h的pooling区域,包含P个非空的voxels,

1.首先对稀疏的区域做padding,生成l × w × h个voxels。然后做标准的pooling。

2.用经过pooling之后的feature作为query vecter Q, 将经过pooling之前的voxel作为K和V,做attention。

Experiments

在waymo和nusence数据集上实验,在单帧和多帧的效果上好于pointpillar, centerpoint,mppnet。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值