kpconv与point transformer异同、算法讲解

相同之处:

  1. 网络架构相似,其均由encoder、decoder组成;都有降采样、升采样和跳跃链接;
  2. 其核心kpconv算子和transformer算子穿插于上述网络架构中;
  3. 在每层降采样环节中,不需要多个并行算子处理,只需要单个算子,来操作整个epoch数据。
  4. 降采样后,为了使其他点获取特征,采取的方法均为通过逐层地、降采样特征与上层特征结合地升采样方式赋予特征。

不同之处:

  1. 在降采样环节,Point tranformer采用最远点采样法(Farthest Point Sampling, FPS);kpconv采用格网采样(Grid sampling)方法,Kpconv主要是为了参照图像卷积strided滑块的思想;
  2. 在降采样环节提取特征时,Point transformer通过FPS减少点后,采取KNN、mlp、local max pooling的方法进行融合已经丢掉的点的特征信息。之后通过transformer对此块点云位置及特征,其数量为固定数量1024或2048,进行生成新的特征向量操作,位置不变。
  3. 在降采样环节提取特征时,Kpconv的特征获取主要是对每个点通过一定半径来提取;同时参照了resnet网络,有个类似的残差链接。
  4. 在升采样环节,Point transformer通过三次最近插值和跳跃链接的值相接,后加transformer;Kpconv通过最近邻上采样nearest upsampling和跳跃链接来赋值,后加了个1*1的卷积。

point transformer卷积算子

point transformer算子在生成Query、Key和V向量时,其中Key、Value向量中的每个点特征纳入了其周围K个点的特征(KNN,pointnet++中square_distance、index_points函数)。

点特征的训练在transformer阶段考虑了其周围batch_num的点。因为transformer算法的某点特征的生成需要该点的Query值与所有点生成的Key进行相乘,该点与其周围的batch_num个点生成了相应的匹配。从这一点可以得出,其对数据的预分割较敏感,batch_num的点之间的组织关系,即batch_num级别的邻域关系将作为较大的影响因素。文章中采用了位置编码,某种程度上弥补了这种敏感性。

KPconv卷积算子

KPConv算子在计算时,采用的卷积思想。其参数为卷积核参数,其中卷积核作用主要范围通过某点特征及、球邻域内的点来完成。
球半径的大小和多级格网采样的设置是其获取周围点特征的关键。

本文缺乏数学推导

你可能感兴趣的:(点云,transformer,算法,深度学习)