基于激光雷达的道路不平度及可行驶区域检测
2022-09-24闫德立李韶华
闫德立,高 尚,李韶华,霍 萌
(1.石家庄铁道大学 交通工程结构力学行为与系统安全国家重点实验室,石家庄 050043;2.石家庄铁道大学 电气与电子工程学院,石家庄 050043;3.河北省疾病预防控制中心,石家庄 050021)
引 言
为实现车辆的智能化与无人驾驶,需要对道路进行分割,划分为可行驶区域和不可行驶区域,为车辆行为决策以及路径规划与控制提供基础道路信息。对道路可安全行驶的区域分割完成后,可行驶区域道路中不平度信息的检测也是保证车辆安全行驶的关键信息,道路不平度分为表面缺陷、接头、裂缝和变形,这些变形可能是由于道路使用、疲劳、热变化、水份损坏、施工或公用事业修复过程造成的[1]。崎岖的道路通常与一些典型的交通事故有关,如失控、撞到固定或移动的物体。一些研究表明,事故率随着路面粗糙度的增加而增加。它们还可能影响滚动阻力、乘坐质量、车辆运行成本和燃料消耗。因此,对道路凸包、凹陷不平度信息及道路可行驶区域的研究至关重要,进行精确的道路检测、定位和分类,以提高车辆的主动安全性,使车辆安全可靠的行驶[2]。
到目前为止,对道路凸包、凹陷不平度信息及可行驶区域的检测都是基于人工或图像对道路进行检查。通过这些方法进行大规模道路环境检测时费时费力,并且采集的信息有时不完整,难以对道路不平度信息进行定性评估[3]。另外,传统的摄像机对凹凸障碍物及可行驶区域进行分析的方法,在阴雨、雾霾等恶劣条件下相机无法正确识别目标信息。与相机相比,激光受光线的影响也较小,可实现不同天气下的高精度检测。移动路谱仪系统[4]可以快速获取场景的精准和大量的点云数据,为解决道路环境信息感知问题提供了一套可靠的方案。但是,移动路谱仪价格昂贵、体积大的劣势使其不能大规模应用于实际工程中。随着自动驾驶以及机器人等领域的发展,低成本、高精度的激光雷达[5]被广泛的应用与发展,但目前的研究主要将车载激光雷达应用于无人驾驶车辆对于道路环境的检测,如道路路面分割[6-7]、道路标线提取[8-9]、道路交通标牌识别[10-11]等。在高精地图构建、全场景道路物体语义分割、道路不平度检测等领域中也有非常重要的地位[12-13]。车载激光雷达在路面不平度方面研究的不足,应用语义分割的方法对道路不平度和可行驶区域进行检测[14-15]。近期大多采用深度学习的方法[16-18]对激光雷达点云数据进行处理,但这些方法大多采用几何方法,无法实现凹坑与凸起等小目标的检测。
本文中为了实现基于激光雷达点云数据对无人驾驶车辆行驶场景中的环境要素进行语义分割,并且加强对道路中凸起、凹陷等小目标信息[19]以及道路可行驶区域的语义分割能力,使车辆提前做出预判,规划路径,提高车辆的主动安全性为出发点。采用一种端到端的随机降采样和局部特征聚合的神经网络结构,使用随机采样和增强策略来处理点云数据,实现对道路环境的快速分割,特别是凸起、凹陷与道路可行驶区域的分割。该网络模型的关键是使用随机点采样,但随机采样的方法会丢关键特征,为了克服这一难点加入局部特征聚合模块来增加每个3维点的接受场,从而有效地保留几何细节。
1 语义分割网络描述
1.1 语义分割网络模型
随机降采样和局部特征聚合的网络结构如图1所示。采用广泛使用的编码-解码架构与跳跃连接的网络。首先点云输入到共享的多层感知器,以提取每点的特征;然后使用4个编码和解码层来学习每个点的特征;最后使用3个全连接层和一个退出层来预测每个点的语义标签。其中,(N,d)表示点数和特征维数,FC(full connection)表示全连接层,LFA(local feature aggregation)表示局部特征聚合模块,RS(random sampling)表示随机采样,MLP(multiple layers perceptron)表示共享多层感知器,US(up sampling)表示上采样,DP(drop)表示退出。
Fig.1 Random sampling and local feature aggregation net
网络输入:输入是一个大规模的点云,大小为N×din,其中N是点数,din是每个输入点的特征维数。
编码层:点云数据量庞大,采用编码层对数据进行压缩处理,网络中使用了4个编码层来逐步减少点云,并增加每个点的特征维度。每个编码层由一个局部特征聚合模块和一个随机采样操作组成。点云下采样率为4倍,在每一层之后仅保留25%的特征点,即:(N→N/4→N/16→N/64→N/256)。同时,每点特征维度逐渐增大,以保存更多信息,即:(8→32→128→256→512)。
解码层:在上述编码层之后使用4个解码层。对于解码器中的每一层,使用k最近邻域算法为每个查询点找到一个最近邻点,之后通过最近邻点对特征点集进行上采样。通过跳跃连接将上采样的特征映射与编码层生成的中间特征映射连接起来,之后对连接的特征映射应用共享多层感知器[20]。
最终语义预测:通过3个共享的全连通层(N,64)→(N,32)→(N,nc)和一个退出层,获得每个点的最终语义信息,大小为N×nc,其中nc是类数。
本网络的关键是采用了随机采样的方法。随机采样均匀地从输入的点中选择K个点来确保每个点都有被选中的可能。因为随机采样计算的复杂程度与计算量和输入点云数量无关,并且只与降采样后的点数K有关,使得随机采样的方法具有高效的计算效率良好的扩展性。随机采样与其它采样方法相比(例如最远点采样和重要性采样),只需4ms便可完成与最远点采样方法完成相同的降采样任务。采用随机采样的方法虽然可以提高计算速度和内存的效率,但会丢失关键特征[20]。
1.2 局部特征聚合模块
为解决上述采用随机采样方法导致关键特征丢失的问题,引入局部特征聚合来增加每个3-D点的接受场来保留几何细节。
局部特征聚合模块主要包括3个子模块:(1)局部空间编码; (2)注意力池;(3)扩张残差块。
1.2.1 局部空间编码 给定一个点云p和每个点的特征,这个局部空间编码单元(local spatial encoding,LocSE)将明确嵌入所有相邻点的3维空间坐标,这样相应点的特征总是知道自身的相对空间置。采用局部空间编码单元来观察局部几何结构,有利于整个网络有效地学习复杂的局部结构。
本单元具体步骤如下:寻找相邻的点,对于第i个点,为提高效率它的相邻点通过k最近邻域算法进行收集, 采用的k最近邻域算法是基于逐点欧氏距离算法。
对于中心点pi的每一个最近的K点{pi1,pik,piK},明确编码相对点位置,方法如下:
rik=M(pi⊕pik⊕(pi-pik)⊕‖pi-pik‖)
(1)
式中,pi和pik是点在3维空间坐标系x-y-z中的位置,M代表共享多层感知器函数,⊕是连接操作,‖·‖是计算相邻点和中心点之间的欧几里得距离,rik是冗余点位置的编码。
对于每个相邻点pik,编码的相对点位置rik与其相应的特征点fik连接,获得增强的特征向量fik。最终,局部空间编码单元输出的是一组新的相邻特征Fi={f1i,fik,fiK},明确地编码了中心点Pi的局部几何结构。
1.2.2 注意力池 神经网络用于聚合相邻特征点Fi的集合,通常使用最大/平均池集成邻近的特性,会导致大部分信息丢失。相比之下,转向强大的注意机制来自动学习重要的局部特征会减少信息丢失。注意力池包括以下步骤:计算注意力分数,给定一组局部特征Fi={fi1,fik,fiK},通过共享函数g(·)来学习每个特征的唯一注意力分数,g(·)由一个共享的多层感知器和柔性最大值传输函数组成。 表达式如下:
sik=g(fik,w)
(2)
式中,w是共享的多层感知器的可学习权值。
加权求和,学习到的注意力分数可以看作是一个自动选择重要特征的软掩模。特征加权求和见下式:
(3)
总之,给定输入点云p,对于第i个点pi,局部空间编码单元和注意力池单元学习聚合k最近点的几何模式和特征,生成一个信息特征向量fi。
1.2.3 扩张残差块 由于大场景的点云将被大幅度地降采样,因此需要显著地增加每个点的接受域,这样即使一些点被删除,输入点云的几何细节也更有可能被保留。本文中通过堆叠多个局部空间编码单元和注意池单元,并使用一个跳跃连接作为扩展的残留块,如图2所示。
Fig.2 Dilated residual block
总的来说,本文中的局部特征聚合模块通过明确考虑相邻几何结构和显著增加接受域来有效地保留复杂的局部结构。此外,该模块仅由前馈共享多层感知器组成,具有较高的计算效率。
2 实验分析
2.1 激光雷达新的布局方式
本文中采用的禾赛40线激光雷达激光束分布如表1所示。其中线束6~线束30,相邻线束间的垂直角分辨率为0.33°;线束30~线束38,相邻两线束的垂直角分辨率为1°。对激光雷达垂直角度计算分析,采用传统方法水平安装在车辆的顶部位置,激光雷达在对路面扫描时,有将近一半的激光束无法打到地面,极大地损失了激光雷达的检测能力,因此,本文中为了提高激光雷达的利用率,并提高对地面不平度的检测效率,通过实际工程实验确定了安装角度,且可高效对路面不平度信息进行检测。
Table 1 Laser beam distribution of lidar
当向下安装的倾斜角度大于激光雷达斜向上发射的最大光束时,激光雷达发射的激光束将全部用于道路检测,如图3所示。如何在充分利用激光雷达的检测能力的条件下保证其检测范围,需要对激光雷达水平向下的倾斜角度进行计算确定,计算式如下:
(4)
式中,d,h,α和β分别代表检测距离、高度、向下倾斜角度和激光束垂直角度。
Fig.3 Schematic diagram of LiDAR installation
通过实车实验,对比不同角度下激光雷达对路面凹凸信息的检测情况,如图4所示。水平安装在车辆顶部时无法准确识别凹凸信息,倾斜角度过大无法保证检测距离,最终激光雷达的安装在高度约为1.8m的车辆顶部位置,安装角度为30°时能够覆盖车辆前方1.26m~6.76m,可准确检测出道路路面上的凸包和凹坑。
Fig.4 Scanning effect at different anglesa—traditional scanning lines b—incline horizontally down 30° c—incline horizontally down 45°
2.2 点云分割环境配置与数据
硬件配置为英特尔E5-26650@2.40GHz和英伟达GeForce GTX1080Ti、8GB GPU。在Ubuntu18.04和Python3.6.7的条件下搭建CUDA 11.0、CUDNN 7.6.5、TensorFlow 1.15.0深度学习环境。随机降采样和局部特征聚合的网络结构的训练共用13h。网络训练时参数设置:预处理参数为0.06,初始学习率为0.01,初始衰减率为0.95,初始噪声为3.5,一次训练所抓取的数据样本数量为6,最大模型训练次数max_epoch为100。
作者通过安装在智能车上的禾赛激光雷达对校园道路环境信息进行数据采集,通过标注软件CloudCompare打标签制作完成的数据集。该数据集是用于对室外场景点云进行分割,数据集中道路包括道路不平度、可行驶区域、建筑物和杂草树木等信息的800个数据,其中训练集700个,验证集50个,测试集50个。本文中道路不平度指路面中直径大于40cm,高度或深度大于5cm的凹坑与凸起;道路可行驶区域为路沿内的安全行驶区域,实验中为宽3m的水泥路面;其它信息为道路两旁的树木与建筑物信息。各数据集中各类别点云个数如表2所示,测试数据集中复杂程度小目标。
Table 2 Number of different point clouds
2.3 语义分割结果分析
本文中的实验场景、原始点云以及训练后模型的测试样本如图5所示。其中图5a为实测校园道路图像信息,图5b为激光雷达采集的校园道路环境的原始点云信息,图5c是经过点云语义分割之后的道路信息。可以看出,本文中训练的模型对道路建筑物、路面凸包、凹坑以及杂草数木可以达到很好的分割效果,其中红色代表建筑和路沿石、绿色代表道路区域、黄色代表杂草树木,并且凸包、凹坑用蓝色和深绿色表示。语义分割说到底是一个分类任务,预测的结果往往有4种情况:真正样本数量、假负样本数量、真正样本数量、假负样本数量。语义分割的评价由均交并比 (meanintersection over union,MIoU)表示,一般都是基于类进行计算的,将每一类的交并比(intersection over union,IoU)计算之后累加,再进行平均,得到的就是基于全局的评价。
Fig.5 Experimental scene effecta—experimental scenario b—original point cloud c—post-segmentation point cloud
训练后模型的总体精度达到了88.52%。训练过程中模型的均交并比和各类别的值如图6所示。由图6可以看出,随着模型训练次数的增加,各类别的值趋于稳定,均交并比的值基本稳定在88.52%,凸包、凹坑、道路可行驶区域、杂草树木以及建筑物的值分别维持在71.87%, 82.71%, 93.01%, 94.97% 和94.32%上下,相比于传统点网络、卷积神经网络等算法中的小目标检测而言,本文中的对小目标坑和凸起的精度较高。如图7所示,评价精度经过1个模型训练之后基本稳定在96%左右。
Fig.6 Changes of MIoU during training
Fig.7 Eval accuracy curve
3 结 论
针对3-D室外场景道路中道路凸包、凹坑不平度信息对车辆安全行驶的影响,确定激光雷达的安装方式,并通过实验发现将激光雷达水平向下倾斜30°安装,可以很好地对道路中凸包、凹坑进行采集。对采集的数据通过标注软件CloudCompare打标签制作完成的数据集,用随机降采样和局部特征聚合的网络结构实现室外3-D点云的语义分割,主要目的是对非结构化道路中的凸包、凹坑以及道路可行驶区域进行分割。与其它模型相比,在室外大规模点云下,随机降采样和局部特征聚合的网络结构总体准确度比较高,进一步提高了模型的分割精度,尤其对于道路凸包、凹坑来说,本文中的精确度为71.87%和82.71%。该研究对于道路凸包、凹坑及可行驶区域的检测,以及之后无人车智能悬架调节和车辆的主动安全方面提供了依据。