本文已参与「新人创作礼」活动,一起开启掘金创作之路。
一:摘要
一般的处理: 对点云数据先预处理再使用的方式
- 1、将点云数据投影到二维平面。此种方式不直接处理三维的点云数据,而是先将点云投影到某些特定视角再处理,如前视视角和鸟瞰视角。同时,也可以融合使用来自相机的图像信息。通过将这些不同视角的数据相结合,来实现点云数据的认知任务。比较典型的算法有MV3D和AVOD。
- 2、将点云数据划分到有空间依赖关系的voxel。此种方式通过分割三维空间,引入空间依赖关系到点云数据中,再使用3D卷积等方式来进行处理。这种方法的精度依赖于三维空间的分割细腻度,而且3D卷积的运算复杂度也较高。
pointNet 直接使用点云进行 ”分类、零件分割、场景语义分析“多方面的体系结构。 保持了点云的的输入点排列不变性。 并且提供了理论分析,为什么对于输入扰动和腐败具有鲁棒性。---这个分析hard
二:介绍
典型的卷积结构:输入是图像集合和三维体素网格,可以利用权重共享和系数连接等特性 但是也导致了数据量的庞大,同时引入了量化伪影,掩盖了数据的自然不变性。( This data representation transfor- mation, however, renders the resulting data unnecessarily voluminous — while also introducing quantization artifacts that can obscure natural invariances of the data. )
由于上面的原因,所以直接使用点云作为输入,避免了网格的组合不规则性和复杂性。
分类、零件分割(给定一个形状,分割出它的不同零部件)、语义场景分割点云是一组点,因此对其成员的排列是不变性的,所以要进行一些对称化。
处理过程:
- 1)结果:直接将点云作为输入,并为整个输入、输出类标签,或者为输入的每个点、输出每个点的段/部分标签。
- 2)max pooling函数,有效选择了一组优化函数/准则,可以选择点云中有趣或有信息的点。-----解决无序性
- 3)依赖于数据的空间转换网络,输入格式应用刚性或者仿射变换,因为每个点独立,规范化数据。----解决变换不变性
- 4)可视化、理论分析了对输入点的小扰动、离群点的插入、丢失数据等都有较好的鲁棒性。
总结:主要贡献
- 1)设计了一种新的适用于三维无序点集的深层网络结构
- 2)展示了如何训练一个网络来达到三维形状分类、形状部分分割、场景语义分析
- 3)对方法的稳定性和有效性提供了理论分析
- 4)对三维特征进行说明并对其性能进行了直观的解释。
三:相关工作
-
1)点云特征
大多数的点云特征都是针对某些特定任务手工制作的,学习到全局和局部特征,然后对于特定的任务,寻找最优特征的组合。
-
2)在3维数据上的深度学习 体素CNN:将三维卷积神经网络应用于体素化形状的先驱。---三维卷积下数据的稀疏性和计算量。
[17] D. Maturana and S. Scherer. Voxnet: A 3d convolutionalneural network for real-time object recognition. In IEEE/RSJ International Conference on Intelligent Robots and Systems,September 2015. 2, 5, 10, 11
[18] C. R. Qi, H. Su, M. Nießner, A. Dai, M. Yan, and L. Guibas.Volumetric and multi-view cnns for object classification on 3d data. In Proc. Computer Vision and Pattern Recognition(CVPR), IEEE, 2016
-
3)无序点云的深度学习 对无序集的深入学习从数据结构的角度来看,点云是一个无序的向量集。虽然深度学习的大部分工作都集中在常规的输入表示上,如序列(语音和语言处理)、图像和体积(视频或三维数据),但在点集的深度学习方面却做得很少。Oriol Vinyals等人[25]最近的一项工作研究了这个问题。他们使用带注意机制的读写网络来消费无序的输入集,并显示他们的网络具有对数字排序的能力。然而,由于他们的工作集中在泛型集合和NLP应用上,因此缺乏几何在集合中的作用
[25] O. Vinyals, S. Bengio, and M. Kudlur. Order mat ters: Sequence to sequence for sets. arXiv preprint arXiv:1511.06391, 2015.
四:问题陈述
五:点集上的深度学习
网络特征结构(收到了下面1)的启发):
输入:n个点作为输入,(n,3)
解决平移不变性:T-Net网络
解决无序性:最大池化
mlp:多层感知机
RELU层都用了BN
分类网络中,最后一个mlp使用了dropout
分割网络:全局和局部特征。
- 1)R(n维空间)中点集的性质
- ①无序性 不同于图片的像素矩阵排列以及体素阵列,点云是没有顺序的,所以对于N个点来说,网络其 N!下的不同排列顺序的作用是一样的。
- ②点之间的相互作用 来自欧几里得空间,所以这些点不是孤立的,相邻的点云形成一个有意义的子集。所以模型需要从临近点捕捉局部结构以及局部结构的相互作用。
- ③变换下的不变性 这个变换包括平移和旋转。应该对全局点云的类别是不影响的。
- 2)PointNet结构 包含三大关键模块
- ①:最大池化层,作为一个对称函数来聚集来自所有点的信息-----MAX
- ②:一个局部和全局信息的组合结构------MLP
- ③:两个联合对齐网络,用来对其输入点和点的特征-----T-Net
下面分别一一讲解:
-
对于无序输入的对称函数:
为了使模型对输入排列保持不变性,存在3种策略:
-
1)将输入按规范顺序排列。 听起来简单,但是高维空间,一般不存在稳定意义上的排序。 虽然排序听起来像一个简单的解决方案,但在高维空间中实际上并不存在相对于一般意义上的点扰动稳定的排序。通过比较很容易发现。如果存在这样的排序策略,那么在高维空间与一维实线之间存在双射映射。不难看出,要求对点扰动稳定的排序等价于要求该映射在维数减少时保持空间接近度,一般情况下这是无法实现的。因此,排序不能完全解决顺序问题,而且当顺序问题依然存在时,网络很难学习到从输入到输出的一致映射。 -----------高维空间下的排序对于扰动鲁棒不好找。。
-
2)将输入视为训练RNN的序列,但通过各种置换增加训练数据。 使用RNN的思想是将点集看作一个序列信号,并希望通过随机排列序列训练RNN,使RNN对输入顺序保持不变。然而,在“秩序问题”[25]中,作者指出,秩序确实重要,不能完全忽略。虽然RNN对小长度(几十个)序列的输入排序具有较好的鲁棒性,但很难将其扩展到数千个输入元素,这是点集的常见大小。从经验上讲,我们还表明基于RNN的模型的性能不如我们提出的方法。
-
3)使用一个简单的对称函数来聚合每个点的信息。 这里,一个对称函数使用n个向量作为输入,并输出一个新的向量,该向量与输入顺序无关,例如只含有+、* 的函数就是对称函数。 对称函数的定义:结果和顺序输入无关。
一个多层感知机来近似h函数,用一个单变量函数和一个最大函数来近似g函数。其中2^R^N不知道是什么意思。详情见:有趣的特性5.3节、强大的性能5.1节、4.3节的理论分析。
理解:h---多层感知机,对于h我这里认为是MLP的一部分,所以整体的MLP会习得多个不同的h,从而导致最后的有多个代表不同属性的f。。---可能会有误解参考:blog.csdn.net/ShuqiaoS/ar…
-
-
一个局部和全局信息的组合结构:
- 对称函数的输出是一个向量[f1、f2、f3、fK],这是全局特征。可以简单的用于分类,但是对于点分割来说,这是远远不够的,需要结合局部信息,其解决方法见上面的图2, 在计算出全局点云特征向量后,通过将全局特征与每个点特征连接起来,将其反馈给逐点特征。然后,我们基于合并的点特征提取新的逐点特征-这一次每点特征同时感知局部和全局信息。通过这种修改,我们的网络能够预测依赖于局部几何和全局语义的每点数量。
-
两个联合对齐网络,用来对其输入点和点的特征:
- 保持点云的刚性变换,刚性变换是欧氏空间的几何变换,它保留了每对点之间的欧氏距离。刚性变换包括旋转,平移,反射或它们的组合。 一个自然的想法是在特征提取之前,将所有的输入集对齐到一个规范的空间。 [9] M. Jaderberg, K. Simonyan, A. Zisserman, et al. Spatial transformer networks. In NIPS 2015. 空间变换器 对于点云可以更简单的实现这一个目标,提出了T-net网络,有点独立特征提取、最大池化、全连接层等基本模块组成。
- 第二个T-net网络,扩展:进一步扩展到特征空间的对齐,即通过该对齐网络对齐来自不同输入点云的特征。但是由于其维数比较高,在softmax训练损失中添加了一个正则化项。(模型复杂,防止过拟合) 其中A是小型网络预测的特征对齐矩阵,其中将特征变换矩阵约束为接近正交矩阵,这样保持不会丢失输入中的信息。
六:实验
一共分为4部分:
- 1:网络用于多个3D识别任务
- 2:提供详细的实验来验证网络设计
- 3:网络内容可视化
- 4:分析了时间复杂度和空间复杂度。
6.1 应用
3D目标分类:用于对象分类的全局点云特征,实验在MOdelNet40数据集上进行形状分类,其中有12311个CAD模型,一共为40种人造物体类别,其中9843用于训练,并且2468用汉语测试。第一个直接处理点云的方法。
处理方法:我们根据面面积对网格面上的1024个点进行均匀采样,并将其规范化为一个单位球体。在训练过程中,我们通过沿上轴随机旋转对象来动态增强点云,并用平均值为零、标准差为0.02的高斯噪声抖动每个点的位置。
3D物体零件分割:零件分割是一项具有挑战性的细粒度三维识别任务。给定3D扫描或网格模型,任务是为每个点或面指定零件类别标签(例如椅子腿、杯柄)。实验数据集:ShapeNet数据集,含有16个类别的16881个形状,共有50个零件进行了标注。大多数的对象类别用了2-5个部分来标记。
语义场景分割:
- 零件分割网络可以很容易的扩展到语义场景分割,其中点标签变成了语义对象类,而不是之气那的对象部分标签。
- 数据集:Stanford 3D semantic parsing data set。 包含的是“Matterport”扫描仪 在6个区域(271个房间)进行的三维扫描。 其中每个点都用来自13个类别(椅子、桌子、地板等)的一个语义标签进行注释。
- 预处理: 为了准备训练集,我们首先按空间分割点,然后将空间样本分割为1 m × 1 m 的区域。我们训练PointNet的分割网络来预测每个块中每个点的类别。每个点被表示为一个由X Y Z 、R G B 以及归一化后的位置组成的9维向量。在训练时,我们在每个模块中随机采样4096个点。在测试时,我们在所有点上进行测试。我们遵循与[1]相同的方案,使用k-fold交叉验证进行训练和测试。
6.2 结构设计分析(Architecture Design Analysis)
在本节中,我们通过控制实验验证了我们的设计选择。我们还展示了我们的网络超参数的影响。与备选顺序不变方法的比较如4.2节所述,至少有三个方法可用于无序数据输入。我们使用ModelNet40形状分类问题作为比较这些方法的测试平台,以下两个实验也将用于此任务。
6.3 可视化PointNet(Visualizing PointNet )
6.4 时间和空间复杂度分析(Timeand Space Complexity Analysis)
七:结论
在这项工作中,我们提出了一种新的直接以点云为输入的深度神经网络PointNet。我们的网络为许多3D识别任务提供了一个通用的框架,包括目标分类,部分分割和语义分割,同时获得比标准基准更好的结果。我们还提供理论分析和可视化,以对我们网络的理解。