对于上篇提到的pointnet,虽然很好的完成了对点云特征的提取,但只是简单的将所有点连接起来,只考虑了全局特征,丢失了每个点的局部信息。
进而pointnet++模型被提出,pointnet++的整体思想就是:首先选取一些比较重要的点作为每一个局部区域的中心点,然后在这些中心点的周围选取k个近邻点(欧式距离的近邻)。再将k个近邻点作为一个局部点云采用pointnet网络来提取特征。
网络结构依然维持清晰的风格
采样层:
采样层在输入点云中选择一系列点,由此定义出局部区域的中心。采样算法使用迭代最远点采样方法(FPS)。
FPS: 先随机选择一个点,然后再选择离这个点最远的点作为起点,再继续迭代,直到选出需要的个数为止
归类层:
目的是要构建局部区域,进而提取特征。思想就是利用临近点,并且论文中使用的是neighborhood ball,而不是KNN,是因为可以保证有一个fixed region scale,主要的指标还是距离distance。
pointnet层
在如何对点云进行局部特征提取的问题上,利用原有的Pointnet就可以很好的提取点云的特征。
在pointnet++源码中,FPS和邻域点确定的方法都是c语言编程的并混编成.so文件,故在windows系统下无法运行,后面在安装好ubuntu以及配置好相关环境后会对源码进行进一步分析。