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节点进行分层特征提取,最终用单个特征向量来表示输入点云。网络的感受野可以通过进行点对节点的
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-近邻(
我们设计了置换不变网络 - 显式利用点云空间分布的SO-Net。
通过在SOM上进行点到节点的
搜索,可以系统地调整感受野重叠来执行分层特征提取。我们提出一种点云自动编码器作为预训练,以改善各种任务中的网络性能。
与最先进的方法相比,在各种应用中获得相似或更好的性能,并且训练速度显著加快。
2. Related Work
用体素格表示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={p_i \in R^3,i=0,...,N-1}$,稍后将会被处理成如3.1节中的
3.1. Permutation Invariant SOM
SOM用来生成低维的输入点云的表达,在这个例子中是二维的。我们构造一个大小为
3.2. Encoder Architecture
如图3所示,SOM是分层特征提取的指导,并且是系统地调整感受野重叠的工具。给定SOM的输出,对于每个点,
每个
得到的
第一层级的输入
在上述
由于每个点通过基于点对节点的
上述最大池操作产生的每个节点特征进一步与相关联的SOM节点相连接。
随着点云分离和组装的特征聚合 SOM特征提取和节点级联背后有一个直观的原因。由于第一层的输入点用
第一批完全连接的层可以被看作是一个小型的PointNet,用于编码这些迷你点云。SOM节点的连接起着将这些小型点云组合回原始点云的作用。因为SOM显式地揭示了输入点云的空间分布,所以我们的分离和组装过程比PointNet++中使用的Grouping策略更有效率[28],如第4节所示。
置换不变性 SO-Net中有两个级别的特征聚合,从点特征到节点特征,从节点特征到全局特征向量。第一阶段将共享的PointNet应用于M个迷你点云。这些
次优SOM训练的影响 存在SOM的训练收敛到局部极小值的可能,并且存在输入点云覆盖范围之外的孤立节点。**在某些情况下,在点到节点
使用ConvNets进行研究 有趣的是,节点特征提取步骤生成了一个类似于图像的特征矩阵,它对输入点的顺序是不变的。这使得应用标准ConvNets来进一步融合节点特征和增加感受范围成为可能。然而,在实验中,当我们用二维卷积和池化替换第二批全连接层后分类精确度略有下降,但是调查这一现象的原因和解决方案仍是一个有希望的方向。
3.3. Extension to Segmentation
拓展到逐点标注,例如分割任务,需要整合局部和全局特征。整合过程与3.2节中编码器的逆转操作类似。全局特征向量可以直接扩展与**
要产生N个每点分类的分数,因为感受野存在重叠,
3.4. Autoencoder
在本节中,我们设计一个解码器网络来从编码的全局特征向量中恢复输入点云。一个简单的设计是在特征向量之上堆叠一系列全连接层,然后生成长度为
与许多深度估计网络中的常见做法类似[14,15],卷积分支被设计为金字塔式的上卷积(upconv,up-convolution )链。每个upconv模块不是由反卷积层(deconvolution)组成,而是由最近邻上采样层(nearest neighbor upsampling layer )和
为了监督重建过程,损失函数应该是可微的,能并行计算,并对异常值鲁棒。在这里我们使用倒角损失(Chamfer loss)(--等式5):
其中
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)将高斯噪声
4.3. Point Cloud Autoencoder
在本节中,我们证明了可以从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