PointNet第4步——PointNet理解

前面,我们讲到了点云的挑战,针对点云的挑战,PointNet论文提出了下面的解决方案。

下面用到的PPT来源于PointNet作者本人,不得不说大佬还是大佬,介绍也十分清晰,下面附上祁芮中台大佬对近年来3D物体检测的介绍和讲解链接(ps:如果下面看不懂的话,可以先听一下大佬的讲解再来看)

祁芮中台-3D物体检测:https://www.shenlanxueyuan.com/channel/wJ9feOF9X1/detail

一、点云的解决方案

1.1置换不变性


设计的网络必须满足置换不变性,N个数据就有N!个置换不变性。而对称函数可以满足上述置换不变性,如下:

图来源于斯坦福大学在读博士生祁芮中台:点云上的深度学习及其在三维场景理解中的应用

直接对数据做对称性操作,虽然满足置换不变性,容易丢失很多的几何和有意义的信息。比如取最大值时,只取得最远点,取平均值,只取得重心。

如何不损失

把每一点都映射到高维空间,在更高维空间再做对数据做对称性操作。高维的空间对三维点的表达来说,必定是信息冗余的,但是因为信息的冗余性,我们通过对称性操作综合,可以减少信息的损失,保留足够的点云信息。由此,就可以设计出这PointNet的雏形,称之为PointNet(vanilla):

图来源于斯坦福大学在读博士生祁芮中台:点云上的深度学习及其在三维场景理解中的应用
通过MLP将每个点投影到高维空间,通过max做对称性。
MLP为什么可以投影到高维空间(这个是针对小白的解释,点击此处)
PointNet可以任意的逼近对称函数(通过增加神经网路的深度和宽度):

图来源于斯坦福大学在读博士生祁芮中台:点云上的深度学习及其在三维场景理解中的应用

1.2旋转不变性(几何不变性)

旋转不变性指的是,通过旋转,所有的点(x,y,z)的坐标发生变化,但是代表的还是同一个物体,如下所示:

因此对于普通的PointNet(vanilla),如果先后输入同一个但是经过不同旋转角度的物体,它可能不能很好地将其识别出来。在论文中的方法是新引入了一个T-Net网络去学习点云的旋转,将物体校准,剩下来的PointNet(vanilla)只需要对校准后的物体进行分类或者分割即可。

点云是一种非常容易做几何变换的数据,只需要通过矩阵的乘法即可。如下图所示,一个N×3的点云矩阵乘以一个3×3的旋转矩阵即可得到旋转变换后的矩阵,因此对输入点云学习一个3×3 的矩阵,即可将其矫正。

同样的将点云映射到K维的冗余空间后,再对K维的点云特征做一次校对,只不过这次校对需要引入一个正则化惩罚项,希望其尽可能接近于一个正交矩阵。【正则化是由于高维的空间优化较难,通过正则化可以减少优化的难度。】

总结:maxpooling解决置换不变性(无序性)问题,空间变换网络解决旋转不变性问题

二、PointNet

点云的分类网络:

图来源于斯坦福大学在读博士生祁芮中台:点云上的深度学习及其在三维场景理解中的应用*
具体来说,对于每一个N×3的点云输入,网络先通过一个T-Net将其在空间上对齐(旋转到正面),再通过MLP将其映射到64维的高维空间上,再64维空间再进行对齐,最后映射到1024维的空间上。这时对于每一个点,都有一个1024维的向量表征,而这样的向量表征对于一个3维的点云明显是冗余的,因此这个时候引入最大池化max pool操作,将1024维所有通道上都只保留最大的那一个,这样得到的1×1024的全局特征。全局特征在通过一个级联全连接网络(即为最后一个MLP),最后达到一个K分类结果。

点云的分割网络:


图来源于斯坦福大学在读博士生祁芮中台:点云上的深度学习及其在三维场景理解中的应用*
点云的分割可以定义成一个对每一个点的分类问题,如果知道每个点的分类的,就可以对这个点进行固定类别的分割。当然,我们通过全局坐标是没法直接对每个点进行分割。一个简单又有效的做法就是,我们可以把局部的特征,单个点的特征和全局的坐标结合起来,实现分割的功能。用最简单的做法就是,我们可以把全局的特征,进行重复N遍,然后每一个和原来的单个点的特征连接在一起。【插入的解释:上述讲到将局部特征和全局特征结合起来(64+1024=1088),所以就不难解释1088的由来。现在,单个点就具有1088维度。】相当于单个点在全局特征中进行了一次检索(即为单个点去全局特征中看“我”在这个全局特征中处于哪一个位置,“我”应该属于哪一类?)。我们就对每一个连接起来的特征又进行另外一个MLP的变化,最后把它每个点分类成M类,相当于输出M个score。

三、PointNet实验结果

下述实验结果均来源于斯坦福大学在读博士生祁芮中台:点云上的深度学习及其在三维场景理解中的应用*

从上述实验结果:pointnet当时不论是分割还是分类的结果都超过了当时的体素系列网络,同时由于参数少等特点,训练快,属于轻量级网络。

PointNet适用于手机等移动设备。
PointNet具有鲁棒性,对点的丢失不敏感:

论文发现,能够最大程度激活网络的点都是物体的主干点(下图第二行),将其上采样,很容易能得到原始的结构。因此这就是PointNet网络的缺失鲁棒性的来源。

PointNet理解(PointNet实现第4步)相关推荐

  1. PointNet++理解(PointNet++实现第2步)

    PointNet++实现第2步--PointNet++理解 一.PointNet的局限性(PointNet++出现的原因) 对每一个点映射到高维空间,再通过max结合.由于其网络直接暴力地将所有的点最 ...

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

    文章目录 一.什么是3D点云 二.基于3D点云的一些任务 三.如何提取3D点云数据的特征:PointNet (1)在PointNet之前也有工作在做点云上的深度学习 (2)PointNet (1)置换 ...

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

    一.基本简介   本篇博文主要是对 PointNet,PointNet++ 论文的要点进行梳理和总结.认真阅读本博文后,不仅能够深刻理解论文的核心算法思想,而且对模型训练数据.模型的训练流程也能了然于 ...

  4. Pointnet与Pointnet++论文笔记

    Pointnet与Pointnet++论文笔记 近期由于课题需要,研读了Pointnet系列文章,在此总结个人心得,并结合了部分博客进行阐述,不足之处希望各位批评指正,也欢迎各位同学来进行学习交流. ...

  5. 点云3D目标检测学习(1):pointnet、pointnet++模型

    3D目标检测学习笔记 开始正式进入3D目标检测的学习!!! 1.点云数据 无序性:只是点而已,排列顺序不影响 近密远疏 非结构化数据,直接CNN有点难 2.PointNet CVPR2017 Poin ...

  6. 从PointNet到PointNet++理论及代码详解

    从PointNet到PointNet++理论及代码详解 1. 点云是什么 1.1 三维数据的表现形式 1.2 为什么使用点云 1.3 点云上以往的相关工作 2. PointNet 2.1 基于点云的置 ...

  7. ansys的kbc_怎样理解ansys中的载荷步

    怎样理解 ansys 中的载荷步? 一 . 载荷步的含义 一个载荷步是指边界条件和载荷选项的一次设置, 用户可对此进行一次或多次求 解. 一个分析过程可以包括: 1. 单一载荷步(常常这是足够的) 2 ...

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

    从PointNet到PointNet++理论及代码详解 1. 点云是什么 1.1 三维数据的表现形式 1.2 为什么使用点云 1.3 点云上以往的相关工作 2. PointNet 2.1 基于点云的置 ...

  9. 对于FlowNet3D论文代码的理解(pointnet++)

       把这个作为自己学习的记录,鞭策自己努力推进任务,认真学习,保持更新. 目录 train.py model_concat_upsa.py get_model pointnet_util.py po ...

最新文章

  1. ui设计师要养成哪些职场习惯呢?
  2. 【ASP.NET Core】解决“The required antiforgery cookie xxx is not present”的错误
  3. elementui table html,elementUI Table表格表头自定义
  4. 第三章 改进神经网络的学习方式(上)
  5. linux modprobe命令参数及用法详解--linux加载模块命令
  6. Perseus-BERT——业内性能极致优化的BERT训练方案【阿里云弹性人工智能】
  7. python 遍历一个空列表
  8. (转)Redis上踩过的一些坑-美团
  9. Mysql数据库常用分库和分表方式
  10. ubuntu 中 notepad 安装
  11. android 任意剪切view,Android 任意View切圆角
  12. iOS自动化测试---使用的相关工具
  13. SQL数据库连接失败
  14. PYNQ yocto运行python
  15. IOC和DI到底是什么?
  16. 一场奶香味的定增:让资本助力“奶生态”
  17. 拆掉思维里的墙-阅读记录
  18. 世界经济论坛区块链报告阅读笔记
  19. 【2020算法练习一】笔试选择题 快手2020校园招聘秋招笔试--算法A试卷
  20. 杰理之对箱 TWS 通话有回音,噗噗声,卡顿问题【篇】

热门文章

  1. 智慧党建云平台小程序 v2.6.0+前端(公众号+小程序一体)开源版源码
  2. 电商行业如何搭建私域流量
  3. 5元的小乌龟吃什么_野生乌龟吃什么食物(小乌龟吃什么食物大全)
  4. 产品中试管理——从样品到量产课纲--陈新春老师
  5. 芋道源码的周八(2018.05.20)
  6. 【读书笔记】-《华为-C语言编程规范》
  7. centerandzoom 无效_百度地图api h5获取当前位置授权(iphone6s 和 iphone7失效)
  8. 我用 80 行核心 JS 代码每个月躺着挣一瓶肥宅快乐水
  9. Eclipse和MyEclipse哪个更好?
  10. 关于Excel操作编写的一个软件设计构思案例[连载] --如何打开Excel文件,获取需要列的数据显示到表格内做修改