【深度学习——点云】PointNet++

时间:2024-04-03 15:39:40

这篇文章发表于NIPS 2017,是在PointNet基础上的工作,论文地址:PointNet++: Deep Hierarchical Feature Learning on Point Sets in a Metric Space

1. Motivation

PointNet处理点云的方式是首先单独对每一个点进行特征映射再使用MaxPooling在所有点特征上提取整体特征,这一过程中缺少对于不同尺度的局部结构特征的提取,使得PointNet难以识别更加细粒度的模式并泛化到更加复杂的情况当中。

CNN在计算机视觉取得的成功已经证明了逐层提取并整合局部特征至全局特征的重要性,PointNet++从这点出发,首先将整个点集分为多个子集,利用PointNet在这些自己上逐层提取局部特征并整合直到得到整个集合的全局特征。

2. Method

2.1 Hierarchical Point Set Feature Learning

相比于PointNet仅仅用一个MaxPooling来从单个点的特征中整合全局特征,PointNet++使用一种层级特征提取方式整合局部特征至全局特征。而为了提取不同尺度的特征,每一层级又包括针对不同尺度的abstraction level,每一个abstraction level包括Sampling Layer、Grouping Layer和PointNet Layer

Sampling Layer在输入的点集中使用最远点采样(farthest point sampling)采样各个partition的质心,相对于随机采样可以更好地覆盖整个采样空间。

Grouping Layer在采样得到的质心基础上使用ball query寻找各质心固定尺度区域中的neighborhood point,点云数据中的一个点的局部区域由其周围给定半径的球星空间内的点构成。

PointNet Layer相当于CNN中的卷积,使用mini PointNet对各个partiton局部区域进行特征提取,各个partition点集在输入网络前,除质心外的所有点坐标要减去质心坐标获得点的相对坐标,以捕捉局部区域中点与点之间的关系。

2.2 Robust Feature Learning under Non-Uniform Sampling Density

点云数据往往不是均匀采样的,有些区域密集,有些区域稀疏,这就为点集的特征提取带来了挑战,在密集点云上训练的网络可能不能很好地泛化到稀疏点云上,在稀疏点云上训练的网络遇到稠密点云无法学习到细粒度的局部特征。

要解决这个问题,在面对稀疏区域时,网络要具有适应性地在更大的区域上学习更大尺度的特征,网络提出density adaptive PointNet layer,在输入数据的采样密度改变时,学习整合不同尺度区域的特征。前文中的abstraction level只提取单个尺度的特征,在PointNet++中,利用多个abstraction level提取不同尺度的特征,再使用density adaptive PointNet layer来整合这些特征。文章提出两种density adaptive PointNet layer。

2.2.1 Multi-scale grouping (MSG)

如下图所示,Multi-scale grouping简单地把不同尺度的特征做一个concat,为了提高网络应对不同密度的点云数据的能力,在训练时,输入层应用random input dropout,来以一定的概率丢弃一部分输入点,但是MSG需要对每个局部的每个尺度进行特征提取,当点云规模变大时计算量会很大。

【深度学习——点云】PointNet++

2.2.2 Multi-resolution grouping (MRG)

MRG在某一层对每一个局部区域提取的特征由两部分组成,第一个部分在其前一层提取得到的特征基础上通过特征提取网络提取得到,第二部分直接在所抽取的局部区域对应的原始点云上进行特征提取,最后将这两部分特征进行concat。

【深度学习——点云】PointNet++

 以下是PointNet++的网络示意图。

【深度学习——点云】PointNet++

网络的缺陷

PointNet++是为了解决PointNet对局部特征提取不足的问题,将输入的点云划分为各个区域进行区域特征提取,但是在各个区域内,特征的提取依然和PointNet一样,是分别单独地提取点特征再pooling得到全局特征,依然没有完成对点与点之间关系的建模。