论文笔记:(CVPR2017)PointNet: Deep Learning on Point Sets for 3D Classification and Segmentation
PointNet: Deep Learning on Point Sets for 3D Classification and Segmentation
Charles R. Qi* Hao Su* Kaichun Mo Leonidas J. Guibas 时间:2016.12
Stanford University
论文下载地址:https://arxiv.org/abs/1612.00593
代码:https://github.com/charlesq34/pointnet
论文中文翻译:https://blog.csdn.net/qq_41895003/article/details/105217366
https://blog.csdn.net/qq_37314249/article/details/103605076
一、 存在的问题
3D点云是一种很重要的几何数据结构。由于其存在空间关系不规则的特点,因此不能直接将已有的图像分类分割框架套用到点云上。许多研究者会将3D点云转换为3D体素(voxel grids )或者一系列图片,然后套用到现有的深度学习框架上,取得了非常好的效果。但是将点云体素化势必会改变点云数据的原始特征,造成不必要的数据损失。因此,作者想要做的就是设计一个可以直接处理3d点云数据的深度学习框架
二、 解决的方案
1、点云特征
点云数据是在欧式空间下的点的一个子集,它具有以下三个特征:
(1)无序。
与图像中的像素阵列或体积网格中的体素阵列不同,点云是一组没有特定顺序的点集。换句话说,一个消耗N个3D点集的网络对N!种排列顺序的输入点集数据的应是不变的。
(2)点与点之间的空间关系。
这些点来自于具有距离度量的空间。这意味着点与点之间不是孤立的,并且相邻点可以形成一个有意义的集合。因此,这个模型需要从相邻点中捕捉局部结构,以及局部结构之间的结合相互作用。
(3)变换下的不变性。作为一个几何物体,点集的学习表示对某些变换应该是不变的。例如,旋转和平移不能改变全局点云类别或点的分割情况。
2、解决方法
针对点云的特征提出解决问题的方法
(1)无序性的解决方案:目前文献中使用的方法包括
将无序的数据重排序、
用数据的所有排列进行数据增强然后使用RNN模型、
用对称函数来保证排列不变性。
作者最终选择使用max pooling来聚合全局信息,并在后面从理论上证明了,当特征维数足够大时,max pooling可以模拟论文中所述的任意对称函数f。推导略。
(2)点间关系的解决方案:
一个物体通常由特定空间内的一定数量的点云构成,也就是说这些点云之间存在空间关系。为了能有效利用这种空间关系,论文作者在计算得到全局点云特征向量后,将其与前面的点特征拼接在一起聚合特征。随后再从拼接后的特征向量中提取特征,这时既有局部信息也有全局信息。
(3)不变性解决方案:
论文作者提出了在进行特征提取之前,先对点云数据进行对齐的方式来保证不变性。对齐操作是通过训练一个小型的网络来得到转换矩阵,并直接和输入点云数据相乘来实现。
对齐网络也可以扩展到特征空间中,通过一个小网络T-Net预测出一个特征变换矩阵,乘在输出的特征向量上。
考虑到在特征空间上的变换矩阵比普通的空间变换矩阵(3维)的维度高得多,这会给优化增加不小的难度。所以另外还要在最后的softmax损失上加上一个正则化项: 。 其中A是T-Net预测得到的特征对齐矩阵。对角矩阵不会丢失输入信息,这也是我们所期望的。作者提到,加上正则化项之后训练会更稳定。
三、 网络结构
三个关键结构:
1、最大池化层,用来将从所有的点上提取得来的信息聚合到一起===》无序性
2、局部信息和全局信息结合结构===》点间关系
3、两个对齐网络T-Net,用来将输入点和特征点进行对齐 ====》不变性
点云》空间对齐》特征变换》特征对齐》特征变换》池化》特征变换==》分类
点云》空间对齐》特征变换》特征对齐》特征变换》池化》特征拼接》特征变换》特征变换》==》分割
四、 理论证明
作者对他们模型进行了进一步的理论分析,并提出了两个定理:
定理1证明了PointNet(vanilla)的网络结构能够拟合任意一个在Hausdorff空间上连续的函数。其作用类似证明神经网络能够拟合任意连续函数一样。
同时,作者发现PointNet模型的表征能力和maxpooling操作输出的数据维度(K)相关,K值越大,模型的表征能力越强。
定理2(a)说明对于任何输入数据集S,都存在一个最小集Cs和一个最大集Ns,使得对Cs和Ns之间的任何集合T,其网络输出都和S一样。这也就是说,模型对输入数据在有噪声(引入额外的数据点,趋于Ns)和有数据损坏(缺少数据点,趋于Cs)的情况都是鲁棒的。定理2(b)说明了最小集Cs的数据多少由maxpooling操作输出数据的维度K给出上界。
五、实验效果
1、应用
(1)分类: ModelNet40数据集
(2)部件分割:ShapeNet part数据集
(3)语义分割/检测
2、网络结构分析
(1)针对无序性的解决方法比较
(2)输入和特征对齐的有效性验证
(3)鲁棒性测试(数据缺失、异常值、点扰动)
3、可视化(解释为什么鲁棒性)
通过研究是哪些点最大程度激活了神经元的值,论文发现,能够最大程度激活网络的点都是物体的主干点,将其上采样,很容易能得到原始的结构。这样的能力决定了PointNet对噪声和数据缺失的鲁棒性。如图所示,作者通过实验列出了PointNet学习到的以下几个物体的关键点。
4、时间和空间复杂度分析
尽管MVCNN [23]和Subvolume(3D CNN)[18]实现了高性能,但PointNet在计算成本方面效率更高(以浮点运算/样本进行测量:分别为141x和8x)。
此外,就网络中参数而言,PointNet比MVCNN更节省空间(参数少17倍)。PointNet更具可扩展性 - 空间和时间复杂度为O(N) - 与输入点数量呈线性。
然而,由于卷积占主导地位,多视图方法的时间复杂度在图像分辨率上正常增长,而基于体积卷积的方法随着卷大小以立方速度增长。
从经验上来看,PointNet能够在TensorFlow上使用1080X GPU处理每秒超过100万点的点云分类(约1K个对象/秒)或语义分割(约2个块/秒)任务,显示出实时应用的巨大潜力。
六、仍存在的问题
PointNet只关注了3D点云的全局信息,对于局部信息的利用不够充分,在平移不变性上有一定缺陷,后来作者提出了PointNet++。
七、代码分析
(略)
参考:https://cloud.tencent.com/developer/article/1640702
https://www.jiqizhixin.com/articles/2019-05-10-13
https://blog.csdn.net/hongbin_xu/article/details/84638109
论文笔记:(CVPR2017)PointNet: Deep Learning on Point Sets for 3D Classification and Segmentation的更多相关文章
- PointNet: Deep Learning on Point Sets for 3D Classification and Segmentation
摘要 点云是一种重要的几何数据结构类型.由于其不规则的格式,大多数研究人员将此类数据转化为常规的三维体素网格或图像集合.然而,这使数据变得不必要的庞大,并导致问题.在本文中,我们设计了一种新型的直接处 ...
- 论文笔记(1):Deep Learning.
论文笔记1:Deep Learning 2015年,深度学习三位大牛(Yann LeCun,Yoshua Bengio & Geoffrey Hinton),合作在Nature ...
- 《3-D Deep Learning Approach for Remote Sensing Image Classification》论文笔记
论文题目<3-D Deep Learning Approach for Remote Sensing Image Classification> 论文作者:Amina Ben Hamida ...
- 论文笔记: Dual Deep Network for Visual Tracking
论文笔记: Dual Deep Network for Visual Tracking 2017-10-17 21:57:08 先来看文章的流程吧 ... 可以看到,作者所总结的三个点在于: 1. ...
- ISSCC 2017论文导读 Session 14 Deep Learning Processors,A 2.9TOPS/W Deep Convolutional Neural Network
最近ISSCC2017大会刚刚举行,看了关于Deep Learning处理器的Session 14,有一些不错的东西,在这里记录一下. A 2.9TOPS/W Deep Convolutional N ...
- ISSCC 2017论文导读 Session 14 Deep Learning Processors,A 2.9TOPS/W Deep Convolutional Neural Network SOC
最近ISSCC2017大会刚刚举行,看了关于Deep Learning处理器的Session 14,有一些不错的东西,在这里记录一下. A 2.9TOPS/W Deep Convolutional N ...
- 论文笔记之: Deep Metric Learning via Lifted Structured Feature Embedding
Deep Metric Learning via Lifted Structured Feature Embedding CVPR 2016 摘要:本文提出一种距离度量的方法,充分的发挥 traini ...
- 论文笔记之:Deep Reinforcement Learning with Double Q-learning
Deep Reinforcement Learning with Double Q-learning Google DeepMind Abstract 主流的 Q-learning 算法过高的估计在特 ...
- 论文笔记之:Deep Attributes Driven Multi-Camera Person Re-identification
Deep Attributes Driven Multi-Camera Person Re-identification 2017-06-28 21:38:55 [Motivation] 本文 ...
随机推荐
- 通过ffmpeg转换为mp4格式
FFMPEG -i example.wmv -c:v libx264 -strict -2 output.mp4FFMPEG -i example.wmv -c:v libx264 -stri ...
- WEB安全漏洞扫描与处理(上)——安全漏洞扫描工具AppScan的安装使用
很多公司对软件会有安全的要求,一般测试公司会使用安全漏洞扫描工具对软件进行漏扫,然后给出安全报告,然后软件开发人员会根据提供的安全报告进行漏洞的处理.我们接触到的测评公司,使用的是漏洞扫描工具AppS ...
- C++知识点大汇总
概述 1.1980年 贝尔实验室 Bjanre Stroustrup(比雅尼·斯特劳斯特鲁普)对C改进与扩充 最初称为"带类的C",(c with classes). 1983年正 ...
- 26、samba搭建
26.1.samba介绍: samba是一个网络服务器,基于linux操作系统,用于linux和windows之间数据的共享: Samba是一个能让Linux系统应用Microsoft网络通讯协议的软 ...
- Springboot:Springboot+mysql5.7搭建服务,超过8小时连接mysql失败
报错信息 2017-03-12 03:00:02.539 ERROR 9311 --- [nio-9000-exec-4] o.a.c.c.C.[.[.[/].[dispatcherServlet] ...
- @Valid 注解的使用
限制 说明 @Null 限制只能为null @NotNull 限制必须不为null @AssertFalse 限制必须为false @AssertTrue 限制必须为true @DecimalMax( ...
- 6-x3 declare和typeset命令:设置变量属性
declare 和 typeset 都是 Shell 内建命令,它们的用法相同,都用来设置变量的属性.不过 typeset 已经被弃用了,建议使用 declare 代替.declare 命令的用法如下 ...
- Python+unittest+excel
接口测试设计思想: 框架结构如下: 目录如下: readme: config下的run_case_config.ini 文件说明: run_mode: 0:获取所有sheet页 1: if case_ ...
- spring boot框架相关知识
1.spring:一个轻量级的控制反转和面向切面的容器,专业的开发Web项目的开源框架. spring mvc:是基于spring的mvc框架,属于一个企业WEB开发的MVC框架,涵盖面包括前端 ...
- Dapper的基本使用 [转]
Dapper是.NET下一个micro的ORM,它和Entity Framework或Nhibnate不同,属于轻量级的,并且是半自动的.也就是说实体类都要自己写.它没有复杂的配置文件,一个单文件就可 ...