image.png

这篇文章思路很简单,但是关于各种分析,倒是使用了很多的符号和理论,没有继续往下看,不过可以看出来,作者的理论基础确实扎实,佩服。

主要贡献

主要提到了点云数据的几个特点:

  • 点云具有无序性。受采集设备以及坐标系影响,同一个物体使用不同的设备或者位置扫描,三维点的排列顺序千差万别,这样的数据很难直接通过End2End的模型处理。
  • 点云具有稀疏性。在机器人和自动驾驶的场景中,激光雷达的采样点覆盖相对于场景的尺度来讲,具有很强的稀疏性。在KITTI数据集中,如果把原始的激光雷达点云投影到对应的彩色图像上,大概只有3%的像素才有对应的雷达点。这种极强的稀疏性让基于点云的高层语义感知变得尤其困难。
  • 点云信息量有限。点云的数据结构就是一些三维空间的点坐标构成的点集,本质是对三维世界几何形状的低分辨率重采样,因此只能提供片面的几何信息。

所以提出的结构必须可以处理数据的无序性。为了使模型对输入排列不变,存在三种策略:

  1. 将输入排序为规范顺序
  2. 将输入视为训练RNN的序列,但通过各种排列来增加训练数据
  3. 使用简单的对称函数来聚合来自每个点的信息

文章最终使用的还是第3中,选择使用了最大池化操作来汇总信息,对此文章分析了很多,具体可见文章。

image.png

重点在于输入点云数据后,使用一个转换操作,这里使用了一个定制的小型网络来处理一个转换矩阵的学习,将输入特征对齐到特征空间,而后续的便是多层感知机,在后续的操作中又使用了一个特征转换的结构,这里也使用了类似的网络预测转换矩阵,实现了多个不同点云之间的特征的对齐。

对于分类网络而言,直接在最后使用与顺序无关的操作——最大池化——来实现特征的汇聚,进而得到全局特征表示。最后再通过一些多层感知机可以得到对应的预测类别。

对于分割网络而言,使用最后获得的全局特征与前期获得的各点的特征进行拼接,相当于混合了局部与全局的特征,将其送入后续的多层感知机网络,得到最终的关于各点的分类预测结果。

The segmentation net-work is an extension to the classification PointNet. Local point features (the output after the second transformation network) and global feature (output of the max pooling) are concatenated for each point.

对齐/转换网络

The first transformation network is a mini-PointNet that takes raw point cloud as input and regresses to a 3x3 matrix.
It’s composed of

  • a shared MLP(64, 128, 1024) network (with layer output sizes 64, 128, 1024) on each point,
  • a max pooling across points
  • two fully connected layers with output sizes 512, 256.

The output matrix is initialized as an identity matrix. All layers, except the last one, include ReLU and batch normalization.

The second transformation network has the same architecture as the first one except that the output is a 64  64 matrix.
The matrix is also initialized as an identity.
A regularization loss (with weight 0.001) is added to the softmax classification loss to make the matrix close to orthogonal.

其他结构细节

分类网络细节:

  • We use dropout with keep ratio 0.7 on the last fully connected layer, whose output dimension 256, before class score prediction.
  • The decay rate for batch normalization starts with 0.5 and is gradually increased to 0.99.
  • We use adam optimizer with initial learning rate 0.001, momentum 0.9 and batch size 32.
  • The learning rate is divided by 2 every 20 epochs.
  • Training on ModelNet takes 3-6 hours to converge with TensorFlow and a GTX1080 GPU.

语义分割网络细节:

  • No dropout is used for segmentation network.
  • Training parameters are the same as the classification network.

形状部分分割细节:
As to the task of shape part segmentation, we made a few modifications to the basic segmentation network architecture (Fig 2 in main paper) in order to achieve best performance, as illustrated in Fig 9.

  • We add a one-hot vector indicating the class of the input and concatenate it with the max pooling layer’s output.
  • We also increase neurons in some layers and add skip links to collect local point features in different layers and concatenate them to form point feature input to the segmentation network.
  • It takes around six to twelve hours to train the model on ShapeNet part dataset and around half a day to train on the Stanford semantic parsing dataset

image.png

64+128*3+512+2048=3008 one-hot vector=16

一些启发

  • 如果点云经历某些几何变换(例如刚性变换),则点云的语义标记必须是不变的。所以使用了两个对齐变换网络。对于一些特定的需要针对输入的变化具有输出的不变性,那么这样的一种学习策略是值得参考的。(这里文章提到了STN,见参考链接)

参考链接