3D点云(3D point cloud)及PointNet、PointNet++

article/2025/9/14 3:36:09

文章目录

    • 一、什么是3D点云
    • 二、基于3D点云的一些任务
    • 三、如何提取3D点云数据的特征:PointNet
      • (1)在PointNet之前也有工作在做点云上的深度学习
      • (2)PointNet
        • (1)置换不变性(Permutation Invariance)
        • (2)角度不变性(Transformation Invariance)
        • 分类和分割网络
        • PointNet的优势:占用内存小且速度快(高效)
        • PointNet的优势:对数据丢失非常鲁棒
    • 四、PointNet++
      • PointNet的局限性
      • 第二代网络:PointNet++
        • (1)Hierarcgical feature learning(多级特征学习)
          • 在多级特征学习网络中,是**如何选择PointNet++作用区域球的半径**的呢?
    • 五、PointNet和PointNet++在三维场景理解中的应用
      • 3D Object Detection
        • Previous Work
        • Frustum PointNets for 3D Object Detection
        • key to success
    • 六、Q&A

一、什么是3D点云

https://www.youtube.com/watch?v=Ew24Rac8eYE
传统图像数据是2维的
3D点云是3维的,可以表达更多信息

  • 比如对化工厂进行违章识别、安全隐患的识别
  • 城市管理

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

二、基于3D点云的一些任务

  • 点云分割
  • 点云补全
  • 点云生成
  • 点云物体检测(3D物体检测)
  • 点云配准(后续任务的基础)
    在这里插入图片描述

在这里插入图片描述
一般点云数据都是基于激光雷达扫描生成的。

三、如何提取3D点云数据的特征:PointNet

初始的点云数据仅仅包含了每个点的坐标信息(x,y,z),这些对我们要完成的后续任务远远不够,我们还需要知道每个点和周围的点的关系甚至是每个点和全局的关系。

(1)在PointNet之前也有工作在做点云上的深度学习

点云数据并不是定义在一个规则的网格上,空间上可以任意分布、数量也可以任意,是不规则数据。
一种解决方案:
在这里插入图片描述

  • 栅格化(voxelization)将无规则的3点云变成一种规则的数据,均匀分布在一个3维网格中。
  • 3d卷积处理处理成3维栅格的数据

这种方式的缺点:

  • 如果为了降低时间复杂度和空间复杂度选择降低图片的分辨率,会使学习效果大打折扣;
  • 如果不计时间和空间复杂度,将大分辨率的图像输入3D卷积网络。其实3D点云仅仅扫描的是表面信息,这样做栅格内部有大片空白,造成了算力资源的大量浪费。

(2)PointNet

那么如何构造一个backbone来提取3D点云的这些特征呢?
在这里插入图片描述
在这里插入图片描述

点云数据的特点

(1)置换不变性(Permutation Invariance)

点云数据是一个inordered set,每个点出现的顺序不影响集合的本身
在这里插入图片描述
N表示点云中的有N个点,D代表每个点拥有D维的特征。D中可以包含点的坐标信息(x,y,z),也可以包含颜色、法向量…
因为点集是无序的,一共有N!种排列组合。这要求我们设计的backbone对所有置换都具有不变性。
在这里插入图片描述
在这里插入图片描述
最简单的最大池化和平均池化函数虽然具有置换不变性,但是无疑会丢失有意义的几何信息。
在这里插入图片描述

  • 因为直接对点云做对称性的操作会丢失重要的几何信息;
  • 我们可以先将3D点云映射到高维空间h,与此同时就产生了很多冗余信息;
  • 此时,我们再在高维空间中进行对称操作g,我们依然会得到充足的几何信息,这样会避免过多的几何信息的丢失。
  • 最后我们再通过另一个网络 γ \gamma γ来进一步消化这个信息,得到一个点云的特征。

在这里插入图片描述
这是什么?不太理解。

(2)角度不变性(Transformation Invariance)

比如说一辆车,在不同的角度观察,点云中的每个点的坐标会有所变化,但表示的都是同一辆车。
如何设计网络能使得网络能够适应这种视角的变化呢?

增加基于点云数据本身的变换函数模块:
在这里插入图片描述
在这里插入图片描述

通过一个神经网络T-Net生成变换的参数,再用生成的变换函数对输入数据进行变换。使得这个变换函数能够自动对准对齐我们的输入,后面的网络能够适应不同角度的输入数据,处理任务变得更加简单。

对点云数据进行变换操作非常简单,只需要进行一个矩阵乘法

做一些扩展:不仅可以对输入数据进行变换处理,也可以对点的中间特征进行特征空间的变换。
比如,一开始已经将点的特征变成K维,那么现在有一个N * K的矩阵。我们可以设计一个K * K的矩阵进行矩阵乘法对这些中间特征进行特征空间的变换。这样可以得到另一组特征。

在这里插入图片描述

对于以上涉及的这些高维的变换,优化的难度也更高,可能会需要一些regularization:比如会尽可能希望这个矩阵接近于正交矩阵。

分类和分割网络

在这里插入图片描述

单个点的特征和全局的坐标结合起来实现分割的功能。
最简单的就是:将全局的特征重复n遍,每一个和原来的单个点的特征连接在一起,相当于单个点在全局特征中进行了一次检索,“我在全局特征中处于哪一个位置,我大概属于哪一个类”

在这里插入图片描述

PointNet的优势:占用内存小且速度快(高效)

在这里插入图片描述

在这里插入图片描述

FLOPs:计算量,floating point operations的缩写(s表复数),意指浮点运算数,理解为计算量。可以用来衡量算法/模型的复杂度。

因为PointNet的高效性,其非常适用于移动设备和可穿戴设备。

PointNet的优势:对数据丢失非常鲁棒

在这里插入图片描述

对数据的丢失都非常鲁棒
why?
解释这个可以通过一个可视化去理解:

在这里插入图片描述
最大池化使得模型只去关注critical points,这也使得模型对点的丢失具有较好的鲁棒性。

四、PointNet++

PointNet的局限性

在这里插入图片描述

在PointNet中,先对每一个点通过MLP做一个从低维到高维的映射,再对高位的特征通过MLP结合到一起。所以PointNet要么是对一个点做操作,要么是对所有点全局的特征在做操作。所以PointNet和3D卷积相比缺少了一个局部的概念,比较难对一些精细的特征进行学习。此外,在平移不变性上也有一定的缺陷,如果对点云的每一个点进行一个平移操作,那么经过PointNet学习的特征也会完全不一样。

第二代网络:PointNet++

  • Hierarcgical feature learning
  • Translation invariant
  • Permutation invariant

(1)Hierarcgical feature learning(多级特征学习)

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
也可以通过一种“up-convolution”的方式将pointnet提取的特征点复原回去。
在这里插入图片描述

在多级特征学习网络中,是如何选择PointNet++作用区域球的半径的呢?

在CNN中现在越来越流行选择非常小的kernel,比如在VGG中大量应用3*3的kernel。
那么在PointNet++中是不是这样呢?其实这是不一定的。

在point cloud中非常常见的一种情况是采样率非常不均匀。比如一个depth camera采样到的point cloud,近的点会非常密集,远的点会非常稀疏。那么对于PointNet++的学习就会在稀疏的地方产生很大的问题。比如在某个地方我们的划定的作用区域中只有一个点,那么在那个区域中学到的特征就会非常不稳定。这是我们很想避免的。

为了量化这个问题,我们做了一个控制变量的实验,验证了点的疏密对PointNet++网络精确度的影响:小的kernel会受采样率不均匀影响较大。
在这里插入图片描述

针对这个问题,可以设计一些新的网络结构来避免这个问题。

  • Muti-scale grouping(MSG)
  • Muti-res gruoping(MRG)
  • MRG的好处是可以节省一些计算。而MSG需要对不同的尺度分别计算。
    在这里插入图片描述

效果对比:
在这里插入图片描述

在这里插入图片描述

五、PointNet和PointNet++在三维场景理解中的应用

  • 3D Object Detection
  • 3D Scene Flow
    在这里插入图片描述

3D Object Detection

在这里插入图片描述

Previous Work

  • 3D region + classification
    基于点云,在三维空间中做region proposal,然后投影到图片中,在图片中画出3D的box,再进行物体的识别;也可以用3D的CNN来做。
    在这里插入图片描述

缺点:

  • 3D空间的搜索量非常大,计算量也非常大。
  • 点云的分辨率有限,比较难发现比较小的物体。
  • RGB or RGB-D image based object detection
    在这里插入图片描述

缺点:
RGB图像:依赖物体大小的先验知识,很难估计物体的精确位置。
RGB-D图像:两个实际距离很远的点投影到图像上的距离有可能非常近。
在图片这种表达形式下,用2D的CNN还是受到了很大的局限性。
很难精确地估计物体的深度和大小

Frustum PointNets for 3D Object Detection

2D detectors for region proposal + 3D frustum + PointNets
整体思想:

  • 在二维图像上检测划定初步的region proposal,用于减少3D空间搜索成本
  • 在划定的region propoasl上生成相应的3D视锥(Frustum),在该视锥内对point cloud用PointNets进行深度学习得到精确的3D proposal
    在这里插入图片描述

缺点:
occlusions and clutters are common in frustum point clouds
在这里插入图片描述

key to success

在这里插入图片描述

  • 归一化:因为是点云数据,所以归一化只需对点做矩阵乘法就行了。
    在这里插入图片描述

六、Q&A

  • PointNet是不是没有考虑点之间的关系?
    PointNet++考虑点之间的关系了
  • STN的全称是什么?
    special transformer network
  • 关键点是怎么选取的?
    关键点不是选取的,是我们可视化的,可视化了这个网络选择了哪些关键点

http://chatgpt.dhexx.cn/article/4p71xOqU.shtml

相关文章

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

在上一篇文章中,提及了3D点云分类与分割的开山鼻祖——PointNet:https://blog.csdn.net/Alkaid2000/article/details/127253473,但是这篇PointNet是存在有很多不足之处的,在文章的末尾也提及了,它没有能力捕获局部结构…

Pointnet系列(二)Pointnet++

简介 作者在先前的研究中提出了Pointnet,此论文是Pointnet的改进版Pointnet。提出改进的理由是因为Pointnet无法很好地捕捉由度量空间引起的局部结构问题,由此限制了网络对精细场景的识别以及对复杂场景的泛化能力。 Pointnet的基本思想是对输入点云中…

PointNet++详解与代码

在之前的一篇文章《PointNet:3D点集分类与分割深度学习模型》中分析了PointNet网络是如何进行3D点云数据分类与分割的。但是PointNet存在的一个缺点是无法获得局部特征,这使得它很难对复杂场景进行分析。在PointNet中,作者通过两个主要的方法…

【3D计算机视觉】从PointNet到PointNet++理论及pytorch代码

从PointNet到PointNet理论及代码详解 1. 点云是什么1.1 三维数据的表现形式1.2 为什么使用点云1.3 点云上以往的相关工作 2. PointNet2.1 基于点云的置换不变性2.1.1 由对称函数到PointNet(vanilla)2.1.2 理论证明 2.2 基于点云的旋转不变性2.3 网络总体结构2.4 实验结果和网络…

Pointnet网络结构与代码解读

前言 Pointnet开创性地将深度学习直接用于三维点云任务。由于点云数据的无序性,无法直接对原始点云使用卷积等操作。Pointnet提出对称函数来解决点的无序性问题,设计了能够进行分类和分割任务的网络结构,本文结合源码与个人的理解对于T-net网…

PointNet++

[NIPS 2017]PointNet: Deep Hierarchical Feature Learning onPoint Sets in a Metric Space 语雀(原文内容多一点,CSDN导不进来) [论文地址][项目页面][GitHub] 在之前的文章中分析了PointNet网络是如何进行3D点云数据分类与分割的。但是P…

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

作者:黎国溥,3D视觉开发者社区签约作者,CSDN博客专家,华为云-云享专家 首发:公众号【3D视觉开发者社区】 前言 PointNet是由斯坦福大学的Charles R. Qi等人在《PointNet:Deep Learning on Point Sets for 3D Classifi…

PointNet理解(PointNet实现第4步)

PointNet第4步——PointNet理解 前面,我们讲到了点云的挑战,针对点云的挑战,PointNet论文提出了下面的解决方案。 下面用到的PPT来源于PointNet作者本人,不得不说大佬还是大佬,介绍也十分清晰,下面附上祁芮…

Pointnet/Pointnet++学习

一、点云的应用 二、点云的表述 三、Pointnet 四、Pointnet Pointnet概述 虽然这篇文章叫PointNet,但和PointNet相比还是有很大的改进。文章非常核心的一点就是提出了多层次特征提取结构。具体来说就是先在输…

PointNet介绍

论文:PointNet: Deep Learning on Point Sets for 3D Classification and Segmentation 代码:https://github.com/charlesq34/pointnet 0 引言 PointNet是处理点云数据的深度学习模型,其地位堪比2D图像处理中的CNN网络, 后续的诸…

三维深度学习之pointnet系列详解(一)

目前二维深度学习取得了很大的进步并且应用范围越来越广,随着三维设备的发展,三维深度学习得到了很大的关注。 最近接触了三维深度学习方面的研究,从pointnet入手,对此有了一点点了解希望记录下来并分享,若有误希望指…

综述|PointNet、PointNet++、 F-PointNet基于深度学习的3D点云分类和分割

点击下方卡片,关注计算机视觉工坊公众号 干货第一时间送达 作者:黎国溥,3D视觉开发者社区签约作者,CSDN博客专家,华为云-云享专家。 编辑:3D视觉开发者社区 前言 PointNet是由斯坦福大学的Charles R. …

PointNet++分类与分割详解

前言 PointNet是一个用于对不规则形状的点云数据进行分类和分割任务的深度神经网络。相对于传统的基于网格的3D数据表示方法,点云数据更易于获取和处理。PointNet的另一个优势是它引入了多尺度层次结构,可以处理更为复杂的点云数据。相比于第一版的Point…

【点云分类和分割】简述PointNet和PointNet++的理解

Hello大家好,最近阅读了PointNet和PointNet两篇论文,本人觉得这是点云方向入手的比较简单的入门论文,下面阐述一下自己对这两篇论文的理解 一、首先点云是非常重要的三维数据结构,但是其有着非常特殊的性质,不规则性和…

PointNet解读

PointNet解决的问题: 如上图所示: 1.点云图像的分类(整片点云是什么物体) 2.点云图像的部件分割(整片点云所代表的物体能拆分的结构) 3.点云图像的语义分割(将三维点云环境中不同的物体用不同…

基于深度学习方法的点云算法3——PointNet++(点云分类分割)

基于深度学习方法的点云算法3——PointNet(点云分类分割) 请点点赞,会持续更新!!! 基于深度学习方法的点云算法1——PointNetLK(点云配准) 基于深度学习方法的点云算法2——PointNet…

论文解读PointNet(用于点云处理的深度学习框架)

随着最近几年神经网络在CV、NPL等领域取得重大的成果,因此就有学者希望将神经网络应用于3D任务中。在这篇文章(PointNet: Deep Learning on Point Sets for 3D Classification and Segmentation)出现之前,一般在3D任务中用的最多的…

最全PointNet和PointNet++要点梳理总结

一、基本简介 本篇博文主要是对 PointNet,PointNet 论文的要点进行梳理和总结。认真阅读本博文后,不仅能够深刻理解论文的核心算法思想,而且对模型训练数据、模型的训练流程也能了然于胸。如果想阅读原论文以及翻译,参考下面的链接…

苹果将强制开发人员启用双因素认证提高安全

苹果的开发人员在近期应该都收到了公司的电子邮件通知,知会他们在今年2月27日之后,都必须启用双因素认证才能登入开发人员账号。苹果在邮件中指出,为了让开发人员的账号更为安全,从2月27日起,不管是要登入苹果的开发人…

关闭appleid双重认证_Apple ID 被停用如何解决?

苹果帐户被停用一般是因为输错密码次数过多,或者登录的设备数过多。账户被停用后,iPhone 就会弹出“您的帐户已在 App Store 和 iTunes 中被禁用”等提示。 如果看到一条内容为 " 您的帐户已在 App Store 和 iTunes 中被禁用 " 的信息&#xf…