改进PointNet++模型在道路杆状物提取中的应用

2023-12-08 10:02:30孙端正叶周润吴言安张树峰谢荣晖
测绘通报 2023年11期
关键词:杆状邻域损失

孙端正,高 飞,叶周润,2,吴言安,张树峰,谢荣晖

(1.合肥工业大学土木与水利工程学院,安徽 合肥 230009; 2.中国科学院精密测量科学与技术创新研究院大地测量与地球动力学国家重点实验室,湖北 武汉 430077; 3.安徽开源路桥有限责任公司,安徽 合肥 230093)

三维点云数据定位对于无人驾驶车辆而言是一项具有挑战性的任务,在动态的道路、城市场景中,由于其通用性和长期稳定性,杆状物非常适合作为动态场景下无人汽车定位的标志,以实现准确可靠的重新定位[1]。如何从三维点云数据准确提取出杆状物,是三维激光扫描技术用于自动驾驶的难点之一。

传统杆状物提取主要采用基于模型驱动及对象检测的方法进行[2-5]。传统机器学习点云分类方法需要针对某一数据类型人工设计特征,难以应用到非常广泛的数据集中,限制了其在复杂场景多分类的应用。随着深度学习算法的研究不断深入,众多学者开始使用深度学习网络处理点云数据。如,文献[6—7]基于多视图投影的点云深度学习网络的核心思想是按照多个角度将三维点云投影为二维图像,从而将不规则的点云数据表示为规则的图像数据,并以不同视角的二维图像呈现三维形状,再对多视图像使用成熟的2D CNN 进行信息提取和分类;文献[8—10]基于三维格网化的点云深度学习网络的核心思想,是将图像上的二维卷积扩展为三维卷积,在提取特征时,将二维卷积核扩展到三维空间上,用三维卷积核提取体素的有效特征,在解决点云无序性的同时保留了原始的三维信息。而这些间接基于点的方法未能充分利用点云属性,损失了部分信息,直接基于点的PointNet++[11]相较于间接基于点的方法减少了信息损失,在点云分割任务中表现良好。

本文基于PointNet++网络模型进行改进,选取适合道路点云分割的参数,采用焦点损失函数[12](Focal Loss)作为模型的损失函数,并插入邻域特征聚合模块提取邻域信息。基于改进的PointNet++的道路点云语义分割模型,以期实现道路点云杆状物的提取,并在自建数据集上进行试验,通过试验验证该方法的有效性。

1 研究内容

1.1 经典PointNet++语义分割网络模型

PointNet[13]网络模型作为第一个直接处理点云的深度学习框架,输入是点云中各点在三维空间中的x、y、z坐标,原始数据通过包含一维卷积与全连接的空间变换矩阵预测网络实现对齐,解决了点云的仿射不变性问题。处理后的数据再通过多层感知器(multilayer perceptron,MLP)提取点云特征。对提取出的点云特征,通过特征空间变换矩阵预测网络处理,实现特征的对齐。最后在特征空间的维度上进行最大池化(max pooling)整合点云信息,提取出点云的全局特征向量。

PointNet++在PointNet的基础上提出了多层次特征提取结构,在输入点集中采用最远点采样(farthest point sampling, FPS)选取子集作为样本点,围绕每个样本点采用球查询选择周围的点组成样本区域,再将每个区域分别输入PointNet网络,得到一组特征,以该特征作为对应区域的特征。之后样本点不变,扩大样本区域,重复提取特征的操作,以此类推,不断地提取特征作为样本区域的特征,扩大样本区域的范围,从浅层局部特征最终得到深层全局语义特征。

对于语义分割问题,首先将高维的点反距离插值得到与低维相同的点数,然后进行特征融合,最后使用MLP提取特征,利用与特征提取结构数目相同的特征传递结构,得到每个点的类别概率,实现语义分割。

1.2 针对道路点云的模型参数调整

经典PointNet++模型是基于室内小场景适用的网络模型,待分割对象大多为小目标物体,而道路点云数据往往长达数百米,待分割对象(如路灯、围栏、树木等)相对较大。PointNet++的多层次特征提取结构共分为4层,该结构的采样半径依次为0.1、0.2、0.4、0.8 m,在预处理阶段将点云原始数据沿x轴、y轴方向分割为1 m×1 m的块后再进行处理。显然,经典PointNet++的采样半径和分块大小并不适合道路点云的语义分割。

为使PointNet++更好地学习道路点云中各类物体的特征,本文对感受野大小及预处理中的分块大小进行调整,将采样半径改为0.4、0.8、1.6、3.2 m,并将分块大小改为4 m×4 m,以更好地学习相对较大的物体特征。

1.3 基于焦点损失函数的损失均衡化

经典PointNet++网络模型采用的损失函数为交叉熵损失函数,使用的数据集(如S3DIS[14]数据集)中,待分割的各类点云数量在总点云数量中的占比相对平均,交叉熵损失函数可以较好地发挥作用。而在道路点云数据中,待提取的目标杆状物点云数量远少于其他类别数据,导致继续使用交叉熵损失函数时,占比较小的杆状物类无法得到充分的训练。

焦点损失函数可用于密集物体检测工作,即用于解决样本数量极度不均衡的问题,以减少简单样本对总损失的影响,从而减弱样本数量不均衡对网络分割造成的影响。文献[15]表明,焦点损失函数在样本数量不均衡的电力杆塔分割中表现良好。

交叉熵损失函数公式为

(1)

焦点损失函数公式为

(2)

式中,y′为模型给出的预测类别概率;y为真实样本。相对于交叉熵损失函数,焦点损失函数增加了一个(1-y′)γ的权重值。正确类别的概率越大,(1-y′)γ越小,说明分类正确的样本的损失权重较小;反之,分类错误的样本的损权重较大。焦点损失函数增加了参数α、γ,通过α平衡各类别的数量比例不均,通过γ来减少简单样本的影响,使网络模型更关注难以区分的样本。使用焦点损失函数进行均衡化处理,网络模型可以更好地分割道路点云数据。本文采用参数为α=0.3,γ=1.5的焦点损失函数。

1.4 考虑邻域信息的特征聚合模块

相对于PointNet网络,PointNet++网络不仅考虑了全局特征,同时也关注了局部细节,但仅考虑邻域内的各点,并没有考虑各点之间的相互影响关系,损失了特征信息。

为更好地学习局部区域的特征,本文在采样分组和MLP操作之间插入邻域特征聚合模块。该模块从坐标相似度、特征相似度两方面考虑各点之间的影响关系。其中,两点间欧式距离越小,认为影响越大;特征值之差越大,影响越大。

使用欧式距离表示相似度,常采用的转换公式为

(3)

式中,S为x、y两点的相似度;dx,y为x、y两点间的欧式距离。PointNet++网络中,若采用S1,各点间欧式距离较小时,S值较大,与其他S值相差较大,不利于后续处理,对局部细节特征的学习能力较差。如图1所示,采用S1时,杆状物主体部分割良好,但上部特征学习不充分,分割效果较差,而采用S2则可以减少此类问题,故本文采用S2作为两点间相似度。

图1 采用不同S分割结果对比

采用各点间特征值之差作为特征值相似度,与坐标相似度结合。对于给定区域内点的特征集F={F1,F2,…,Fk},各点对点i的影响之和Δ的表达式为

(4)

其中,点i聚合了邻域信息的新特征F′i,可表示为

F′i=Fi+Δ

(5)

2 试验与结果分析

2.1 试验数据与试验环境

为验证方法的有效性,本文基于车载激光雷达采集的道路点云数据自行建立了数据集。该数据集包含11条道路点云数据,分为:包含路灯、电线杆、信号灯杆等的杆状物类;包含道路、水泥地面、泥土地面等的地面类;包含树木及低矮灌木等的植物类;包含路沿、围栏、车辆、广告牌等的杂物类4个类别。本文试验中的训练集与测试集比例为9∶2,即在9条道路上训练,在2条道路上测试。如图2所示,测试的道路中,道路1为只有杆状物、围栏、道路,杆状物附近无邻接树木影响的简单道路场景;道路2为树木、灌木等较多,且杆状物与树木杂物邻接的复杂道路场景。

图2 测试集两道路数据

本文试验环境为CPU:i7-9700,GPU:Intel(R) UHD Graphics 630,内存:8 GB,深度学习框架环境:PyTorch17.1, CUDA10.2, Windows 10。

模型训练过程中,优化器使用Adam,学习轮数设为60,初始学习率设为0.001,学习率衰减步长设为10,学习率衰减倍数设为0.7。

2.2 各试验结果对比

2.2.1 感受野与分块大小

采用经典PointNet++网络模型的采样半径、数据预处理阶段分块大小进行试验时,不仅无法很好地学习道路点云数据中的大物体类别的特征,还会出现一些不完整的类别训练,以预处理分块界限为分界线,两边分类预测结果各不相同的情况,语义分割的结果较差,如图3(a)所示。

图3 调整采样半径及分块大小前后结果对比

调整感受野、分块大小后,该网络模型对大物体的特征学习更加充分,不完整类别训练导致同一物体按分块线分为不同类别的情况大幅减少,语义分割效果明显提升,如图3(b)所示。本文后续研究皆在此基础上进行。

2.2.2 交叉熵损失函数与焦点损失函数

本文以交并比(intersection over union,IoU)作为评价标准。交并比即真实值和预测值的交集与真实值和预测值的并集之比。

两组试验分别使用交叉熵损失函数与焦点损失函数,其余试验条件,如试验数据、训练策略及参数等均相同,试验结果见表1。

表1 不同损失函数下的语义分割结果

从分割结果来看,使用焦点损失函数来代替经典PointNet++中的交叉熵损失函数,数据占比大的地面类语义分割精度相差不大。在简单道路中,杆状物类分割精度明显提升,IoU提高了7.6%,杂物类分割精度略微提升;在复杂道路中,占比较少的杆状物类和杂物类的分割精度明显提升,IoU分别提升了8.5%和6.9%。

试验结果表明,在道路点云提取杆状物的学习中,使用焦点损失函数可以解决数据中各分类占比不均衡的问题,使PointNet++网络模型能更好地学习占比较少的分类特征,从而提高分割结果精度。

2.2.3 邻域特征聚合模块

分别采用交叉熵损失函数和焦点损失函数作为模型的损失函数来进行试验。分别采用经典的PointNet++网络特征提取结构与改进的插入邻域特征提取模块的特征提取结构,其余试验条件均相同,试验结果见表2。

表2 不同特征提取结构的语义分割结果

从分割结果来看,插入特征聚合模块后,与插入前对比,在简单道路中,采用损失函数为交叉熵损失函数时,地面类精度稍有提升,杆状物类精度有所提升,IoU提高了3.7%,杂物类精度大幅提升;采用损失函数为焦点损失函数时,地面类、杆状物类精度略微提升,杆状物类IoU提高了0.9%,杂物类精度明显提升。在复杂道路中,采用的损失函数为交叉熵损失函数时,地面类IoU基本一致,杆状物精度大幅提升,IoU提高了14.4%,树木类精度略微下降,杂物类精度大幅提升;采用的损失函数为焦点损失函数时,地面类IoU基本一致,杆状物类精度明显提升,IoU提高了6.8%,树木类精度有所提升,杂物类精度大幅提升。

可见,聚合邻域信息后,网络对特征的学习能力得到提升,在测试集两道路数据中,杆状物的分割精度均得到提升。在损失函数采用焦点损失函数的基础上,插入特征聚合模块,可以更进一步解决分类错误的问题。如图4所示,杆状物与树木、杂物邻接的局部区域,对于使用焦点损失函数的PointNet++网络,插入邻域特征聚合模块后网络能更好地对道路点云数据进行学习、分割。最终分割结果如图5所示。

图4 有无邻域特征聚合模块分割结果对比

图5 基于改进的PointNet++网络分割结果

3 结 语

本文将经典PointNet++网络的感受野大小与数据预处理分块大小调整至适合道路点云,方便后续特征的学习与各类别的分割;采用焦点损失函数替换经典PointNet++网络的交叉熵损失函数来解决类别占比不平衡的问题;采用邻域特征聚合模块来聚合邻域信息,使网络更好地学习特征。

与经典PointNet++网络相比,本文改进后的PointNet++网络解决了部分分割问题,对道路的分割精度均有明显提升,各类别IoU均有提高,在无树木道路点云数据和杆状物与树木、杂物邻接道路点云数据上的分割IoU分别提升了8.44%、15.25%,达到了98.88%、92.50%,基本实现了道路杆状物的提取。

猜你喜欢
杆状邻域损失
少问一句,损失千金
胖胖损失了多少元
稀疏图平方图的染色数上界
基于车载LiDAR点云的杆状地物分类研究
测绘工程(2019年6期)2019-09-21 07:46:00
玉米抽穗前倒伏怎么办?怎么减少损失?
今日农业(2019年15期)2019-01-03 12:11:33
一种杆状交通设施点云自动提取的方法
城市勘测(2018年6期)2019-01-03 09:07:54
用于塑料挤出机的先导分配器的分流锥
基于邻域竞赛的多目标优化算法
自动化学报(2018年7期)2018-08-20 02:59:04
关于-型邻域空间
一般自由碰撞的最大动能损失