1. 引言
随着自动驾驶和机器人技术的快速发展,准确、快速的感知系统也越发凸显重要。感知系统在自动驾驶以及机器人系统中是基础的一环,负责为后续的规划控制系统提供稳定可靠的感知结果,帮助其做出合理的决策。感知系统的性能直接影响自动驾驶系统或者机器人系统的安全性和功能性,因此,一个精准、快速的感知系统对于当前的自动驾驶和机器人而言是不可或缺的。自动驾驶系统和机器人系统通过布置在系统周围的传感器系统来实时地采集周围环境的数据,智能系统需要根据对当前环境的感知和理解结果做出最合理的决策,但是单纯的检测或者分类方法难以为智能系统提供对当前环境全面的感知和理解,而相比于检测,语义分割是像素级的,可以为智能系统提供一个全面、信息丰富、层次清晰且易于理解的语义环境,从而使得控制系统可以立足于这种全面、清晰的理解而做出合理的规划决策。
作为一种常用的3D数据的形式,点云是刻画现实世界目标物表面形状结构的点的集合,是机器认识和理解现实世界的重要基础,是一种通过激光雷达以及深度相机等主动传感器对现实世界进行扫描所获得的可以反映目标物表面特点的数据形式。相比于图像数据,点云有一些显著的特点:1) 三维表达、高密度、非结构化,点云是目标表面形状结构三维点的集合,由一个个散乱的三维点组成,每个点有准确的三维空间信息,并且其分布密度很高。点云的点与点之间没有明显的位置关系,导致对点云的组织管理、浏览查询等操作的时间度非常高;2) 点云的点具有一定的属性信息,由于可能由不同的设备进行采集,点云还具有一定的属性信息,例如激光雷达所采集的点云具有强度信息可以反映目标物的反射率等信息;3) 分布不均匀,由于目标物之间的遮挡,会导致遮挡目标难以被扫描到,从而导致被遮物体的数据缺失,形成数据空洞。另一方面由于与传感器的距离不同,点云的点的密度也有很大不同,距离传感器较近的密度较大,距离较远的密度较小。由于点云的这些特点,导致难以对其利用标准卷积进行特征提取,同时,由于不均匀的数据分布导致局部信息的提取是非常困难的事情。
点云的语义分割可以分为三种方法:基于投影的方法、基于体素的方法和基于点的方法。其主要的发展历程如图1所示。
基于投影的方法主要思想是在不同视角下将点云投影为2D的图像,然后利用成熟的图像分割方法来对图像进行分割,以综合多个视角下的图像分割结果来作为最终点云的分割结果。Lawin et al.首先在工作中应用了这种思想 [1] ,他们从多个机位角度将点云投影成图片,然后使用FCN网络来对图片进行分割 [2] 。Boulchetal使用多机位从点云中生成深度图像 [3] ,然后使用2D图像分割网络来对图像进行分割,对于图像的分割结果使用残差修正来进行融。
合得到最终点云的语义标签。为了保留更多的信息,Wu et al.在SqueezeNet [4] 和条件随机场的基础上提出了一个端到端的网络 [5] ,同时引入了SqueezeSegV2来解决域转换问题 [6] 。Molioto et al.提出了RangeNet++实现雷达点云的实时语义分割 [7] 。基于投影的方法没有充分利用到点云的几何结构信息并且这种基于数据转换的方法不可避免会带来信息损失和很高的内存和计算消耗。
基于体素的方法主要是通过对点云进行离散化操作,将点云中的点划分到一个个体素当中,然后使用3D标准卷积来进行特征的提取以及分类工作,最终,在同一个体素内的点被赋予相同的语义标签。Huang et al.首次将点云分割成体素集合 [8] ,然后使用3D全卷积来进行体素级别的语义分割。Tchapmi et al.提出了SEG Cloud [9] 来实现对点云全局连续的分割并且使用了3D-FCNN来进行体素的划分 [10] 。Meng et al.提出了基于核的方法来实现对点云局部特征的编码 [11] 。基于体素的方法可以处理不同尺度的点云,这得益于全卷积点网络分级的从点云中抽取不同层次的几何关系 [10] 。Dai et al.提出ScanComplete来完成3D补全任务和语义分割任务 [12] 。基于体素的方法在一定程度上保留了点云的几何结构信息,但是其存在离散噪声和信息损失,分辨率低有较大信息损失,分辨率高则会导致极高的内存和计算消耗。
基于点的方法则不对原始点云进行任何转换处理,其直接在原始的点云上进行处理。代表性的工作是PointNet [13] ,其首先提出了这种方法,创造性地使用最大池化解决点云的无序性问题,使用多层感知机(Multi-Layer Perceptron, MLP)来解决特征提取的问题,使得可以在不进行数据预处理的情况下进行语义分割工作。后续的基于点的工作大多也是基于这种思想 [14] [15] [16] [17] ,PointNet++在前人工作的基础上添加了用于局部信息提取的模块 [14] ,RandLA-Net设计了专用的局部信息编码块 [15] ,SCF-Net添加了坐标极化方法并且将点云的体积作为可靠的辅助信息来减弱点云的方向敏感性 [16] ,CGA-Net设计了用于处理边界点的模块以提升局部特征表达能力 [17] 。Jiang et al.将SIFT算子迁移至点云领域应用 [18] ,挖掘邻域信息。Engelmann et al.使用了KNN聚类对点云进行聚类分析 [19] 。Zhao et al.提出了PointWeb来提取局部区域点对之间的关系 [20] 。基于点的方法不需要对点云数据进行任何的转换工作,加速了整个处理流程,逐渐成为点云语义分割的重要方法。

Figure 1. Chronological overview of point cloud semantic segmentation
图1. 点云语义分割方法的发展历程
2. 方法
给定一个包含n个点
的点云P,每一个点的特征可以看作是3维的空间特征和d维的附加特征组成,因此其特征向量由其空间坐标(xi, yi, zi)和附加特征(例如RGB,深度信息等)组成。点云的标签集合表示为L。语义分割的目标是找到一个函数Ω,这个函数表示语义分割的整个过程,包含神经网络的所有层以及所有的参数以及设置等,以公式表示为:
(1)
2.1. 邻域信息编码
邻域信息编码模块是局部信息编码模块的核心,邻域信息编码模块负责抽取中心点的邻域特征,这一部分特征会和另外一部分特征拼接起来作为最终整个局部信息编码模块的输出。邻域信息编码模块主要基于点云的空间特征进行处理,它的结构如图2所示,处理过程表述如下:
1) 对于在中心点
周围一定范围内的每一个邻域点
将它的坐标转换到以中心点为原点的坐标系下,坐标转换的目的在于方便进行后续的空间信息抽取过程。公式描述为:
(2)
(3)
表示第i个点转换后的新坐标,
表示中心点作为原点的坐标。
2) 首先,我们需要定义一个标准方向向量
。其次,在完成坐标转换之后,获取每一个邻域点在当前坐标系统下的方向向量vi。每一个方向向量都需要和标准向量进行计算从而获取当前邻域点和中心点之间的方向信息,这个方向信息可以反映邻域点和中心点之间的空间位置关系。
(4)
(5)
(6)
表示向量之间点乘,|vi|表示对向量进行取模运算,
表示中心点p0与pi之间的夹角。夹角的集合表示为J。
3) 基于局部区域点特征距离越近越相似的假设,距离特征同样是需要关注的特征。邻域信息编码模块的另一个分支负责提取每一个邻域点pi与中心点p0之间的距离特征di。中心点和邻域点之间的距离信息主要通过以下公式进行计算,距离特征的集合表示为D:
(7)
中心点特征f0,邻域点特征fi以及他们之间对应的角度信息集合J和距离特征D在特征融合后作为当前中心点的邻域特征。

Figure 2. The architecture of neiborhood information encoding module
图2. 邻域信息编码模块结构
2.2. 局部信息编码
本模块主要负责提取点云的局部特征,本模块的具体细节如图3中所示。对于输入的特征F,本文将其看作是空间特征S和附加特征E的组合。经过邻域点选取(Neighboring Point Search, NPS)过程之后,选取过程如图4所示。经过邻域点选取过程位于中心点周围范围
内的N个邻域点Np将会被选取出来并被送进邻域信息提取模块进行邻域信息的抽取,得到邻域信息
;附加特征则会经过共享多层感知机进行进一步的特征提取和维度变换得到变换后的特征
。邻域信息
和附加特征
会在通道维度上进行融合得到最终的局部特征
。整体过程用公式描述为:
(8)
(9)
(10)
(11)
(12)
所得到的局部特征
将会被送进下一个模块中与全局特征融合进行最终的语义分割过程。整个网络的结构如图5所示。

Figure 3. The basic architecture of local information encoding module. (N, 3 + d) represents the dimension of current feature is N*(3 + d), other same representation forms represent same meaning.
图3. 局部信息编码模块基本结构。(N, 3 + d)表示当前特征维度为N*(3 + d),其他相同形式的表示也表示同一含义

Figure 4. The schematic diagram of neighboring point search
图4. 邻域点选取示意图
3. 实验及结果讨论
3.1. 实验环境设置
所有的实验的硬件平台都是基于Tesla T4GPU,软件环境基于ubuntu18.04,python = 3.6,Tensorflow = 1.14,cuda = 10.2 cudnn = 7.6.5。实验开始之前需要首先进行编译以使用scikit-learn科学计算库。
3.2. 数据集介绍
本文实验基于公开数据集S3DIS,S3DIS是斯坦福大学提供的大场景室内3D点云数据集,包含6个教学和办公区域,总共有695,878,620个带有色彩信息以及语义标签的3D点。S3DIS数据集是规模较大的数据集,因为其在一个场景内包含百万以上的点,这对模型处理大场景的能力提出了较高的要求。
3.3. 实验
在数据集划分上,本实验采用6折交叉验证,即将数据集随机分成6份,其中5份用作训练集,1份用作测试集。具体的参数设置如下表1所示。在S3DIS数据集上的实验结果如表2所示。从表中数据可以看出,改进后的模型的表现比baseline方法表现更为优越。从整体的效果来看,本文所提出的方法比baseline方法提高了1.8%,在个别难以区分的类别上比其他方法表现更为突出,如Beam横梁类,证明了所提出方法的有效性。

Table 1. Model training hyperparameter setting
表1. 模型训练超参数设置

Table 2. The result of segmentation on S3DIS dataset
表2. S3DIS数据集分割结果
3.4. 结果分析
本文以mIoU为测试标准分别对前人所提出的方法和本文所改进的方法在相同条件下进行了测试,证明了所提出方法的有效性。从PointNet的提出到现在各种基于点的方法的蓬勃发展 [13] ,各种方法性能的提升大多是对点云的局部信息进行了重点关注,提升了局部信息的表达能力。基于这种思路,本文从提升点云的邻域特征表达能力出发,提升点云局部特征的表达能力,同时我们特别关注点云的局部方向信息,提升了点云邻域特征的表达能力。
从实验结果可以看出,本文所提出的方法相比较于其他方法,在性能上有了显著的提升,证明了更好的局部特征可以提升分割效果这一假设,并且与所使用的基线方法比较的话可以看出方向信息对于点云而言提升较为显著,进一步验证了本文思路的正确性。
4. 结论
本文的目的是对现有的网络进行改进从而提升点云分割网络的性能,得到更好的分割结果,最终网络的整体结构如图5所示。通过添加设计的邻域信息编码模块来提升邻域特征的表达能力从而进一步提升局部特征的表达能力进而提高分割的精度。经过在公开数据集上的实验,可以得出:在局部特征的提取过程中更加注重中心点周围邻域点的空间信息以及方向信息可以进一步提高局部特征的表达能力,提高最终的分割精度。
基金项目
工业人工智能中跨媒体协同深度安全态势感知理论应用和研究(62266045)。
NOTES
*通讯作者。