一文搞懂PointNet全家桶——强势的点云处理神经网络

作者:黎国溥,3D视觉开发者社区签约作者,CSDN博客专家,华为云-云享专家
首发:公众号【3D视觉开发者社区】

前言

PointNet是由斯坦福大学的Charles R. Qi等人在《PointNet:Deep Learning on Point Sets for 3D Classification and Segmentation》一文中提出的模型,它可以直接对点云进行处理的,对输入点云中的每一个点,学习其对应的空间编码,之后再利用所有点的特征得到一个全局的点云特征。Pointnet提取的全局特征能够很好地完成分类任务,但局部特征提取能力较差,这使得它很难对复杂场景进行分析。

PointNet++是Charles R. Qi团队在PointNet论文基础上改进版本,其核心是提出了多层次特征提取结构,有效提取局部特征提取,和全局特征。

F-PointNet将PointNet的应用拓展到了3D目标检测上,可以使用PointNet或PointNet++进行点云处理。它在进行点云处理之前,先使用图像信息得到一些先验搜索范围,这样既能提高效率,又能增加准确率。

一、PointNet

PointNet: Deep Learning on Point Sets for 3D Classificationand Segmentation

论文地址:https://arxiv.org/abs/1612.00593

开源代码-原论文实现:https://github.com/charlesq34/pointnet

开源代码-Pytorch实现:https://github.com/fxia22/pointnet.pytorch一、PointNet
PointNet: Deep Learning on Point Sets for 3D Classificationand Segmentation

论文地址:https://arxiv.org/abs/1612.00593

开源代码-原论文实现:https://github.com/charlesq34/pointnet

开源代码-Pytorch实现:https://github.com/fxia22/pointnet.pytorch

在这里插入图片描述

1.1 PointNet思路流程

1)输入为一帧的全部点云数据的集合,表示为一个nx3的2d tensor,其中n代表点云数量,3对应xyz坐标。

2)输入数据先通过和一个T-Net学习到的转换矩阵相乘来对齐,保证了模型的对特定空间转换的不变性。

3)通过多次mlp对各点云数据进行特征提取后,再用一个T-Net对特征进行对齐。

4)在特征的各个维度上执行maxpooling操作来得到最终的全局特征。

5)对分类任务,将全局特征通过mlp来预测最后的分类分数;对分割任务,将全局特征和之前学习到的各点云的局部特征进行串联,再通过mlp得到每个数据点的分类结果。

1.2 PointNet网络结构

它提取的“全局特征”能够很好地完成分类任务。下面看一下PointNet的框架结构:
在这里插入图片描述
下面解释一个网络中各个部件的作用。

1)transform:

第一次,T-Net 3x3 ,对输入点云进行对齐:位姿改变,使改变后的位姿更适合分类/分割。第二次,T-Net 64x64 ,对64维特征进行对齐。

**2)mlp:**多层感知机,用于提取点云的特征,这里使用共享权重的卷积。

**3)max pooling:**汇总所有点云的信息,进行最大池化,得到点云的全局信息。

**4)分割部分:**局部和全局信息组合结构(concate,语义分割)

**5)分类loss:**交叉熵,分割loss:分类+分割+L2(transform,原图的正交变换)

1.3 T-Net网络结构

将输入的点云数据作为nx3x1单通道图像,接三次卷积和一次池化后,再reshape为1024个节点,然后接两层全连接,网络除最后一层外都使用了ReLU激活函数和批标准化。

1.4 模型效果

ModelNet40 上的分类结果:

在这里插入图片描述
ShapeNet部分数据集上的分割结果:
在这里插入图片描述
不足:缺乏在不同尺度上提取局部信息的能力

二、PointNet++

PointNet++: Deep Hierarchical Feature Learning on Point Setsin a Metric Space

论文地址:https://arxiv.org/abs/1706.02413

开源代码地址:https://github.com/charlesq34/pointnet2

在这里插入图片描述
Pointnet提取的全局特征能够很好地完成分类任务,由于模型基本上都是单点采样,代码底层用的是2Dconv,只有maxpooling整合了整体特征,所以局部特征提取能力较差,这使得它很难对复杂场景进行分析。

PointNet++的核心是提出了多层次特征提取结构,有效提取局部特征和全局特征。

2.1 思路流程

先在输入点集中选择一些点作为中心点,然后围绕每个中心点选择周围的点组成一个区域,之后每个区域作为PointNet的一个输入样本,得到一组特征,这个特征就是这个区域的特征。

在这里插入图片描述
之后中心点不变,扩大区域,把上一步得到的那些特征作为输入送入PointNet,以此类推,这个过程就是不断的提取局部特征,然后扩大局部范围,最后得到一组全局的特征,然后进行分类。

2.2 整体网络结构

PointNet++ 在不同尺度提取局部特征,通过多层网络结构得到深层特征。PointNet++按照任务也分为 clas

  • 22
    点赞
  • 180
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值