航空图像道路标志提取。卫星图像和航空图像不仅可以用于路网提取,还可以用于道路标志提取。Azimi等[108]提出了从航空图像中直接提取道路标志的Aerial LaneNet。该网络包含一个对称的全卷积神经网络(FCNN)。将原始航空图像分割成多个小块后发送到Aerial LaneNet。Aerial LaneNet对每个输入patch进行语义分割,并为每个patch生成二值图像,表示哪个像素来自车道标志,哪个像素来自背景。将所有二值图像/patch拼接在一起,得到与输入图像具有相同分辨率的最终道路标志图像。该模型还利用离散小波变换(DWT)实现多尺度全谱域分析。类似地,Kurz等人[109]设计了小波增强的FCNN来分割多视图高分辨率航空图像。imagery2D段进一步用于基于最小二乘直线拟合创建道路标志的三维重建。
Yu等人也提出了一种自我注意力引导的胶囊网络,称为MarkCapsNet[110],用于从航空图像中提取道路标志。本文提出的网络结合胶囊表述和HRNet[111]架构,通过涉及三个分辨率不同的并行分支,可以提取不同尺度的特征语义。设计了基于胶囊的自我注意(SA)模块,并将其集成到MarkCapsNet的各个分支中,进一步提高了生成的特征图的表示质量,用于道路标志提取。此外,Yu等人还创建了用于道路标志提取应用的大型航空图像数据集AerialLanes18,该数据集可作为未来测试不同道路标志提取方法的基准。在UAVMark20和AerialLanes18两个数据集上对MarkCapsNet等道路标志提取模型进行了实验和比较。结果显示在表8中,MarkCapsNet已经达到了最先进的性能。
与航空图像相比,基于前视图像的道路标志提取方法具有更小的视场,且检测/处理时间也比基于航空图像的现有道路标志提取方法要长。然而,由于检测是基于实时相机图像,它对于由磨损和遮挡造成的道路标志改变是灵活的。相比之下,航空图像的道路标志提取可以提取更大尺度的道路标志,并将提取的道路标志存储在高精地图中,以减少检测时间。然而,它对由照明条件、遮挡和道路标志磨损引起的数据缺陷很敏感。
在三维点云上提取道路标志通常有两种不同的方法,自下而上法和自上而下法[88]。自下向上方法通过区分道路标志点云和背景点云,直接提取道路标志。自上向下方法利用CNN检测预定义的几何模型,并在此基础上重建道路标志。
至下而上法。自下向上方法采用深度学习算法,在目标检测和分割的基础上,从原始三维点云中直接提取道路标志。与阈值相关的方法及其扩展,包括多阈值法和多阈值法结合几何特征滤波,被广泛应用于道路标志提取[112]-[115]。[116]、[117]在提取道路标志之前,将三维点云转换为二维地理参考灰度图像,以显著降低计算复杂度,但失去位姿(位置和方向)或空间信息。为了填补提取的道路标志缺失的位姿或空间信息的空白,Ma等人提出了一种基于胶囊的道路标志提取与分类网络[118]。该方法通过过滤掉灯杆、交通灯和树等离地特征点云来处理数据,降低了计算复杂度。利用反距离加权(IDW)算法将处理后的三维点云转换为二维地理参考灰度栅格图像。受[119]提出的胶囊网络的启发,Ma等人提出了一种U型胶囊网络,该网络不仅可以从栅格图像中学习灰度方差,还可以学习道路标志的位姿和形状。他们提出了一种混合胶囊网络,将不同的道路标志分为不同的类别。该方法在城市、高速公路和地下车库的道路标志提取中取得了最先进的效果,F1值为92.43%,精度为94.11%。[120]-[123]在定制道路标志数据集上的性能比较可以在表9中查看,其中粗体突出显示的值是主导结果。
自上而下法。自上向下方法利用现有的目标检测算法对路标几何模型进行检测和定位。它在检测和定位的基础上,在三维点云上重建道路标志。Prochazka等人[124]使用生成树的使用方法从点云中自动提取车道标志到多边形地图层。该方法在原始点云上进行地面点检测[125],并利用生成树对检测进行识别。在检测和识别后,将车道标志重构为矢量形式。该方法可以检测到车道标志,但不能检测到其它类型的道路标志,如道路方向标志和人行横道标志。
Mi等人提出了一种利用MLS点云的两阶段道路标志提取和建模方法[88]。他们的方法利YOLOv3[126]算法检测道路标志,并在每次检测中提供语义标签。在重建和建模过程中,提出了能量函数(1)来确定原始三维点云中道路标志的精细位姿和尺度。
E f i n e ( x , y , z , ϕ , θ , s ) = α ∗ 1 N ∑ i = 1 N I i + ( 1 − α ) ∗ 1 N e ∑ j = 1 N e G j (1) E_{fine}(x,y,z,\phi,\theta,s)=\alpha * \frac{1}{N}\sum_{i=1}^NI_i+(1-\alpha)*\frac{1}{N_e}\sum_{j=1}^{N_e}G_j \tag{1} Efine(x,y,z,ϕ,θ,s)=α∗N1i=1∑NIi+(1−α)∗Ne1j=1∑NeGj(1)
G = 1 N i n ∑ i = 1 N i n I i − 1 N e x ∑ i = 1 N e x I i (2) G=\frac{1}{N_{in}}\sum_{i=1}^{N_{in}}I_i-\frac{1}{N_{ex}}\sum_{i=1}^{N_{ex}}I_i \tag{2} G=Nin1i=1∑NinIi−Nex1i=1∑NexIi(2)
其中 ( x , y , z , ϕ , θ , s ) (x,y,z,\phi,\theta,s) (x,y,z,ϕ,θ,s)是道路标志模板的位置和方向, α \alpha α是权重, I i I_i Ii是道路标志中第 i i i个点的灰度, N N N是模板中点的个数, N e N_e Ne是模板上样本点的数目, G j G_j Gj是第 j j j个边界点的灰度梯度,它在公式(2)中给出, N i n N_{in} Nin和 N e x N_{ex} Nex分别表示在搜索半径中内点和外点数目[88]。通过最大化能量函数,可以对道路标志进行精确分割和建模。通过结合检测置信度和定位得分的候选者重排序策略,在三维点云上生成最终的道路标志模型,进一步提高道路标志提取性能。候选者重排序策略的目的是在道路标志重叠存在或镜像对称双标志存在的情况下提供最优选择,如图14所示。该方法能够准确提取中国道路交通标志国家标准中规定的12种道路标志。
综上所述,自下向上方法可以直接从MLS点云中提取道路标志,加快道路标志提取速度,但对不完善的原始数据敏感。相比之下,不完善的原始数据对自上向下方法的影响较小,但自上向下方法检测时间长,搜索空间大。据笔者所知,相对于自下向上的方法,自上向下的方法并不多。因此,采用自上向下的方法提取道路标志还需要进一步研究。
在高精地图中,交通信号灯、交通标志、路灯、树木和电线杆等杆状物体对道路环境至关重要。它们可以帮助定位(不同于其它道路设施的形状)和运动规划(交通灯信号提供交通流条件)。在MLS三维点云上,杆状物体的提取通常通过分割和分类来实现。
在过去的几年里,已经开发了各种杆状物体提取的方法。Lehtomäki等人[127]提出使用MLS三维点云结合分割、聚类和分类方法来检测垂直杆状物体。El-Halawany等人[128]采用一种基于协方差的方法对地面激光扫描点云进行杆状目标分割并求出其维数。Yokoyama等人[129]使用拉普拉斯平滑法,并使用主成分分析来识别具有不同半径和倾角的杆状物体上的点。Pu等人[130]提出了一种基于MLS三维点云的结构识别框架,并基于点云段的大小、形状、方向和拓扑关系等特征提取杆状物体。Cabo等人[131]提出了一种检测杆状物体的方法,通过规则体素化对点云进行空间离散,并对水平体素化的点云进行分析和分割。Ordóñez等人[132]在[131]的基础上增加了分类模块,以区分点云中不同类型的杆状物体。Yu等人[133]提出了一种半自动提取路灯杆的方法,将MLS三维点云分割为道路和非道路表面点,并使用两对三维形状上下文从非道路段提取路灯杆。Zheng等人[134]提出了一种新的基于图切的分割方法,从MLS三维点云中提取路灯杆,然后采用基于高斯混合模型的方法识别路灯杆。
Plachetka等人[135]最近提出了一种基于深度神经网络(DNN)的方法,可以识别(检测和分类)LiDAR点云中的杆状物体。受[136]的启发,提出的DNN架构包括三个阶段:编码器、骨干、分类和回归头。将原始的三维点云预处理为单元特征向量,作为编码器阶段的输入。不同于[137]中只有一个编码器阶段,Plachetka等人在[138]之后增加了另一个编码器阶段,以提高细胞特征向量的表示能力。编码器将细胞特征向量编码为空间网格,作为骨干的输入。骨干阶段采用并修改了特征金字塔架构[66],以包含更多的上下文,提高了模型检测小目标的性能[139]。主干阶段将下游路径的低级特征和上游路径的高级特征连接起来,进一步增强输入网格的表示能力。下游路径利用卷积层,上游路径使用转置的卷积层。输出特征网格成为分类回归头输入。最后阶段采用SSD[69]方法进行预测计算。该方法的平均召回率、准确率和分类准确率分别为0.85、0.85和0.93。关于提出的DNN架构、数据集和训练过程的细节超出了本综述的范围,不作进一步讨论。检测类别包括防护杆、交通标志杆、交通信号灯杆、广告牌杆、路灯杆和树木。
总之,在高精地图中,由于其特殊的形状,杆状物体是定位的重要特征。杆状物体的提取主要是在三维点云上进行的,因此提取的性能也取决于点云的质量。因此,需要进一步研究如何提高杆状类物体在不完美数据下的提取性能。
随着高精地图越来越复杂,需要提取的环境特征越来越多,需要有一个良好的软件,以框架的形式在地图中充分存储相关信息,并确保地图的一致视图[140]。在本节中,介绍了三种流行的创建高精地图的开源框架,包括Lanelet2[141], OpenDRIVE[142]和Apollo maps[143]。
Lanelet2是Liblanelet的扩展和推广,也被称为Lanelet,为Bertha Drive Project开发。Lanelet2地图采用了基于XML(可扩展标记语言)的OSM (Open Street map[144])数据格式Lanelet的退出格式。开放街道地图是一个免费的在线地图编辑工具,由世界各地的地图编辑人员不断更新和贡献。但是,地图的实际数据格式被认为是不相关的,只要这种格式可以转换为Lanelet2格式而不损失任何信息,就可以互换。
Lanelet2地图包含三层:物理层、关系层和拓扑层,如图15所示。这三个层的特征与HERE定义的相似。第一物理层由两个元素组成,点和线串。点是地图的基本元素。它可以表示垂直结构,如杆点作为单点、车道或区域作为一组点。线串构造为两个或多个点的有序数组,其中每两个点之间使用线性插值。顾名思义,物理层定义了可检测的元素,如交通灯、标志、路沿石等。第二层关系由三个要素组成:网域、区域和调控要素。Lanelets定义了不同的道路类型,如普通车道、人行横道和铁轨。Lanelets也与交通规则相关,这些规则在Lanelets内不会改变。它是由一个左和一个右的线字符串定义为两个方向相反的边界。通过将左边框更改为右边框(反之亦然),这对线串中的方向是可互换的。区域由一条或多条线组成一个封闭的屏障,通常代表静态建筑,如建筑物、停车场、操场和草地空间。顾名思义,调控要素定义了对车辆进行调控的交通规则。车道和区域可以有一个或多个调控元素,如速度限制和限制。此外,还可以添加基于时间的转向限制等动态规则作为调控元素。
Lanelet2是一个简单而强大的支持高精地图的框架。它也经常与Autoware Auto[145]一起用于创建高精地图的矢量地图。关于Lanelet2框架的更多细节可以在[141],[146]中找到。
OpenDRIVE是一个由自动化和测量系统标准化协会(ASAM)开发的用于描述路网和绘制高精地图的开源框架[142]。它还使用XML文件格式来存储地图信息。
在ASAM OpenDRIVE地图中,有三个元素/层,Reference Line/Road, Lane和Features,见图15。与Lanelet2地图使用点来描述和构建地图特征不同,OpenDRIVE使用几何基元包括直线、螺旋线、弧线、三次多项式和参数三次多项式来描述道路形状和行驶方向。这些几何基元被称为参考线。参考线是每个OpenDRIVE路网的关键组成部分,所有的车道和特征都是沿着参考线建立的。第二个元素,车道线,附加在基准线上,代表地图上的可行驶路径。每条道路至少包含一条宽度大于0的车道。每条道路的车道数以实际交通车道数为准,没有限制。在构建道路沿线车道时,需要设置宽度为0的中心车道,作为车道编号参考,如图16所示。中间车道根据道路类型定义两边的行驶方向,可以是相反方向,也可以是相同方向。在图16中,由于中心车道与参考线没有偏移,所以中心车道与参考线是重合的。最后一个元素,特征,它包含与交通规则相关的信号和标志等对象。然而,与Lanelet2不同的是,ASAM OpenDRIVE不包含动态内容。
ASAM提供的关于OpenDRIVE的文档也可以在[147]中找到。
Apollo地图是由中国领先的自动驾驶平台百度Apollo打造的高精地图。Apollo高精地图也使用OpenDRIVE格式,但这是一个专门为Apollo设计的改进版本。与OpenDRIVE使用直线、螺旋线和弧线等几何基元来定义道路不同,Apollo只是简单地使用点。与Lanelet2中的点一样,每个点存储纬度和经度,这些点的列表定义道路边界。在Apollo高精地图中,通常有五个不同的元素。(1)道路要素包括道路边界、车道类型和车道行驶方向等特征。(2)intersection要素包含交集边界。(3)交通信号要素包括交通灯和标志。(4)逻辑关系要素包含交通规则。(5)其它要素包括人行横道、路灯和建筑[148]。为了构建HD地图,百度Apollo将生产过程分为数据源、数据处理、目标检测、人工验证、地图制作5个步骤,如图17所示。详细的Apollo HD地图生成程序见[149]。
在笔者看来,Apollo地图是OpenDRIVE的一个更高级、更复杂的版本。Apollo地图包含的要素并不来源于OpenDRIVE,比如OpenDRIVE没有停车场和人行横道。Apollo地图还需要比OpenDRIVE更多的数据来定义车道。OpenDRIVE只需要指定车道宽度,而Apollo需要用点来描述车道边界。为了在Apollo中使用OpenDRIVE地图,可以使用这里[150]提供的方法将OpenDRIVE格式转换为Apollo格式。Lanelet2地图也可以转换为OpenDRIVE地图格式。Carla是一个用于自动驾驶的开源模拟器,提供了一个用于将OSM地图转换为OpenDRIVE地图的PythonAPI[151]。
高精地图生成技术近年来发展迅速。然而,仍然有局限性。航空图像上的特征提取可以快速生成车道线和道路标志等特征,但这些特征并不包含高度或深度信息。通过将路网GPS数据与采集到的GPS数据进行匹配,并添加相应的高度,可以在2D地图上手动添加高度或高度信息,创建2.5D地图。然而,它仍然缺乏深度信息,而深度信息在车辆绕过障碍物时是极其重要的。2D高精地图对基础设施的微小变化也不敏感,这将不能保持地图的更新。MLS三维点云的特征提取是在高精地图中添加详细道路信息的一种更为常见和强大的方法。提取3D特征的高精地图可以提供深度信息和更新的环境信息,但需要昂贵的激光雷达和较高的计算成本。收集可用的点云数据也很耗时。在[70]中可以找到一个例子,Ibrahim等人驾驶SUV进行3次2小时的测试来收集可用的点云数据。[152]使用众包方法来保持高精地图的更新,但众包方法并不总是适用于个体研究人员。采集城市级别地图点云数据将是一个挑战。
这些局限性导致了以下开放性问题。(1)在2D地图中添加更多功能,如深度信息,并保持更新。(2)提高3D地图生成过程的效率,使绘制大型3D高精地图成为可能,而不消耗太多的时间和计算能力。一种解决方案是将道路网络和点云集成来生成高精地图,可以通过Autoware[153]。此外,据作者所知,目前提出的用于人行横道特征提取的方法并不多(几乎没有)。这一点至关重要,也很有需求,因为一些自动驾驶系统要么是为了在人行道上行驶而设计的,要么需要在高速公路上测试之前在人行道上进行可行性测试。此外,高精地图的完成和整理(将所有模块和功能合并成高精地图)仍然是地图公司开发的商业化方法。这对于学术界和个人研究者来说仍然是一个有待进一步研究和结论的问题。
本文对近年来自动驾驶高精地图生成技术进行了分析。高精地图的基本结构概括为三层:(1)道路模型、(2)车道模型、(3)定位模型。介绍并比较了生成高精地图的数据收集和特征提取方法,包括道路网络、道路标志和杆状物体。还讨论了这些方法的局限性。同时还介绍了支持高精地图的框架,包括Lanelet2、OpenDRIVE和Apollo。还提供了一些有用的工具,用于在三个框架之间转换地图格式。
值得进一步研究的问题如下。(1)在2D地图中添加更多功能,如深度信息,并保持它们的不断更新。(2)提高3D地图生成过程的效率,使绘制大型3D高精地图成为可能,而不消耗太多的时间和计算能力。(3)创建人行横道的特征提取方法。(4)高精地图的完成和整理方法去商业化。
略