ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

【3D 目标检测】Voxel Transformer for 3D Object Detection

2021-10-23 22:30:32  阅读:249  来源: 互联网

标签:voxel Transformer attention submanifold Voxel Attention module sparse 3D


一 核心思想

本文主要是在3D backbone上用到了改进的transformer方法,以便更好的提取特征。也就是在sparse voxel module和submanifold voxel module的基础上使用transformer进行特征的提取。

提出两种attention的机制,分别为Local Attention 和 Dilated Attention。之后通过Fast Voxel Query的方法加速querying process的进程(这里之后会详细叙述。)。

VoTr包含一系列的sparse voxel和submanifold voxel modules,与之前SECOND提出的方法有一点出入,这里是借鉴了在哪些地方编码特征的思想,并不是完全套用。具体算法步骤如下:

 

二 核心步骤

 VoTr是一种Transformer-based 3D backbone。与传统卷积架构 (包含3个sparse convolutional blocks和6个submanifold convolutional blocks)的设计类似,我们的VoTr由一系列sparse voxel和submanifold convolutional blocks组成,如上图所示。(需要注意的是,这里只是借鉴了传统sparse和submanifold选择采样位置的战略,而不是用到完整的sparse和submanifold convolutional blocks的结构。)

我们设计了3个sparse voxel modules,对voxel-grid进行3次采样。每个sparse voxel modules后面跟着2个submanifold voxel modules,保持输入和输出非空位置不变,在保持原始三维结构的同时扩大接受域(也就是sparse用于扩展特征position,submanifold用于在保持输入输出特征位置不变的情况下提取更多的特征。)。

Multi-head attention在sparse voxel modules和submanifold voxel modules中执行,Multi-head attention中每个querying voxel的对应需要参加key和value的voxel由两种特殊的attention决定: Local Attention 和 Dilated Attention,这两种机制能够很好地捕捉不同范围内的不同语境。在此基础上,提出了Fast Voxel Query算法,加速了Multi-head attention中非空体素的搜索过程(说白了Fast Voxel Query就是为了快速查找参加transformer的key和value里面的值的voxel的一种方法。)。

2.1 Voxel Transformer Module

在本节中主要用于讲解sparse voxel和submanifold voxel module的设计方法。这两者的主要的区别在于submanifold voxel module严格作用于非空体素,只在非空位置提取特征,保持了三维场景的几何结构,而sparse voxel module可以在空位置提取体素特征。显示了更大的灵活性,可以根据需要扩展原有的非空体素空间(也就是之前讲的,借鉴了SECOND中sparse和submanifold的思想。)。

2.1.1 Self-attention on sparse voxels

这里主要介绍到在sparse voxel和submanifold voxel module中都会用到的self-attention的方法。也就是下图所示的结构:

 

non-empty voxels  integer indices array V和 feature array F。对于每一个non-empty voxels(也就是Transformer中的Query)i,我们首先给定Key和Value的来源点的范围,之后通过一系列的点得到的attention features

分别为query voxel和attending voxels的特征,分别为query voxel和attending voxels的indices。首先我们将转化到真实的3D coordinates中,通过公式​​​​​​​,其中r表示voxel size。之后对于一个query embedding 和相应的key embedding 以及value embedding 可通过下述公式获得:

 其中为权重参数,

最终为softmax normalization function。

 2.1.2 Submanifold voxel module

 

 

如上图所示,为submanifold的完整结构,与传统的transformer的区别在于:1)我们在feed-forward layer之后增加了一个projection layer,用于体素特征的通道调整。2)我们用batch normalization代替layer normalization。3)我们删除了模块中所有的dropout层,因为参与的体素数量已经很小,而随机剔除其中一些体素会阻碍学习过程。

在submanifold voxel module中,如上述一致,我们只会对non-empty voxels进行transformer的操作。

2.1.3 Sparse voxel module 

 

 如上图所示,为sparse voxel module的整体结构。与submanifold voxel module不同的是,它还会对某些空值的voxel进行transformer操作(也就是跟SECOND中的sparse一样的扩展特征方法。),当然这是voxel下采样过程中通常需要的。

由于empty voxel没有feature可用,我们无法从中获得query embedding。为了解决这一问题,我们从参加transformer的voxel的特征给出了空点处气的近似值:,其中A我们默认为maxpooling函数。

 除此之外,我们在sparse voxel module中移除了第一个residual connection结构,因为在本次self-attention之后,前后特征的维度发生了变化,无法进行concatenate操作。

 2.2 Efficient Attention Mechanism

 

 这里也就是上述中的选择策略:1)应覆盖相邻voxel,以保留更细致的3D structure。2)应尽可能达到获取大的context information。3)中attending voxel的数量应足够小,例如小于50,以避免沉重的计算开销。

 根据这些选择策略,我们得出了Local Attention和Dilated Attention结合的选择策略。

 2.2.1 Local Attention

 我们将定义为一个函数,该函数返回一个封闭集合[start,end]中的non-empty voxel indices,步长为stride。例如表示搜索集合:​​​​​​​

 中不为空的voxel。

 在Local Attention,对于一个query embedding ,local attention的范围为,其中表示local attention的范围,在本文中选择 

 2.2.2 Dilated Attention

 与Local Attention一样,Dilated Attention可以根据参数列表定义为:

 

 其中\表示集合中的减法操作(subtraction operator),U表示取所有非空体素集的并集。

 注意到,并且,这意味着在搜索距离较远的非空体素时,逐步扩大查询步长

 这也就保证了更多的query voxel附近的non-empty voxel参与attending voxel,同时仍然保持一些较远的non-empty voxel参与attending voxel。通过精心设计的参数列表,查找的范围能够达到1500万以上,但每个query voxel的attending voxel数量仍然保持在50以下。值得注意的是,当时,Local Attention可以看作是Dilated Attention中的一种特殊情况。

 2.3 Fast Voxel Query

 Fast Voxel Query是为了加速上述的查询attending voxel的速率的,具体模型见上图所示,主要是构建了一个GPU-based的hash表,里面存着所有的non-empty voxel的indices,这样就能加速查询的进程。

具体步骤为:

1、在GPU上建立哈希表,将hash后的non-empty voxel indices作为hash key,将数组V对应的indices j作为hash value(因为中的索引值,也就是真实的voxel的indices,j表示在V中的第几个值。)。

2、对于每一个query voxel i,我们运用Local Attention和Dilated Attention获得attending voxel indices(前面提到,这个j在之前的意思与现在的意思根据作者的看法应该不太一样了。)。

 3、我们使用使用hash function得出的hash key 来查找j。

4、最终我们从V和F中获得query voxel 的attending voxels。

三 总结

本文充分融合了Transformer和SECOND中提出的稀疏卷积方法,具有很高的参考价值。

 参考文献

 [1] Mao J ,  Xue Y ,  Niu M , et al. Voxel Transformer for 3D Object Detection.  2021.

标签:voxel,Transformer,attention,submanifold,Voxel,Attention,module,sparse,3D
来源: https://blog.csdn.net/qq_36380978/article/details/120927166

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有