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

这篇具有很好参考价值的文章主要介绍了3D点云(3D point cloud)及PointNet、PointNet++。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、什么是3D点云

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

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

3d点云,3d,计算机视觉,深度学习
3d点云,3d,计算机视觉,深度学习
3d点云,3d,计算机视觉,深度学习

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

  • 点云分割
  • 点云补全
  • 点云生成
  • 点云物体检测(3D物体检测)
  • 点云配准(后续任务的基础)
    3d点云,3d,计算机视觉,深度学习

3d点云,3d,计算机视觉,深度学习
一般点云数据都是基于激光雷达扫描生成的。

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

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

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

点云数据并不是定义在一个规则的网格上,空间上可以任意分布、数量也可以任意,是不规则数据。
一种解决方案:
3d点云,3d,计算机视觉,深度学习

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

这种方式的缺点:

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

(2)PointNet

那么如何构造一个backbone来提取3D点云的这些特征呢?
3d点云,3d,计算机视觉,深度学习
3d点云,3d,计算机视觉,深度学习

点云数据的特点

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

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

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

3d点云,3d,计算机视觉,深度学习
这是什么?不太理解。

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

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

增加基于点云数据本身的变换函数模块:
3d点云,3d,计算机视觉,深度学习
3d点云,3d,计算机视觉,深度学习

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

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

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

3d点云,3d,计算机视觉,深度学习

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

分类和分割网络

3d点云,3d,计算机视觉,深度学习

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

3d点云,3d,计算机视觉,深度学习

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

3d点云,3d,计算机视觉,深度学习

3d点云,3d,计算机视觉,深度学习

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

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

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

3d点云,3d,计算机视觉,深度学习

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

3d点云,3d,计算机视觉,深度学习
最大池化使得模型只去关注critical points,这也使得模型对点的丢失具有较好的鲁棒性。

四、PointNet++

PointNet的局限性

3d点云,3d,计算机视觉,深度学习

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

第二代网络:PointNet++

  • Hierarcgical feature learning
  • Translation invariant
  • Permutation invariant
(1)Hierarcgical feature learning(多级特征学习)

3d点云,3d,计算机视觉,深度学习

3d点云,3d,计算机视觉,深度学习

3d点云,3d,计算机视觉,深度学习
也可以通过一种“up-convolution”的方式将pointnet提取的特征点复原回去。
3d点云,3d,计算机视觉,深度学习

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

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

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

为了量化这个问题,我们做了一个控制变量的实验,验证了点的疏密对PointNet++网络精确度的影响:小的kernel会受采样率不均匀影响较大。
3d点云,3d,计算机视觉,深度学习

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

  • Muti-scale grouping(MSG)
  • Muti-res gruoping(MRG)
  • MRG的好处是可以节省一些计算。而MSG需要对不同的尺度分别计算。
    3d点云,3d,计算机视觉,深度学习

效果对比:
3d点云,3d,计算机视觉,深度学习

3d点云,3d,计算机视觉,深度学习

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

  • 3D Object Detection
  • 3D Scene Flow
    3d点云,3d,计算机视觉,深度学习

3D Object Detection

3d点云,3d,计算机视觉,深度学习

Previous Work
  • 3D region + classification
    基于点云,在三维空间中做region proposal,然后投影到图片中,在图片中画出3D的box,再进行物体的识别;也可以用3D的CNN来做。
    3d点云,3d,计算机视觉,深度学习

缺点:

  • 3D空间的搜索量非常大,计算量也非常大。
  • 点云的分辨率有限,比较难发现比较小的物体。
  • RGB or RGB-D image based object detection
    3d点云,3d,计算机视觉,深度学习

缺点:
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
    3d点云,3d,计算机视觉,深度学习

缺点:
occlusions and clutters are common in frustum point clouds
3d点云,3d,计算机视觉,深度学习

key to success

3d点云,3d,计算机视觉,深度学习文章来源地址https://www.toymoban.com/news/detail-783880.html

  • 归一化:因为是点云数据,所以归一化只需对点做矩阵乘法就行了。
    3d点云,3d,计算机视觉,深度学习

六、Q&A

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

到了这里,关于3D点云(3D point cloud)及PointNet、PointNet++的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • [点云配准]LCD(2D-3D特征配准算法)例程align_point_cloud.py解析

    跨域描述符LCD可以实现二维图片特征点到三维点云特征点的配准,是个具有通用性的深度学习特征描述子。(图片来源于论文 LCD: Learned Cross-Domain Descriptors for 2D-3D Matching ) 在Github开源的源码里面给出了利用LCD进行 三维点云配准 的例程。align_point_cloud.py,这里对例程如何使用

    2024年02月08日
    浏览(31)
  • 点云算法好书推荐(3D Point Cloud Analysis 传统、深度学习和可解释的机器学习方法)附下载链接

    书籍介绍: 本书介绍了点云;它在工业中的应用,以及最常用的数据集。它主要关注三个计算机视觉任务——点云分类、分割和配准——这是任何基于点云的系统的基础。对传统点云处理方法的概述有助于读者快速建立背景知识,而对点云方法的深度学习包括对过去几年的突

    2024年02月12日
    浏览(32)
  • 使用 PointNet 进行3D点集(即点云)的分类

    无序3D点集(即点云)的分类、检测和分割是计算机视觉中的核心问题。此示例实现了开创性的点云深度学习论文PointNet(Qi 等人,2017)。 如果使用 colab 首先安装 trimesh  !pip install trimesh 。

    2024年02月07日
    浏览(29)
  • PointNet: Deep Learning on Point Sets for 3D Classification and Segmentation

    论文下载地址:https://arxiv.org/abs/1612.00593 代码开源地址:https://github.com/charlesq34/pointnet 作者以及论文信息如下: 论文作者的公开课链接 :https://www.shenlanxueyuan.com/channel/8hQkB6hqr2/detail(大佬的课必须去感受下啊~~) 最近,开始研究基于3D点云的深度学习算法。 PointNet 作为基于

    2023年04月15日
    浏览(31)
  • PointNet:利用深度学习对点云进行3D分类和语义分割

    参考自,PointNet: Deep Learning on Point Sets for 3D Classification and Segmentation 代码仓库地址为:https://github.com/charlesq34/pointnet/ 介绍 这次介绍的是一个比较基础的工作,针对空间点云,进行分类或者语义分割的框架,现在通常也被用作对RGB-D图像进行特征提取的部分。 该工作的目的就是

    2024年02月03日
    浏览(58)
  • 计算机图形学(三) -- 3D 变换

    同样引入齐次坐标: 3D 点 = ( x , y , z , 1 ) T (x, y, z, 1)^T ( x , y , z , 1 ) T 3D 向量 = ( x , y , z , 0 ) T (x, y, z, 0)^T ( x , y , z , 0 ) T 通常, ( x , y , z , w ) (x, y, z, w) ( x , y , z , w ) (w != 0) 表示一个坐标为 ( x / w , y / w , z / w ) (x/w, y/w, z/w) ( x / w , y / w , z / w ) 的 3D 点 用一个 4x4 的矩阵来表示

    2024年02月08日
    浏览(28)
  • 计算机图形学:绘制一个3d交互场景(1)

    OpenGL作为一种图形与硬件的接口,与其他图形程序开发工具相比较,它提供了众多图形函数,直观的编程环境简化了三维图形的绘制过程,使用OpenGL搭建一个三维场景,能够通过输入设备与场景内物体交互。 豪华单间 配置环境:vs22+freeglut库 1.绘制墙体使其成为封闭空间,在

    2024年02月11日
    浏览(82)
  • 【点云分割】points3d框架学习01 —— 安装和配置

    [Errno 2] No such file or directory: ‘llvm-config’ 检查一下 AttributeError: module ‘numpy‘ has no attribute ‘long‘ replace numpy version with error: subprocess-exited-with-error

    2024年02月11日
    浏览(22)
  • 【计算机视觉|人脸建模】学习从图像中回归3D面部形状和表情而无需3D监督

    本系列博文为深度学习/计算机视觉论文笔记,转载请注明出处 标题: Learning to Regress 3D Face Shape and Expression from an Image without 3D Supervision 链接:[1905.06817] Learning to Regress 3D Face Shape and Expression from an Image without 3D Supervision (arxiv.org) 从单张图像估计3D面部形状必须对光照、头部姿势

    2024年02月07日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包