APP下载

基于车载图像的目标车辆压线检测方法①

2019-11-15王子磊

计算机系统应用 2019年11期
关键词:压线车道车辆

邱 康,王子磊

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

1 概述

车辆压线检测是指对车辆运行过程中因跨越不同车道而使车轮碾压车道线的行为进行检测,它在智能交通系统中具有重要意义,能起到自动记录违章行为、震慑交通违法者、优化车流量分布、驾驶辅助等作用[1-8].

已有的车辆压线检测研究大部分是利用监控摄像头对特定区域内的车辆进行压线检测.于永彦[3]在黄线区域周边设置侧拍、尾拍、迎拍等多种监控方式,基于小波变换分割技术,采用相邻帧对应像素对比较的方法判断该区域有无车辆压线行为.洪琦[4]等通过检测若干相邻帧中车道线几何形状的变化实现观测区域内的压线检测.陆蔚[5]针对监控视频中固定的黄线区域,通过计算视频帧间平均灰度值变化的方法进行压线检测.赵文东等[6]将监控视频中无车辆压线的固定黄线区域分割出来作为模板,然后用模板和待检测区域匹配,运用基于颜色直方图的图像分割匹配算法判断该区域是否有车辆压线行为.熊金艳等[7]通过计算帧间灰度平均差的方法来判断黄线残缺,通过黄线连续残缺最大长度的阈值化判断是否有车辆压线.王建华等[8]提出了基于边缘检测和Hough 变换的黄线区域检测方法、基于背景差分法的车辆检测方法和基于区域重叠的压线检测方法.胡鹏[9]提出了基于Hough 变换的车道线检测、基于阈值分割的车辆检测方法和基于区域重叠的车辆压线检测方法.以上研究都针对固定区域的黄线进行压线检测,应用场景比较受限.

不同于上述固定监控视角的检测,本文考虑利用车载摄像头对前方目标车辆的压线行为进行检测,其主要优势有:(1)车载摄像头不固定且数量更多,可以检测到更广泛区域内的压线行为(如非路口区域);(2)车载摄像头相对目标车辆的位置和视角可变,可以更灵活地检测各种情况.(3)基于车载摄像头的前方目标车辆压线检测可以对前方车辆压线变道做出预警,防止本车发生追尾、碰撞等事故.然而针对这类问题的研究工作较少.胡海辉[10]提出了基于差分的车道线边缘检测以及基于车道线夹角变化的车辆自身变道和压线检测方法.文献[11]把摄像头固定在车轮上方,通过计算车轮外侧边缘切线和计算车道边缘线,根据两线是否相交来判断车辆自身是否压线.文献[12]探究了基于车载视频对前方车辆的压线检测,采用图像掩蔽的局部匹配算法,从视频中每隔20 分钟选取1 帧无压线行为图像作为模板,并每隔5 帧读取1 帧实时图像与模板做相似度对比.但是移动车载图像不同于固定监控图像,其在一定时间内变化更大,模板匹配方法容易导致误判.

实际上,基于车载摄像头对前方目标车辆进行压线检测存在较大的挑战,主要有以下两方面:(1)基于监督学习的车辆压线检测方法需要大量标注数据进行训练,但获取与标注车辆压线数据需要耗费大量人力物力,且一些危险行为在现实中难以采集,目前尚无相关公布的数据集;(2)车载图像中由于视角原因,车道线和车辆遮挡非常严重,难以直接根据对象在图像中的位置判断是否压线.针对这些问题,本文从数据和方法两方面开展研究.(1)在数据方面,采用虚拟交通道路场景构建、数据自动采集和标注,生成大量车载图像及其对应标注,得到压线检测数据集(Lane-Crossing Detection dataset,LCD 数据集).(2)在方法方面,针对视角带来的图像空间与物理空间难以映射的问题,采用车辆较低的前后轮下端位置估计进行压线检测.

综上,本文主要有以下3 个方面的贡献:(1)利用合成数据方法构建了车辆压线检测LCD 数据集,数据标注丰富准确,场景、时间、天气等多样化,摄像头的视角和距离多样;(2)结合图像语义分割,提出了基于前后轮位置估计的压线检测方法,能够有效处理低视角带来的判别问题;(3)进行了不同设置的实验,本文车辆压线检测方法在测试数据上的平均精度达到88.7%,并且分析了不同光照和天气条件对检测结果的影响.

2 压线检测(LCD)数据集

真实的压线检测数据需要车辆在道路上运行采集,等待各种天气与时间条件,且需人工标注.数据获取难度大且多样性不易满足.针对这些问题,一种思路是利用合成数据进行研究,如文献[13]使用Unity3D 构建了若干可变换多种天气和时间的场景,在其中自动采集并标注数据,以此构建了Virtual KITTI 数据集,用于目标检测、跟踪,场景与实例分割,验证了深度学习算法在真实与虚拟数据中训练有类似的效果.文献[14]利用合成数据方法构建的SYNTHIA 数据集目前已成为交通场景语义分割的标准数据集.

本文基于Unreal Engine 4 构建多种交通场景,并利用插件Airsim[15]开发数据采集器和数据标注器,以此构建LCD 数据集.为逼近真实情况,数据集在场景、目标车辆、时间点、天气等方面都进行多样化设置.真实交通场景中,路口附近实线较多,所以主要考虑路口对应的场景,构造的场景包含四种不同类型的路口:非对称路口、高架桥路口、下穿隧道路口和T 字形路口,如图1所示.

城市道路主要运行的是小汽车,还有部分货车和巴士,为此构造了具有代表性的目标车辆:小汽车和货车.在光照方面,为了观察不同光照对本任务的影响,构造了多种光照时间点:中午(noon)、傍晚(evening)和深夜(night),如图2所示.

在天气方面,为了观察不同的天气对本任务的影响并进行对比,构造了晴天(sunny)、小雨天(lightRain)、大雨天(heavyRain)、小雾天(lightFog)、小雪天(lightSnow)等天气,如图3所示.

图1 4 种场景

图2 3 种光照

图3 5 种天气

小汽车在汽车总体中占比超过83%,且是汽车保有量增长的主要组成部分[16],也是城市道路交通中的主体,故本文重点针对小汽车(含SUV 等)的压线行为进行研究.最终构建的LCD 数据集在不同的天气和时间点上的分布情况如表1所示,我们采集了更多的常见情况下的数据:白天的数据较多,傍晚的数据相对较少;车辆压线的数据总是少于不压线的数据.举例说明,表1中天气为sunny、时间为noon 的数据有4542 条,其中压线数据占比29.3%;天气为lightSnow、时间为evening 的数据有664 条,其中压线数据占比36.9%.此外,在每种条件下,都在场景中设置2-6 条线路进行采集,每条线路以从0 开始递增的整数routeID 标识,不同线路的数据量大致相同.举例说明,表1中天气为sunny、时间为noon 的数据含6 条线路,对应的routeID 范围为0-5;天气为sunny、时间为evening 的数据含2 条线路,对应的routeID 范围为0-1.

每1 条数据包含3 个文件:原图、分割图、压线标签json 文件,如图4所示.其中,分割图是原图的像素级标签,标记着原图中每一个像素所属的类别如车辆、车道线、绿化带等;原图和分割图的分辨率都是1120×700;压线标签json 文件包含overlap (目标车辆是否压线)、vehiclePos2D (目标车辆中心在图中投影的位置)、vehicleScale (目标车辆在3D 场景中的尺寸)、vehicleVelocity (车辆速度矢量)、lineScale (目标车辆碾压的车道线在3D 场景中的尺寸)、linePos2D(目标车辆碾压的车道线的起点在图中投影的位置)等信息,可用于判断目标车辆压线与否、计算车辆压线程度等.

表1 LCD 数据集分布

图4 LCD 数据集样本

3 压线检测方法

实际情况中,车辆压线的判断依据是车轮所代表的车体与车道线是否相交.从图像角度考虑,需要找到三维空间中的车轮与车道线在车载图像中的映射,根据其相交与否进行压线判断.本文方法首先利用图像语义分割方法检测车辆和车道线在图像中的对应区域,然后估计前后轮在车辆区域的位置,并检测车道线的轮廓,最后依据两者是否相交进行压线判断.

3.1 总体流程

完整的车辆压线检测方法总体流程如图5所示,主要分为4 个步骤:车道线检测、车辆检测、ROI 获取和压线判断.

(1)车道线检测和车辆检测:在原图中进行前方目标车辆检测和车道线检测,利用图像语义分割模型获得检测结果,以分割图表示.

(2)ROI 获取:针对单一目标车辆,在分割图中获取车辆区域的最小水平外接矩形R’,为使ROI 包含更多的车道线区域以便检测判别,将R’按一定比例向外扩展得到最终ROI 区域R,如图6.(3)压线判断:获取到ROI 后进行压线判别,这是本文需要解决的一个难点.当直接用Resnet50[17]进行图像分类时,结果显示训练准确率和测试准确率都在50%左右波动,说明该任务对模型来说几乎不可学.主要原因是该任务是一个复杂的三维空间位置关系判断,而目前的深度学习模型并不擅长解决此类问题.为此,本文提出基于前后轮位置估计的压线检测方法,下节具体说明.

图5 车辆压线检测方法总体流程图

图6 ROI 获取示意图

3.2 压线判断

基于前后轮位置估计的压线判断方法流程如图7所示,分为3 个步骤:车道线轮廓检测、车辆前后轮位置估计、车辆压线判断.

图7 压线判断流程图

(1)车道线轮廓检测[18]:从ROI 中分离出车道线区域,然后检测出车道线轮廓对应的直线,如图8所示.

(2)车辆前后轮位置估计:从ROI 中分离出车辆区域,计算目标车辆的两个前轮和两个后轮分别与地面接触的线段,如图9所示.

(3)车辆压线判断:将车辆前后轮位置估计结果和车道线轮廓检测结果融合并进行压线判断,具体方法为:若任意一条车轮和地面接触的线段与任意一条车道线轮廓对应的直线相交,则认为车辆压线;否则认为车辆未压线.

在整个压线检测计算中,目标车辆前后轮位置估计是难点,也决定了压线检测的准确度,下面重点介绍这一部分的实现方法.事实上,在车辆前后轮估计过程中,车身轮廓是最关键的信息,车身内部对结果几乎没有影响,故首先对车辆进行边缘检测,将将车轮搜索区域从车辆整体区域减少为车辆轮廓区域,这样可以大幅降低前后轮的搜索时间.具体搜索过程为:首先,找到搜索区域的左下点A 和右下点B,即搜索区域内分别与ROI 图像边缘左下角和右下角距离最近的两个点.将A 和B 形成的线段看作车辆两个后轮与地面接触的线段.然后,根据不同情况在搜索区域内移动A 和B,得到左上点C 和右上点D,C、D 形成的线段看作车辆两个前轮与地面接触的线段.这里移动方式是计算的关键,决定移动方式的核心是判断车辆相对车载摄像头的倾斜程度,这里用搜索区域最小水平外接矩形R’的宽高比(w为宽度,h为高度,简记为w/h)和基于目标车辆的类型设置的阈值ω来衡量:

图8 车道线轮廓获取示意图

图9 轮胎位置获取示意图

(1) 当w/h<ω时,目标车辆倾斜程度较小,直接将线段AB 沿垂线方向平移一段距离d即可得CD.如图10(a)所示(图中包含车道线轮廓的检测结果)

(2) 当w/h≥ω时,目标车辆倾斜程度较大,某一个前轮很可能未被遮挡,所以直接对前轮估计位置.具体地,分别在搜索区域内部横向的最大、最小值的αpx 近邻范围内(如图10(b)绿色竖线外侧的红色车辆区域) 寻找垂直方向最下的位置,分别得到两个点left_point和right_point(图10(b)搜索区域内的左右两个绿色圆圈中心点),它们为潜在的前轮点,这两点中垂直方向较上的即为前轮,如图10(b)中的right_point.此时判断车辆是向右倾斜的.找到车辆右前轮点D 后需要找到左前轮点C;反之亦然.首先确定临时点C’:C’D 平行于AB,且两者长度相等;然后,由于投影的关系,将C’向图像中心收缩一定的距离,横向βpx,纵向β/4 px.即得到最终的C 点,CD 就是两个前轮与地面接触的线段,如图10(c)所示.

图10 前轮估计

4 实验与分析

4.1 实验设置

目标车辆前后轮位置估计的精度主要由其中的几个参数ω,d,α和β决定.事实上,由于目标车辆与摄像头之间的距离和倾斜角度多变,无法对车轮进行完全精准的估计,尽可能逼近即可.下面对这几个参数的设置方式进行说明.

ω的与目标车辆横截面的最小水平外接矩形的宽高比相关,当车身相对车载摄像头完全不倾斜时,其在车载图像中的投影的最小水平外接矩形即可近似认为是车身横截面的最小外接矩形,如图11(a)所示;当车身相对车载摄像头较较倾斜时,其在车载图像中的投影的最小水平外接矩形的宽高比会更大,如图11(b)所示;当摄像头恰好可以观测到前轮之时,此时的宽高比即为ω,如图11(c)所示,对于图中的车辆ω=1.5.实际情况中,可以对常见车辆进行宽高比采集阈值并录入数据库,算法运行过程中只需进行查询即可获得相应参数.

d与h和目标车辆长度有关,对于小汽车,可以简化为d=0.2×h.观察图11,可知车身倾斜程度越大前轮与地面接触的区域在ROI 中离车辆边缘越远,所以α与宽高比正相关.同时,实验过程中ROI 的尺寸为固定的200×200,故这里简化地将α设为 (5×w/h).同样由于ROI 是固定大小的,可以将β简化地设为固定值,这里设为12.

图11 前轮车身倾斜程度与宽高比示意

4.2 实验内容

为了验证本文所提方法在车辆压线检测任务上的有效性,在LCD 数据集上进行不同条件的对比实验,主要有以下3 个方面的目的:

(1)压线判断方法验证:针对所提压线判断方法,利用多种条件下数据的ground truth 分割图进行实验,可以获得理想分割结果下(即车辆车道线检测完全准确)压线检测方法的总体效果,亦即压线判断方法的有效性,记为Accuracy1.

(2)天气和光照的影响:基于视觉的方法会受到天气、光照条件等因素的影响,本文利用DeepLab v2[19]语义分割模型进行车辆和车道线检测.利用多种条件下的数据进行实验,以mIoU 作为车辆和车道线检测方法的准确率,获得环境因素对结果的影响.

(3)压线检测方法整体有效性:基于语义分割模型产生的结果进行压线判断,可以获得真实情况下压线检测方法的整体有效性,记为Accuracy2.同时分析其与Accuracy1 和mIoU 之间的关系.

此外,基于监督学习的方法需要对训练数据和测试数据进行划分,这里采用一个简单的做法:每种条件下routeID=0 的数据作为测试数据,其余数据作为训练数据,压线检测都在测试数据上进行.综上,实验设置如表2所示,共7 有个条件对应的实验组别,每组都针对上述3 个目的进行实验,共21 个实验.

表2 压线检测方法对比实验设置

4.3 结果分析

最终得到实验结果如表3所示.

表3 压线检测方法对比实验结果

从表3的实验结果我们可以对上节的实验目的分别得出以下结论:

(1)从基于ground truth 的结果来看,Accuracy1 都在92.6%以上,说明本文所提压线判断方法是有效的.实验结果表明,误判的主要因素有两种:首先是临界数据,即车轮与车道线恰好相交,由于图像精度原因产生误判;其次是车轮相对摄像头倾斜程度过大,前轮在图中比后轮位置还低,直接导致后轮与前轮检测方法失效,最终导致误判,如图12所示.但这两种因素在实际情况中较少.

图12 主要的误判情况

(2)语义分割的mIoU 整体较高,主要原因是分割目标类别较少,只有3 类:背景、目标车辆和车道线.其中实验6 较低,因为傍晚相对中午缺少阳光,相对深夜缺少路灯光,光照条件最差;大雨和小雪天气会使路面和车辆形成反光、遮挡等不利因素,故其mIoU 相对于晴天和小雨天较低;小雾天气由于只会使图像中视野远方的区域亦即背景变得模糊,故对整体的mIoU 并无降低的影响,相反地,由于其反光效果将车辆和车道线尤其是车辆的亮度提升,并将背景模糊降低了干扰,从而提升了整体mIoU.

(3)从每组实验组内对比可知,Accuracy2 相对于Accuracy1 都会有一定幅度的降低,主要原因是语义分割模型可能将交通道路环境中的其它个别车辆识别为目标车辆;其次是目标车辆的压线检测方法的应用场景主要是路口附近区域,语义分割模型将一些路面箭头也识别为车道线,如图13所示.

图13 Accuracy2 降低主要原因

但是Accuracy2 依然能保持较高水平.只有极端情况如傍晚光照不良的情况下,准确率才会有大幅度的降低.图14反应了Accuracy2、Accuracy1 和mIoU的相关性:Accuracy2 是受Accuracy1 和mIoU 的双重影响的.具体地,实验1、2、5、7 中Accuracy1 较高,且mIoU 也较高,故Accuracy2 也较高;实验3、4 中虽然mIoU 较高,但是Accuracy1 本身较低,故Accuracy2也较低;实验6 中Accuracy1 本身较低,mIoU 也较低,最终Accuracy2 相对最低.

图14 Accuracy1 与Accuracy2 和mIoU 的关系

4.4 性能分析

本文所有实验都在GPU 服务器完成,实验的软件以及硬件相关参数如表4所示.

表4 实验的软件以及硬件

性能取决于软硬件环境,同时也取决于所用算法.此外,图像尺寸也有显著影响.较大的图像在搜索、对比、统计等方面耗时都更多;较小的图像虽然可以提升性能,但是过度压缩通常会损失较多信息尤其是轮廓边缘信息,使得检测准确率降低.

性能相关指标如表5所示.其中,原始图像尺寸取决于采集设备;ROI 尺寸在性能和准确率之间折衷进行选择;主要关注指标为单张图像压线检测平均耗时,即单张图像语义分割和压线判断平均耗时之和.语义分割模型的训练过程相当耗时,但是模型训练完成后的测试过程相当迅速,这里仅记录测试过程所耗时间,皆以毫秒为单位,如表5所示.

表5 压线检测方法实验性能对比结果

可见单张图像的目标车辆压线检测平均共耗时35 毫秒,基本可以满足实时性要求,具备实际应用价值.

5 结束语

利用车载摄像头对目标车辆进行追踪和图像数据采集,能有效地对其进行压线检测,检测的关键在于车轮和车道线的相对位置.本文结合图像语义分割方法完成车辆和车道线检测,提出基于前后轮位置估计的压线判断方法,实现了一个完整的基于车载图像的目标车辆压线检测方法,实验表明,所提方法简单有效.本文利用合成数据开展研究,后续可对做旧[20]等方面进行研究,进一步提升合成数据的真实性.

猜你喜欢

压线车道车辆
北斗+手机实现车道级导航应用
铝合金窗压线受力分析
避免跟车闯红灯的地面车道线
浅谈MTC车道改造
哑口无言
包装纸箱模切压线的处理方法
车辆
冬天路滑 远离车辆
车辆出没,请注意
易撕胶带