创新点
普通的注意力复杂度为O(N^2),不可处理大规模的点云数据。
使用窗口注意力,可将计算限制在非重叠的窗口内。控制每个窗口中的点数K,计算复杂度降到O(K^2*N/K)。
但点云有稀疏性,窗口间的点数有很大的变化,无法在GPU上并行操作。
提出了一种方法:在保持每个窗口中点(体素化后的整个叶结点)的数量恒定的同时,允许窗口的形状自由变化。用八叉树处理点云,再对同深度的八叉树节点用shuffled key进行排序。
Octree Attention
图abc表示将非空体素进行排序,每个window中包含相同数量的体素,再在每个window中进行自注意。
但这样有一个缺点,尽管窗口加快了计算,但感受野变小,且窗口间不能通信。
解决方法是扩展八叉树的注意力,设定不同的dilation(图d),保持较大的接收场,促进不同窗口间的信息传播。
虽然这个八叉树注意力是针对稀疏体素设计的,但当用于全体素或具有特定窗口大小和dilation的图像时,退化为vit中的标准窗口注意力(图f,g)。
采用条件位置编码(CPE),通过深度卷积动态地生成位置编码。
Architecture
S和C分别表示特征的空间分辨率和通道数。
初始特征包括点的平均位置、颜色和法线。
Embedding对初始特征进行映射。
交替用OctFormer block和下采样生成特征。
在每个OctFormer block中进行上文提到的CPE位置编码。
Experiment
运行速度的对比:输入量和运行时间
消融实验:
Conclusion
局限性:
在小规模数据集上容易出现过拟合现象。
采用CPE作为位置编码,依赖于基于八叉树的深度卷积,损害了灵活性,可以改进为基于MLP的位置编码方式。