SO-Net:点云分析的自组织网络论文解读

SO-Net: Self-Organizing Network for Point Cloud Analysis

参考链接
论文翻译链接
SO-Net视频讲解
论文地址
代码地址

论文目的: 点云分类、分割任务核心在于点云特征提取,本文旨在设计一种较好的点云特征提取结构

点云特征提取方法有很多,有以下几种:

  • 转为体素,利用3D卷积 —>受限于分辨率,并且计算资源消耗大
  • 转为多视图,分别应用2D CNN —> 会造成信息缺失,效果很一般
  • 利用索引结构(data indexing-based),比如八叉树、kd树,消除了点云的无序性,然后再处理,代表性网络KD-Net(建模输入点云的空间分布,但是感受野重叠控制不灵活)
  • 因为点云的无序性,很少有直接输入点云的模型的研究,直到pointnet出现,随后pointnet++、pointCNN、KPConv、DGCNN

论文核心: 提出了SO-Net,属于data indexing-based方法,用自组织网络SOM建模输入点云的空间分布,然后聚合成一个全局向量,进行分类和分割任务

SOM网络解析:
输入:N个点云(N,3),输出:M个节点(M,K)
为了体现点云的置换不变性,采用:每次训练都初始化同样的节点分布、采用整体更新不逐点更新节点(所有输入点都KNN之后,统一进行更新,体现置换不变性)

首先初始化M个节点信息,论文中采用球形空间分布
通过以下算法,更新节点特征,达到M个节点特征可以代表输入点云的效果

  • 对于输入点云的每个点Pi,对节点空间做KNN(point to node KNN),得到K个Sik
    在这里插入图片描述
  • 对Sik做归一化处理,得到k个归一化向量Pik
    在这里插入图片描述
  • Pik经过MLP,升维处理
    在这里插入图片描述
  • 输入点云的每个点都处理完成后,得到KN个特征,对于每个节点,对其连接的所有特征做max pooling,节点得到更新,最终M个节点更新完毕,得到M个节点特征(M个节点向输入点云‘靠近’,学到了输入点云的空间分布)
    在这里插入图片描述
    原理示意图如下所示: 其实就是节点特征域向输入点云特征域靠拢的自监督学习过程

SO-Net:点云分析的自组织网络论文解读_第1张图片
SO-Net:点云分析的自组织网络论文解读_第2张图片

本质上是无监督学习:利用无标签数据,自己学习数据内在规律,更新M个nodes

这里的K是可调参数,代表着感受野重叠性,K越大代表重叠性越大,特征的交互性紧密程度越大,学习到的特征信息越丰富,但是过大的K会造成信息冗余、增大计算量

网络整体的结构:
SO-Net:点云分析的自组织网络论文解读_第3张图片

作者还设计了很有意思的一件事,设计了自编码器Autoencoder,验证经过SOM学习得到的全局向量可代表整个输入点云;并且还可以利用数据集(不用标签)对autoencoder训练,训练得到的encoder(SOM)可作为分类任务或分割任务的预训练权重
SO-Net:点云分析的自组织网络论文解读_第4张图片

其中的损失函数采用Chamfer loss:表征预测点云和原始点云的相似程度
SO-Net:点云分析的自组织网络论文解读_第5张图片
其中Ps是原始点云,Pt是重建点云
对于所有的x∈Ps,求与Pt所有点距离最小的距离的总和,反过来也一样,最后相加

可以看到,重建效果还不错
SO-Net:点云分析的自组织网络论文解读_第6张图片

实验情况 & 鲁棒性消融实验
SO-Net:点云分析的自组织网络论文解读_第7张图片
SO-Net:点云分析的自组织网络论文解读_第8张图片
SO-Net:点云分析的自组织网络论文解读_第9张图片

总结:

核心是设计一个自组织网络SOM,来近似输入点云的空间分布,最后得到一个全句向量进行分类分割等任务,并且还可以通过改变K来控制感受野重叠程度,同时设计一个Autoencoder结构,可验证SOM效果并且可作为分类分割任务的预训练环节

缺点:网络中的层级特征提取部分全是MLP,感觉比较粗糙,后续可用CNN、GNN等实现

你可能感兴趣的:(点云深度学习,深度学习,人工智能)