SO-Net:点云分析的自组织网络

SO-Net: Self-Organizing Network for Point Cloud Analysis

Jiaxin Li, Ben M. Chen, Gim Hee Lee
National University of Singapore

Abstract

本文提出SO-Net,一种用于无序点云深度学习的置换不变网络结构。 SO-Net通过构建自组织映射(SOM)来模拟点云的空间分布。基于SOM,SO-Net对单个点和SOM节点进行分层特征提取,最终用单个特征向量来表示输入点云。网络的感受野可以通过进行点对节点的kNN(k近邻搜索)系统地调整。在识别点云重建,分类,对象部分分割和形状检索等任务中,我们提出的网络表现出的性能与最先进的方法相似或更好。另外,由于所提出的架构的并行性和简单性,所以训练速度比现有的点云识别网络快得多。我们的代码可在项目网站上找到。https://github.com/lijx10/SO-Net

1. Introduction

经过多年的深入研究,卷积神经网络(ConvNets)现在成为许多最先进的计算机视觉算法的基础,例如,图像识别,对象分类和语义分割等。尽管ConvNets在二维图像方面取得了巨大成功,但在3D数据上使用深度学习仍然是一个具有挑战性的问题。虽然3D卷积网络(3D ConvNets)可以应用于光栅化为体素表示的3D数据,但由于大多数3D数据的稀疏性,大多数计算都是冗余的。此外,不成熟的3D ConvNets的性能很大程度上受到分辨率的损失和呈指数级增长的计算成本限制。同时,深度传感器的加速发展以及自动驾驶汽车等应用的巨大需求使得高效处理3D数据成为当务之急。包括ModelNet [37],ShapeNet [8],2D-3D-S [2]在内的3D数据集的最新可用性增加了3D数据研究的普及。

为了避免简单体素化的缺点,一种选择是明确利用体素网格的稀疏性[35,21,11]。虽然稀疏设计允许更高的网格分辨率,但其诱导的复杂性和局限性使其难以实现大规模或灵活的深度网络[30]。另一种选择是利用可伸缩索引结构,包括kd-tree [4],八叉树[25]。基于这些结构的深度网络显示出令人鼓舞的结果。与基于树的结构相比,点云表示在数学上更简洁和直接,因为每个点仅由3维向量表示。此外,借助运动结构(SfM)算法,可以使用流行的传感器(如RGB-D相机,LiDAR或常规相机)轻松获取点云。尽管点云被广泛使用,也能够轻松获取,但点云识别任务仍然具有挑战性。传统的深度学习方法如ConvNets不适用,因为点云在空间上是不规则的,并且可以任意排列。由于这些困难,很少有人尝试将深度学习技术直接应用到点云,直到最近的PointNet [26]。

​尽管作为将深度学习应用于点云的先驱,PointNet仍无法充分处理局部特征提取。后来PointNet++[28]被提出来通过构建一个类似金字塔的特征聚合方案来解决这个问题,但[28]中的点采样和分组策略并没有揭示输入点云的空间分布。Kd-Net[18]从输入点云构建kd树,然后进行从树叶到根节点的分层特征提取。Kd-Net明确地利用点云的空间分布,但是仍然存在诸如感受野不重叠等限制。

在本文中,我们提出SO-Net来解决现有基于点云的网络中的问题。具体而言,建立SOM [19]来模拟输入点云的空间分布,这使得在单独的点和SOM节点上进行分层特征提取成为可能。最终,输入点云可以被压缩成单个特征向量。在特征聚合过程中,通过在SOM上执行点到节点的k-近邻(kNN)搜索来控制感受野重叠。理论上,SO-Net通过特殊的网络设计以及我们的置换不变SOM训练来保证对输入点的顺序保持不变。我们的SO-Net的应用包括基于点云的分类,自动编码器重建,零件分割和形状检索,如图1所示。
图1
本文的主要贡献如下:

  • 我们设计了置换不变网络 - 显式利用点云空间分布的SO-Net。

  • 通过在SOM上进行点到节点的kNN搜索,可以系统地调整感受野重叠来执行分层特征提取。

  • 我们提出一种点云自动编码器作为预训练,以改善各种任务中的网络性能。

  • 与最先进的方法相比,在各种应用中获得相似或更好的性能,并且训练速度显著加快。

用体素格表示3D形状是直观的,因为它们与3D ConvNets兼容。 [24,37]使用二进制变量来指示体素是否被占用或释放。在[27]中提出了一些增强 - 通过预测来自部分子体积的标签来减轻过拟合,朝向池化层(Orientation pooling)被设计用来将具有各种朝向的形状融合,并且使用各向异性探测内核(Anisotropic probing kernels)将3D形状投影到2D特征中。 Brock等人[6]提出将基于体素的变分自编码器(Variational autoencoders)与目标识别网络相结合。虽然这很简单,但是体素化能够实现最先进的性能。不幸的是,它遭受分辨率损失和呈指数增长的计算成本的困扰。稀疏方法[35,21,11]被提出来提高效率。然而,这些方法仍然依赖于统一的体素网格,并且经历了诸如缺乏并行化能力等各种限制[21]。 光谱卷积网络 [23,5,7]被研究用于非欧几里德几何,但它们大多局限于流形网格。

将3D数据渲染为多视图2D图像会将3D问题转化为可以使用标准2D ConvNets解决的2D问题。视图合并图层(View-pooling)[33]被设计用来聚合多个渲染图像的特征。 Qi等人[27]用多分辨率球体渲染将传统3D替换为2D渲染。 Wang等人[34]进一步提出了主导集合池化(dominant set pooling)并利用颜色和表面法线等特征。尽管与3D ConvNets相比,效率有所提高,但多视图策略仍然存在信息丢失[18],并且不容易扩展到像点标记这样的任务。

诸如kd-tree和八叉树的索引技术与均匀网格相比是可缩放的,并且它们的规则结构适用于深度学习技术。为了在八叉树上进行卷积和合并操作,Riegler等人[30]通过将几个小八叉树放入一个规则网格来建立一个混合网格八叉树结构。使用位串表示法,混合结构中的单个体素完全由其位索引确定。因此,可以使用简单的算术来访问父节点或子节点。同样,王等人。 [36]引入一个标签缓冲区来寻找不同深度的八分之一对应关系。 Klokov等人提出Kd-Net [18]计算预建平衡kd-tree的每个节点的向量表示。按照自底向上的方式,通过对其两个子特征向量应用非线性和仿射变换来计算父特征向量。

PointNet [26]是直接使用点云的先驱者。它使用对通道的最大池化将每点的特征聚合成一个全局描述向量。 PointNet对于输入点排序是不变的,因为每点的特征提取是相同的,并且最大池化操作是置换不变的。与[26]几乎同时提出了一个类似的置换等变层[29],主要区别在于置换等变层最大归一化(Max-normalized)的。尽管最大化池的想法被证明是有效的,但它缺乏像ConvNet一样的分层特征聚合。 PointNet ++ [28]后来被设计成将点分成不同层级的多个组,以便可以从多个层级中提取特征。

与基于八叉树或kd-tree的网络不同,PointNet++并没有对空间分布进行显式地建模。取而代之的是启发式分组和抽样方案,例如多尺度和多分辨率分组被设计来结合多个尺度的特征。在本文中,我们提出了我们的SO-Net,其在分层特征提取期间明确地模拟输入点云的空间分布。另外,可调节的接受场重叠能带来更有效的局部特征聚合。

3. Self-Organizing Network

网络的输入是一个点集P={piR3,i=0,...,N1},稍后将会被处理成如3.1节中的 M个SOM节点 S={sjR3,j=0,...,M1}。同样的,在3.2节中阐述的编码器中,单个点特征被最大池化到M个节点特征中,这些M个节点特征可以被进一步聚合成全局特征向量。我们的SO-Net可以应用于各种计算机视觉任务,包括分类,逐点分割(3.3节)和点云重建(3.4节)。

3.1. Permutation Invariant SOM

SOM用来生成低维的输入点云的表达,在这个例子中是二维的。我们构造一个大小为m×m的SOM,其中m[5,11],即节点总数M的取值从25到121。 SOM是用无监督的竞争学习来训练的,而不是在深度网络中常用的反向传播。然而,基本的SOM训练方案不是置换不变的原因有两个:训练结果与初始节点有很大关系,并且每个样本更新规则取决于输入点的顺序。
图2
第一个问题可以通过为任何给定的SOM配置分配固定的初始节点来解决。由于输入点云被归一化到[1,1],如图2(a)所示。我们通过将节点均匀地分散在一个单位球内来产生一个合适的初始猜测。简单的方法,比如说势场,可以用来构建这样一个统一的初步猜测。为了解决第二个问题,我们不是每一点更新一次节点,而是在累积所有点的影响后执行一次更新。对给定的点云,批处理更新过程是确定的[19],这使得置换不变。批更新的另一个优点是它可以实现在GPU上高效的矩阵操作。初始化和批训练算法的细节可以在我们的补充材料中找到。

3.2. Encoder Architecture

如图3所示,SOM是分层特征提取的指导,并且是系统地调整感受野重叠的工具。给定SOM的输出,对于每个点,pi我们在SOM 节点集 S上查找k近邻(kNN),也就是说 点到节点 kNN 搜索:

sik=kNN(Pi|sj,j=0,...,M1)

每个pi 随后通过和它的关联节点集si的k个点相减被归一化为k个点。

pik=pisik

得到的kN归一化点之后进入一系列全连接层中以提取单个点特征。在每个层级l上都有一个共享的全连接层,其中ϕ是非线性的激活函数。第l层级的输出是:

pikl+1=ϕ(Wlpikl+bl)

第一层级的输入pik0可以是简单的归一化点坐标pik,或者是坐标和其他特征(如表面法向量)的组合。

在上述kNN关联之后,节点的特征提取开始于将kN点特征最大池化为M个节点特征 。我们应用对通道(channel-wise)的最大池化从与同一节点sj关联的点的特征(point features)中获取节点特征sj0

sj0=max({pikl,sik=sj})

由于每个点通过基于点对节点的kNN搜索而归一化为k个坐标(也就是k个d维坐标,d是坐标维度),这能够保证M个最大池化操作的感受野重叠。具体而言,M个节点包含了kN个归一化点。 k是一个控制重叠的可调参数。

上述最大池操作产生的每个节点特征进一步与相关联的SOM节点相连接。M个增强的节点特征通过一系列共享层中,然后聚合成一个表示输入点云的特征向量。

随着点云分离和组装的特征聚合 SOM特征提取和节点级联背后有一个直观的原因。由于第一层的输入点用M个SOM节点归一化,所以它们实际上被分成M个迷你点云,如图3所示。每个迷你点云在坐标中包含少量点,其原点是相关联的SOM节点。对于大小为2048的点云,M = 64,k =3,一个典型的迷你点云可以由在一个x,y,z[0.3,0.3]的空间中的90个点组成。迷你点云中点的数量和覆盖范围由SOM的训练和kNN搜索确定,也就是Mk

第一批完全连接的层可以被看作是一个小型的PointNet,用于编码这些迷你点云。SOM节点的连接起着将这些小型点云组合回原始点云的作用。因为SOM显式地揭示了输入点云的空间分布,所以我们的分离和组装过程比PointNet++中使用的Grouping策略更有效率[28],如第4节所示。
图3
置换不变性 SO-Net中有两个级别的特征聚合,从点特征到节点特征,从节点特征到全局特征向量。第一阶段将共享的PointNet应用于M个迷你点云。这些M个小点云的生成与输入点的顺序无关,因为在第2节中已经提到的SOM训练。3.1节和图3中的kNN搜索是确定的。 PointNet[26]也是置换不变的。因此,节点特征和全局特征向量从理论上来看都是置换不变量。

次优SOM训练的影响 存在SOM的训练收敛到局部极小值的可能,并且存在输入点云覆盖范围之外的孤立节点。在某些情况下,在点到节点kNN搜索的时候没有点与孤立节点相关联,那么我们将相应的节点特征设置为零。这种现象非常普遍,因为初始节点均匀地分散在一个单位球中,而输入点云可能只占用一个小角落。尽管存在次优的SOM,但我们所提出的SO-Net在如对象分类等应用中仍然超过了最先进的方法。无效节点特征的影响会在第4节通过向SOM结果中加入噪声来做进一步研究。

使用ConvNets进行研究 有趣的是,节点特征提取步骤生成了一个类似于图像的特征矩阵,它对输入点的顺序是不变的。这使得应用标准ConvNets来进一步融合节点特征和增加感受范围成为可能。然而,在实验中,当我们用二维卷积和池化替换第二批全连接层后分类精确度略有下降,但是调查这一现象的原因和解决方案仍是一个有希望的方向。

3.3. Extension to Segmentation

拓展到逐点标注,例如分割任务,需要整合局部和全局特征。整合过程与3.2节中编码器的逆转操作类似。全局特征向量可以直接扩展与kN归一化点(译者注:也就是之前将每个point 与其k近邻node相减而归一化得到的k个坐标)连接。在编码过程中,M个节点特征添加到与它们相关联的点(关联的意思参见3.2节)。聚合产生结合了 点,节点和全局特征的kN特征,这可以进一步通过一系列的共享的全连接层。

要产生N个每点分类的分数,因为感受野存在重叠,kN特征实际上是冗余的,平均或最大池化是用于融合冗余信息的方法。此外,与深度神经网络类似,早,中或晚期融合可能表现出不同的表现。通过一系列实验,我们发现与其他融合方法相比,平均池化与中期融合结合最有效的。

3.4. Autoencoder

在本节中,我们设计一个解码器网络来从编码的全局特征向量中恢复输入点云。一个简单的设计是在特征向量之上堆叠一系列全连接层,然后生成长度为3N^的输出向量,其可以被重塑成N^×3。但是,如果N^足够大,内存和计算占用空间将过大。
图4
我们设计了一个具有两个类似[13]的并行分支的网络,即如图4所示的一个全连接分支和一个卷积分支,而不是通过全连接层生成点云[1]。全连接分支通过重塑3N^1个元素的输出来预测N^1个点。该分支具有高度的灵活性,因为每个坐标都是独立预测的。另一方面,卷积分支预测大小为3×H×W的特征矩阵,即N^2=H×W个点。由于卷积层的空间连续性,预测的N^2个点可能表现出更多的几何一致性。卷积分支的另一个优点是与全连接分支相比,它需要的参数要少得多。

与许多深度估计网络中的常见做法类似[14,15],卷积分支被设计为金字塔式的上卷积(upconv,up-convolution )链。每个upconv模块不是由反卷积层(deconvolution)组成,而是由最近邻上采样层(nearest neighbor upsampling layer )和3×3卷积层组成。根据我们的实验,在点云自动编码器中这种设计比反卷积层更有效。另外,中间upconv的结果被转换为粗糙的重建点云,并与输入进行比较。从upconv产物到点云的转换是一个2层1×1的卷积栈,以为每个恢复的点提供更多的灵活性。从粗糙到精细的策略提升了重建的表现。

为了监督重建过程,损失函数应该是可微的,能并行计算,并对异常值鲁棒。在这里我们使用倒角损失(Chamfer loss)(–等式5):

d(Ps,Pt)=1|Ps|xPtminyPt||xy||2

+1|Pt|yPtminxPs||xy||2

其中Ps,PtR3分别代表输入点云和恢复点云。PsPt中的点数不一定相同。直观地说,对于Ps中的每个点,等式(5)计算其到Pt中最近邻的距离,反过来,对于Pt中的点也是一样的。

4. Experiments

在这一节,我们从三个不同应用来评估SO-Net的表现,也就是 点云自动编码器,目标分类和物体分割。特别是,自动编码器中训练出来的编码器可以作为其他两个任务的预训练模型。在所有实验中(除了二维的MNIST分类)编码器的结构和SOM的配置保持一致,没有特别地调整。

4.1. Implementation Detail

我们的网络是在NVIDIA GTX1080Ti上使用PyTorch实现的。在大多数实验中,我们选择大小为8×8,k = 3的SOM。我们使用Adam [17]优化网络,初始学习率为0.001,batch size 为8。对于以5000或更多点作为输入的实验,学习率每20个epoch 减少一半,否则每40个epoch做一次学习率衰减。通常,网络在学习率下降约5次后收敛。每一层都应用Batch-normalization和ReLU。

4.2. Datasets

作为2D示例,4.4节中我们采用了Sec中的MNIST数据集[20] 。对于每个数字,从非零像素中采样512个二维点以用作我们的输入。

ModelNet[37]的两个变体,即ModelNet10和ModelNet40,被用作4.3节中自动编码器任务和4.4节中的分类任务的基准。

ModelNet40包含来自40个类别的13,834个对象,其中9,843个对象属于训练集,另外3,991个对象用于测试。同样,ModelNet10分为2,468个训练样本和909个测试样本。原始ModelNet提供由顶点和面所代表的CAD模型。通过均匀地从模型中采样来生成点云。为了公平比较,我们使用来自[28]的准备好的ModelNet10 / 40数据集,其中每个模型由10,000个点表示。可以从一万个点采样各种尺寸的点云,例如2,048或5,000用于不同的实验。

使用ShapeNetPart数据集[38]演示了对象部分分割。它包含16个类别中的16,881个对象,表示为点云。每个对象由2到6个部分组成,数据集中总共有50个部分。我们采样固定大小的点云,例如在我们的实验中是1,024。

Data augmentation 输入点云在单位立方体内被归一化为零均值。在训练阶段应用以下数据增强:(a)将高斯噪声N(0;,0.01)添加到点坐标和表面法向量(如果适用)。 (b)将高斯噪声N(0,0.04)添加到SOM节点。 (c)点云,表面法向量(如果采用的话)和SOM节点通过从均匀分布U(0.8,1.2)采样的因子来缩放。进一步增加如随机移位或旋转不会改善结果。

4.3. Point Cloud Autoencoder

图5

在本节中,我们证明了可以从SO-Net编码的全局特征向量重建点云,例如,一个长度为1024的向量。倒角距离(等式5)中的最近邻搜索是用Facebook的faiss [16]进行的。 解码器有两种不同的配置来生成不同尺寸的点云。第一种配置从卷积分支生成64×64个点,从全连接分支生成512个点。另一种通过移除图4的最后一个upconv模块分别产生32×32个点和256个点。

由于对该主题的研究很少,因此很难为点云自动编码器任务提供定量比较。最相关的工作是点集生成网络[13]和点云生成模型[1]。我们重建的ShapeNetPart点云的示例在图5中可视化,其中从卷积分支恢复的1024个点用红色表示,而另外256个点用绿色表示。整体的测试倒角距离(公式5)为0.033。类似于[13]中的结果,卷积分支恢复了对象的主体,而更灵活的全连接分支则关注于诸如桌子的腿之类的细节。然而,许多细节都丢失了。例如,重建的耳机是模糊的。这可能是因为编码器仍然不够强大,无法捕获细粒度结构。

尽管重建不完善,自动编码器通过提供预先训练的编码器增强了SO-Net在其他任务中的性能,参见4.4节和4.5节。更多结果在补充材料中可视化。

译者注:后续的分类和分割实验由于与本人所做工作并无密切联系,篇幅又较大,在这里就不再翻译,但是可以看出效果应该是当前点云深度学习中最好的,大家有兴趣可以看论文原文了解细节。

5. Conclusion

在本文中,我们提出了新颖的SO-Net,它通过显式建模输入点的空间分布并系统地调整感受野重叠来执行点云的分层特征提取。在一系列包括点云重建,目标分类和目标部分分割的实验中,我们的网络实现了有竞争力的表现。特别是,我们在点云分类和形状检索方面超越了最先进的深度学习方法,并且训练速度显着加快。由于SOM保留了输入空间的拓扑性质,并且我们的SO-Net将点云转换为特征矩阵,所以一个有前景的未来方向是应用传统的ConvNets或基于图形的ConvNets来实现更深层次的特征聚合。


论文原文链接:http://openaccess.thecvf.com/content_cvpr_2018/html/Li_SO-Net_Self-Organizing_Network_CVPR_2018_paper.html
上述翻译及解析 由于本人知识水平有限,难免有些错漏,还望各位在评论指出,必定及时改正。

版权声明:作者:@Elliott Zheng 本文为作者原创,转载请注明出处 https://blog.csdn.net/elliottzheng/article/details/80568154

没有更多推荐了,返回首页