测试
压力测试
神经网络
摘要: 山东大学李扬彦,卜瑞,孙铭超,陈宝权研究团队近日研究提出的 PointCNN 是简单通用的点云特征学习架构,基于这一方法一组神经网络模型一举刷新了五个点云基准测试的记录.
由山东大学提出的 PointCNN 是一个简单通用的点云特征学习架构.基于这一方法的一组神经网络模型一举刷新了五个点云基准测试的记录.
CNN 成功的关键在于其卷积操作能够很好地从基于规则域表示的数据中提取局部信息.然而,由于点云数据的不规则和无序性,使得卷积操作由于输入数据顺序的不稳定很难直接应用到点云数据上.
为了解决这个问题,PointCNN 提出了一种称为 X - 变换的方法.X - 变换是从输入点学习到的一组权值 X,这组权值可以对各点相关联的特征进行重新加权和排列. X - 变换可以实现 "随机应变",即当输入点的顺序变化时, X 能够相应地变化,使加权和排列之后的特征近似不变.输入特征在经过 X - 变换的处理之后能够变成与输入点顺序无关同时也编码了输入点形状信息的归一化的特征.在经过 X - 变换之后的特征上进行卷积能够极大提高卷积核的利用率, 从而大大提高卷积操作在无序数据上提取特征的能力.
以下内容是对 arxv 文章的翻译,原文作者为:李扬彦,卜瑞,孙铭超,陈宝权.
摘要:将针对规则域数据的 CNN 推广到可以处理点云数据
我们提出了一个简单而通用的点云特征学习框架. CNN 成功的关键是卷积算子,它能够利用网格形式密集表示的数据中的局部相关性 (如图像). 然而,点云是不规则的,无序的,因此点对点的特征与点的直接卷积将导致形状信息丢失,还会因为输入点顺序不一致而产生不同的输出. 为了解决这些问题,我们尝试从输入点学习 X - 变换,然后使用它来加权与排列输入点的特征.这种操作可以把输入点的形状信息编码到特征中,同时把输入特征的顺序归一化到某种潜在的一致的模式. 这种方法是将典型的针对规则域数据的 CNN 推广到能够处理点云这种非规则无序数据的一种尝试,因此被称为 PointCNN. 实验表明,PointCNN 在多种具有挑战性的基准数据集和任务上达到了与最先进方法相当或更好的性能.
背景:认识点云,CNN
点云 (PointCloud)
点云是一组点的集合,常用来表示自身维度比背景空间纬度低的数据(比如空间中的曲面等).由于数据较为稀疏,直接采用密集体素的方式,不仅数据量大,而且数据中包含过多的冗余信息,不利于数据特征的提取.不仅如此,大量的 3D 传感器也采用点云的方式保存数据,数据来源非常广泛.
卷积神经网络 (CNN)
基于 CNN 的一系列方法在图像识别中已经取得了巨大的成功,其关键原因就是 CNN 能够很好地捕捉数据的空间局部特征.
数学上来讲,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 提供了一个能够高效地从点云中提取特征的方法.
PointCNN:能够高效地从点云中提取特征
PointCNN
PointCNN 提出了一个称为 X - 变换的方法来解决在点云上卷积难以有效实现卷积的问题.
由于卷积操作本身的有序性,对于上图中 ii,iii,iv 三组点,如果把它们以 i 的方式进行卷积操作,会得到以下三个输出.
对于 ii 和 iii,由于四个点的空间位置不一样,我们希望进行卷积后产生的输出也会不一样.但实际上,直接进行卷积操作时 ii 和 iii 都被映射到了同样的位置,因此产生的输出也完全一样,这是不合理的.另一方面,对于 iii 和 iv,其数据完全一致,但由于顺序不一样,进行卷积后结果也通常会不一样,这也不是我们所期望的.因此,直接对无序的点云数据进行卷积并不高效.
由于点云的无序性特点,PointCNN 期望能够得到一种变换,使得
中,ii 和 iii 不同,且 iii 和 iv 相同.
PointCNN 采用了学习权重的方式,这里 Xs 是一个 4x4 的矩阵,由 a,b,c,d 四个点的坐标经过 MLP 得到,即 Xs=MLP(a,b,c,d).MLP 由网络学习得到.
通过学习,我们期望得到的矩阵能够满足 ,且,其中 是和 (a,b,c,d) 与 (c,a,b,d) 对应的列变换矩阵,即,使得
事实上,在实验中,学习到的 MLP 并不能完全满足上面理想情况下的要求.尽管如此,PointCNN 还是得到了良好的效果.
细节上,PointCNN 采用 KNN 选取临近点进行卷积; 将点的坐标信息进行处理添加到特征中作为其一部分;通过随机采样等方式降低数据空间分辨率.
实验结果
classification accuracy on ModelNet 40 (91.7%)
classification accuracy on ScanNet (77.9%)
segmentation part averaged IoU on ShapeNet Parts (86.13%)
segmentation mean IoU on S3DIS (62.74%)
per voxel labelling accuracy on ScanNet (85.1%)
特别值得一提的是,在 ModelNet40 的分类任务上,在只使用 32 个点作为输入的极端压力测试下,PointCNN 仍然能够取得 84.4% 的准确率,这一结果大幅领先目前已知的其他方法.在这种极端压力测试下,PointCNN 的计算量非常小,能够在 GTX 1080 GPU 上以每帧 0.3 毫秒的速度进行点云识别.自动驾驶中获取的点云往往非常稀疏,同时对实时性要求极高.该压力测试显示 PointCNN 有应用于自动驾驶的巨大潜力.
未来与未来工作展望
X - 变换的进一步理解
虽然 X-Conv 是被设计用来进行在三维点云上进行卷积,并且它在实验中展示了最新水准的结果,但是我们对它背后的理论方法仍然知之甚少,尤其是当它被用于深层神经网络上时,我们的理解还十分的有限.
PointCNN 采取了最简单也是最直接的方式来学习 X-Conv--用 MLP 学习变换矩阵.虽然一般的矩阵可以用来实现权值和顺序变换,但是这种方法是否是实现目标的最简形式仍然是不得而知的.实际上,相比于此前的其他方法,PointCNN 的参数更少,但还是在部分小规模的数据上表现出了过拟合的问题.X-Conv 在带来强大的表征能力的同时,也可能携带了大量额外的自由度,能否找到一种比一般的矩阵更加精炼的可以学习的表达形式,或许是 X-Conv 发展的方向.
PointCNN 对形状分析的应用
文章中说明了 PointCNN 对分类和图像分割问题的特征学习的有效性.我们认为 PointCNN 学习的特征可以在多种形状分析任务中超过手工设计的特征,例如关键点匹配,形状检索等任务.
全卷积的 PointCNN
在原本的 CNN 中运用了全卷积的思想来处理不同大小的图像,PointCNN 也应该实现全卷积的方法来处理不同尺度的点云.这篇论文使用了对全卷积方法的几乎最暴力的近似方法,在之后的扩展中,需要更有效的点云索引和内存管理来实现全卷积的 X-Conv 操作.
PointCNN 还是 CNN?
由于 X-Conv 是卷积的一种推广,因此,对于相同的数据(但是表达形式不同),PointCNN 应该至少不比 CNN 要差,甚至要更好.为了证明这一点,论文中将 PointCNN 运用到了 MNIST 和 CIFAR10 的点云形式上.在 MNIST 数据集上,PointCNN 达到了所有比较的方法中的最好的效果,而对于没有太多形状信息的 CIFAR10 数据集上,PointCNN 从 RGB 特征的空间局部相关性中提取特征并且达到了还算不错的效果,但它和基于图片的 CNN 差距还很大.
从 CIFAR10 实验来看.在一般的图像上, CNN 仍然是比 PointCNN 更好的选择.而 PointCNN 的优势在数据越稀疏的时候越能展现出来.目前并没有一个科学的准则判断是应该将数据表达为规则形式进而应用 CNN,还是应该将数据表达为点云形式进而应用 PointCNN.有意思的是,部分密集的数据也许可以被稀疏的表达,例如视频通常被表现为密集的三维数据,但是通常在视频帧里面只有少量的像素是逐帧变化的. PointCNN 加上稀疏但不规则表达的视频数据也是一个有趣的方向.
PointCNN 和 CNN 的结合
由于三维获取技术的高速发展,越来越多的采集的数据同时具有三维点云和图像,在这种情况下独立运用 PointCNN 和 CNN 分别来处理点云和图像数据,再将结果合并用于最后的推理也许是一种方法,但或许可以在更早期将这两种数据融合起来处理.
来源: https://yq.aliyun.com/articles/420635