阅读笔记 PointNet: Deep Learning on Point Sets for 3D Classification and Segmentation
一、背景
点云是三维坐标系统中的一组三维向量的集合,是表示物体外表的一个形状,接近物体原始特征
我们的卷积神经网络通常需要规则的数据形式作为输入,但由于点云是非规则数据类型所以通常的做法大都先对点云进行规则化的处理。
相关工作之一就是把点云进行体素化处理,具体就是把点云数据在三维空间中划网格,这种方法比较依靠我们对网格大小的划分,称之为分辨率大小的设置
他的优点是体素化后的点云数据将在内存中有序存储,有利于减小随机内存访问,增加数据运算效率;但缺点是体素化过程将不可避免的带来信息丢失,信息丢失程度与选择的分辨率紧密相关,而且3D卷积运算量和复杂度非常大。
相关工作之二是将3D的点云数据映射到2D平面,不直接处理三维数据,而是对二维数据进行CNN网络进行处理,在分类和检索任务上有较好的效果。但是,3D到2D的转化是会损失信息的,而且投影的角度选择也是个问题。
原文还有很多工作(相关引用文献有21篇)
二、本论文提出了什么?
要解决什么问题:
基于以上的种种工作,都势必会改变点云数据的原始特征,造成不必要的数据损失。
作者做的就是设计一个可以直接处理3d点云数据的深度学习框架。
具体做法是:
提出了PointNet,它可以直接将3d点云作为输入,进而输出预测的类别。
不过由于这个网络直接以点云作为输入,而最大的难点在于点云的点数是不确定且无序的,三维的点坐标是没办法排序的,输入网络的是点云形成的一个个点坐标,怎么保证模型对这些点以不同顺序排列都能做出同样的判断?
核心方法是巧妙地使用了一个Max Pooling,解决了这个问题。
效果如何:很好
存在的问题:
1、只关注了3D点云的全局信息,对于局部信息的利用不够充分
点云数据表示:
这是点云的一个数据表示,N表示有N个点数据,D表示的是维数,这里我们就是(x,y,z)
用这个点云数据可以干什么?这篇论文主要讨论两点:
1:分类检测 输入N*3的矩阵,输出1*M的矩阵,M是各个分类的概率
2:部件分割/语义分割 输入N*3的矩阵,输出n*M的矩阵
下图是PointNet的应用:
点云的三个属性:
1、排列无序性:与图像的像素或者体素不同,点云是一系列没有特定顺序的点,但这些点不论怎么乱序又能组成同一个点云。因此,我们的网络需要保证面对 n 个点的3D点云的各种顺序置换的可能情况具有不变性。
2、点之间的相互作用: 这些点来自具有距离度量的空间,这意味着点不是孤立的,相邻的点形成一个有意义的子集。因此,我们的模型需要能够从邻近的点捕获局部结构,以及局部结构之间的组合相互作用。(待改进)
3、旋转(平移)不变性:作为一个几何对象,我们学到的点集特征不应该受到位姿变化的影响,旋转和平移不应该影响到全局点云类别或点的分割。
三、PointNet网络结构
为了解决第一个问题,作者提出过以下几种思路:
1、将输入排序成一个标准的顺序(很难找到一个稳定的排序)
2、用RNN处理输入,去学习一个顺序(我们的点云里数据量太多,很难学到顺序)
3、使用一个对称函数来将所有点的信息聚合
所谓对称函数就是指对输入顺序不敏感的函数
在max pooling作用下,取出每个维度上最大值,每一维特征都与其顺序无关
这样不管点云数据以什么样的顺序输入,都不会影响到我们最终提取结果,但这样会导致大量数据丢失,所以要做一些改进
也就是对其进行升维(利用MLP处理点云),例如最后升到1024维,升维过程中会产生很多冗余信息,个人感觉是用以抵消最大池化造成的数据丢失。
以上是对点云无序性的处理
对于问题三,作者引进一个T-Net网络来解决:
如图,T-Net用来生成变换矩阵,作用是用来对齐特征,使特征更利于提取。输入是n × 3 ,那么第一个T-Net生成的就是一个3 × 3 的仿射变换矩阵;
由于第二个T-Net的输入时n × 64 ,那么生成的变换矩阵就是一个64 × 64 的变换矩阵。
通过T-Net学习一个矩阵,就是把输入的矩阵数据进行一个旋转,校正成一个准确的方向,再进行之后的处理。
问题二的话,体现在分割问题上,在计算得到全局点云特征向量后,将其与前面的点特征拼接在一起。随后再从拼接后的特征向量中提取特征,这时既有局部信息也有全局信息。
这是整体网络结构图,总体就是两部分,用以处理两个不同任务
四、实验结果
相比体素输入,我们的PointNet表现更好
靠着这些主干点可以保证网络的鲁棒性
五、总结
论文创新:
设计了一种适合在3D中处理无序点集的新型深层网络体系结构
展示如何训练这样的网络来执行3D形状分类,形状部分分割和场景语义分析任务;
对方法的稳定性和效率提供全面的经验和理论分析;
举例说明由网络中所选神经元计算出的3D特征,并为其性能提供直观的解释。
阅读笔记 PointNet: Deep Learning on Point Sets for 3D Classification and Segmentation相关推荐
- 【论文精读 | 细节分析 | 代码实现】PointNet: Deep Learning on Point Sets for 3D Classification and Segmentation
文章目录 声明 引文 1.点云数据格式 2. 点云的特点 2.1.1 点云的置换不变性 2.1.2 点云的相互关系 2.1.3 点云的旋转不变性 3. 传统处理方式 Abstract 点云数据的特性补 ...
- [LiteratureReview]PointNet Deep Learning on Point Sets for 3D Classification and Segmentation
[LiteratureReview]PointNet: Deep Learning on Point Sets for 3D Classification and Segmentation 出处:20 ...
- 【论文阅读】3D点云 -- PointNet: Deep Learning on Point Sets for 3D Classification and Segmentation
前言 本博客详解遵从论文讲述的顺序.但我们要明确该论文的要点,以更好的阅读论文:针对点云的3个特性,pointnet设计的应对方法,以及设计理念. 点云的无序性:网络使用了对称函数 (maxpooli ...
- 点云网络的论文理解(一)-点云网络的提出 PointNet : Deep Learning on Point Sets for 3D Classification and Segmentation
1.摘要 1.1逐句翻译 Point cloud is an important type of geometric data structure. 点云是一种重要的数据结构. Due to its ...
- PointNet: Deep Learning on Point Sets for 3D Classification and Segmentation
基本简介 论文下载地址:https://arxiv.org/abs/1612.00593 代码开源地址:https://github.com/charlesq34/pointnet 作者以及论文信息如 ...
- PointNet: Deep Learning on Point Sets for 3D Classification and Segmentation 中文翻译
点云是一种重要的几何数据结构. 由于其不规则的格式,大多数研究人员将这些数据转换为常规3D体素网格或图像集合. 然而,这会使数据不必要地大量增加并导致问题. 在本文中,我们设计了一种直接消耗点云的新型 ...
- ZH奶酪:【阅读笔记】Deep Learning, NLP, and Representations
中文译文:深度学习.自然语言处理和表征方法 http://blog.jobbole.com/77709/ 英文原文:Deep Learning, NLP, and Representations ht ...
- 【DeepSketch2Face论文阅读】A Deep Learning Based Sketching System for 3D Face and Caricature Modeling
这篇文章是香港大学韩晓光老师等人在SIGGRAPH 2017的工作,创建了一个业余者也可以创建3D Face或漫画模型的系统. CV上目前存在许多场景,包含卡通角色,社交媒体上的虚拟形象,3D Fac ...
- 阅读笔记(Communication-Efficient Learning of Deep Networks from Decentralized Data)
阅读笔记(Communication-Efficient Learning of Deep Networks from Decentralized Data) 动机 联邦平均 实验结果 MINIST优 ...
最新文章
- Wiew 像写 Android UI 一样写小游戏布局
- js 中的break continue return
- VS cmake 远程开发 opencv报错:CMake was unable to find a build program corresponding to “Ninja“.(换个构建方式)
- 安装解压版本的MySQL,安装过程中的常见命令,检查windows系统错误日志的方式来检查MySQL启动错误,关于Fatal error: Can't open and lock privilege
- 踩坑之路anaconda创建虚拟环境
- 数据库技术基础:常见基本模型介绍笔记
- 在两个页面之间传递信息
- 前端工程化开发方案app-proto
- div 隐藏_SEO优化,隐藏文本与隐藏链接对SEO的影响!
- trackbar控件显示刻度值_安卓自定义电平流图形控件
- Linux安装Django
- 通信信号调制方式识别——综述/硕博
- Taro小程序 Input组件focus属性失效解决方案
- ffmpeg mp4转mov
- 基于Proxy代理服务器的长连接方法
- 短除法(求最大公约数)
- 武林外传自动寻路CALL
- Win10任务栏假死问题解决方案
- Linux:netstat命令结果详解
- 数据安全之MySQL数据加解密的实现方案