点云深度学习系列一: PointNet和PointNet++

前言:SLAM的系列实验基本就更新那么多,之后开始进入点云深度学习的方向,不出意外,这个系列会持续很久

点云深度学习最近一两年逐渐火热,这个系列从CVPR2017的PointNet开始,主要总结顶会的相关文章,不会全文翻译,只总结自己觉得重要的点。感兴趣的同学,可以去阅读原文。毕竟经要去西天取,文章要去源头品。


PointNet

(PointNet: Deep Learning on Point Sets for 3D Classification and Segmentation)

(作为第一个直接处理点云的深度学习框架,相关介绍太多了,不再赘述)

输入是包含n个点的三维点云(nx3) , 原始数据通过一个3D 空间变换矩阵预测网络 T-Net(3),估计出3x3的变换矩阵T(3) 并作用在原始数据上,实现数据的对齐。对齐后的数据会以点为单位,通过一个共享参数的双层感知机模型进行特征提取 。每个点提取出64维的特征,再通过特征空间变换矩阵预测网络 T-Net(64) 预测64x64的变换矩阵,作用到特征上,实现对特征的对齐。然后继续利用三层感知机(64,128,1024)进行以特征点为单位的特征提取,直到把特征的维度变为1024,继而在特征空间的维度上进行Max Pooling,提取出点云的全局特征向量。

点云深度学习系列一: PointNet和PointNet++_第1张图片

 

 

PointNet++

(PointNet++: Deep Hierarchical Feature Learning on Point Sets in a Metric Space)

1.文章主要解决两个问题

  • 怎么划分这个点云集合

采用Farthest Point Sampling(FPS)算法,原理: 先随机选一个点,然后呢选择离这个点距离最远的点加入起点,然后继续迭代,直到选出需要的个数为止。(Sampling layer)

采用Ball query分组算法,原理: 给定中心点,把给定半径内的点都包括进来,同时给定邻居点个数。相比KNN,Ball query保证了一个固定的区域尺寸,所以比KNN更加geralizable across space,更适合于需要局部特征的任务。(Grouping layer)

  • 怎么组合点云集的局部特征

local region中的坐标首先被转换到相对于中点的坐标系中,使用相对坐标系,我们可以捕获到局部区域中点到点的关系。

使用PointNet作为局部特征学习器作为一个基础的结构部件,PointNet要在局部点集中抽取特征,或者把特征组合成更高层表示,所以PointNet++递归地使用PointNet在一个嵌套划分的输入点云集合上。(PointNet layer)

但是存在采样不均匀密度的问题。在低密度的地方可能会丢失局部信息,所以还需要增大尺度,所以提出了 density adaptive PointNet layers。主要采用以下两种方式解决:

Multi-scale grouping (MSG):每个尺度使用PointNet,然后将多尺度特征融合到一起。但是计算量比较大。

Multi-resolution grouping (MRG):MRG特征由两个向量组成,左边的使用区域抽象层汇总每个子区域的特征,右边的使用PointNet直接处理所有原始点数据。当局部区域密度低时,左边的特征不如右边的可靠,因为它包含更加稀疏的点,并且更多收到了采样的影响。

另一方面,当时局部区域密度高时,左边的向量提供了更精细的细节信息,因为它具有在较低层次递归地检查更高分辨率的能力。

点云深度学习系列一: PointNet和PointNet++_第2张图片

2.整体框架如下:

点云深度学习系列一: PointNet和PointNet++_第3张图片

set abstraction: 主要分为上面提到的Sampling layer、Grouping layer 和PointNet layer

通过多个set abstraction,最后进行分类和分割:

分类:将提取出的特征使用PointNet进行全局特征提取

分割:NL-1是集合抽象层的输入,NL是集合抽象层的输出。NL是采样得到的,NL-1肯定大于等于NL。在特征传播层,将点特征从NL传递到NL-1。根据NL的点插值得到NL-1,采用邻近的3点反距离加权插值。将插值得到的特征和之前跳跃连接的特征融合,在使用PointNet提取特征

3.总结:

给一片点云,PointNet++会先对点云进行采样(sampling)和划分区域(grouping),在各个小区域内用基础的PointNet网络进行特征提取(MSG、MRG),不断迭代。对于分类问题,直接用PointNet提取全局特征,采用全连接得到每个类别评分。对于分割问题,将高维的点反距离插值得到与低维相同的点数,再特征融合,再使用PointNet提取特征

 

参考链接:

https://blog.csdn.net/sunfei05/article/details/80451808

https://blog.csdn.net/qq_15332903/article/details/80261951

https://www.cnblogs.com/lainey/p/8625141.html

你可能感兴趣的:(点云深度学习)