基于车道映射矩阵的多车道车辆计数系统

2020-05-22 12:33陈庆奎
计算机工程与设计 2020年5期
关键词:车道计数轨迹

殷 妍,陈庆奎

(上海理工大学 光电信息与计算机工程学院,上海 200093)

0 引 言

车辆计数的关键问题在于车辆检测的方法,无线传感器[1]等传统的方法由于温度变化和路基问题等因素的影响,使其应用受到了限制,并且精度并不理想。常用的车道线划分方法是利用图像的边缘信息来检测车道,此方法要求道路上没有过多车辆干扰并且道路标线清晰,且对于夜晚的情况并不适用。

车辆计数的准确性依赖于高准确率的车辆检测结果。常用的基于视频的车辆检测方法有光流法、背景减除法、帧间差分法等[2]。光流法计算复杂度高,实时性差;背景减除法易受其它运动目标干扰,且对光照变化敏感;帧间差分法对于车速较快的情况易产生较大空洞,从而导致检测不准确。近年来,由于深度学习在提取图像高层特征上的优势,越来越多的研究者开始关注基于深度学习的目标检测[3,4]。基于回归的目标检测方法,如YOLO、SSD等,在速度上优势明显且检测准确率较高,满足实时检测要求。

本文基于darknet框架,利用YOLOv3网络对交通视频中的车辆进行训练与测试,提出利用车辆行驶轨迹的基于车道映射矩阵法进行车道划分,并根据车道划分结果及虚拟线圈计数法统计多车道车流特征。实验结果表明,YOLOv3网络能够在保证实时性的基础上达到理想的准确率,与基于车道映射矩阵的车道划分方法结合能够对多车道区域内的车辆进行高准确率的计数。

1 相关工作

交通监控视频中包含的丰富信息是智能交通系统的重要数据来源。基于监控视频的车辆检测方法灵活性高,适用性强,目前已被广泛采用。对于实时视频检测,既要保证降低受外界因素干扰的灵敏度,又要保证较快的处理速度、较强的鲁棒性及较高的准确率。由于天气,光照情况等影响,传统的基于视频的车辆检测方法检测效果较差,深度学习方法近年来在计算机视觉领域不断表现出优秀的效果,基于深度学习的目标检测方法不需要进行人工特征设计,具有良好的特征表达能力,准确率明显超过传统检测方法,并且具有更强的鲁棒性,成为了当前主流的目标检测算法。J.Redmon等[5]提出的YOLO算法,在保证检测精度的情况下,能够将检测速度提升到45帧/s,满足实时性检测的要求。

多车道车流特征统计包含实时车辆数,车流速及通行车辆总数。对于实时车辆计数,根据车辆检测结果即可统计出多车道区域内当前车辆数量。通行车辆总数的计算需要在车辆检测的基础上采用车辆计数方法对车辆通行情况进行统计,目前常用的车辆计数方法有基于目标跟踪[6]及基于虚拟线圈计数法[7]。基于目标跟踪的计数方法[8]需要匹配不同帧中目标的特征,根据匹配结果进行计数,对于目标间相互遮挡等情况易出现漏检问题。基于虚拟线圈的检测计数法[9]计算复杂度低,易于实现且准确率较高。

车道线的识别与划分是智能交通系统中的重要研究内容,对于多车道区域的车辆计数有着不可或缺的作用。传统的车道线检测方法有基于特征和基于模型匹配两种方法,基于特征的车道线检测方法[10]主要是通过图像中道路边缘提取对车道线进行检测,利用改进的Hough变换进行车道线定位及车道检测[11]等。基于特征的方法在道路背景简单的情况下检测准确率较高,但对于复杂的道路环境,检测准确率较低。基于模型的车道线检测方法[12]能够适应道路环境复杂的情况,但各模型适用情况较少,对不同道路不能通用。

对于结构化的道路,道路背景环境单一,道路几何特征明显,采用边缘检测的方法对车道线进行提取可以取得较好的检测结果。然而由于城市交通情况日新月异,尤其对于道路交通发达的城市,路面上路标复杂,并且可能存在临时车道线的情况,因此传统的车道线检测方法有时结果并不理想。除此之外,利用边缘提取进行车道线检测的方法仅在道路背景稳定的情况下可行,对于夜晚情况及无明确车道线的道路,该方法不具有良好的适用性。车辆行驶轨迹蕴含了丰富的道路几何、语义信息,已成为道路数据获取的重要途径[13]。车辆行驶轨迹不受复杂的道路环境影响,对于光照等因素干扰不敏感,根据车辆行驶轨迹规律,可得到真实反映各车道车流情况的分布。因此本文结合车道中车辆行驶特点,利用车辆行驶轨迹点提出基于车道映射矩阵的车道划分方法,根据车道映射矩阵分布情况对车道进行划分,实验结果表明该方法减少了环境因素对检测结果的影响,采用该方法既可以得到理想的检测结果,又具有很强的实用性。

2 多车道车流特征统计模型

对于多车道道路,有时需要对不同车道分别进行计数,尤其在十字路口存在直行、左转及右转3种不同行驶方向的车道,由于交通信号灯的控制,3种车道的车辆数量差距可能很大,因此需要多车道车辆计数系统对不同车道分别进行车辆计数。

多车道车辆计数系统主要工作分为3部分,第一部分,利用YOLOv3检测算法对采集的图片进行训练,得到车辆检测模型;第二部分,根据第一部分的检测结果,利用车道映射矩阵进行车道线划分,得到交通道路中多车道区域的划分方案;第三部分,结合车辆检测与车道划分的结果,在系统中计算并显示检测出的各车道实时车辆数,车流速及通行的车辆总数。系统流程如图1所示。

图1 系统流程

2.1 基于YOLOv3的车辆检测

利用YOLOv3进行车辆检测模型的训练,车辆目标定义为car。实验采用的数据集来自上海市中环路,淮海中路及西藏中路3个路口的车辆通行情况录制视频,每个路口的总录制时间在8小时以上,包含不同日期的白天和夜晚的车辆通行情况,3个路口的视频总时长达到24小时以上。实验数据集由从视频中截取的不同时间段的图像组成,总的数据集包含9000张图片,图片尺寸为360像素×270像素。选取8000张数据集作为训练集,1000张为测试集。数据集的图像示例如图2所示。

图2 数据集图像示例

YOLO的核心思想是利用整张图作为网络的输入,直接在输出层回归矩形边框的位置和矩形边框所属的类别。YOLOv3借鉴了GoogleNet的inception结构及ResNet的shortcut结构,网络结构为darknet-53,一共有106层。第0层-74层有53个卷积层,其余为res层。第75层至105层为YOLO的特征交互层,分为13×13、26×26、52×52这3个尺度,在3种尺度内通过卷积核实现局部特征交互,通过3×3与1×1卷积核实现特征映射间的交互。

通过采用多尺度融合的方式做预测使得YOLOv3对小目标检测的准确率大大提高,并且由于darknet-53可以实现每秒最高的策略浮点运算,因此能够更好地利用GPU进行计算,大大加快了检测速度,使其在速度上也能达到实时性的要求。

采用在Imagenet上预训练好的模型参数darknet53.conv.74,在该预训练权重文件的基础上继续训练。在训练过程中,采用均匀分步策略,每3000个样本更新一次权重参数,通过设置权重衰减系数防止过拟合。并采用数据增广方法进行预处理,包括随机裁剪、旋转,调整饱和度、色调、曝光度等。该方法增加了训练集的样本量,提高了模型的泛化能力。

2.2 基于车道映射矩阵的车道划分

在实际生活中,大部分车辆会根据车道行驶,因此本文提出了基于车道映射矩阵的车道划分法,根据车辆检测结果统计车辆轨迹点坐标,利用得到的车辆轨迹点信息及轨迹点分布情况对车道中心线进行估计。

对于视频中的每一帧,若当前帧中检测出车辆,如图3所示,利用车辆外接矩形的几何中心点坐标可表示车辆轨迹点。因此对于视频中的每一帧,可得到若干轨迹点。

图3 车辆检测

统计得到的轨迹点坐标中可能存在异常的干扰点,利用统计判别法对干扰点进行剔除,对于去干扰后的辆轨迹点,根据车辆检测的结果,可以得到一系列的车辆信息参数

T={(xi,yi)}|i=1,2,…,n|

(1)

其中,xi、yi表示横纵坐标。对于得到的车辆轨迹点坐标,k-means聚类算法可以将相似度高的点划分至同一类,误差平方和(sum of the squared errors,SSE)可以作为衡量聚类效果好坏的评价指标,然而由于目标是对车辆轨迹进行聚类,其采用欧几里德距离度量方法并不适用,尤其对于非直行车道,SSE无法准确地反映车道轨迹点聚类效果的好坏,因此本文不使用聚类算法对车道中心点进行划分。

对于用数字阵列表示的图像,每个像素即对应该阵列中的某个数字,构成数字阵列的所有像素可表示为矩阵。将视频中图像映射到一个车道映射矩阵,并将矩阵初始化为零。通过映射核增加车道中心点权值,可得到反映真实车道分布情况的车道映射矩阵。

实验所采用的视频帧率为25帧每秒,根据车辆检测结果,对每帧中车辆轨迹点进行统计,并将轨迹点及其相邻像素点与映射核进行计算,增加车道映射矩阵中对应位置的权重,得到当前帧的车道映射矩阵。其中,映射核为3×3矩阵,为增加车辆中心点权值,设置映射核第二列为2,为增加轨迹数据量,相邻像素点权值增量为1。原图像矩阵与映射核计算得到车道映射矩阵如图4所示。

图4 车道映射矩阵计算

根据车辆信息参数初始化原图像矩阵,将车辆中心点所在矩阵位置值增一,利用映射核增加车道中心点区域的权值,根据车道映射矩阵的权值对车辆轨迹点进行估计,由于不同路口车流量相差较大,使用规定时间作为原图像轨迹点矩阵与映射核计算终止条件并不适用。因此需要根据实际道路车辆通行情况决定车辆轨迹点采集时间t。通常情况下,60≤t≤180,根据车流量情况取适当大小的t值。对于车道映射矩阵,由于采集的轨迹点样本足够大,因此映射矩阵每行的权值均呈高斯分布,峰值即每条车道的中心点。根据车辆通行情况及检测结果,得到车道映射矩阵,图5为上海市淮海中路某直行与弯道路口模拟车道映射矩阵中某行的像素点权值分布情况。对于直行路口,如图5(a)所示,右图代表其原图像中部及底部的矩阵行权值分布结果。对于弯道路口,如图5(b)所示,其原图像中部及底部的矩阵行权值分布结果与直行路口相比,在图像中部由于拐弯,其分布状态变化更为突出,可直观地反映出车道中心点的位置变化情况。

图5 车道映射矩阵权值分布

根据车道映射矩阵中值的分布结果,可分割出对应图像中道路区域及各车道划分情况。由高斯分布规律可确定车道数,该分布的峰值点即代表对应车道中心点。因此,由映射矩阵即可确定各车道中心点位置,从而得到车道中心线坐标信息。

y=a0+a1x+a2x2+…+amxm

(2)

各轨迹点到该曲线的平方偏差和为

(3)

利用多元函数极值与最值问题的理论依据可知,通过最小二乘法对各个变量求偏导,使得偏导值为0,即对F(a0,a1,…,am)ai求偏导得到m个下式

(4)

对于直行道路,拟合的轨迹为直线,即m=1;对于简单的弯道,m取3即可拟合出对应曲线。对上式进行求解即可得到车道线函数。

2.3 多车道车流特征统计

正确检测出车辆并划分车道后,下一步即进行车辆计数。

利用训练得到的YOLO模型对视频中的车辆进行检测,根据车辆检测结果可直接得到当前帧中车辆总数,即YOLO 检测出的总目标框数nums,通过检测结果直接进行实时计数,通过计算车辆几何中心点所属车道,利用多车道实时车辆计数算法对各车道分别进行车辆计数。

多车道实时车辆计数部分伪代码:

AlgorithmofReal-TimeVehicleCounting

FOR i ← 1 TO nums

Box[i].center_x←(Box[i].LT_x+ Box[i].RB_x)/2

Box[i].center_y←(Box[i]. LT_y+ Box[i].RB_y)/2

FOR k ←1 TO LineNums

//for Box[i].center_y,calculate

//the abscissa corresponding to each lane line

X[k]=Fk(Box[i].center_y)

EndFor

FOR j ←1 TO [LineNums-1]

IF X[j]≤Box[i].center_x ≤X[j+1]

LaneNums[j]++;

//Number of vehicles in each lane

ELSE

CONTINUE

EndIf

EndFor

EndFor

其中,Box代表检测出的目标框,LT与RB分别为目标框左上角及右下角点的坐标,Fk为对应车道线的多项式函数。图6模拟了对上海市某路口进行车辆检测及车道划分处理后的车辆计数模型图。根据检测结果得到了各车辆信息参数,可计算出每辆车的中心点坐标,利用多元函数求根公式求得每条车道线对应中心点center_y值的横坐标,通过判断center_x的范围即可确定车辆所属车道,从而对各车道的车辆进行实时数量进行统计。

图6 车辆计数模型

道路实时车辆数只能在一定程度上反应道路车流情况,全面反映道路通行情况需要实时车辆数,车流速及通行车辆总数。

对车辆总数进行统计通常采用基于虚拟检测线的方法,该方法计算量小,实时性高,但在视频中车速较慢时存在重复计数问题,在车辆拥堵时易导致车辆计数遗漏。针对以上两个问题,在对车辆数量进行统计时,考虑到检测线易引起误判的原因,提出了基于虚拟线框的状态计数算法。根据车辆行驶规律及道路视频拍摄位置,在车道上设置固定的计数检测区域,计数检测框长度设置为车道长度,宽度设置为1.5倍车辆检测框。为避免车辆在虚拟线框中停留多帧导致的重复计数问题,设置一个表示当前线圈状态的变量S,当车辆检测框未完全进入线圈中时,S为0;当车辆检测框完全包含于线圈内时,将S置为1;当车辆检测框驶出虚拟线圈时,S状态为0。根据线圈状态的变化,对车辆进行计数。根据车辆行驶规律,当线圈状态S由1变为0时,代表车辆离开虚拟线圈,通行车辆计数器加一。检测框计数如图7所示。

图7 检测框计数

车流速定义:单位时间内通过道路特定区域的车辆数量,单位为辆/小时,计算公式

(5)

对交通视频进行分析,获取车辆通行情况,利用基于虚拟线框的状态计数算法对指定时间内通过的所有车辆进行统计,根据车流速定义,计算单位时间内通行的车辆总数。并对当天通过该路段的所有车辆进行计数,得到通行车辆总数。各路口车流量统计结果通过实时车辆数,车流速及通行车辆总数3项特征共同反映。

3 实验结果及分析

实验在64位 Windows 7操作系统下进行。硬件环境:CPU为Intel(R) Core(TM)2 Duo,主频2.94GHz,内存6GB;GPU为Nvidia Geforce GTX680。开发环境:Visual Studio 2013,OpenCV2.4.9,CUDA8.0并行计算库及cuDNNv5.0并行加速库。

3.1 评价指标

多车道车辆计数准确率既受车辆检测影响,又受车道划分影响。因此车辆检测及车道划分准确率是衡量多车道车辆计数准确率的基础。

实验评价标准中车辆检测任务的评价指标为

(6)

(7)

其中,recall即召回率,为被正确检测出的车辆占验证集中所有车辆数的比例,即准确率,precision为被正确检测出的车辆占检测出的车辆数的比例,mTP为目标为车辆且被系统正确检测成车辆的数量,mFP为目标不为车辆,但被系统错误检测成车辆(误检),mFN为目标为车辆,但系统并未将其检测为车辆(漏检)。

车道线划分的目标是要正确检测出车道线,因此车道线检测采用人工标定的方法判别车道划分是否准确,将算法划分的车道线与人工标注的车道线基准求差值,将标定的车道线设为l,算法划分的车道线设为l′,x为l与图像下方的交点,x′为l′与图像下方的交点。若x与x′满足 |x-x′|≤w,且|θ(l-l′)|≤α, 则认为划分的车道线是正确的。其中w与α根据道路实际情况取适当值。

3.2 结果及分析

实验所采用的视频图像分辨率为320×270,帧率为25帧/s。常见视频帧率为25帧/s至30帧/s,在本文实验环境下,系统的检测速度达到35帧/s,满足实时性要求。

为评估本文算法的有效性,对上海市不同路段,不同光照情况及不同道路标志干扰下的6000张图像中多车道区域进行车道线提取实验,并将其与传统的基于Hough的车道线检测方法进行比较,测试统计结果见表1。

表1 车道线提取测试结果

由表1可知,基于车道映射矩阵的车道划分方法对不同的环境均有良好的适应性,在不同干扰条件下均有很好的鲁棒性。图8是在西藏中路夜晚的实验结果,表明在光照条件不理想且交通标线不清晰的情况下,本文的方法依然能够准确地对车道进行划分。

图8 夜晚车道划分

为了验证本文模型对车辆检测的准确度,分别在不同场景下任意截取多段视频,其中白天及夜晚情况各10段,每段视频10 min,并使用本文的车辆检测模型进行测试,实验结果表明,该模型在白天情况下检测准确率高达96.4%,在夜晚情况下准确率高达94.3%,对于车辆稀疏和车辆拥挤的情况误检率及漏检率都很低,检测结果见表2。在上海市中环路,淮海中路及西藏中路3个路口检测效果如图9所示,可以看出本文模型对光照变化不敏感,在夜晚光线较暗的情况下依然能够保持较高的检测准确率,且对于车辆密集及小目标的情况均有良好的检测效果。

表2 本文模型车辆检测结果

图9 检测效果

分别选取上海市中环路,淮海中路及西藏中路3个路口进行多车道实时车辆计数准确率测试,对3000组图片测试各车道车辆计数的平均准确率,结果见表3,说明车辆检测模型与车道划分方案结合可以实现较高准确率的多车道实时计数系统。根据本文的多车道车流特征统计方法,利用车辆检测与车道划分结果,对淮海中路的各车道车流速及通行车辆总数进行实验统计的结果见表4。

表3 多车道实时车辆计数检测结果

表4 淮海中路车流特征统计结果

由实验结果可以验证,在不同的路口和交通场景下,本文方法均获得了较佳的检测识别效果及较高的计数准确率。

4 结束语

针对不同道路的多车道实时车辆计数问题,本文应用YOLOv3检测算法实现了对交通视频中的车辆检测,提出基于车道映射矩阵的车道划分方案,利用了车辆轨迹信息,与传统的车道检测方法相比,在车道线不清晰,被遮挡及夜晚环境情况下具有更优的适用性及准确性,并通过实验验证了本文车道划分及检测模型的准确率。结合车辆检测与车道划分结果,实现了多车道车辆计数系统,可以自动检测车辆及划分车道,并能够对车辆总数及各车道中的车辆数量进行统计,通过虚拟线框对该道路所有通行车辆进行统计并计算车流速,该系统有助于智能交通系统中道路拥堵的判定,具有很强的实用性。下一步的研究重点是如何进一步提高车辆检测及车道划分准确率,完善多车道计数系统,提高系统稳定性。

猜你喜欢
车道计数轨迹
北斗+手机实现车道级导航应用
古人计数
避免跟车闯红灯的地面车道线
浅谈MTC车道改造
递归计数的六种方式
轨迹
轨迹
古代的计数方法
轨迹
这样“计数”不恼人