在每一层,一组点集被处理和抽象,以生成元素更少的新集合。集合抽象层由三个关键层组成:采样层、分组层和PointNet层。 采样层:从输入点中选择点集,点集中的点定义了局部区域的质心。 分组层:通过寻找质心周围的“邻域”点构建局部区域集。 PointNet层:使用一个微型PointNet编码局部区域模式为特征向量。 集合抽象层次以N\times(
分割网络首先通过4个SA提取局部特征,最后输出为$B×1024×16$,1024为特征通道数,16为中心点数;然后通过4个FP进行上采样,最后输出为$B×128×N$,128是特征通道数,N是样本点云数量;最后通过简单的mlp和log_softmax获取样本中每个点的类别,实现分割。 3.3 FP层代码 PointNetFeaturePropagation函数是FP层的具体实现,...
为了实现这一目标,我们提出了密度自适应PointNet层(图3),当输入采样密度发生变化时,它学习组合来自不同尺度区域的特征。我们将具有密度自适应PointNet层的分层网络称为PointNet++。 之前在第3.2节中,每个抽象层次都包含单个尺度的分组和特征提取。在PointNet++中,每个抽象层次提取多个尺度的局部模式,并根据局部点密度进行...
介绍:Pointnet直接处理点云,学习每个点的空间编码,聚集为全局特征。PointNet++引入局部特征,迭代增加感受野,提升泛化能力。解决的问题:点集划分和局部特征学习。划分需结构相同,类似CNN中卷积块,每个区域大小及点数一致。网络结构:包含SAmodules、FC、FP。SAmodules进行迭代采样,FC进行分类,FP进行分割。代...
我们将在下一节中介绍一个分层的特征学习框架来解决这一局限性。 3.2层次点集特征学习 当PointNet使用单个最大池操作来聚集整个点集时,我们的新体系结构构建一个点的分层分组,并沿着分层逐步抽象越来越大的局部区域。 我们的层次结构由多个集合抽象层组成(图2)。在每个层次上,处理和抽象一组点以产生具有较少元素的...
SA([l1,…ld])是一个全局集合抽象层,它将集合转换成一个单独的向量。在多尺度设置中(如MSG中),我们使用SA(K,[r(1),…,r(m)],[[l1(1),…,ld(1)],…,[l1(m),…,ld(m)]])来用m个刻度表示MSG。 FC(l,dp)表示全连接层,宽度为l,下降(dropout)率为dp。FP(l1,…,ld)是具有d个全连接...
3.FP(上采样层):上采样层基于采集的点云特征进行物体的分割. 下面详细结合代码进行不同结构的说明: 首先是Set Abstraction(SAmodules),这其中一共包含三个子部分.(Sampling layer, Grouping layer and Pointnet layer) Sampling layer: 主要是针对输入点进行采样,在这些点中选出若干个中心点(采集方法代码中采用的...
首先来看采样层,为了从稠密的点云中抽取出一些相对较为重要的中心点,采用FPS(farthest point sampling)最远点采样法,这些点并不一定具有语义信息。当然也可以随机采样;然后是分组层,在上一层提取出的中心点的某个范围内寻找最近个k近邻点组成一个group;特征提取层是将这k个点通过小型pointnet网络进行卷积和pooling...
如论文中PointNet++网络架构所示, PointNet++的backbone(encoder, 特征学习)主要是由set abstraction组成, set abstraction由 sampling, grouping和Pointnet组成; 对于分类任务(下图中下面分支), 则是由全连接层组成;对于分割任务,decoder部分主要由上采样(interpolate), skip link concatenation, Pointnet组成。 这些子模块...
最远点采样是Set Abstraction模块中较为核心的步骤,其目的是从一个输入点云中按照所需要的点的个数npoint采样出足够多的点,并且点与点之间的距离要足够远。最后的返回结果是npoint个采样点在原始点云中的索引。 假设一共有n个点,整个点集为N = {f1, f2,…,fn}, 目标是选取npoint个起始点做为下一步的中心...