PointNet 和 PointNet++ 作者讲座学习笔记

文章目录

  • 前人的工作
    • 三维数据的表达形式
    • 把点云转化为体素,再用3D CNN
  • PointNet
    • 两个挑战
    • 置换不变性
    • 旋转不变性
    • PointNet的分类网络
    • PointNet的分割网络
    • PointNet的限制
  • PointNet++
    • 多级点云特征学习
    • 分类
    • 分割
    • 小区域大小
  • 参考资料

前人的工作

三维数据的表达形式

  • 点云:深度传感器扫描得到
  • Mesh:由三角面片或四边形面片组成,适合建模、渲染
  • 体素:把空间划分为三维网格,每个小的正方体组成
  • 多角度的图片:用于可视化
    PointNet 和 PointNet++ 作者讲座学习笔记_第1张图片
    点云数据是一种非常适合三维场景理解算法的数据格式:
  1. 点云非常接近于原始的传感器数据。激光雷达扫描到的数据直接就是点云。可以做一种端到端的深度学习,能尽可能挖掘原始数据中的模式(信息)。
  2. 点云的表达形式非常简单

PointNet 和 PointNet++ 作者讲座学习笔记_第2张图片

把点云转化为体素,再用3D CNN

之前的工作
PointNet 和 PointNet++ 作者讲座学习笔记_第3张图片
时空复杂度很高
PointNet 和 PointNet++ 作者讲座学习笔记_第4张图片
PointNet 和 PointNet++ 作者讲座学习笔记_第5张图片

PointNet

直接用点云
端到端的学习
PointNet 和 PointNet++ 作者讲座学习笔记_第6张图片
PointNet 和 PointNet++ 作者讲座学习笔记_第7张图片

两个挑战

  • 置换不变性
  • 旋转不变性
    PointNet 和 PointNet++ 作者讲座学习笔记_第8张图片

置换不变性

输入是无序的,模型需要对 N ! N! N!个排列结果保持不变
PointNet 和 PointNet++ 作者讲座学习笔记_第9张图片
解决置换不变性的方法:对称函数。
因为对称函数跟排列是没有关系的
PointNet 和 PointNet++ 作者讲座学习笔记_第10张图片
在神经网络中如何应用对称函数
PointNet 和 PointNet++ 作者讲座学习笔记_第11张图片
对每一维取最大值,但是这样丢失了很多特征。
可以先将数据升维,由于信息冗余,使得 m a x max max操作可以保留更多的点云数据。
PointNet 和 PointNet++ 作者讲座学习笔记_第12张图片
一个原始的PointNet结构
PointNet 和 PointNet++ 作者讲座学习笔记_第13张图片

理论证明,PointNet可以逼近任意连续函数
PointNet 和 PointNet++ 作者讲座学习笔记_第14张图片

旋转不变性

PointNet 和 PointNet++ 作者讲座学习笔记_第15张图片
使用Transformer Network对其输入
PointNet 和 PointNet++ 作者讲座学习笔记_第16张图片

PointNet的分类网络

PointNet 和 PointNet++ 作者讲座学习笔记_第17张图片

PointNet的分割网络

PointNet 和 PointNet++ 作者讲座学习笔记_第18张图片
PointNet对数据丢失是鲁棒的
PointNet 和 PointNet++ 作者讲座学习笔记_第19张图片
解释了为什么对点的丢失非常鲁棒,因为学习到了关键点
PointNet 和 PointNet++ 作者讲座学习笔记_第20张图片

PointNet的限制

要么是对一个点做操作,要么是对全局的点做操作,它没有局部的操作。

PointNet 和 PointNet++ 作者讲座学习笔记_第21张图片
因为没有局部特征的学习,所以在分割精细的点上存在问题,在平移不变性上也有所缺陷。
PointNet 和 PointNet++ 作者讲座学习笔记_第22张图片

PointNet++

核心思想:在局部区域重复地迭代性地使用PointNet
PointNet 和 PointNet++ 作者讲座学习笔记_第23张图片

  • 实现了多级的特征学习
  • 因为在区域中,可以用局部坐标系,可以实现平移不变性
  • 由于在小区域内使用PointNet,保证了置换不变性

多级点云特征学习

用一个具体例子来理解多级点云特征学习
PointNet 和 PointNet++ 作者讲座学习笔记_第24张图片
假设找到红点周围的小区域
PointNet 和 PointNet++ 作者讲座学习笔记_第25张图片
因为不想受整体平移的影响,先把小区域的点转化到局部坐标系
PointNet 和 PointNet++ 作者讲座学习笔记_第26张图片
对小区域使用PointNet提取局部特征
PointNet 和 PointNet++ 作者讲座学习笔记_第27张图片
提取完特征得到一个新的点
PointNet 和 PointNet++ 作者讲座学习笔记_第28张图片
这个点不仅有X,Y坐标,还有代表小区域几何形状的特征向量

重复这个过程,得到一组新的点
PointNet 和 PointNet++ 作者讲座学习笔记_第29张图片
这组点往往在数量上少于原先的点,但每个点代表了它周围几何区域的点。这组操作叫作点集提取。

分类

经过两层点集提取,再经过pooling,得到全局特征,然后做分类。
PointNet 和 PointNet++ 作者讲座学习笔记_第30张图片

分割

将全局特征再传递给原来的点上就可以实现分割。
PointNet 和 PointNet++ 作者讲座学习笔记_第31张图片

小区域大小

如何选择局部小区域的大小?
类比卷积神经网络,在CNN中,小的kernel比较流行。
PointNet 和 PointNet++ 作者讲座学习笔记_第32张图片

点云中常见的问题是采样不均匀,近的点非常密,远的点非常疏。一个极端的情况,小区域中只有一个点,那么学习到的特征会非常不稳定。

PointNet 和 PointNet++ 作者讲座学习笔记_第33张图片

PointNet 和 PointNet++ 作者讲座学习笔记_第34张图片
通过对比实验,得到结论:在点云中,kernel太小的话会被采样率的不均匀所影响。

针对这个问题,提出MSG和MRG。
动机是,希望在密的地方相信这个特征;在疏的地方不相信这个特征,而是看更大的区域。
PointNet 和 PointNet++ 作者讲座学习笔记_第35张图片

参考资料

斯坦福大学在读博士生祁芮中台:点云上的深度学习及其在三维场景理解中的应用

你可能感兴趣的:(深度学习,深度学习)