Arxiv1801_PointCNN
参考: http://www.sohu.com/a/220248571_473283 链接写的非常清楚,看一遍就懂
Author
李扬彦、卜瑞、孙铭超、陈宝权 from 山东大学 论文刷新了五项benchmark, 超过了pointNet
PointCNN提出了一种称为X-变换的方法。X-变换是从输入点学习到的一组权值X,这组权值可以对各点相关联的特征进行重新加权和排列。 X-变换可以实现“随机应变”,即当输入点的顺序变化时, X能够相应地变化,使加权和排列之后的特征近似不变。输入特征在经过X-变换的处理之后能够变成与输入点顺序无关同时也编码了输入点形状信息的归一化的特征。在经过X-变换之后的特征上进行卷积能够极大提高卷积核的利用率, 从而大大提高卷积操作在无序数据上提取特征的能力。
Abstract
我们提出了一个简单而通用的点云特征学习框架。 CNN成功的关键是卷积算子,它能够利用网格形式密集表示的数据中的局部相关性(如图像)。 然而,点云是不规则的,无序的,因此点对点的特征与点的直接卷积将导致形状信息丢失,还会因为输入点顺序不一致而产生不同的输出。 为了解决这些问题,我们尝试从输入点学习X-变换,然后使用它来加权与排列输入点的特征。这种操作可以把输入点的形状信息编码到特征中,同时把输入特征的顺序归一化到某种潜在的一致的模式。 这种方法是将典型的针对规则域数据的CNN推广到能够处理点云这种非规则无序数据的一种尝试,因此被称为PointCNN。 实验表明,PointCNN在多种具有挑战性的基准数据集和任务上达到了与最先进方法相当或更好的性能。
点云是一组点的集合,常用来表示自身维度比背景空间纬度低的数据(比如空间中的曲面等)。由于数据较为稀疏,直接采用密集体素的方式,不仅数据量大,而且数据中包含过多的冗余信息,不利于数据特征的提取。不仅如此,大量的3D传感器也采用点云的方式保存数据,数据来源非常广泛。
数学上来讲,CNN中的卷积操作本质上是将输入进行加权求和,结果依赖输入的顺序,即f(a,b)通常不等于f(b,a)。特别地,对于f(a,b,c,d)来讲,如果a被e替换掉,且e顺序在d之后,则替换后的结果f(b,c,d,e)通常会和f(a,b,c,d)有巨大的差异。因此CNN中的卷积操作是对数据输入的顺序是敏感的,对于无序数据则较难提取到有效的特征。
由于图像表示方式大多为密集阵列式的,像素点之间等距有序地排列在一起,使得基于卷积的一系列操作在图像数据上能够得到统一的输出。最直接的将处理图片的CNN推广到处理三维数据的方式是将三维数据使用三维体素来表达,从而应用三维CNN。然而,三维数据通常较为稀疏,但基于体素的三维CNN难以利用这一特性。点云可以高效表达三维稀疏数据,然而,点云数据中各点之间距离不一, 点的排布也没有顺序(unordered), 无法直接使用CNN进行特征学习。
PointCNN提供了一个能够高效地从点云中提取特征的方法。
特别值得一提的是,在ModelNet40的分类任务上,在只使用32个点作为输入的极端压力测试下,PointCNN仍然能够取得84.4%的准确率,这一结果大幅领先目前已知的其他方法。在这种极端压力测试下,PointCNN的计算量非常小,能够在GTX 1080 GPU上以每帧0.3毫秒的速度进行点云识别。自动驾驶中获取的点云往往非常稀疏,同时对实时性要求极高。该压力测试显示PointCNN有应用于自动驾驶的巨大潜力。
CIFAR10实验来看。在一般的图像上, CNN仍然是比PointCNN更好的选择。而PointCNN的优势在数据越稀疏的时候越能展现出来。目前并没有一个科学的准则判断是应该将数据表达为规则形式进而应用CNN,还是应该将数据表达为点云形式进而应用PointCNN。有意思的是,部分密集的数据也许可以被稀疏的表达,例如视频通常被表现为密集的三维数据,但是通常在视频帧里面只有少量的像素是逐帧变化的。 PointCNN加上稀疏但不规则表达的视频数据也是一个有趣的方向。