论文笔记:(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] 本文 ...
随机推荐
- PL/SQL连不上,报 ORA-12170:TNS 连接超时
排错步骤: 1.查看网络是否通畅 打开cmd, ping 数据库IP 2. 查看端口是否通畅 打开cmd,tnsping 数据库IP 如果piing不通,可能是防火墙问题 3.检查防火墙状态 #ser ...
- jQuery筛选选择器
<!DOCTYPE html><html><head> <meta http-equiv="Content-type" conten ...
- 40、mysql数据库(触发器)
1.触发器说明: 使用触发器可以定制用户对表进行[增.删.改]操作时前后的行为,注意:没有查询. 2.创建触发器语法: (1)插入前: CREATE TRIGGER tri_before_insert ...
- 精尽Spring Boot源码分析 - Condition 接口的扩展
该系列文章是笔者在学习 Spring Boot 过程中总结下来的,里面涉及到相关源码,可能对读者不太友好,请结合我的源码注释 Spring Boot 源码分析 GitHub 地址 进行阅读 Sprin ...
- KDE桌面环境下konsole,kate等软件无法切换中文输入法
解决方案(arch): 修改/etc/profile,增加以下语句: #fcitxexport XIM_PROGRAM=fcitxexport XIM=fcitxexport GTK_IM_MODUL ...
- rabbitmq概念简介
AMQP协议 AMQP: Advanced Message Queue,高级队列协议. 特征: 这是一个在进程间传递异步消息的网络协议,因此数据的发送方.接收方以及容器(MQ)都可以在不同的设备上. ...
- java.util.Date 与 java.sql.Date
java.sql.Date 继承 java.util.Date 区别: 1.java.sql.Date 一般用于数据库 2.java.sql.Date 没有时分秒,涉及时分秒的函数都会报异常(且这些方 ...
- 看看PHP迭代器的内部执行过程(转)
1 class myIterator implements Iterator { 2 private $position = 0; 3 private $array = array( 4 &quo ...
- C++实现KDTree
简介 k-d树(k-dimensional),是一种分割k维数据空间的数据结构(对数据点在k维空间中划分的一种数据结构),主要应用于多维空间关键数据的搜索(如:范围搜索和最近邻搜索). 举例 ...
- C# 8.0和.NET Core 3.0高级编程 分享笔记二:编程基础第二部分
这一篇是接上一篇笔记的第二部分. 2.5深入研究控制台应用程序 前面创建并使用了基本的控制台应用程序,下面更深入地研究它们. 控制台应用程序是基于文本的,在命令上运行的.它们通常执行需要编写脚本的简单 ...