李炜钊 桑海峰
摘要:目前很多车道线检测方法采用语义分割的方式,但这些方法仍存在一定的缺陷,例如可检测的车道数量有限以及检测效率较低。因此,我们提出了一种新颖的,通过关键点检测并进行实例分割的方法可以对任意数量的车道线进行检测。整个框架在Tusimple数据集上进行测试并与其他前沿算法进行对比,在整体性能上为最佳算法之一。
关键词:关键点检测;沙漏模块;深度学习;卷积神经网络
中图分类号:TP391 文献标识码:A
文章编号:1009-3044(2021)33-0108-03
开放科学(资源服务)标识码(OSID):
无人驾驶技术是当今计算机视觉研究的主要问题之一。最具挑战性的任务之一是对复杂交通场景信息的理解,其中就包括车道线检测。车道线检测作为无人驾驶的辅助技术,可以帮助引导车辆行驶在正确的区域。而基于摄像头的计算机视觉检测是目前车道检测最主要方法。
1车道线检测技术现状
通常,传统的车道线检测算法主要通过边缘检测、颜色、形状等信息来对车道特征进行提取,还需要人工调节算子,导致工作量大,鲁棒性差。
车道线检测是自动驾驶技术中的重要组成部分[1]。相比于传统人工提取特征方法,利用卷积神经网络检测效果较好。但是面对车道线检测,普通卷积神经网络仍然不能较好地提取车道特征信息,针对该问题,Xingang Pan [2]等人提出Spatial As Deep: Spatial CNN for Traffic Scene Understanding(SCNN)利用增强空间信息来推断结构化对象,特别适用于车道线等长距离连续形状结构的目标检测。此外,受限于语义分割只能应用于固定数量的车道线检测,Davy Neven[3]等人提出 LaneNet+Hnet的网络模型在语义分割的基础上进一步采用实例分割的方法将车道线进行聚类后区分为各个实例进行检测。尽管语义分割作为车道线检测的主要方法,但仍存在两个关键问题,语义分割是对图像中每一个像素进行逐一分类的,降低了网络的训练效率,导致车道线检测速度较慢。另一个问题就是感受野问题。由于我们关注的问题是车道线的检测,在面临车辆遮挡,车道线磨损等许多问题时需要对全局信息有较好的感知才能实现车道精确的定位。针对以上问题,本文提出一种基于改进沙漏模块的车道线关键点检测算法,该算法网络参数更少,计算量更小,并且可以对任意数量的车道线进行检测和准确定位。
2 Stacked Hourglass Network的改进和优化
2.1 网络流程
本文采用的神经网络模型建立在堆叠沙漏模型(Stacked Hourglass Network)之上。图1所示为网络的整体流程。输入图片经过图像调整层,将原始图片大小进行压缩,在本次研究中,我们对输入数据大小为512x256的图像通过卷积层和最大池化层压缩为64x32,节省内存和计算时间。然后传递到沙漏模块进行特征提取,其在关键点检测上取得了出色的表现。每个沙漏模块具有三个输出分支,输出网格的大小与调整后的输入大小相同。沙漏模块结构如图2所示,实质上也是一种编码-解码的结构,目的是获取图像的多尺度信息。本文选取堆叠两个相同的沙漏模块进行训练。
表1展示了网络每层的细节,由于车道线像素在图像中所占比重很少且经过多次下采样容易造成边界信息缺失,因此采用短接层在多次下采样提取深层信息的同时保留了原始图像中的车道信息。
因此,為了能更好地捕捉多尺度信息且不损失过多车道边界信息,本文参考Inception模块提出了一种如图3所示的模块对短接层进行改进和优化。在图2中,由虚线框部分表示。
2.2 损失函数
网络最后输出3个分支分别为置信度分支,偏移量分支,特征分支,通过3个分支对车道上的点进行回归和准确定位。
置信度分支:用来预测图像经过卷积层和最大池化层压缩后的每个网格的置信值。式(1)表示置信分支的损失函数。
[Lconfidence=1Neγeg?Ge(g*c-gc)2+1Nnγng?Gn(g*c-gc)2] (1)
[Ne]表示包括关键点的网格数量、[Nn]表示不包括关键点的网格数量,[gc]表示网格的可信度输出,[g*c]为地面真值。如果输出的置信值大于给定的阈值,则认为所处网格存在一个关键点。
偏移量分支:从偏移分支中,我们可以找到每个点的确切位置。偏移分支的输出值在0到1之间,输出值表示与网格相关的位置。
[Loffset=1Neγxg?Ge(g*x-gx)2+1Nnγyg?Gn(g*y-gy)2] (2)
特征分支:该分支参考了SPGN网络(一种3D点云实例分割方法),通过训练该分支可以使属于同一实例的车道上的点更加接近,不同实例的点更加分离,最后形成不同的实例。式(3)表示特征分支的损失函数。[Lfeature=1N2eiNejNel(i,j)] (3)
[l(i,j)=Fi-Fj2 if Cij=1 max(0,K - Fi-Fj2 ) if Cij=0]
[Cij]表明点i和j点是否相同的实例,[F]表示网络对生成车道点的预测,K为一个常数。如果 [Cij=1]他们是相同的实例,如果[Cij=0],这些点则属于不同的车道。因此可以将网络生成的车道的点分为不同的实例。
总的损失函数为三条分支的和,式(4)为整个网络总的损失函数。
[Ltotal=aLconfidence+bLoffset+cLfeature] (4)
在训练中,我们先将所有系数设定为1.0,在最后50epochs将[a]设为1.5。损失函数适用于每个沙漏模块,有助于整个网络训练的稳定。
3 实验结果及分析
3.1 数据集及评价标准
本文在主流的Tusimple数据集上验证了模型速度和精度并比较所提出的网络的性能。Tusimple数据集采集高速不同时段多种路况,且如表2所示包含较多车道。
本文在显卡为GTX2080的硬件设备下训练改进后的神经网络模型,并遵循Tusimple数据集的原始评估方案,表达式如下。
[accuracy=clipCclipSclip] (5)
其中,[Cclip]表示网络模型对给定图像正确预测的点的个数,[Sclip]表示与其对应的真值点的个数。假阴性和假阳性也由下式给出。
[FP=FpredNpred] (6)
[FN=MpredNgt] (7)
[Fpred]为预测错误车道数,[Npred]表示预测车道数,[Mpred]表示缺失车道数,[Ngt]为真实车道。
3.2 实验结果分析
从表3中可以看出,本文的模型相比于其他模型具有较高的检测精度,高于之前的分割模型,并且具有更低的误检率。
图4显示了在不同场景下本文所提出的模型的检测结果。从图中可以看出,本文提出的模型可以准确地提取并检测出不同驾驶场景下的车道线信息,同时也能很好地适应实际驾驶情况中不同的路面环境,在路面曲率过大、车道线被车辆遮挡等复杂因素影响下仍然能准确地提取当前环境下车道相关信息并进行准确定位。
4 结语
本文提出了一种基于改进沙漏模块的关键点检测网络结合实例分割方法的可适用于复杂场景下车道线检测方法。并通过实验验证,本文提出的网络能够更好地适应实际生活中的各种复杂道路场景,并且具有更高的检测精度和更快的检测速度。
参考文献:
[1] 田锦,张弛,王永森,等.基于mask R-CNN的地面标识检测[C]//中国计算机用户协会网络应用分会2018年第二十二届网络新技术与应用年会论文集.苏州,2018:59-62,86.
[2] PanXingang.Spatial as deep: Spatial cnn for traffic scene understanding[C]. Thirty-Second AAAI Conference on Artificial Intelligence. 2018.
[3] Neven D,de Brabandere B,Georgoulis S,et al.Towards end-to-end lane detection:an instance segmentation approach[EB/OL].2018:arXiv:1802.05591[cs.CV].https://arxiv.org/abs/1802.05591.
[4] 刘军,冯荣达,赵吉宾,等.基于机器视觉的车道线检测研究[J].电子世界,2019,(21):89-90.
[5] 溫云燕,杨伟俊,聂永怡,等.自动驾驶中车道线检测研究[J].工业控制计算机,2020,33(10):80-81,84.
【通联编辑:唐一东】