语雀(原文内容多一点,CSDN导不进来)
在之前的文章中分析了PointNet网络是如何进行3D点云数据分类与分割的。但是PointNet存在的一个缺点是无法获得局部特征,这使得它很难对复杂场景进行分析。在PointNet++中,作者通过两个主要的方法进行了改进,使得网络能更好的提取局部特征。第一,利用空间距离(metric space distances),使用PointNet对点集局部区域进行特征迭代提取,使其能够学到局部尺度越来越大的特征。第二,由于点集分布很多时候是不均匀的,如果默认是均匀的,会使得网络性能变差,所以作者提出了一种自适应密度的特征提取方法。通过以上两种方法,能够更高效的学习特征,也更有鲁棒性。
PPT:
PPT:
pointnet缺陷:没有平移不变性、没有局部特征提取能力、没有考虑点之间的关系
这些缺陷急需解决。
1.解决pointnet的缺陷,获得特征提取能力更好的网络。
2.多层次结构特征学习。
3.点的稀疏与稠密对特征提取的影响
论文中说了很多官话,有兴趣的可以去看下,我稍微简洁点。
1.先根据空间距离的度量将点云划分到一些局部的区域中,这些区域可以是重叠的,再对每个小区域采用pointnet聚合特征,将每个区域聚合成一个带有特征向量的点,到此为止,庞大的点云转化为了:少量的点+包含区域特征的特征向量。处理和抽象一组点产生具有较少元素的新集合。
2.获得的新点云重复上面的工作,以扩大特征深度和广度。
举例,现在有一个点云 ( x , y ) (x,y) (x,y),它的一个局部区域中有个点 ( u , v ) (u,v) (u,v),用pointnet聚合区域
得到 ( X , Y , F ) (X,Y,F) (X,Y,F), F F F是该区域特征向量,用 ( X , Y , F ) (X,Y,F) (X,Y,F)代表区域所有点。
所以就将原始点云 ( X , Y ) (X,Y) (X,Y)转化成特征点云 ( Y , Y , F ) (Y,Y,F) (Y,Y,F),特征点云点数更少,具有更高维度的信息 F F F
这就是作者文中提到的操作Set Abstraction:
farthest point sampling + grouping + pointnet
用两个SA(set abstraction)组成多层点集特征学习网络,SA由三个关键层组成:采样层,分组层和PointNet层。
采样层从输入点中选择一组点,这些点定义了局部区域的质心。 然后,分组层通过查找质心的相邻点来构建局部区域集。PointNet层使用mini-PointNet将局部区域编码为特征向量。
SA采用 N × ( d + c ) N\times(d+c) N×(d+c)矩阵作为输入
其中:
d代表d维坐标,比如xyz坐标中d=3;
c代表c维特征;
它输出具有d-dim坐标的 N’个子采样点的N’×(d + C’)矩阵和总结局部上下文的新 C’-dim特征向量。
( N , ( d + c ) ) (N,(d+c)) (N,(d+c)) ————> ( N ′ , ( d + c ) ) (N',(d+c)) (N′,(d+c)) ————> ( N ′ , ( d + c ′ ) ) (N',(d+c')) (N′,(d+c′))
图中k是区域中的k个点
最远点采样,网上介绍太多,不讲。
其实最远点采样会丢失点云的强度信息,看看后面有什么发现吧。
( N , ( d + c ) ) (N,(d+c)) (N,(d+c)) ————> ( N ′ , k , ( d + c ) ) (N',k,(d+c)) (N′,k,(d+c))
K最近邻(kNN)/Ball query,太多,不讲
( N , k , ( d + c ) ) (N,k,(d+c)) (N,k,(d+c)) ————> ( N , ( d + c 1 ) ) (N,(d+c1)) (N,(d+c1))
作者还把k个点坐标替换成质心的相对坐标,意义何在,不知道。
分类任务:直接最大池化再经过全连接层 ( f c ) (fc) (fc)进行全局分类。
分割任务:往回插值和向上卷积得到每个点的分类,好好思考网络的过程就可以理解。
分组过程中,点的稠密与稀疏会影响特征
MSG:广度
MRG:深度
Better accuracy with hierarchical learning
Robust layers for non-uniform densities (MSG) helps a lot
一句话总结:分组操作使得点与点之间有了联系,使得局部特征提取有了可能。点的体素化是为了使用cnn,分组操作让pointnet也可以使用cnn思想,而且是直接处理点,因为之前说过pointnet就是为了直接处理点获得特征。所以pointnet的精髓在于分组思想。
最远点采样采集的点大部分都是稀疏点,越密集的地方采集越少,会使得分组得到的点非常少