Pointnet Tutorial

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

目录

 .1 intro-点云特性

 1.1 点云特性

1.2 motivation

1.3 pointnet的处理

.2 Pointnet

2.1 contribution

2.2 solution

2.3 backbone

2.4 代码部分

 2.5 小结

 .4 应用

References

 .1 intro-点云特性

Q1什么是点云

简单来说就是一堆三维点的集合必须包括各个点的三维坐标信息其他信息比如各个点的法向量、颜色等均是可选项

num_channels一般为3表示点云的三维坐标。

 1.1 点云特性

点云几个两个很重要的特性。

1无序性。点云中的点在打乱它们的索引之后依然能表达空间结构。

2旋转不变形。点云整体经过旋转之后类别没有改变。

1.2 motivation

related work

  1. Volumetric CNNs对体素应用3DCNN。缺点是点云的坐标空间的稀疏性导致转成体素后的分辨率问题以及3D卷积带来的开销

  2. Multiview CNNs将点云或者shape渲染成视图使用传统的图像卷积来做特征学习。这种方法确实取得了不错的效果但是缺点是应用非常局限像分割、补全等任务就不太好做

  3. Spectral CNNs

  4. feature-based DNN

why we want to do this?

直接对点云做特征学习也不是不可以但有几个问题需要考虑特征学习需要对点云中各个点的排列保持不变性、特征学习需要对rigid transformation保持不变性等。

1.3 pointnet的处理

 对于1

 所以设计的ML模型必须是一个对称函数因为对称函数的结果与输入的参数的顺序无关。比如sum、max函数。可以类比二维卷积神经网络中的max pooling操作。实际上论文中的max pooling操作在代码里用的就是max函数。

 以上这种直接对坐标进行max的操作会使大量的点丢失可能会导致特征丢失所以要先使用多层感知器MLP将每个点映射到更高的维度此时信息会冗余

对于2

论文中使用了T-Net去学习物体的旋转相当需要学习一个3x3的矩阵

 我们希望不论点云在怎样的坐标系下呈现网络都能正确的识别出。这个问题可以通过STNspacial transform netw来解决。二维的变换方法可以参考这里三维不太一样的是点云是一个不规则的结构无序无网格不需要重采样的过程。pointnet通过学习一个矩阵来达到对目标最有效的变换。

 小结

为什么PointNet是重要的

真正让PointNet具备很大影响力的还是它的简洁、高效和强大。
首先要说清楚PointNet所作的事情就是对点云做特征学习并将学习到的特征去做不同的应用分类shape-wise feature、分割point-wise feature等。

PointNet之所以影响力巨大就是因为它为点云处理提供了一个简单、高效、强大的特征提取器encoder几乎可以应用到点云处理的各个应用中其地位类似于图像领域的AlexNet。

.2 Pointnet

2.1 contribution

  1. 设计了一个新颖的深层网络架构来处理三维中的无序点集

  2. 设计的网络表征可以做三维图形分类、图形的局部分割以及场景的语义分割等任务

  3. 提供了完备的经验和理论分析来证明PointNet的稳定和高效。

  4. 充分的消融实验证明网络各个部分对于表征的有效性。

网络的亮点

  1. 空间变换网络解决旋转问题三维的STN空间变换网络--spatial transform network可以通过学习点云本身的位姿信息学习到一个最有利于网络进行分类或分割的DxD旋转矩阵D代表特征维度pointnet中D采用3和64。至于其中的原理我的理解是通过控制最后的loss来对变换矩阵进行调整pointnet并不关心最后真正做了什么变换只要有利于最后的结果都可以。pointnet采用了两次STN第一次input transform是对空间中点云进行调整直观上理解是旋转出一个更有利于分类或分割的角度比如把物体转到正面第二次feature transform是对提取出的64维特征进行对齐即在特征层面对点云进行变换。

  2. maxpooling解决无序性问题网络对每个点进行了一定程度的特征提取之后maxpooling可以对点云的整体提取出global feature。

2.2 solution

challenges

点云的几个特点

  1. 无序性 --> 对称函数设计用于表征

  2. 点不是孤立的需要考虑局部结构 --> 局部全局特征结合

  3. 仿射变换无关性 --> alignment network

2.3 backbone

 

 

其中mlp是通过共享权重的卷积实现的第一层卷积核大小是1x3因为每个点的维度是xyz之后的每一层卷积核大小都是1x1。

即特征提取层只是把每个点连接起来而已。经过两个空间变换网络和两个mlp之后对每一个点提取1024维特征经过maxpool变成1x1024的全局特征。

再经过一个mlp代码中运用全连接得到k个score。

分类网络最后接的loss是softmax。

n*3 输入

输出 n*64

输入 n*64

输出 n*1024

然后max pooling 每个n取出一个最大值输出1*1024

2.4 代码部分

变换矩阵部分以第一个STN为例 

 2.5 小结

本质上pointnet就是一种可以对无序点集提取出特征的网络结构

先输入n*3个点

然后进行仿射变换输出 n*3

经过mlp输出 n*64

再进行仿射变换

再经过mlp 输出 n*1024

然后 max pooling后输出1*1024

并且拼接之前的n*64 输出 n*1088

再经过mlp输出 n*128

然后最后再经过mlp

输出n*m的打分

在PointNet中 网络对每一个点做低维到高维的映射进行特征学习然后把所有点映射到高维的特征通过最大池化最终表示全局特征。

 .4 应用

PointnetGPD

https://github.com/Hymwgk/PointNetGPD

应用于抓取

本质上就是先preprocess得到夹爪内部点云然后处理进入网络打分输出打分高的

 

References

细嚼慢咽读论文PointNet论文及代码详细解析 - 知乎

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6