论文阅读:OctFormer: Octree-based Transformers for 3D Point Clouds

  • 北京大学2023年文献,在scannetv2数据集语义分割赛道上目前排名第二且不需要预训练模型
  • 对于3D点云理解等任务,目前Point Cloud Transformers已经开始引起广泛关注,但是Point Cloud Transformers的效率仍然比CNN要低,特别是在处理像ScanNet这样的大规模数据集时。尽管Transformers的表达能力至少与CNN相当,但在点云上应用Transformers的主要挑战在于克服变换器的巨大计算复杂性,它与涉及的元素数量成二次关系。
  • 为此本文提出了一种新的基于八叉树的transformer,名为OctFormer。OctFormer的关键构成模块是一个新的用于点云的八叉树注意力机制。在应用注意力时,为了保持线性复杂性,我们将每个点云分成小组。关键的观察是注意力对于基础局部窗口的实际形状并不敏感。因此,与以前使用立方窗口的方法不同,我们将点云分成不规则窗口的组,同时保持每个窗口中的点数相同。
  • 为了增加OctFormer的接收范围,我们引入了一个扩张的八叉树注意力,其在张量的空间维度上具有扩张的分区,也可以通过张量重塑和转置来有效实现。固定了每个窗口中的点数,而不是使用固定大小的局部窗口。
  • (个人理解是一种看起来比体素化处理之后保留更多信息以及更适合送进transformer的手段,应用也更加灵活同时注意力的使用更加有效)
  • related work:
    • 基于体素的CNNs:全体素基础的CNNs通过将3D数据表示为均匀采样的体素将2D CNNs推广到3D学习。然而,由于计算和内存成本与体素分辨率的立方关系,这些方法只能接受如32^3这样低分辨率的体素作为输入。
    • 基于点的网络:基于点的网络直接将原始点云作为输入,而不是将3D形状光栅化为规则的体素。基于点的网络常常依赖最远点采样或者基于网格的采样来逐步降采样点云。
    • 视觉transformer:ViT使用基于变换器的网络进行视觉识别。ViT将输入图像分割成非重叠的常规补丁,将每个补丁视为一个令牌,并对这些令牌应用纯注意力。为了将ViT扩展到如图像分割和检测等密集预测任务,PVT和Swin Transformer将CNNs的层次化网络架构引入到视觉变换器中。PVT建议在降采样的特征映射上应用注意力模块,以提高ViT处理大图像时的效率。另一方面,Swin Transformer引入了移动窗口注意力,以限制在非重叠的局部窗口中的注意力。
    • 点云transformer:这些方法由于全局注意力带来的高计算和内存成本,都限制在只包含几千个点的点云上。为了解决这个问题,一些工作扩展了Swin Transformer,通过将注意力模块限制在点云的非重叠窗口中,以扩大点云变换器。然而,由于每个局部窗口中的点数目差异很大,SST和SWFormer将具有相似点数的局部窗口分组在一起,并以批处理模式处理;而Stratified Transformer利用复杂的GPU程序来处理这个问题。
  • method:

  • 首先,给定一个输入的点云,我们首先使用指定的比例因子对其进行规范化,并将其转换为八叉树。初始特征包括存储在非空八叉树叶节点中的平均点位置、颜色和点法线(如果提供的话)。然后,一个嵌入模块被用来下采样并将初始特征投影到一个高维空间。接下来,一个序列的OctFormer块和下采样模块被交替应用来生成高级别的层次特征,这些特征可以被一个轻量级的特征金字塔网络(FPN)消耗用于语义分割和物体检测。
  • OctFormer的核心是一个新颖的八叉树注意力模块,如图(b)所示包括嵌入和下采样模块、OctFormer块,以及详细的网络配置。
  • Octree Attention
    • 注意力机制是在[Vaswani et al . 2017]提出的scaled dot-product attention基础上构建的

    • 标准的注意力计算的复杂度为O(N^2),这在处理大规模的点云数据(如ScanNet)时不可接受,因为这些数据集通常包含超过100k的点。为了解决这个问题,作者采用了window attentions的策略,即将计算限制在非重叠的局部窗口内。这样,通过控制每个窗口中的点数K,可以将计算复杂度降低到O(K^2 * N/K),即与N线性相关。
  • 对于点云数据,每个窗口中的点数可能会有很大的变化,这对于在GPU上高效执行attention操作造成了困难。为此,作者提出了一种新的方法:在保持每个局部窗口中点的数量恒定的同时,允许局部窗口的形状自由变化。
  • 为了实现这个窗口划分,作者采用了八叉树。通过对八叉树进行排序,作者能够方便地通过张量重塑和转置生成窗口分区。
    • 乱序键的二进制表达式如下定义:

    • 其中 𝑑 是八叉树的深度。乱序键的值代表在3D z-序曲线上的位置。
  • (a)输入的点云和对应的八叉树(这里为了便于理解用四叉树来演示):输入的点云是从一个红色的形状中采样出来的。四叉树(在三维空间是八叉树)用来表达这个点云,非空的节点用灰色标出。
  • (b)深度为3的Z-order曲线:Z-order曲线(也被称为Morton order或Z-order curve)是一种用于描述多维数据在一维空间中的排序方法,它可以保留多维数据的局部性特性。在这里,深度为3的Z-order曲线表示四叉树中每个节点的Z-order排序。
  • (c)通过张量重塑和转置生成的窗口划分,对应(b)中的Z-order曲线,点数为7:这里,窗口划分是基于Z-order曲线和四叉树节点生成的,它包含了7个点。特征值被存储在一个张量中,这个张量的顺序和Z-order曲线上的非空四叉树节点的顺序相同。
  • (d)一个扩张的划分,点数为7,扩张数为2:这是一个扩张的窗口划分,它扩展了在(c)中描述的划分。这个扩张的划分的扩张数是2,这可能意味着在每个维度上都扩张了2倍。
  • (e)覆盖整个空间的Z-order曲线:这是一个Z-order曲线,它覆盖了整个四叉树所表示的空间。
  • (f)对应(e)的窗口划分,点数为16:这是一个窗口划分,它基于(e)中描述的Z-order曲线,并且包含了16个点。
  • (g)对应(e)的扩张划分,点数为16,扩张数为4:这是一个扩张的窗口划分,它扩展了在(f)中描述的划分。这个扩张的划分的扩张数是4,这可能意味着在每个维度上都扩张了4倍。
  • 同时,作者还提出了一个dilated octree attention的方法,尽管窗口注意力加快了计算速度,但它们的感受野减少,并且不同窗口之间缺乏信息传播。为了缓解这些问题,我们进一步提出了一种扩展的八叉树注意力。通过设定不同的dilation值,可以在提高计算效率的同时,保持较大的接收场,促进不同窗口间的信息传播。
  • Positional Encoding.
  • 作者引入了一种条件位置编码 (Conditional Positional Encoding, CPE) 的方法,通过深度卷积动态地生成位置编码。这种方法可以有效地减少模型的参数量,并且可以捕获每个点在空间中的相对位置。

  • 文中总体算法伪代码如下:

  • Network Details:
    • 作者详细介绍了 OctFormer 的网络细节,包括嵌入模块(Embedding module)、OctFormer块(OctFormer block)和下采样模块(Downsampling module)。
    • 嵌入模块(Embedding Module):嵌入模块将输入信号映射到高维特征空间,并通过因子4降低空间分辨率。该模块由5个基于八叉树的卷积模块组成,每个模块包含一个八叉树卷积、一个批量归一化层和一个ReLU激活函数。这些八叉树卷积的核大小和步长分别为{3, 2, 3, 2, 3}和{1, 2, 1, 2, 1},步长为2的卷积将张量的空间分辨率降低2倍。
    • OctFormer块(OctFormer Block):遵循标准的Transformer块设计,一个OctFormer块由一个在3.1节中介绍的八叉树注意力机制、一个多层感知机(MLP)和残差连接组成。MLP包括两个全连接层,中间有一个GELU激活函数,隐藏通道的扩展比例设为4。在每个注意力模块和每个MLP之前都使用了层归一化(LayerNorm)以稳定训练。两个连续的OctFormer块中的八叉树注意力的扩张设为1和4。
    • 下采样模块(Downsampling Module):下采样模块通过一个八叉树卷积(核大小为2,步长为2)和一个批量归一化层实现,这可以降低特征图的空间分辨率并增加通道的数量。
  • experiment:
  • 首先,作者使用的是ScanNet和ScanNet200这两个数据集进行实验。ScanNet包含1513个大规模的室内场景3D扫描,包括20个语义类别,平均点数为148k。ScanNet200和ScanNet的数据相同,但增加到200个语义类别,增加了挑战性。在这两个数据集上的实验使用了相同的训练设置,除了输出通道数为ScanNet的20和ScanNet200的200。ScanNet200 上的语义分割。 Head、Common 和 Tail 表示三个较小组的 mIoU,包含 66、68 和 66 个类别 ScanNet200,All 表示所有 200 个类别上的 mIoU。最好的结果用粗体标记。我们的 OctFormer 从头开始训练在所有组上都取得了最佳性能,并且明显优于以前最先进的方法,即使是经过预训练的方法。

  • 在这项实验中,OctFormer作为骨干网络,用于提取层次化特征,并使用轻量级的FPN(Feature Pyramid Network)作为分割头。他们采用了AdamW优化器进行训练,并对输入的点云进行了归一化和八叉树编码。还进行了一些数据增强,如随机旋转、缩放、平移、弹性变形和球形裁剪等。
  • 在ScanNet上的结果表明,OctFormer的训练过程耗时15小时,并使用4个Nvidia 3090 GPUs占用了13GB的内存。他们的OctFormer在验证集上达到了74.5的mIoU,使用投票策略后,mIoU增加到了75.7。这使得OctFormer在所有方法中在验证集上取得了最佳表现。特别是,OctFormer在验证集的mIoU上超过了先前的点云转换器,并且比基于稀疏体素的CNN和基于点的网络表现得更好。在测试集上,OctFormer取得了第二高的mIoU,仅次于Mix3D。然而,OctFormer在验证集上的mIoU高于Mix3D。效率比较。横轴表示输入张量的空间数,纵轴表示以秒为单位的运行时间。我们的 OctFormer 运行速度明显更快,当空间数为 200 时,比 Point Transformer v2 和 Stratified Transformer 快 17 倍。

  • 在ScanNet200上的结果表明,OctFormer在没有额外数据的情况下,从头开始训练,表现得比竞争对手更好,并且在三个小组中也一直更好。具体来说,OctFormer的mIoU比MinkowskiNet高7.3,比使用强大的CLIP模型预训练的LGround高5.4。
  • OctFormer也有其局限性。其中一个限制是OctFormer容易在小规模数据集上过拟合。另外,虽然他们采用了CPE作为OctFormer的位置编码,但由于其依赖于基于八叉树的深度卷积,这可能会对OctFormer的灵活性造成影响。未来,他们将探索其他的位置编码的可能性。作者们还指出,他们提出的八叉树注意力机制本质上是一种自注意力机制,主要用于作为编码器网络的构建模块。在未来,他们计划将八叉树注意力扩展到交叉注意力。此外,他们还打算将OctFormer或其他使用他们的八叉树注意力设计的网络结构应用于3D内容创建中,以进行跨模态训练,例如,基于图像、草图或文本的3D形状生成。
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值