山东大学提出 PointCNN:让 CNN 更好地处理不规则和无序的点云数据

卷积神经网络的成功自不必多言,但 CNN 在点云上的应用还存在诸多短板。山东大学近日公布的一项研究提出的 PointCNN 可以让 CNN 在点云数据的处理上取得更好的表现。机器之心对该研究论文进行了简单的编译介绍。


空间上的局部相关性(spatially-local correlation)是各种类型的数据都具有的一种性质,并且与数据的表示方法无关。对于可以表示在图像等规则域中的数据,卷积算子已经证明在探索这种相关性上十分有效,并且也是 CNN 在多种任务上取得成功的关键 [LeCun et al. 2015]。


对于本身维度就比环境空间少的数据(比如 3D 空间中的面或 2D 空间中的线)而言,如果将这些数据表示为环境空间中的点云(point cloud)而非整个空间的一个密集网格,那么效果还会更好。不仅如此,3D 点云可能也是 3D 传感器最常见的原始输出,正变得越来越容易获取。但是,点云不规则且无序,会使得卷积算子难以利用数据中的空间局部相关性。

 


图 1:来自规则网格(i)和点云(ii、iii 和 iv)的卷积输入。在规则网格中,每个网格单元都与一个特征关联。在点云中,点是从局部近邻中采样得到的;类比于规则网格中的局部块,每个点关联了一个特征、一个顺序索引以及它的坐标。但是,缺乏规则网格使得我们难以将这些点按规范顺序排列


我们在图 1 中说明了在点云上应用卷积的问题和难点。假设在图 1 中所有情况下的 C 维输入特征的无序集合是一样的,并且我们有一个形状为 4×C 的卷积核。在 (i) 中,通过遵循规则的网格结构给出的规范顺序,在局部的 2×2 块中的特征可以被投射进形状为 4×C 的中;然后和 K 进行卷积,得到,其中 Conv(·,·) 就是在元素层面进行求积后再求和。在 (ii)、(iii) 和 (iv) 中,这些点是从局部近邻中采样得到的,因此可以是任意顺序。通过遵循如图给出的顺序,输入特征集 F 可以被投射进中(ii 和 iii 的情况)和中(iv 的情况)。基于此,如果直接应用卷积算子,那么这三种情况的输出特征可以按如下方式计算:

 



注意,在所有情况下都成立,在大多数情况下都成立。现在,可以清楚看到:直接进行卷积会导致形状信息丢失(即),也会因为顺序而不同(即)。


在这篇论文中,我们提出使用多层感知器 [Rumelhart et al. 1986] 根据 K 个输入点 (p1,p2, ...,pK) 的坐标来学习 K×K 的 X 变换,即 X=MLP(p1,p2, ...,pK),然后将其用于对输入特征同时进行加权和重新排列,最后再将典型的卷积应用在这个变换后的特征上。我们将这个过程称为 X-Conv,这是我们的 PointCNN 的基本构建模块。图 1 中 ii、iii 和 iv 的 X-Conv 可以描述为:

 



其中 X 是 4×4 的矩阵,因为在图 1 中 K=4。注意,因为 Xii 和 Xiii 是从不同形状的点学习到的,因此它们相应的给输入特征加权的方式可能不同,所以。对于 Xiii 和 Xiv,如果学到的它们满足(其中Π是将 (c,a,b,d) 重新排列成 (a,b,c,d) 后所得到的重排矩阵),那么可以实现


根据图 1 给出的案例分析,可以清楚看到理想的 X 变换 X-Conv 有能力考虑到点的形状,同时又不依赖于点的顺序。在实际情况下,我们发现学习到的 X 变换远不理想,尤其是在重新排列的等价方面。尽管如此,使用 X-Conv 构建的 PointCNN 仍然显著优于直接在点云上应用典型的卷积,并且也可媲美或胜过之前最佳的用于处理点云数据的非卷积神经网络,比如 PointNet++ [Qi et al. 2017b]。

 


图 2:来自规则网格(上)和点云(下)的分层卷积。在规则网格中,卷积算子是被递归式地应用到局部网格块上,这通常会降低网格的空间分辨率(4×4→3×3→2×2),同时还会增加它们的通道数量(图中用点的大小表示)。类似地,在点云中,X-Conv 被递归式地用于将来自近邻的信息「投射」或「聚合」成越来越少的代表点(9→5→2),但每一个点都具有更加丰富的信息(同样用点的大小表示)。


PointCNN


卷积算子的分层应用对 CNN 学习分层表征而言至关重要。PointCNN 具有同样的设计,并且将其泛化用在了点云上。在这一节,我们首先介绍 PointCNN 中的分层卷积,并与图像 CNN 进行了类比;然后我们会详细解释核心的 X-Conv 算子;最后我们还会给出用于分类和分割任务的 PointCNN 架构。

 


算法 1:X-Conv 算子 



 图 3:将点坐标转换为特征的过程。代表点的近邻点被变换成代表点的局部坐标系(a 和 b)。然后每个点的局部坐标都被单独提取到特征中,再与相关联的特征结合起来(c)。

 


图 4:用于分类(a 和 b)和分割(c)的 PointCNN 架构,其中 N 和 C 分别表示输出代表点的数量和特征维度,K 是每个代表点的近邻点的数量,D 是 X-Conv 的扩张率(dilation rate)。


实验

 


表 1:在 ModelNet40 [Wu et al. 2015b] 和 ScanNet [Dai et al. 2017] 上的分类准确度(%)比较。

 


表 2:分割表现比较。在 ShapeNet Parts [Yi et al. 2016] 上比较的是部分平均 IoU(%),在 S3DIS [Armeni et al. 2016] 上比较的是均值 IoU(%),在 ScanNet [Dai et al. 2017] 上比较的是每体素的准确度(%)。

 


表 3:在 Tu-Berlin [Eitz et al. 2012] 和 Quick Draw [Ha and Eck 2017] 分类上的准确度(%)比较。

 


表 5:在 MNIST 和 CIFAR 10 上的分类准确度。

 


图 8:PointCNN model zoo,其中(a)用于 ModelNet40 和 ScanNet 分类,(b)用于 TU-Berlin 素描分类,(c)用于 Quick Draw 素描分类,(d)用于 ScanNet 和 S3DIS 分割,(e)用于 ShapeNet Parts 分割。


论文:PointCNN

 



论文地址:https://arxiv.org/abs/1801.07791


摘要:我们为基于点云的特征学习提出了一种简单且通用的框架。CNN 成功的关键是要能利用数据中以网格形式密集表示的空间上的局部相关性(比如图像)。但是,点云是不规则和无序的,因此在这些点关联的特征上直接求核的卷积会导致形状信息的丢失,同时还会因顺序不同而不同。为了解决这些问题,我们提出根据输入点学习一种 X 变换,然后将其用于同时加权与点关联的输入特征和将它们重新排列成潜在隐含的规范顺序,之后再在元素上应用求积和求和运算。我们提出的方法是典型 CNN 向基于点云的特征学习的泛化,因此我们将其称为 PointCNN。实验表明,PointCNN 能在多种有挑战性的基准数据集和任务上实现与之前最佳方法媲美或更好的表现。

理论理论论文卷积神经网络PointCNN
1