pointnet和pointnet++点云分割和分类

目录

1. pointnet 

1.1 点云数据的特点

1.2 模型功能 

1.3 网络结构

1.3.1 分类网络 

1.3.2 分割网络

2. pointnet++

2.1 模型

2.2 sampling layer组件

2.3 grouping layer

2.4 pointnet


 

1. pointnet 

1.1 点云数据的特点

 (1)无序性:不同于图像中的像素数组或体积网格中的体素数组,点云是一组没有特定顺序的点。换句话说(permutations of the input set in data feeding order. ),点云中的点集合排列顺序改变了,点云本身的目标类别和分割结果是不变的(符合交换律,比如加法、乘法、取最值等操作)。

(2)点之间的交互:点不是孤立的,而相邻的点形成了一个有意义的子集。因此,该模型需要能够从附近的点捕获局部结构,以及局部结构之间的组合相互作用。

(3)变换无关性:作为一个几何对象,点集的特征表示应该对某些变换是不变的。例如,旋转和平移点不应该修改全局点云类别或点的分割。

1.2 模型功能 

(1)模型输入:网络的输入是坐标点集合(x,y,z);

(2)分类输出:输出有两个分支,分类分支输出是k个scores对应k个类别,哪个值大就是那个类别;

(3)分割输出:分割分支输出的是nxm的矩阵scores,有n个点,每个点有m个分数,m个分数对应m个语义分割类别,哪个值大,当前点就属于哪个类别。

1.3 网络结构

1.3.1 分类网络 

(1)input transform和feature transform是个小网络,其中input transform用来预测放射变换矩阵,用于对齐输入的点云数据,feature transform是用来对齐特征数据,后期的论文证明是没多大用处的,可以忽略;

(2)论文中n是1024(均匀采样),论文中只用到了(x,y,z)坐标,所以输入是nx3点云矩阵,首先经过mlp(64,64),即两个多层感知机全连接网络,维度变化3->64->64,输出nx64特征向量;

(3)再经过3个多层感知机,维度变化64->64->128->1024,升维度,输出nx1024特征向量,方便后面的maxpooling提取全局特征(即降维操作);

(4)提取特征后,使用maxpooling操作,提取全局特征,nx1024,每个点有1024维度特征,求所有点的全局特征,就是在每个维度上取最大值,则nx1024 -> 1x1024;这1024个数据就代表真个点云数据的全局特征;

(5)再接一个mlp(512,256,k),作为分类层,1024->512->256->k全连接节点变换,k个类别分数,哪个值大就是那个类别。

1.3.2 分割网络

(1)前面的特征提取层是一样的,提取得到局部特征nx64,和全局特征1x1024;

(2)融合局部特征和全局特征,直接concat在一起,变成nx1084,每个点都有1084维度特征;

(3)再接mlp层,维度变换1084->512->256->128,再接mlp层,维度变化128->128->m,这样特征矩阵变化nx1084 -> nxm;

(4)nxm,即n个点,每个点都有m个类别分数,哪个大,则当前点的分割类别就属于对应的类别。

2. pointnet++

pointnet模型简单一句话,就是mlp提取特征,再经过分类层进行分类,即可完成对输入点云数据的分类,公式概括如下。

其中MAX是最大池化层。

由于只是使用maxpooling来聚合整个点云的特征,pointnet是不能捕获不同尺度下的局部特征。pointnet适用于目标数据的尺度变化不大的场景。

2.1 模型

(1)pointnet++特征提取层是一个层级特征提取层,由(sampling,grouping and pointnet三个组件组成), 然后就是分割头(unet形式)和分类头(全连接层)。

(2)网络输入的是Nx(d+C)矩阵,N是点个数,d维坐标,C维点特征,输出矩阵是N'x(d+C'),其中N'是采样后的点个数,C'是点特征向量维度。

(3)每次grouping layer对局部进行KNN聚类,输入到pointnet layer再对每个cluster提取特征,这个过程相当于2D卷积操作,同样是使用层级结构,放大感受野,提取多尺度特征。

2.2 sampling layer组件

sampling layer是迭代最远距离采样IFPS算法,用采样后的点云尽可能的覆盖到原始点云所在范围,代表当前点云数据,论文中是提取1024个点,详细IFPS算法介绍可参考:

iterative farthest point sample (IFPS or FPS)-CSDN博客

如果输入Nx(d+C),则输出N'x(d+C) 

2.3 grouping layer

(1)输入点集合坐标Nx(d+C)和对应的中心坐标N'xd,对每一个中心坐标利用KNN在点集合中找K个最近的点,在一个cluster中,找出的每个点维度是(d+C)特征;

(2)对于一个cluster的维度则是Kx(d+C),有N'个中心,则输出维度是N'xKx(d+C)

2.4 pointnet

(1)输入是N'xKx(d+C),有N'个聚类中心点,每个聚类中心有K个点;

(2)对每个cluster投入到pointnet层,提取特征,即Kx(d+C) -> (d+C');

(2)有N'个cluster,所以输出的是N'x(d+C')。

真正实现的时候是:(b,npoints,nsamples,features) = (b,N',K,d+C),要channel first,变成

(b,features,npoints,nsamples) = (b,d+C,N',K),比如变成(64,3,1024,16)

待续。。。

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Mr.Q

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值