【点云系列】SO-Net:Self-Organizing Network for Point Cloud Analysis

文章目录


清理一下草稿箱,好早之前写的进入忘了发布;)

1. 概要

1.1 原文

题目:SO-Net:Self-Organizing Network for Point Cloud Analysis, CVPR2018
论文:https://link.zhihu.com/?target=https%3A//arxiv.org/abs/1803.04249
代码:https://github.com/lijx10/SO-Net
简介:主要采用了自组织神经网络(SOM)来获取具有代表性的点

1.2背景知识

自组织神经网络(SOM)
Kohonen提出的一种神经网络模型,可以对数据进行无监督学习聚类
只包含:输入层+输出层(映射层),由于没有中间隐藏层,因而输出保持了原有拓扑结构。

SOM是一种无监督的聚类方法,模拟人脑中处于不同区域的神经细胞分工不同的特点,即不同区域具有不同的相应特征,且自动完成。对于未知聚类中心的判别问题可以用自组织映射来实现。

训练采用“竞争学习“的方式,每个输入样例在隐藏层中找到一个和它最匹配的节点,称为”winning neuron“。紧接着用随机梯度下降法更新激活节点参数。同时,和激活节点临近的点也根据它们距离激活节点的远近而适当地更新参数。
【点云系列】SO-Net:Self-Organizing Network for Point Cloud Analysis
SOM主要分两步

  1. 选择激活节点;
  2. 更新激活几点及临近节点权值;
    –>脑科学研究表明:相邻较近神经元之间可以互相激励,因而SOM操作也类似;
    –>确定邻域:设定一个半径,半径内点均为临近点,随着学习进行,使半径越来越小直到学习结束。

SOM作用:聚类 & 降维

2. 动机

与PointNet++及PointCNN整体思路类似,低层还是PointNet,即:先选择一些代表性的点,将点云分区,然后使用PointNet,通过Max-pooling每个区域得到一个特质向量作为节点特征,然后拼接所有的节点特征,接到FC层中分类。

不同之处:选择中心点是通过自组织结构映射SOM来进行的,且仅进行一次下采样操作。

3. 思想

  • 构建自组织结构映射(SOM)来选择代表性的点,来建立点云的空间分布。
  • 网络具有多层次结构
  • 感受野可通过KNN来调整

4. 算法

自组织网络:一个点云中的N个点用M个SOM节点来表示。

4.1 SOM的置换不变性

该文章中SOM大小设置为 m × m m\times m m×m大小,其中 m ∈ [ 5 , 11 ] m\in[5,11] m∈[5,11]。与深度网络中的回馈机制相比,SOM是非监督对比学习的。

但是SOM不是置换不变的,因为:
(1)训练结果高度依赖初始化节点;
–>固定初始化的节点数,可均匀化分散在一个单位球里获得初始化点,如图2(a)所示
(2)逐样本更新取决于输入点的排序;
–>不适用逐点更新,使用 块更新,即累加所有点的增益在更新,避免了由于顺序引入的置换变化;
【点云系列】SO-Net:Self-Organizing Network for Point Cloud Analysis

4.2 编码框架

SOM是指引层次特征提取,且系统调节感受野重叠的工具。

给定SOM输出,我们为每个节点 s i s_i si​寻找其K最近邻:
【点云系列】SO-Net:Self-Organizing Network for Point Cloud Analysis
然后将每个 p i p_i pi​与相关节点相减,归一化为 k k k个点:
【点云系列】SO-Net:Self-Organizing Network for Point Cloud Analysis
如此KN个归一化的点被前向传递给下一层:
【点云系列】SO-Net:Self-Organizing Network for Point Cloud Analysis
最后节点的特征提取使用最大池化将 K N KN KN个点特征变成 M M M个节点特征。
【点云系列】SO-Net:Self-Organizing Network for Point Cloud Analysis
由于每个点归一化到 k k k个坐标,也保证了 M M M的感受野在最大池化后是相互覆盖的,也即$M
个 点 囊 括 了 个点囊括了 个点囊括了kN 个 归 一 化 点 , 这 里 的 个归一化点,这里的 个归一化点,这里的k$是控制覆盖率的参数。

而SOM类似特征聚合。由于第一层的输入点由 M M M个SOM节点表示,因此实际是分成了 M M M个迷你点云,如图3所示。每个mini点云包括了很小数量点,他们的原始点是相互关联的。对于2048个点的点云来说,M=64,k=3,mini点云大概包括90个点。

与SOM节点的连接起到了将这些mini点云组装回原始点云的作用。由于SOM明确地揭示了输入点云的空间分布,我们的分离和组装过程比分组策略PointNet++更有效。

整体框架图如图所示:
【点云系列】SO-Net:Self-Organizing Network for Point Cloud Analysis

4.3 自编码器

两路并行分支:
【点云系列】SO-Net:Self-Organizing Network for Point Cloud Analysis

5. 实验结果

数据增强
输入点云在一个单位立方体内归一化为零均值。在训练阶段采用以下数据增强:
(a)高斯噪声 N ( 0 , 0 : 01 ) \mathcal{N}(0,0:01) N(0,0:01)添加到点坐标和面法向量中(如果适用);
(b)高斯噪声 N ( 0 , 0 : 04 ) \mathcal{N}( 0,0:04) N(0,0:04)添加到SOM节点。
©点云、表面法向量(如果适用)和SOM节点按从均匀分布采样的一个因子进行缩放。其他额外的增强,如随机移位或旋转,不会改善结果。

看的出来当时的效果还是很不错的
【点云系列】SO-Net:Self-Organizing Network for Point Cloud Analysis

鲁棒性实验:
【点云系列】SO-Net:Self-Organizing Network for Point Cloud Analysis
【点云系列】SO-Net:Self-Organizing Network for Point Cloud Analysis

6. 结论及思考

主要是使用了SOM[19]来解决了选点问题,模拟点云空间分布;

可探索点:节点特征提取产生了一个类似图像的特征矩阵,它不随输入点的顺序变化。随着感受野的增加,可以应用标准的ConvNets进一步融合节点特征。但是,在我们的实验中,我们用2D卷积和pooling替换了第二批全连接层,分类精度略有下降。研究这一现象的原因和解决方法是一个很有前途的方向。

参考:

  1. https://zhuanlan.zhihu.com/p/92539221
  2. https://blog.csdn.net/wydbyxr/article/details/83894383
  3. https://blog.csdn.net/u011308691/article/details/19175675
上一篇:python-文件读写


下一篇:《精通Spring MVC 4》——2.4 使用Thymeleaf