计算机系统应用  2019, Vol. 28 Issue (11): 188-194   PDF    
基于车载图像的目标车辆压线检测方法
邱康, 王子磊     
中国科学技术大学 信息科学与技术学院 自动化系, 合肥 230027
摘要:车辆压线检测是智能交通系统的一个重要功能, 为此提出一种基于车载图像的目标车辆压线检测方法. 首先, 利用合成数据方法构建一个类型丰富多样的压线检测数据集; 然后, 结合图像语义分割方法完成车辆检测和车道线检测并以分割图形式表示结果, 再使用前后轮估计的方法获取车辆前后轮的位置; 最后, 通过车轮与车道线位置对比实现车辆压线判断. 实验表明, 结合图像语义分割模型后, 所提方法的压线检测平均准确率达到88.7%, 平均耗时35 ms, 具备一定的实际应用价值.
关键词: 车辆压线检测    智能交通系统    车载图像    车辆检测    车道线检测    
Lane-Crossing Detection Method of Vehicles with In-Vehicle Image
QIU Kang, WANG Zi-Lei     
Department of Automation, School of Information Science and Technology, University of Science and Technology of China, Hefei 230027, China
Foundation item: National Natural Science Foundation of China (61673362, 61836008)
Abstract: Lane-crossing detection of vehicles is an important part of intelligent transportation system. To tackle this issue, we proposed a lane-crossing detection method of vehicles with in-vehicle image. First, we use synthesizing-data method to build a rich and varied lane-crossing detection dataset. Then, we use image semantic segmentation to detect vehicle and lane lines, and then we estimate wheels positions of vehicle. Finally, we contrast wheels positions with lane lines positions to judge whether there is lane-crossing behavior. Experiment results show that combined with semantic segmentation model, we achieve an average precision of 88.7% for lane-crossing detection, and the average detection time is 35 ms, which means that the proposed method has certain practical application value.
Key words: lane-crossing detection     intelligent transportation system     in-vehicle image     vehicle detection     lane line detection    

1 概述

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

已有的车辆压线检测研究大部分是利用监控摄像头对特定区域内的车辆进行压线检测. 于永彦[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_pointright_point(图10(b)搜索区域内的左右两个绿色圆圈中心点), 它们为潜在的前轮点, 这两点中垂直方向较上的即为前轮, 如图10(b)中的right_point. 此时判断车辆是向右倾斜的. 找到车辆右前轮点D后需要找到左前轮点C; 反之亦然. 首先确定临时点C: CD平行于AB, 且两者长度相等; 然后, 由于投影的关系, 将C’向图像中心收缩一定的距离, 横向β px, 纵向β/4 px. 即得到最终的C点, CD就是两个前轮与地面接触的线段,如图10(c)所示.

图 10 前轮估计

4 实验与分析 4.1 实验设置

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

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

dh和目标车辆长度有关, 对于小汽车, 可以简化为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]等方面进行研究, 进一步提升合成数据的真实性.

参考文献
[1]
戴先任. 救护车装" 电子警察”护航生命通道好办法. 海口日报, 2018-09-17(008).
[2]
孙龙林. 先进驾驶辅助系统的发展现状和趋势. 汽车电器, 2009(7): 4-7. DOI:10.3969/j.issn.1003-8639.2009.07.002
[3]
于永彦. 公路安全线轧压监测系统的研究及方案设计. 计算机工程, 2002(9): 219-220, 286. DOI:10.3969/j.issn.1000-3428.2002.09.084
[4]
洪琦, 沙新华. 基于视频的车辆违章越线行为检测方法研究. 深圳信息职业技术学院学报, 2005, 3(3): 12-16. DOI:10.3969/j.issn.1672-6332.2005.03.003
[5]
陆蔚. 一种快速检测违规压双黄线的算法. 福建电脑, 2009, 25(10): 87, 107.
[6]
赵文东, 詹永照, 严云洋. 基于小波变换的压线检测算法的设计与实现. 计算机工程与设计, 2010, 31(10): 2412-2415.
[7]
熊金艳, 李鸿. 改进的灰度帧差统计法对车辆违章压黄线的检测. 工业控制计算机, 2013, 26(5): 112-113, 116. DOI:10.3969/j.issn.1001-182X.2013.05.051
[8]
王建华, 徐贵力, 糜长军, 等. 车辆压线检测方法. 电子科技, 2013, 26(2): 71-73. DOI:10.3969/j.issn.1672-464X.2013.02.015
[9]
胡鹏. 基于机器视觉的交通压线判别方法研究[硕士学位论文]. 西安: 西安科技大学, 2017.
[10]
胡海辉. 基于车载摄像机的车辆压线与变道检测技术研究与实现[硕士学位论文]. 南京: 东南大学, 2015.
[11]
青岛慧拓智能机器有限公司. 一种车道压线检测方法及系统: 中国, 201810128866. 9. 2018-02-08.
[12]
唐静. 基于车载视频的前方车辆越线违章行为监测技术研究[硕士学位论文]. 大连: 大连海事大学, 2018.
[13]
Gaidon A, Wang Q, Cabon Y, et al. Virtual worlds as proxy for multi-object tracking analysis. IEEE Conference on Computer Vision and Pattern Recognition. Las Vegas, NV, USA. 2016. 4340–4349.
[14]
Ros G, Sellart L, Materzynska J, et al. The SYNTHIA dataset: A large collection of synthetic images for semantic segmentation of urban scenes. IEEE Conference on Computer Vision and Pattern Recognition. Las Vegas, NV, USA. 2016. 3234–3243.
[15]
Srah S, Dey D, Lovett C, et al. AirSim: High-fidelity visual and physical simulation for autonomous vehicles. In: Hutter M, Siegwart R, eds. Field and Service Robotics. Cham: Springer, 2017. 621–635.
[16]
吴晓琴. 公安部: 2018年全国小汽车保有量首次突破2亿辆. http://auto.people.com.cn/n1/2019/0118/c1005-30575374.html. [2019-01-18/2019-03-18].
[17]
He KM, Zhang XY, Ren SQ, et al. Deep residual learning for image recognition. 2016 IEEE Conference on Computer Vision and Pattern Recognition. Las Vegas, NV, USA. 2016. 770–778.
[18]
陈功醇, 马玉贤, 贾志绚. 结合形态学的结构化车道线快速识别算法. 计算机系统应用, 2014, 23(6): 187-190. DOI:10.3969/j.issn.1003-3254.2014.06.034
[19]
Chen LC, Papandreou G, Kokkinos I, et al. DeepLab: Semantic image segmentation with deep convolutional nets, atrous convolution, and fully connected CRFs. IEEE Transactions on Pattern Analysis and Machine Intelligence, 2016, 40(4): 834-848.
[20]
李子健. 游戏模型锈迹与磨痕质感制作研究[硕士学位论文]. 武汉: 华中师范大学, 2013.