2019年3月

NIPS 2017

Abstract

PointNet在设计之初没有考虑shape的局部特征,这限制了其在复杂场景下的细粒度分类能力。本文基于PointNet,提出了一种分层的网络结构,其在输入point cloud的嵌套划分上迭代的使用PointNet,从而对不同上下文尺度的局部特征进行学习。同时,point cloud在采样时通常会出现采样密度上的不一致性,当网络模型在相同的采样密度上进行训练时性能并不理想。针对这一问题,本文提出了一种density adaptive PointNet layer,以在采样密度不同时进行多尺度的特征融合。结合了上述两种设计的网络模型称为PointNet++。

注:作者所有的分析都是从测度空间的角度来进行分析的,具有很强的数学性。

PointNet++

image.png

PointNet++以一种分层的形式来对point cloud进行处理:首先,PointNet++将point cloud分成若干个区域,在每个区域中使用PointNet对区域特征进行提取。之后小区域合并成大区域,再使用PointNet进行提取,依次类推,直至对整个point cloud进行特征提取。这样,PointNet++面临着两个问题:

  1. 如何对point cloud进行划分?
  2. 如何对划分好的区域进行局部特征的提取?

对于第二个问题,PointNet++使用了PointNet作为local feature learner。对于第一个问题,PointNet++进行了如下设计。

Hierarchical Point Set Feature Learning

PointNet++将对整个point cloud的特征提取过程分成了若干个set abstraction levels(SAL)。每个SAL包含三个步骤,分别为Sampling Layer,Grouping Layer和PointNet Layer。每个SAL接受一个$N\times(d+C)$维的输入,Sampling Layer找到$N′$个centroid,Grouping Layer为每个region partition组合出$N′\times K_i \times (d+C)$维的特征,然后PointNet Layer提取出$N′ \times (d+C′)$维的特征。其中,C是附加特征的数量,$N′$是每个region partition中的点数。下一个SAL的输入只有上一个SAL的centroid。

  1. Sampling Layer从输入point cloud中选择出一些点作为每个region partition的centroid。此时在采样时PointNet++使用了farthest point sampling(FPS)。与随机采样相比,FPS可以获得更好的收敛。其中第一个点随机选取。
  2. Grouping Layer找出每个centroid的neighbor point,并组成region partition。在选择neighbor point时,PointNet++使用了ball query(Euclidean distance)而不是kNN,因为作者发现这样泛化性能更好。二者的区别在于:kNN有且仅有k个point,而ball query将radius范围内的全部包含,个数不确定。
  3. PointNet Layer为每个region partition提取特征。注意的是,每个点的坐标信息转化为相对于centroid的相对坐标,这有利于编码point-to-point的关系。

image.png

Robust Feature Learning under Non-Uniform Sampling Density

在point cloud采样时,不同区域的采样密度不同时非常常见的情况。如果模型在训练时采用相同的scale,那么会导致提取到的特征与区域密度的不匹配。在密集数据上学到的特征无法很好的泛化到稀疏的数据上去,导致在稀疏数据上无法对细节特征进行有效的建模。此时,需要在更大的scale上进行特征提取。为了解决这个问题,PointNet++提出了density adaptive PointNet layers,通过将不同尺度的区域的特征进行融合,来应对采样密度不一致的问题。

image.png

PointNet++使用了两种方式:

  1. Multi-scale grouping(MSG):每个SAL使用不同scale的grouping layer和PointNet layer提取特征,并将特征concat起来,作为最后的feature vector。
  2. Multi-resolution grouping(MRG):在第L个SAL,使用L-1的subregion的特征和该region所有point cloud点的分别做grouping layer和PointNet layer,并concat起来。

在实际应用中,MSG效果更好,MRG速度更快。

image.png

PointNet还提出了一种random input dropout,即先从[0, p]中随机一个𝜃,在从[0, 𝜃]中随机dropout的概率。

image.png

Point Feature Propagation for Set Segmentation

在分割问题中,之前的网络结构通过region partition进行了下采样。为了解决这一问题,PointNet++提出了一种利用空间插值进行上采样的方法,整体结构类似Encoder-Decoder。插值算法如下图:

image.png

Experiment

image.png

image.png

在非刚体shape的分类中,作者发现non-Euclidean distance和传统的intrinsic features非常重要。作者在这里使用了geodesic distance:连接两点的最短路径的边数。

image.png

文章链接

Abstract

3D视觉中通常采用point cloud或者mesh的形式来存储数据,而传统用于解决3D视觉问题的CNN模型选择将point cloud转化为voxel来处理,这个量化过程会导致精度上的损失和偏差。作者提出的PointNet直接将point cloud作为输入,从而可以有效的处理point cloud数据。

PointNet

image.png

PointNet直接将point cloud数据的3个坐标作为输入,因此结构非常简单高效。作者基于PointNet设计了分类子网络和分割子网络,分别用于解决分类和分割(part segmentation,semantic segmentation)问题。分割问题的结果还被用于解决3D object detection问题。

Point cloud的性质

  1. Unordered
  2. Interaction among points:point直接不是隔离的,而是相互联系的
  3. Invariance under transformation:point cloud整体经过某些变换(旋转、平移等),其所表示的label不发生改变。

PointNet Architecture

PointNet的结构包括了3个核心因素:

1. 用于处理无序输入的对称函数。

PointNet使用了maxpool来实现这个对称函数,用来消除输入序列的顺序对结果的影响。用于处理无序输入的常用方法有三种:排序、不处理+MLP、RNN。排序方法本身具有不稳定的特点,很多序列是无法进行稳定的排序的;不处理+MLP也难以学习到point cloud直接的无序关系;输入序列的顺序也对RNN的结果有重要的影响。作者提出的对称函数的key idea如下:

image.png

其中h函数将N-d的输入转化为K-d的特征,g是一个对称函数,用来得到一个全局的feature vector。对应到网络中,h是maxpool之前的一系列mlp,g是maxpool。

image.png

2. Local and Global Information Aggregation

在解决per point问题时,如segmentation等,仅仅使用global feature是不够的。PointNet将point feature和global feature进行了concat,并用于segmetation问题。

3. Joint Alignment Network

Point cloud的语义标签对某些几何变换具有不变性,因此,通过PointNet学习到的representation也应该具有这种不变形。因此,在point cloud进入PointNet之前,设计了一个affine transformation network用于进行坐标变换。相同的思想也用于feature space,PointNet在网络中间部分使用了feature transformation network用于进行特征维度的变换。但是,FTN维度较高,因此难以训练,作者又加入了一个regularization term,将feature transformation matrix限制为一个正交矩阵:

image.png

ATN和FTN的模型设计:
ATN: MLP(64, 128, 1024) + maxpool + MLP(512, 256, 3x3)
FTN: MLP(64, 128, 1024) + maxpool + MLP(512, 256, 64x64)

image.png

实际上ATN和FTN都没什么用。

理论分析

image.png

定理1说明了,对于Hausdorff距离上的任意连续集合函数f,PointNet在maxpool层有足够多的神经元的条件下都可以进行有效的拟合。

image.png

定理2(a)说明了如果Cs中的点都被保留,那么f(S)的值不会随输入点的减少而变化;如果只有Ns的点被加入到输入中,那么f(S)的值也不会随输入点的增多而变化。Cs是critical point set,Ns是upper-bound shapes。
定理2(b)说明了Cs的大小不超过maxpool中的神经元个数K。

Experiment

image.png
image.png
image.png

本周Paper List:

  1. PointNet: Deep Learning on Point Sets for 3D Classification and Segmentation
  2. PointNet++: Deep Hierarchical Feature Learning on Point Sets in a Metric Space
  3. PointSIFT: A SIFT-like Network Module for 3D Point Cloud Semantic Segmentation
  4. PointRCNN: 3D Object Proposal Generation and Detection from Point Cloud
  5. VoxelNet: End-to-End Learning for Point Cloud Based 3D Object Detection