论文标题:Voxel Transformer for 3D Object Detection

iccv2021

现在点云的做法大多是在点云上进行 例如首先将点云group化 然后进行分组地transformer 而这篇文章提出了一种基于voxel的transformer 可以应用于基于voxel的检测器上 方便进行voxel 3d环节的提取全局特征。

老规矩 上图!

lenet目标检测 目标检测transformer_计算机视觉


可以看出文章的主要创新之处在于3d的backbone 这就意味着我们可以将这个模块应用到所有的基于voxel的一阶段 二阶段检测器上面。

点云voxel的3d卷积主要分为两个类别的处理:sparse and submanifold。

他们的操作也是基本一样的 除了attending voxel不同而已,这两种类别的3d操作可以先参考SECOND 三维目标检测器。

简单的来说就是用sparse进行下采样 用submanifold在保持稀疏度的情况下进行3d卷积。

对于非空的voxel 我们对于attending voxel(什么是attending voxel呢 我们下面进行定义)进行transformer操作 位置编码选择相对位置编码 有transformer基础的同学看一下下面的公式就明白~

lenet目标检测 目标检测transformer_计算机视觉_02


lenet目标检测 目标检测transformer_深度学习_03


lenet目标检测 目标检测transformer_自动驾驶_04


对于submanifold层来说

它的querying voxel就所有的非空voxel ,那么首先对于他们进行两种attention操作 输出结果与输入进行相加 (一个res层操作)随后进行batch Norm。再输入到前向传播层 进行submanifold卷积 再一个res层 batch norm层 最后relu激活 然后进行proj 注意的是 我们这里使用的是批量norm 且取消了神经元的随机识货 作者认为这样是会帮助学习过程的。(文中提到的两种attention 我们在下面进行解释)

lenet目标检测 目标检测transformer_自动驾驶_05

对于sparse层来说

它需要在一些空的voxel上进行querying操作 而这些voxel是没有feature的 我们便采用了一个估计函数 文章中说可以对于attending voxel进行插值等操作 网络中则直接采用 max pool 显然经过自注意力层 输出结果已经与输出的结构有所不同 所以网络框架就是取消了前面的一个res层。

lenet目标检测 目标检测transformer_深度学习_06


接着我们来解释一下两种attention模块

这两种attention模块主要是由attend voxel的不同来进行划分的

local attention

参与此模块的voxel是我们当前的query voxel的附近的voxel 大概就是一个卷积大小内的所有非空voxel

lenet目标检测 目标检测transformer_lenet目标检测_07


对他们进行一个transformer操作,显然 对于当前query voxel来说 他的feature融合是结合了当前感受野内的所有voxel 而transformer相对于卷积来说 更能接受来自附近的feature。dilated attention

这一部分的卷积则可以参考稀疏卷积 名字也是类似的 主要是为了扩大感受野:

lenet目标检测 目标检测transformer_自动驾驶_08


文中说一个稀疏attention经过合理的attending voxel选择 可以使得query范围达到15m。

最后可以结合文章的图理解一下上述的卷积:

lenet目标检测 目标检测transformer_lenet目标检测_09


经过上面的两项卷积操作 我们便实现了localfeature和 较宽大感受野的feature的融合。

随后作者还提出了一种voxel query的快速取non empty voxel的方法 主要思想就是把非空voxel取出来 进行一个编码 后面要对某个voxel进行attention处理时 直接对于attending voxel取他们的编码就行 这样 模型复杂度就显著降低了:

lenet目标检测 目标检测transformer_深度学习_10


实验结果很好:

lenet目标检测 目标检测transformer_计算机视觉_11


lenet目标检测 目标检测transformer_计算机视觉_12


消融实验做了不同卷积的必要性对比

lenet目标检测 目标检测transformer_神经网络_13


随机失活层的必要性:

lenet目标检测 目标检测transformer_神经网络_14


attending voxel的数目

lenet目标检测 目标检测transformer_计算机视觉_15


最后比较了相对于传统模型的推理速度与大小

lenet目标检测 目标检测transformer_自动驾驶_16


第一次看到用voxel做trans 比较新颖