APP下载

基于车载视频的压线检测与车道偏移预警

2019-06-11王子磊

网络安全与数据管理 2019年6期
关键词:车道预警直线

邱 康,王子磊

(中国科学技术大学 信息科学与技术学院自动化系,安徽 合肥 230027)

0 引言

车辆压线检测是指针对车辆运行过程中发生的压线行为进行检测,可以在车辆发生车道偏移或压线行驶时对司机做出警告,避免由于司机的疏忽大意、疲劳驾驶、驾驶陋习等原因造成交通事故,是辅助驾驶的一个重要功能。

已有基于视觉的方法大都基于车载视频实现。文献[1]针对车辆直行情况下的车道偏移进行研究,在车辆较倾斜的情况下可能失效。文献[2]利用扇形投影法对车道偏移进行检测,但是其基于消失点的本车道识别比较复杂和耗时。文献[3]利用车辆变道过程中涉及的两条车道的三条车道线之间夹角变化进行车辆压线变道检测,但实际情况中车道数目多变,常导致这三条线难以确定。文献[4]利用基于人工鱼群算法进行车道线检测,利用SAE算法进行车道偏离检测,整体实时性不足。文献[5]利用单目成像原理对车辆变道行为进行分析,但是算法整体过程较繁杂,实时性不足。文献[6]将摄像机固定在车轮上方,检测车轮边缘切线和车道边缘线,根据两线是否相交来判断车辆是否压线,由于涉及多个摄像机的处理,系统较为复杂。

事实上,基于车载视频的车辆压线检测研究主要存在以下几个问题:(1)基于监督学习的车辆压线变道检测方法需要大量标注数据进行训练,但是车辆压线变道数据的获取与标注需要耗费大量人力物力,且一些危险行为在现实中难以采集;(2)已有的车辆压线变道检测方法往往涉及大量复杂的计算,算法实时性不足,并且未给出车辆在当前车道的语义信息如朝向、位置等,不能及时给出车身修正建议。对此,本文从数据和方法两方面开展研究。数据方面,采用虚拟交通道路场景构建、数据自动采集和标注,生成大量车载视频及其单帧图像标注,得到丰富多样的压线检测数据集。方法方面,结合图像语义分割完成车道线检测,通过简单的车道线夹角变化及其在图像中的位置比较进行车辆压线检测,并对车道偏移做出预警,同时给出车辆的位置和朝向,便于修正。

1 压线检测数据集

真实的压线检测数据需要车辆在道路上运行采集,等待各种天气与时间条件,且需人工标注。数据获取难度大且多样性不易满足。对此,利用合成数据是一种较好的解决方案。文献[7-8]使用3D引擎构建了若干场景,在其中自动采集并标注数据,以此构建虚拟交通数据集,用于目标检测、跟踪、语义分割等任务,证明了深度学习算法在合成数据中具有较好的效果。

本文基于Unreal Engine 4构建多种交通场景,利用Airsim[9]开发数据采集器和数据标注器。为逼近真实情况,在各环境条件上进行多样化设置。考虑到辅助驾驶的重点应用场景,构造了普通城市道路、城市快速路、高架桥、隧道等场景,如图1所示。

图1 不同场景

为观察不同光照和天气对任务的影响,构造了多个时间点:中午(noon)、傍晚(evening)和深夜(night);同时构造了晴天(sunny)、小雨天(lightRain)、大雨天(heavyRain)、小雾天(lightFog)、小雪天(lightSnow)等天气,如图2所示。

图2 不同光照与天气

利用安装在车头正中的摄像机进行视频采集,以单帧图像形式保存,对每帧图像进行标注。最终构建的数据集分布情况如表1所示,采集了更多的常见情况下的数据:白天的数据较多,傍晚的数据相对较少;压线数据少于不压线数据。如表1中天气为sunny、时间为noon的数据有2 625条,其中压线数据占比38.6%。此外,每种条件下都在场景中设置3条线路进行采集,分别以值为0、1和2的routeID标识,不同线路的视频帧数大致相同。

表1 压线检测数据集分布情况

1帧图像数据对应3个文件:原图、分割图、标注文件。其中,分割图是原图的像素级标注,标记着原图中每个像素所属的类别如车辆、车道线等;标注文件包含overlap(车辆是否压线)、vehicleScale(车辆尺寸)、vehicleVelocity(车辆速度矢量)、lineScale(车辆碾压的车道线在3D场景中的尺寸)、linePos2D(车辆碾压的车道线的起点在图中投影的位置)等信息,可用于判断车辆压线与否、计算车辆变道程度等。

2 方法

2.1 压线检测总体流程

首先对当前帧中的车道线区域进行检测,然后对车道线轮廓进行拟合并识别当前车道,由左右两条车道线表示,计算这两条线的几何参数,据此进行压线判断,具体流程如图3所示。

图3 压线检测方法流程图

下面对流程图中的相关步骤进行阐述。

(1)车道线区域检测。利用图像语义分割[10]的方式检测出车道线区域。

(2)车道线拟合。考虑到曲线拟合的复杂性和主要应用场景的道路线特点,可使用直线模型对车道线进行拟合。本文利用Hough变换检测图像中多条车道对应的车道线。经典的Hough比较耗时,对此从几个方面进行改进:对车道线区域进行边缘检测,减少搜索点数量;场景中有许多虚线,许多不同路段的直线实际上属于同一条直线,故可以设置两条直线之间的最大间隔,小于该间隔的直线认为是同一条直线;车道线区域有许多噪点,对此设置形成一条直线需要的最少的点的数量,避免噪声干扰。

(3)当前车道识别。当前车道定义为车头中点所在车道。在车载视频图像中,车头中点对应图像底部水平线段L的中点O。故当前车道计算方法为:计算所有车道直线Li与L所在直线的交点Di,计算线段ODi的长度di,O左右两侧分别最小的dl和dr对应直线即为当前车道线Ll和Lr,如图4所示。特殊情况下O位于某一条车道线中,此时车辆压线程度较大,不定义当前车道,仅给出该车道线的左右两边轮廓对应直线。

图4 当前车道识别

2.2 压线判断

观察当前车道线与车辆的位置关系,如图5所示。

图5 不同位置的车辆与车道线的几何关系

当车辆正常居中行驶时,左右两条车道线与L分别形成的较小角(即不取大于90°的另一个角)θl与θr几乎相等,且都较小;当车辆向一侧如右侧偏移时,θr开始增大,直至压线过程接近90°。据此简化地定义车辆压线行为:max(θl,θr)>θt。其中θt是阈值,与车载摄像机高度、视场角(FOV)和车道宽度有关。大部分的小汽车车头高度在80 cm左右,数据集中使用的车载摄像机的FOV为90°,中国主流车道宽度为3.5 m,据此可得较好的阈值θt为49°。

显然,当车辆靠近车道右侧时θr大于θl,反之θl大于θr,据此可得车辆在当前车道的位置,定义为position,其取值为-1、0、1,分别意味着车辆在当前车道左侧、中间、右侧。

车辆方向在图像中投影为的L中垂线Lm,如图6所示。定义车辆在当前车道的方向为direction,其取值为-1、0、1,分别意味着车辆在当前车道向左、向中、向右。显然,Ll和Lr都分别与Lm相交,交点为Pl和Pr。在图像坐标系下,当Pr的y值较大时,车辆向右,反之向左。特殊情况下,Pl和Pr有一个不在图像中,如图6中第三幅图,此时Pl不在图中,虽然其y值较大,但是车辆向右。

图6 车辆在当前车道方向

事实上,依据position和direction可以进一步优化压线判断方法。只考虑车辆向前行驶的情况下,当position和direction同号,车辆即将或已开始压线,车头更靠近车道线,此时θt应较大;当position和direction异号,车辆即将或已结束压线,车头较车尾离车道线更远,此时θt应较小,据此,分别设阈值θt1和θt2,其中θt1>θt2,依据先验知识将θt分别增加和减少5°得到θt1和θt2分别为54°和44°。

2.3 车道偏离预警

通过适当减小压线判断阈值θt1,可以在车辆还未压线时就触发压线的判断,当连续T1帧未压线后连续T1帧压线则触发警告,起到车道偏离预警的作用。同样依据先验知识,减小θt1至50°,设T1为2。

3 实验与分析

3.1 实验内容

为验证所提方法的有效性,在数据集上进行不同环境条件的对比实验,主要有以下三个方面的目的:

(1)压线判断方法验证:利用数据集的ground truth分割图进行压线判断,可得理想情况下(车道线检测完全准确)压线判断方法的总体效果,准确率记为Accuracy1。

(2)压线检测方法验证:以语义分割结果进行压线判断,可得实际情况下压线检测方法有效性,准确率记为Accuracy2,并以mIoU作为车道线检测准确率。

(3)车道偏离预警验证:基于语义分割结果,利用压线检测方法进行车道偏离预警测试。设车道偏离预警的帧数为f,若[f-2,f+2]共5帧范围内存在压线行为且[f-7,f-3]共5帧范围内存在非压线行为则本次预警准确,这里非压线行为的范围要求是防止持续压线过程中的警告,此时已压线许久,预警无意义,不算正确预警;若发生车道偏移而未预警则定义为漏警,设预警准确次数为TP,漏警次数为FN,则可以定义召回率为:

R=TP/(TP+FN)

(1)

以召回率作为车道偏离预警评价指标。

此外,采取用一个简单的做法对数据进行划分:每种条件下routeID=0的数据作为测试数据,其余数据作为训练数据,压线判断和车道偏离预警都在测试数据上进行。不同数据条件设置如表2所示。

表2 实验设置

3.2 结果分析

依据表3的结果,对上述3个实验内容进行分析并得出相应结论:

(1)Accuracy1都在93.5%以上,说明压线判断方法是有效的。实验表明,错误原因主要是临界数据,即车辆恰好压线,此时仅利用车道线夹角是无法准确判断的,但这种数据较少。

(2)由于语义分割类别较少,只有背景和车道线两类,故整体mIoU较高。相应的Accuracy2虽然相对于Accuracy1有所降低,但是整体水平仍然较高。

(3)预警召回率整体较高,将第4组结果可视化,如图7所示,其中“点线”的值为1和0,代表车辆实际压线与否;“点虚线”值为2和0,代表方法判断车辆压线与否;“实线”值为4和0,代表车道偏离警告与否。可见车道偏离预警基本可及时在压线开始之时做出警告,漏警的原因是存在单帧压线检测失败现象,可以通过帧间平滑来解决。事实上,θt1越小越能提前预警,但是也更有可能误警,所以适中选择阈值。

表3 实验结果(%)

图7 车道偏移预警结果可视化

3.3 性能分析

实验均在GPU服务器完成,配置为:Intel(R) Xeon(R) CPU E5-2620 v2 @ 2.10 GHz;DDR3 64 GB;GTX 1080Ti单点运算能力9TFLOPS。实验中,单张图像平均处理时间为78 ms,其中语义分割耗时25 ms,实时性较好。

4 结论

本文提出利用车道线夹角的方式对车辆压线行为进行检测并据此做出车道偏离预警,实现较简单且检测准确率高,实时性较好,具备一定的实际应用价值。后续可通过压线检测帧间平滑处理进一步提升车道偏离预警准确率。

猜你喜欢

车道预警直线
基于OpenCV的直道车道线识别技术研究
预警型智能包装在食品安全中的应用和设计
北斗+手机实现车道级导航应用
超级秀场 大风预警
基于单片机的潮汐车道设计与实现
画直线
斑马线前该如何礼让
画直线
你喜欢直线吗?
预警个啥