自动驾驶 PointNet++ 点云处理原理与代码实战(理论部分)

PointNet++点云处理原理

点云处理技术概览

在这里插入图片描述
Mesh三角形或正方形的面片。Volumetric栅格化。Projected View RGB(D)通过图片不同角度,构成立体的图像。

在这里插入图片描述
点云通过激光雷达扫描得到(最常用的)。或者通过RGB和深度信息,通过透视几何反推空间数据。现在比较先进的是通过多个摄像头通过倾斜摄影构造点云数据。

在这里插入图片描述
严格来说,RGB结合深度信息D只能称为2.5D,真正的3D点云数据,需要通过激光扫描得到。
在这里插入图片描述
点云应用一般在机器人,自动驾驶等,AR,VR,Shape Design,FaceID。

在这里插入图片描述
点云可以做物体的分类,部件的分割,以及目标检测(区分物体所在的位置和类别)。
在这里插入图片描述
以及场景的语义分割。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
点云的挑战,点云是非规则的数据,有稀疏和密集的区域。近密远疏的特点。每个点是独立的,点与点距离不固定。并且是无序性。带来置换不变性。
在这里插入图片描述
不同的点排不同的顺序,还是同一个点云。但是同一个点云如果顺序不同,那么点云的矩阵表示是不一样的。这就是置换不变性。

在这里插入图片描述
通过结构化的网格进行结构化处理,左边是voxel based体素表示。multiview based多个角度进行投影,得到2D视角的图像,通过CNN对不同的2D图进行处理。

在这里插入图片描述
PointNet点云处理的开山之作,PointNet++第二代。PointNet没有考虑局部上下文的信息,PointNet++通过sampling和grouping再经过PointNet。得到性能的提升。

在这里插入图片描述
3D卷积或者图构造的方法,然后进行feature learning。
在这里插入图片描述
在这里插入图片描述
3D点云模型的Taxonomy。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

PointNet原理解析

在这里插入图片描述
在这里插入图片描述
raw sensor data 和 rich geometric information。更接近原始的传感器数据。

下面是传统的点云处理方法:
在这里插入图片描述
在进入深度神经网络前,点云要转换成其他的表现形式,比如栅格化Voxelization(3D卷积),投影或渲染Projection/Rendering(2D卷积),Feature extraction(全卷积)。

在这里插入图片描述
PointNet的作者们就在考虑,能否直接从点云提取特征。
在这里插入图片描述
end-to-end的方法,scattered分散的,unordered无序的点云数据。
Unified framework统一的框架做不同的任务,classification,part segmentation,semantic segmantation。
在这里插入图片描述
模型的设计要考虑点云的一些特征:无序的点的集合;对于不同的几何变换,有不变的特性。
比如兔子有不同的视角,但是最后的分类一定都是兔子。

在这里插入图片描述
左边和右边应该表达同样的集合。模型做到invariant。对于N的置换,有相同的结果。如何做到置换不变性?

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
如果我们用了max pooling会丢失信息,那么什么方法可以防止信息丢失,使用MLP多层感知机,从3D到高维空间,高维空间的数据点,就有冗余了,再去最大值时,特征基本就保留了。max pooling反正原来点云的特征。
在这里插入图片描述
作者证明了PointNet可以拟合任意的连续集合函数。
在这里插入图片描述
数据依赖转换会做自动对准。
在这里插入图片描述
在这里插入图片描述
这个变换在后来证明效果不是特别明显,在PointNet++就不被采用了。
在这里插入图片描述
T-Net也可以用一个小的PointNet结构来替代。不过这里的input transform 和 feature transform在PointNet++中被舍弃了。

在这里插入图片描述
分割的话,每个点都要分类。
做了一个拼接的操作,不然每个点的特征已经没有了,所以是64+1024=1088个特征。
在这里插入图片描述
准确率非常不错,并且我们知道3D CNN的网络复杂度要高的多。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
鲁棒性好
在这里插入图片描述
在这里插入图片描述
为什么鲁棒性好。哪些点对于特征贡献大呢?critical points。

在这里插入图片描述
critical point可以找到全局的特征。一般是轮廓。
在这里插入图片描述

PointNet++原理解析

在这里插入图片描述
在这里插入图片描述
PointNet没有local context,局部上下文信息,也就是一个点与局部点的关系信息。
在这里插入图片描述
translation invariant 转换不变性,permutation invariant 置换不变性。
在这里插入图片描述
在这里插入图片描述
红色小方块,就有局部上下文信息的特征。当然右边还可以继续画圆,继续做,就是多级别的特征提取。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
segmantation,点不够,要做差值,或者上卷积Up convolution。再通过skip link concatenation。
在这里插入图片描述
基于距离的差值。faeture propagation 特征传递。

在这里插入图片描述
非均匀采样密度。点云有近密远疏。影响层级化特征的学习。卷积有感受野的大小,所以分组半径也是要考量的,密集和稀疏半径选取不应该一样。
在这里插入图片描述
PointNet++对点云密度是敏感的。点云如果用小的kernal,效果不好。

在这里插入图片描述
MSG:同一级别,选择不同的半径。复杂度比较高
MRG:复杂度低一点。2个层次,不同级别的特征进行拼接。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
非欧几里得,或者说非刚性物体。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


版权声明:本文为weixin_43716712原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。