方莉娜 王康
道路交叉口作为道路交汇的枢纽,承担着连接道路交通网的重要功能,其位置、方向、类型是智能交通、高精地图、导航与定位服务等应用的重要基础数据[1-4],准确获取道路交叉口的位置及类型信息对交通路网数据更新具有重要意义.车载激光扫描系统(Mobile Laser Scanning,MLS)作为近年来快速发展的高精度测绘技术,能够快速、准确地获取道路场景精细的位置信息,为道路交叉口的提取和分类提供了一种新的数据源.
当前道路交叉口提取和分类的研究集中于从各类传感器数据中自动识别交叉口,主要包括:基于图像数据、基于GPS轨迹数据、基于车载激光点云的道路交叉口识别.基于图像数据的道路交叉口识别主要从图像数据中识别道路交叉口空间位置,将交叉口位置的识别简化为点的识别[5-8].由于图像易受天气、环境、光照等因素影响,易造成交叉口识别困难.基于GPS轨迹数据的道路交叉口识别方法则利用轨迹数据在交叉口处密度较大等特征,实现交叉口的识别[9-10].GPS轨迹交叉口识别方法受限于轨迹点密度,轨迹点稀疏区域难以提取道路交叉口的精确位置.相比于图像数据和GPS轨迹数据,车载激光点云数据包含更精细的道路场景信息和细节要素,能够提供精细的道路交叉口三维数据.近年来,一些学者尝试从点云中提取道路交叉口.Li等[11]提出基于一种虚拟圆柱扫描仪(Virtual Cylindrical Scanner,VCS)的道路交叉口检测方法,构建虚拟点发射n条射线探测发射点与道路交叉口距离提取道路交叉口特征,利用支持向量机(Support Vector Machine,SVM)分类道路交叉口类型.Zhang等[12]提出基于光束模型的道路交叉口识别方法,以车辆顶部与底部传感器为中心,发射多条射线计算发射点与道路边界距离分布直方图,依据峰值点个数确定道路交叉口类型.陈卓等[13]提出一种基于机载激光点云强度影像的道路交叉口提取方法,利用角度纹理信息和密度聚类方法定位机载影像中道路交叉口粗略位置,然后引入环形剖面和Snake方法提取道路交叉口轮廓.Chen等[14]采用Gabor滤波器和改进的高阶张量投票识别机载强度图像中道路交叉口候选区,再基于模板匹配识别道路交叉口类型.目前国内外针对车载激光点云道路交叉口检测与识别的研究取得了一定的进展.目前道路交叉口检测算法主要依据其形状、灰度等特征进行检测,对于形状简单的交叉口具有较好的检测效果,但对复杂场景下的道路交叉口检测难度较大,对于交叉口类型识别需要较多的先验知识和人工干预,自动化程度和检测精度不高.
深度学习凭借深度网络的强大学习能力,能够从原始数据中提取数据的高层特征,从而很好地建立从底层信号到高层信号的映射关系,在图像分类、目标检测等方面深度学习该领域重大进展.近年来,一些学者将深度学习引入道路交叉口的检测与识别中,有效地实现了对道路交叉口的检测与自动分类.Baumann等[15]提出了基于U-Net网络机载点云影像的道路交叉口检测方法,并取得了较好的识别效果.何海威等[16]提出一种基于AlexNet网络的道路交叉口检测方法,将矢量数据与栅格数据结合,在十字型、喇叭型等复杂交叉口的识别中取得了较好的效果.王龙飞等[17]提出一种基于YOLOv3遥感影像道路交叉口检测算法,采用参数修正单元激活卷积层以及多尺度融合实现道路交叉口细节特征提取,在复杂背景下道路交叉口识别中取得了较好的效果.
因车载激光点云中道路交叉口轮廓特征易受周围地物干扰,目前基于图像的深度学习网络不能完全适用于车载激光点云道路交叉口的类型识别.为了提高道路交叉口识别效果,本文基于车载激光扫描点云数据,分析道路交叉口和非交叉口路段的形状和结构特征,构建了逐轨迹点的滑动窗口道路交叉口识别方法,然后利用动态图神经网络进行道路交叉口分类.
相对于道路两侧建筑物、树木等地物而言,道路边界在海量点云中形状不明显,直接从离散点云中检测道路边界非常耗时且效率较低.因此本文先对数据进行预处理,采用布料模拟滤波算法[18]提取地面点云,然后从地面点中提取道路边界,其主要分为以下三个步骤:
1)基于超体素的道路边界提取.利用超体素算法过分割地面点云,分析超体素的分布与结构信息提取道路边界.
2)基于滑动窗口的道路交叉口提取.利用道路交叉口与非交叉口的形态差异,计算滑动窗口道路边界点曲率值区分道路交叉口与非交叉口.
3)基于动态图神经网络的道路交叉口类型识别.构建适合道路边界分类的图神经网络,提取道路交叉口的高阶特征,区分道路交叉口的十字和T字路口类型.
该方法主要流程如图1所示.
在地面点云中,道路边界与路面点具有一定高程和法向差异,但道路边界的显著性和连续性易受点密度不均、遮挡和噪声影响,导致道路边界与路面点较难区分.为了提取精确的道路边界点云,本文采用Lin等[19]提出的超体素分割算法,基于局部几何特征和空间一致性将地面点先分割成边界保持的超体素(如图2所示),克服点密度不均对道路边界提取影响.对于地面点P={p1,p2,…,pn},n为其个数,为了确保每个点pi对应唯一的超体素并顾及道路边界,该方法将超体素中分割问题转化为变量zij∈{0,1}的优化问题,即利用最小化能量函数确定K个最优超体素:
(1)
(2)
图2 地面点超体素分割及道路边界提取Fig.2 Ground points supervoxel segmentation and curb extraction
式中,λ为大于0的正则化参数,C(·)为生成的超体素数量,I(·)为体素合并指示函数.为保证式(1)的优化过程能够更好顾及边界特征,本文利用点的空间聚类和法向定义点pi和pj的相似性D(pi,pj):
(3)
式中:D(pi,pj)表示点pi与pj特征相似距离;npi和npj表示点pi和pj的法向;|·|表示乘积;‖·‖表示两点之间欧式距离;r表示超体素分辨率.
从图2c中可以看出,道路边界体素具有一定的高程差异且垂直或倾斜于周围路面.因此,本文统计超体素内高程差异和法方向与Z轴方向夹角来提取道路边界体素:
(4)
道路主要由道路交叉口及非交叉口(道路分支)组成.道路交叉口作为道路交汇的衔接处,与同一道路直线区域相比较,在几何形态上具有较大差异,即道路交叉口处呈现弯曲形态分布.这种弯曲程度可通过道路边界点的曲率进行描述:
(5)
式中:x′,y′分别为x和y的一阶导数;x″,y″分别为x和y的二阶导数.在保证拟合曲线二阶可导时,本文采用k个近邻点确定二次曲线t的系数(a1,a2,a3),(b1,b2,b3)来估计道路边界的曲率值(图3a).
为提取道路交叉口区域,本文以车载扫描系统轨迹点Ptrai为中心点,构建宽度为w的搜索窗口Wi,统计窗口内道路边界点的曲率和Si来确定搜索窗口Wi是否为道路交叉口区域(图3c).
(6)
(7)
图3 道路交叉口提取Fig.3 Road intersection extraction
在车载激光点云数据中,道路交叉路口存在较多遮挡、噪声或是临近地物干扰等因素,使得道路交叉路口的轮廓特征不完整,同时其细节结构较为多样,识别难度大.针对道路交叉口难以区分类型的情况,本文将检测的道路交叉口点云聚合成独立对象,采用动态图神经网络(Dynamic Graph CNN,DGCNN)[20]来学习道路交叉口的高级特征,将其分为“十”和“T”字路口,其网络架构如图4所示.
图4 DGCNN网络架构Fig.4 DGCNN network architecture
DGCNN网络核心为EdgeConv模块,该模块能够保证点云置换不变性的同时提取点云的局部邻域特征,并采用动态图更新的方式聚合局部邻域节点特征更新点的新特征.对于输入的道路交叉口对象X={x1,x2,…,xn}⊆R3,n为点个数,R3为三维点云集合,边卷积EdgeConv模块提取局部特征的主要流程如下:
1)逐点计算k近邻节点,对于顶点xi,获取距离其最邻近的k个点xi1,xi2,…,xik.
2)计算顶点xiKNN图结构的边特征ei1,ei2,…,eik:
eik=hΘ(xi,xik-xi),
(8)
式中hΘ:RF×RF→RF′是参数化的非线性函数,其权重Θ=(θ1,…,θF′,φ1,…,φF′)利用多层感知机(Multi-Layer Perceptron,MLP)进行学习,F及F′是特征维度.
3)采用Maxpooling层进行通道级的对称聚合操作,对k个边特征进行邻域特征聚合,提取每维向量中最大值更新作为顶点xi的特征x′i:
(9)
为提取不同类型道路交叉口的可区分信息,本文堆叠两个EdgeConv模块提取道路交叉口的多层次局部几何特征,然后输入到分类器(mlp{64})进行交叉路口类别预测.在目标分类任务中,主要使用交叉熵(Softmax Cross Entropy)来计算网络的预测损失(Prediction Loss).因此本文使用交叉熵作为损失函数(L),依据DGCNN模型输出的道路交叉口类别概率进行网络的拟合,具体公式如下:
(10)
本文采用两份不同城市的车载激光点云数据作为实验数据(图5)验证道路交叉口识别效果.其中数据Ⅰ为由Rigel-VMX45车载激光扫描系统采集的福州市城区数据,道路总长约为16.48 km,约14.5亿个点,点密度约为276点/m2,整体呈现环状分布,其特点在于整体呈现较大的地势起伏,且点云密度较大,包含了城市区域主干道及次干道主要道路交叉口.数据Ⅱ为中海达扫描系统采集的泉州市街区场景数据,其道路总长约为5.03 km,约7 000万个点,点密度约为180点/m2,整体呈现带状分布,其特点在于点云密度较小、道路较为狭窄,包含了典型街区小型路口.
图5 两份不同道路场景的实验数据Fig.5 Experimental data of two road scenes
由于车载激光点云数据大,为减小点云数据处理工作量,本文对两份点云进行抽稀处理,保证两点之间最小阈值为0.02 m.根据《城市道路施工规范》(CJJ37—2012)标准中对道路边界高度的相关规定为0.2 m,因此在预处理的布料模拟滤波过程中,将地面点高度阈值设置为0.2 m,格网分辨率设置为0.5.在道路边界提取中,地面超体素分割结果受体素分辨率r的影响.为了确定适合实验数据的体素分辨率r,本文选取数据Ⅰ中的部分场景(图5),设置体素分辨率r值从0.5 m到2 m进行4组实验.如图6所示:当r为0.5时,超体素分割效果最佳,能较好地分割道路边界且不超过边界区域;随着r的增加,超体素分割开始跨越边界.据此,综合考虑分割道路边界分割效果,在后面实验中将超体素分辨率r设置为0.5 m.
图6 超体素参数实验方案Fig.6 Experimental schemes of supervoxel parameters
将地面过分割为超体素后,为提取完整道路边界点云,本文将道路边界体素高程差阈值设置为0.18 m、最小法向夹角阈值设置为67°、去噪点数阈值为500提取道路边界点云,结果如图7所示.
图7 实验数据道路边界提取结果Fig.7 Extraction of road curb from test data
从图7中道路边界提取结果可以看出,本文方法能够准确地提取绝大多数的道路边界点云.对于道路交叉口处(图7a中②③和图7b中①)等道路边界取得了较好的提取结果.从图7中可以看出提取道路边界中存在少量其他地物点,这些错误道路边界点云主要分布在道路两侧的人行道边界和花坛底部边缘.这主要是因为这两类地物的形状与道路边界较为相似.同时从图7a中④和图7b中②可以看出存在部分路坎漏提取的情况,主要是因为该路段由于道路交叉口点云非常稀疏和地物遮挡造成的边界点云缺失,形成细碎点云,在道路边界优化阶段被错分为噪声点剔除.
由于实验数据Ⅰ为城区数据,道路交叉口范围较小,本文设置道路交叉口搜索窗口为70 m;而实验数据Ⅱ为街区数据,道路宽度较窄,轨迹点搜索窗口则设置为30 m,道路交叉口聚类点曲率和阈值设置为1.1.两份实验数据中道路交叉口和非道路交叉口提取结果如图8所示.
图8 道路交叉口提取结果Fig.8 Road intersection extraction results
从图8中的道路交叉口提取结果可以看出,本文方法可以提取绝大多数道路交叉口,不仅能够有效识别形状明显的道路交叉口区域(图8a中①),同时能较好地识别小型道路交叉口(图8b中③),具有较强的稳健性.同时,本文方法存在少量误提取与漏提取道路边界,主要分布在弯曲程度较小(如图9中场景A)或数据缺失道路交叉口区域(如图9中场景B).
图9 道路交叉口误提取和漏提取结果Fig.9 Overview of some subsets of road intersection misdetection and error detection
由于没有现成的训练样本集用于训练道路交叉口分类,本文通过人工标记从其他道路场景的车载激光点云中提取不同缺失程度的十字路口、T字路口作为训练样本,部分样本如图10所示.由于人工提取样本成本较高,为扩充训练样本总数,通过水平旋转、抖动、添加噪声等操作扩增形成3 000个训练样本集.
图10 人工提取道路交叉口样本Fig.10 Manually extracted road intersections as training samples
在DGCNN模型训练阶段,本文对批处理(Batch Size)、初始学习率(Learning-rate)、衰减率(Decay Rate)、最大迭代次数等训练参数进行了多次调试,最终将批处理大小设置为16,学习率设置为0.001,衰减率设置为0.7,最大迭代次数设置为500 .利用训练好的DGCNN模型从两份实验数据中识别的道路交叉口结果如图11所示.
图11 道路交叉口分类结果Fig.11 Road intersection classification results
从以上道路交叉口分类结果可以看出,两份实验数据的绝大部分道路交叉口类型均能被正确分类.本文方法不仅对于十字路口具有较好的分类效果(如图11a①②和图11b③),同时对于部分受遮挡导致道路交叉口缺失的T字路口也具有较好的分类效果(如图11a④和图11b②).这说明DGCNN模型能够克服道路交叉口数据缺失的影响,准确地将交叉口分类.但DGCNN模型交叉口识别精度一定程度上受样本类型影响,部分并未涉及的环形道路交叉口类型被错误分类为T字路口(如图12中场景A).同时由于部分道路场景噪声较多,造成DGCNN 将部分非道路交叉口被错误分类为T字路口(如图12中场景B).
图12 道路交叉口误分类结果Fig.12 Overview of some subsets of road intersection misclassification
由于实验数据中没有提供标定的真实参考数据,本文采用人工标定方式统计实验数据道路交叉口数量及类型,其中数据Ⅰ共包含23个道路交叉口,十字路口为6个,T字路口为17个,数据Ⅱ共包含30个道路交叉口,十字路口为1个,T字路口为29个.本文采用准确率(Preciosn,P)、召回率(Recall,R)来计算本文方法的道路交叉口分类精度.
(10)
(11)
式中:TPs为正确识别道路交叉口个数;FPs为错误识别的道路交叉口个数;FNs为未被识别的道路交叉口个数.
表1为道路交叉口分类精度结果.
从表1中可以看出,本文算法能够准确分类出实验数据Ⅰ中所有十字和T字路口,两种类型道路交叉口准确率为100%.但由于部分路段遮挡情况严重,道路交叉口存在漏提取,造成T字交叉口召回率相对较低.在实验数据Ⅱ中十字路口准确率和召回率达100%,T字路口准确率达89.65%,召回率达100%.T字路口准确率较低的原因在于部分环形道路交叉口本文尚未涉及,造成道路交叉口误提取.整体而言,在两份数据中,十字路口分类准确率与召回率均达100%,T字路口准确率与召回率均在89%以上,这表明本文方法能够从车载激光点云数据中分类绝大多数的道路交叉口,适用于复杂城区和街区道路场景.
表1 道路交叉口分类精度
本文提出了一种基于动态图神经网络的道路交叉口检测与识别的方法,通过两份不同城市环境的车载扫描数据对本文方法有效性进行了验证.目前本文方法能够识别道路交叉口及交叉口类型,在复杂城市和街区中,十字交叉路口的准确率和召回率可达100%,T字交叉路口准确率和召回率可达89%以上.由于车载激光扫描系统获取数据易被地物遮挡,本文方法提取的道路边界存在少量的缺失与噪声,这造成后续道路交叉口类型的错误识别.由于样本类型和数据的限制,利用DGCNNN 模型无法准确分类未见的道路交叉口类型.因此在今后的研究中,将致力于提升道路边界提取的完整度,并进一步改进道路交叉口识别优化方法,同时提升道路交叉口识别的类型完整度,服务于车载激光点云道路交叉口类型识别.