【机器学习】PointNet & PointNet++(理论部分)

参考

《PointNet: Deep Learning on Point Sets for 3D Classification and Segmentation》
《PointNet++: Deep Hierarchical Feature Learning on Point Sets in a Metric Space》

点云特性与PointNet

在这里插入图片描述

点云几个两个很重要的特性。
(1)无序性。点云中的点在打乱它们的索引之后,依然能表达空间结构。
(2)旋转不变形。点云整体经过旋转之后,类别没有改变。

对于(1)
所设计的ML模型必须是一个对称函数,因为对称函数的结果与输入的参数的顺序无关。比如sum、max函数。可以类比二维卷积神经网络中的max pooling操作。实际上论文中的max pooling操作在代码里用的就是max函数。
在这里插入图片描述
以上这种直接对坐标进行max的操作会使大量的点丢失(可能会导致特征丢失),所以要先使用多层感知器(MLP)将每个点映射到更高的维度(此时信息会冗余)
在这里插入图片描述
对于(2)
论文中使用了T-Net去学习物体的旋转,相当需要学习一个3x3的矩阵
在这里插入图片描述
所以整体PointNet的结构如下:
在这里插入图片描述

PointNet++

在这里插入图片描述

由PointNet可以看到,结构中只有一个max pool操作,并且得到了一个全局特征,没有得到局部特征,所以模型本身在三维点云场景分割的效果比较差。所以在PointNet的第二代,参考了二维图像中CNN的做法。CNN通过分层不断地使用卷积核扫描图像上的像素,使得越到后面的特征图感受野越大,同时每个像素包含的信息也越多。
在这里插入图片描述
在这里插入图片描述
先对整个点云数据划分一个个范围,范围内中心点之间的距离足够远,范围内其他点作为局部的特征,然后用PointNet进行一次特征的提取。通过了多次这样的操作后,原本的点的个数变得越来越少,每个点都是上一层通过PointNet提取出来的局部特征。这个过程论文中称为Set Abstraction(SA)。
在这里插入图片描述

Set Abstraction

一个SA层包含三个步骤:
Sampling:利用farthest point sample(最远点采样)随机采样点。
Grouping:利用query ball point划一个R为半径的圈,将每个圈里面的点云作为一簇。
PointNet: 对Sampling+Grouping以后的点云进行局部的全局特征提取。

classification

SA之后出现两个分支,classification和segmentation,classification部分包括一个PointNet和全连接层。
在这里插入图片描述

segmentation

论文中对于上采样的处理使用的是线性插值的方法。公式如下:
在这里插入图片描述
在这里插入图片描述

multi-scale grouping(MSG)

论文中还提出PointNet++在处理不同密集程度的点云时出现的情况,表示稀疏情况下效果不理想。所以提出了MSG来改进PointNet++。MSG大致的思想是,在Grouping阶段通过不同的R来划分区域,进而concat特征。
在这里插入图片描述

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值