pointnet分割自己的点云数据_深度学习|点云分割:PointNet系列

本文详细介绍了PointNet及其改进版PointNet++在3D点云分割中的应用。PointNet是首个直接处理3D点云的深度学习网络,解决了早期方法的局限性。PointNet++通过多层感受野提取局部特征,增强了网络性能,特别是在点云缺失鲁棒性方面。文中还展示了两者在实验中的表现和效果。
摘要由CSDN通过智能技术生成

本篇文章包含 PointNet 及其改进版 PointNet++。

本文章部分内容参考自博客:https://blog.csdn.net/weixin_39373480/article/details/88878629​blog.csdn.net

PointNet论文名称:PointNet: Deep Learning on Point Sets for 3D Classification and Segmentation

PointNet++论文名称:PointNet++: Deep Hierarchical Feature Learning on Point Sets in a Metric Space

一、PointNet

1. 概述

PointNet是首个直接输入3D点云输出分割结果的深度学习网络,属于开山之作,成为了后续很多工作的BaseLine。在这种方式出现以前,点云分类工作主要有以下几种方法基于3DCNN的体素模型:先将点云映射到体素空间上,在通过3DCNN进行分类或者分割。但是缺点是计算量受限制,目前最好的设备也大致只能处理32×32×32的体素;另外由于体素网格的立方体性质,点云表面很多特征都没有办法被表述出来,因此模型效果差。

将点云映射到2D空间中利用CNN分类

利用传统的人工点云特征分类,例如:

a. normal 法向量

b. intensity 激光雷达的采样的时候一种特性强度信息的获取是激光扫描仪接受装置采集到的回波强度,此强度信息与目标的表面材质、粗糙度、入射角方向,以及仪器的发射能量,激光波长有关

c. local density 局部稠密度

d. local curvature 局部曲率

以上各方法,要么是丧失了很多有用信息,要么是流程过于复杂,因此作者才要去研究端到端的通用的框架。

2. 方法

网络的总体结构如下图所示

整体的网络中,除了点云的感知以外,还有T-Net,即旋转相关参数的学习,这主要是由于点云分类的旋转不变性,当一个N×D在N的维度上随意的打乱之后,其表述的其实是同一个物体。因此针对点云的置换不变性,其设计的网络必须是一个对称的函数:

我们经常看到的SUM和MAX等函数其实都是对称函数。

因此我们可以利用max函数设计一个很简单的点云网络,如下:

但是这样的网络有一个问题,就是每个点损失的特征太多了,输出的全局特征仅仅继承了三个坐标轴上最大的那个特征,因此我们不妨先将点云上的每一个点映射到一个高维的空间(例如1024维),目的是使得再次做MAX操作,损失的信息不会那么多。

此时我们发现,当我们将点云的每个点先映射到一个冗余的高维空间后,再去进行max的对称函数操作,损失的特征就没那么多了。由此,就可以设计出这PointNet的雏形,称之为PointNet(vanilla):

在PointNet网络中,对于每一个N×3的点云输入,网络先通过一个T-Net将其在空间上对齐(旋转到正面),再通过MLP将其映射到64维的空间上,再进行对齐,最后映射到1024维的空间上。这时对于每一个点,都有一个1024维的向量表征,而这样的向量表征对于一个3维的点云明显是冗余的,因此这个时候引入最大池化操作,将1024维所有通道上都只保留最大的那一个,这样得到的1×1024的向量就是N个点云的全局特征。

如果做的是分类的问题,直接将这个全局特征再进过MLP去输出每一类的概率即可;但如果是分割问题,由于需要输出的是逐点的类别,因此其将全局特征拼接在了点云64维的逐点特征上,最后通过MLP,输出逐点的分类概率。

3. 实验效果

在shapeNet上和其他方法的分割精度对比如下表所示

从表中可以看出,大多数分类还是取得了state-of-art的效果。

PointNet的实际分割效果如下图所示:

二、PointNet++

1. 概述

PointNet++主要是为了克服PointNet自身的一些缺点,其中最大的缺点就是确实局部特征。从很多实验结果都可以看出,PointNet对于场景的分割效果十分一般,由于其网络直接暴力地将所有的点最大池化为了一个全局特征,因此局部点与点之间的联系并没有被网络学习到。在分类和物体的Part Segmentation中,这样的问题还可以通过中心化物体的坐标轴部分地解决,但在场景分割中,这就导致效果十分一般了。

2. 方法

为了克服PointNet的缺点,作者在PointNet++中主要借鉴了CNN的多层感受野的思想。CNN通过分层不断地使用卷积核扫描图像上的像素并做内积,使得越到后面的特征图感受野越大,同时每个像素包含的信息也越多。而PointNet++就是仿照了这样的结构,具体如下:

其先通过在整个点云的局部采样并划一个范围,将里面的点作为局部的特征,用PointNet进行一次特征的提取。因此,通过了多次这样的操作以后,原本的点的个数变得越来越少,而每个点都是有上一层更多的点通过PointNet提取出来的局部特征,也就是每个点包含的信息变多了。文章将这样的一个层成为Set Abstraction。

这样,PointNet++的整体网络结构如下图所示。

通过上述方法实现的PointNet++虽然在点云上的分类和分割效果有了一定的提升,但是作者发现,其在点云的缺失鲁邦性上似乎变得更差了。其原因是因为激光收集点云的时候总是在近的地方密集,在远的地方稀疏,因此当Sampling和Grouping的操作在稀疏的地方进行的时候,一个点可能代表了很多很多的局部特征,因此一旦缺失,网络的性能就会极大的受影响(如下图左)。

作者对其的改进是通过引入了不同分辨率/尺度的Grouping去对局部做PointNet求局部的全局特征,最后再将不同尺度的特征拼接起来;同时也通过在训练的时候随机删除一部分的点来增加模型的缺失鲁棒性。

3. 实验结果

作者对比了改进前后的PointNet的分割效果,如下图

从图中看出,PointNet++的分割效果要明显由于PointNet

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值