PointNet++阅读笔记
PointNet++阅读笔记
pointNet使用对称函数整合全局信息,解决点的无序性问题,然而从单点使用mlp的特征提取,到max pooling进行全局特征整合,最终得到的特征,都只是从一个点上提取的,没有考虑点和点之间的相关性特征。
pointNet++就在此基础上,提取了局部相关性的特征,这种局部特征被认为是距离尺度空间所展现的性质,比如点的密度信息。文章不仅仅局限于欧式空间,mesh网格上的流形距离等也可以使用,这样,网络不仅对刚体变换的物体能够更准确的分类,还能学习到非刚体变换的物体特征(如站立的喵和蜷缩的喵)。同时,设计了层级的特征提取结构,并提出了MSG/MRG结构,适应非均匀分布的点云数据。
文章设计了层级结构,每一级提取多个邻域范围的点集,使用pointNet作为特征提取结构。这样,pointNet类似于卷积核,提取的点集类似于卷积划过的图像窗口,类似于感受野。3D点云上的深度学习就如同2D cnn一样,能够提取局部相关性特征。随着层级加深,感受野增大,特征点数目变小。(但是本文并没有像point CNN一样,提出随着特征点减少,每个特征点的维度要加深)。
单层级结构
每一个level都需要选择多个邻域点集,分别对其提取特征。对于一个level,输入Nx(C+D)的特征,输出N’x(C’+D)。每个level的处理过程分为以下三个步骤:
1.Sampling layer
**用于选取各点集的中心点。**选取方法为FPS,即先选一个点,然后选在当前尺度标准下离他最远的点,再迭代选离已有点集最远的点。这样从点集的n个点钟选出m个中心点,与随机选相比,能够更好的覆盖整个点集。并且感受野与空间密度相关。
2.Grouping layer
对每个中心点找它的邻域点,形成子点集。注意子点集之间可以存在overlap,并且每个子点集的点数目不一定相等。文章提出了两种方案,一是ball query,在尺度空间下,给定半径k,将距离在k以内的点都加入点集。这种方法的好处是固定了邻域尺度,能够更好的提取局部空间的特征(generalizable),适用于语义分割任务。第二种方案是K近邻,这种方案固定了点集的数量。本文更偏好ball query方法。
3.PointNet layer
抽取此层级特征点。由前一层得到N’xKx(C+D)的点阵,(N’个中心点,每组K个点,每个点包含D维坐标和C维特征)。对于每一组点kx(C+D),先对其中心点做归一化,得到局部坐标,再经过point Net,得到1x(C’+D)的特征向量。(回忆point net经过max pooling后,得到的就是一维向量,而与点个数无关)。这样最终得到的是N’个(C’+D)维的特征点。
对于非均匀分布的点云的采样方法
文章认为,实际点云很少是均匀分布的,在采样的时候,对于密集的区域,应该使用小尺度采样,以深入细致的特征(finest details),但在稀疏区域,应该使用大尺度采样,因为过小的尺度会导致稀疏处的采样不足。因此,本文提出了改良的特征提取层,density adaptive PointNet layers。又分为以下两种方案:
1. Multi-scale grouping(MSG)
思想是在grouping layer中,使用不同尺度,再分别接入point Net layer。得到多尺度的特征,concat起来。
在训练时,使用了random input dropout策略,目的是让训练集存在不同密度的区域分布,使得网络能够学习到最优的结合多尺度特征的方法。具体是,对于一个训练集,在[0,p]直接随机选取(uniformly sample)一个dropout ratio θ,p<=1,对每个点,使用θ做dropout。实验中,选择p=0.95,防止最终dropout成空集。这样训练集就拥有了不同的稀疏性(因为θ不同),也有了同一个点集内部的非均匀分布(由于dropout)。
但是这种方案要做多次point Net,开销很大。所以文章更推荐下面的MRG方法。
2. Multi-resolution grouping(MRG)
MRG只使用了两组特征向量concat。第一个是对于前一级所有子点集提取的特征点作加和(N’组,求和后得到1x(C+D)),叫做V1。第二个是对当前level的所有点(N’个),直接经过point Net layer,得到一组特征向量(也是1x(C+D)),叫做V2。这样,二者分别有一个权重系数*(应该是可学习的参数?)*。V1是overlap的局部点特征加和,更能采样密集点处的特征。V2则代表了稀疏的全局特征。
分割任务的网络设计
和point Net一样,对于分割任务,也参照了2D图像分割方法。这里使用了和FCN相似的skip link结构,上采用后的特征与同分辨率(对应同特征点)的低层特征concat,这样高级全局特征和低层细节信息相结合,有助于细节分割。
上采用使用了interpolate结构。将N’个点恢复为N个点(N‘<N)。使用inverse distance weighted average based on kNN方法。就是对于要恢复的点x(上一级N中的点),找尺度空间下的最近K个点,按照距离的倒数对特征加权平均,得到上采样后这个点的特征。
非刚体变换的物体识别
上述所有的尺度空间,实际实验中都是在欧式空间中的,论文里唯一体现尺度空间不同之处的就是这个非刚体变换。简单来说,就是把点之间欧式距离的度量,换成了geodesic distance,这是物体表面的距离度量。同时,输入的数据使用 的不是坐标,而是手动提取的WKS和HKS特征。文章说这样能够对非刚体变换的物体进行分类。
(不是很懂的一点是,既然WKS和HKS都是通过坐标计算得到的特征,为什么不输入坐标,使用网络提特征呢?)