pointNet++创新点

描述3D物理世界的几种方式

  • 体素结构
    可以看成一个一个的立方体格子搭建起来的3D世界,比如《我的世界》游戏中,所有的物体包括建筑物、树木、人物、锤子等都是由一个一个的小立方格子按照一定的方式组合起来的。与图像类似,4k的分辨率看起来会比2k的分辨率要清晰很多,如果这个最小的小立方格子太大,就会让人感觉画面非常粗糙,很多细节丢失。
  • multi-view
  • mesh
  • pointcloud

单层级特征学习组件

pointNet++的特征学习由以下几个步骤组成:采样,分组,对每组利用pointNet网络提取特征

采样

问题:假设由n个点,需要从这n个点中提出m个点,使得这m个点彼此之间相距尽可能远。
方法:

随机选择一个点作为初始点放入集合C中
while len(C) < m:
	遍历所有点,找到离集合中所有点最远的一个点,加入集合中。

分组

问题:对于集合C中的每一个点,需要找到最近的K个点以便后面pointNet能学习到以这个点为中的周围局部的特征。
方法:

  1. KNN
    使用欧式距离找到离这个点最近的K个点。
  2. 球体寻找
    固定一个半径,得到一个以这个点为中心的球体,把球体内的所有的点视为这个点的近邻。这样得到的近邻数量会不一致。但是不影响其作为pointNet的输入。

PointNet提取特征

将每一个组(共m个)都输入到PointNet中去,得到m个特征(m个向量)。输入进PointNet之前,需要先将每个组的坐标做个小变换:将原点都变成采样步骤中得到的那个点。

小结

总而言之,经过这个部分的操作后,输入为n*d的张量,输出为m*d'的张量,其中,m<n,d'>d

在不同的点云的采样密度下进行鲁棒的特征学习

问题:我们的模型需要对不同密度的点云具有足够的泛化能力。由于采集设备的差异,我们得到的点云数据会具有不同的密度。比如,对同一个目标,64线的激光雷达采集到的点一定要比128线激光雷达采集到的点要稀疏。
方法:

  1. Multi-Scale grouping(MSG)
    一个简单的方式是对于输入的点云中的每个点(实际上是部分点,比如95%的点,这样防止得到空的点集),都以一定的概率 t h e t a theta theta舍去。这样因 t h e t a theta theta的不同,就会得到不同密度的点云。对不同密度的点云都是用上面提及的单层级特征学习组件提取特征,再做concat,这样通过反向传播就可以学习对不同密度的点云具有鲁棒性的特征。
    由于这种方式相当于是重复进行好几次特征提取操作,因此比较耗时。从后面的实验效果来看,这种方式比下一种准确率更好一些。
  2. Multi-resolution grouping(MRG)
    对于输入为n*d的点云,使用单层级特征学习组件提取特征得到m*d'的张量1,对于这个张量1,再次使用特征学习组件提取特征,得到q*d_2的张量2,其中n>m>q,d<d'<d_2。张量1和张量2就分别代表不同密度的点云提取到的特征向量。然后将这两个向量concat起来,当然,由于尺度不一样,需要对张量2进行上采样,变成m*d_2,再做concat。

点云分割

点云分割实际上就是给点云中的每一个点分配一个类别(一个向量,向量中最大值所对应的类别即为点的类别)。因此,类似二维图像中的FCN网络,这里插值操作进行上采样。这样,经过两次上采样操作和concat操作后,就会得到n*(d'+d_2)的张量,再用一个1*1卷积得到n*K的张量,这里K指类别。

总结

相比于pointnet,pointnet++的主要贡献可以分为两部分:

  1. 通过采样+分组+pointnet组合方式提取全局特征和局部特征,得到了更加鲁棒的特征表达。
  2. 考虑了不同密度的点云的分割,并设计了两种有效的解决方式MSG和MRG。
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值