php网站开发书籍,wordpress 插件破解版,网站被清空了怎么办,wordpress 插件新页面本文介绍一个新的的3D物体检测模型#xff1a;VoTr#xff0c;论文已收录于ICCV 2021。 这是第一篇使用 voxel-based Transformer 做3D 主干网络#xff0c;用于点云数据3D物体检测。由于有限的感受野#xff0c;传统的 3D 卷积网络检测器#xff08;voxel-based#xff… 本文介绍一个新的的3D物体检测模型VoTr论文已收录于ICCV 2021。 这是第一篇使用 voxel-based Transformer 做3D 主干网络用于点云数据3D物体检测。由于有限的感受野传统的 3D 卷积网络检测器voxel-based不能有效地捕获大量的环境信息 于是在本文中作者引入基于 Transformer 的结构通过自注意力的方式寻找长距离范围内 voxel 之间的关系。
本文主要贡献有
考虑到非空 voxel 的稀疏性及数量众多的事实直接对 voxel 使用标准的 Transformer 并不是一件容易的事情。为此作者提出了 sparse voxel module 和 submanifold voxel module它们可以有效地对空的和非空的 voxel 进行操作。为了进一步增大注意力范围同时维持与卷积检测器相对应的计算开销作者进一步提出了两种多头注意力机制Local Attention 和 Dilated Attention同时作者还进一步提出了 Fast Voxel Query用于加速 voxel 的查询。本文提出的 VoTr 方法可以用在大多数 voxel-based 的3D检测器最后作者在 Waymo 和 KITTI 数据集上进行了实验证明本文提出的方法在提高检测性能时并且保持了相当的计算效率。
论文链接为https://arxiv.org/pdf/2109.02497.pdf
项目链接为https://github.com/PointsCoder/VOTR 文章目录1. Introduction Related Work2. Voxel Transformer2.1 Overall Architecture2.2 Voxel Transformer Module2.3 Efficient Attention Mechanism2.4 Fast Voxel Query3. Experiments1. Introduction Related Work
首先是论文引言部分。之前的 3D 检测方法主要分别两种point-based 和 voxel-basedvoxel-based 的方法首先对点云做栅格化处理将点云转化为一个个 voxel 然后使用 3D 卷积网络提取特征。之后将 voxel 转换为鸟瞰图最终在鸟瞰图上生成 3D boxes。
但是由于感受野受限影响着检测器性能。例如SECOND 模型 voxel 大小是 (0.05m,0.05m,0.1m)(0.05m,0.05m,0.1m)(0.05m,0.05m,0.1m)最后一层最大的感受野是 (3.65m,3.65m,7.3m)(3.65m,3.65m,7.3m)(3.65m,3.65m,7.3m)覆盖不了一辆长度为 4m4m4m 的汽车。感受野的大小与 voxel size VVVkernel size KKKdownsample stride SSSlayer number LLL 四者乘积成正比。增大 VVV 会导致点云量化误差变大增大 KKK 会导致卷积特征成三次方增大增大 SSS 会导致低精度的鸟瞰图会降低最终预测结果 增大 LLL 会需要更多的计算资源。但是在3D物体检测时由于点云的稀疏性和不完整性而我们又需要增大感受野因此就需要设计一种新的架构来编码更多的上下文信息。
最近 Transformer 在2D物体分类、检测、分割任务上取得了不错的效果主要是因为自注意力机制可以建立像素间的长距离关系。但是直接将 Transformer 用到 voxel 中会遇到两个问题
非空的 voxel 分布很稀疏而图像中像素是很密集的例如在 Waymo 数据集中非空的 voxel 只占所有的 voxel 0.1%0.1\%0.1%因此需要设计一个特殊操作只作用于那些非空的 voxel 上非空 voxel 的数量是庞大的例如在 Waymo 数据集中达到了 90k90k90k如果像标准的 Transformer 那样使用全连接自注意力在计算上是吃不消的因此非常需要新的方法来扩大注意力范围同时将每个 query 的注意力 voxel 数保持在较小的范围内。
为了解决这两个问题作者于是提出了 VoTr具体方法在下一节介绍。下图是3D卷积网络和 VoTr 的感受野图示。在图a中橘色立方体表示的是3D卷积核黄色的 voxel 被以红色 voxel 为中心的最大感受野所包含。在图b中红色的 voxel 是待查询的 voxel蓝色 voxel 是它的注意力 voxel作者发现只使用一个自注意力层就可以覆盖比整个卷积骨干网还要大的区域而且还可以保持足够细微的3D结构。 下面是相关研究工作
点云3D物体检测方法Frustum-PointNet、PointRCNN、3DSSD、VoxelNet、SECOND、HVNet、PV-RCNNTransformer 在计算机视觉的应用ViT、DETR、SETR、MaX-DeepLab、Point Transformer、Pointformer 2. Voxel Transformer
2.1 Overall Architecture
现在我们来开始详细介绍 VoTr。整体结构设计和 SECOND 很相似VoTr 包含三个 sparse voxel module降采样3次每一个 sparse voxel module 跟着2个 submanifold voxel module在所有的模块中都使用到了多头注意力机制。在多头注意力机制中每一个 query voxel 使用了两种特别的注意力方法Local Attention 、 Dilated Attention。
值得注意的是submanifold voxel module 只在非空的 voxel 进行注意力操作而 sparse voxel module 可以在空的 voxel 上提取特征。 2.2 Voxel Transformer Module
- self-attention on sparse voxels
这里首先介绍 sparse voxel 上的自注意力方法。
假设总共有 NdenseN_{dense}Ndense 个 voxels非空 voxel 索引数组 VNsparse×3\mathcal{V}N_{sparse} \times 3VNsparse×3 以及对应特征数组 FNsparse×d\mathcal{F}N_{sparse} \times dFNsparse×d且 Nsparse ≪Ndense N_{\text {sparse }} \ll N_{\text {dense }}Nsparse ≪Ndense 。特定地一个要查询的 voxel iii其注意力范围 Ω(i)⊆V\Omega(i) \subseteq \mathcal{V}Ω(i)⊆V 是由注意力机制确定对注意力 voxel j⊆Ω(i)j \subseteq \Omega(i)j⊆Ω(i) 进行多头注意力操作得到注意力特征 fiattendf^{attend}_{i}fiattend。令 fi,fj∈Ff_i,f_j\in\mathcal{F}fi,fj∈F 分别为查询和注意力 voxel 特征vi,vj∈Vv_i,v_j\in\mathcal{V}vi,vj∈V 分别为查询和注意力 voxel 整数索引。根据索引得到 voxel 中心坐标 pi,pjp_i,p_jpi,pj其中 pt×(v0.5)pt\times(v0.5)pt×(v0.5)。然后可以计算 QiKi,ViQ_iK_i,V_iQiKi,Vi QifiWq,KjfjWkEpos ,VjfjWvEpos(1)Q_{i}f_{i} W_{q}, K_{j}f_{j} W_{k}E_{\text {pos }}, V_{j}f_{j} W_{v}E_{p o s} \tag{1} QifiWq,KjfjWkEpos ,VjfjWvEpos(1)位置编码 EposE_{pos}Epos 为 Epos(pi−pj)Wpos(2)E_{p o s}\left(p_{i}-p_{j}\right) W_{p o s} \tag{2} Epos(pi−pj)Wpos(2)自注意力特征为 fiattend∑j∈Ω(i)σ(QiKjd)⋅Vj(3)f_{i}^{a t t e n d}\sum_{j \in \Omega(i)} \sigma\left(\frac{Q_{i} K_{j}}{\sqrt{d}}\right) \cdot V_{j} \tag{3} fiattendj∈Ω(i)∑σ(dQiKj)⋅Vj(3) 其中σ(⋅)\sigma(\cdot)σ(⋅) 是softmax归一化函数这里可以将 3D voxel 的自注意力机制看作是 2D 的自注意力机制的扩展使用的相对坐标作为位置编码。
- submanifold voxel module 此模块包含两层网络第一层是自注意层连接所有的注意力机制第二层是简单的前向传播层这里也使用了残差连接。与标准的 Transformer 不同的是
在前向传播层之后添加了线性投影层用于调整特征通道数量使用了 BN 替代 LN删除了 dropout 这是因为这里的注意力 voxel 数量太少了再使用 dropout 可能会阻碍学习过程
- sparse voxel module 由于在非空 voxel 没有特征于是得不到 QiQ_iQi使用如下方法得到近似 QiQ_iQi QiAj∈Ω(i)(fj)(4)Q_{i}\underset{j \in \Omega(i)}{\mathcal{A}}\left(f_{j}\right) \tag{4} Qij∈Ω(i)A(fj)(4)其中 A\mathcal{A}A 是对所有注意力 voxel 特征做最大池化操作同样地使用公式3 进行多头注意力操作这里没有使用残差连接。 2.3 Efficient Attention Mechanism
现在着重介绍注意力范围 Ω(i)\Omega(i)Ω(i)注意力机制中非常重要的一个因素。Ω(i)\Omega(i)Ω(i) 应当满足以下三点
Ω(i)\Omega(i)Ω(i) 应该能覆盖相邻的 voxel 以保持细微的3D结构Ω(i)\Omega(i)Ω(i) 覆盖的范围应尽可能的远以便获得更大的上下文信息Ω(i)\Omega(i)Ω(i) 所包含的 voxel 数应该尽可能的少例如小于50避免计算负载过大
- local attention 定义 ∅(start,end,stride)\varnothing(start,end,stride)∅(start,end,stride) 为一个返回非空索引的函数例如 ∅((0,0,0,),(1,1,1),(1,1,1))\varnothing((0,0,0,),(1,1,1),(1,1,1))∅((0,0,0,),(1,1,1),(1,1,1)) 返回为 ∅{(0,0,0,),(0,0,1),(0,1,0),...,(1,1,1)}\varnothing\{(0,0,0,),(0,0,1),(0,1,0),...,(1,1,1)\}∅{(0,0,0,),(0,0,1),(0,1,0),...,(1,1,1)} 八个非空索引。在 Local Attention 中注意力范围为 Ωlocal (i)∅(vi−Rlocal ,viRlocal ,(1,1,1))(5)\Omega_{\text {local }}(i)\varnothing\left(v_{i}-R_{\text {local }}, v_{i}R_{\text {local }},(1,1,1)\right) \tag{5} Ωlocal (i)∅(vi−Rlocal ,viRlocal ,(1,1,1))(5) 其中 Rlocal(1,1,1)R_{\text{local}}(1,1,1)Rlocal(1,1,1)注意的是这里只返回非空 voxel 的索引。
- dilated attention 注意力范围为 Ωdilated (i)⋃m1M∅(vi−Rend (m),viRend (m),Rstride (m))\∅(vi−Rstart (m),viRstart (m),Rstride (m)),(6)\begin{array}{r} \Omega_{\text {dilated }}(i)\bigcup_{m1}^{M} \varnothing\left(v_{i}-R_{\text {end }}^{(m)}, v_{i}R_{\text {end }}^{(m)}, R_{\text {stride }}^{(m)}\right) \backslash \\ \varnothing\left(v_{i}-R_{\text {start }}^{(m)}, v_{i}R_{\text {start }}^{(m)}, R_{\text {stride }}^{(m)}\right), \end{array} \tag{6} Ωdilated (i)⋃m1M∅(vi−Rend (m),viRend (m),Rstride (m))\∅(vi−Rstart (m),viRstart (m),Rstride (m)),(6)
其中 \\backslash\ 是集合相减运算符Rstart (i)Rend (i)≤Rstart (i1),Rstride (i)Rstride (i1)R_{\text {start }}^{(i)}R_{\text {end }}^{(i)} \leq R_{\text {start }}^{(i1)} , R_{\text {stride }}^{(i)}R_{\text {stride }}^{(i1)}Rstart (i)Rend (i)≤Rstart (i1),Rstride (i)Rstride (i1) 因此可以逐渐增大查询步伐 Rstride (i)R_{\text {stride }}^{(i)}Rstride (i) 。经过认真设计注意力机制所能搜寻的范围可以达到15m而查询的 voxel 数量可以小于50。
下图是一个2D的注意力机制说明可以轻松扩展到3D场景。对于要查询的 voxel 红色所示Local Attention 关注的是局部区域浅蓝色 voxel 在查询范围内最终被选择为注意力 voxelDilated Attention 查询的范围比较大绿色所示最终非空的 voxel 被选择为注意力 voxel。 2.4 Fast Voxel Query
在上面设计的注意力机制中查询每个非空的注意力 voxel 是至关重要的。为了查询每个注意力 voxel 可能要花费 O(Nsparse )O\left(N_{\text {sparse }}\right)O(Nsparse ) 时间复杂度这是十分耗时的Waymo 数据集中 Nsparse90kN_{\text{sparse}} 90kNsparse90k因此作者在这里提出了一个基于哈希表的快速查询。
快速查询流程如下图所示这里与之前的查询方法不同的是在哈希表中只需要查询 NΩN_{\Omega}NΩ 次Ω\OmegaΩ 是注意力范围NΩ≪Nsparse N_{\Omega} \ll N_{\text {sparse }}NΩ≪Nsparse 。 3. Experiments
下面是实验部分作者分别在 Waymo 和 KITTI 数据上进行了测试。VoTr-SSD 选择 SECOND 作为检测框架VoTr-TSD 选择 PV-RCNN 作为检测框架将传统的3D卷积替换为本文设计的 Transformer 结构。下面是 Waymo 验证集上的结果。 下面是在 KITTI 数据集上的结果。这里在 SECOND 框架上提升比较多。 最后是消融实验可以看到不同注意力机制、dropout 参数、注意力 voxel 数量、模型参数、推理速度以及注意力权重的比较。