采用深度卷积神经网络技术的汽车群体属性分析研究*
2018-12-20任军利冉崇善
任军利, 冉崇善
(1.陕西科技大学 信息与网络管理中心,陕西 西安 710021;2.陕西科技大学 电气与信息工程学院,陕西 西安 710021)
近年来,随着我国机动车保有量的不断增加,交通拥堵、交通事故的发生频率也不断升高,给交通和道路安全带来了巨大的威胁.针对上述问题,提出了基于虚拟线圈和深度卷积神经网络(DCNN)的车流量统计算法.算法通过前景分析、连通域分析和基于DCNN[1]的车辆跨线行驶判决大幅度提高了车流量统计的准确率.准确的车流量统计有助于交通控制智能化,并能够大大降低交通拥堵发生的概率.
1 算法总体设计
车流量统计算法流程如图1所示,该算法包含了基于虚拟线圈的前景分析模块[2-4],基于连通域分析和DCNN的车辆跨线行驶判决模块.针对传统车流量统计算法前景分析精确度低的问题,该算法通过几何信息自动将虚拟线圈划分成9个虚拟子线圈.算法在虚拟线圈范围内通过背景减除,利用9个虚拟子线圈进行车辆前景分析,根据虚拟线圈中子线圈的投票结果进行车辆有无的判断.针对跨线行驶车辆容易造成重复统计的问题,采用了基于连通域分析和DCNN的级联分类器对跨线行驶车辆进行识别.
2 基于虚拟线圈的车辆前景分析
三维场景的透视效应会导致视频中的车道线互不平行,因此车道在监控视频下通常以梯形的方式存在,会使矩形线圈不能完整地贴合梯形车道,无法保证所收集车辆信息的完整性,从而使车流量统计精度降低,很容易导致漏检现象发生.为解决线圈与路面的贴合问题,引入梯形虚拟线圈[5],使线圈可以完整地贴合车道.在前景分析中,算法累加所有虚拟子线圈的投票结果作为最终得分,通过阈值进行车辆有无的判断.
算法在单个车道中放置一个虚拟线圈,虚拟线圈的4个顶点坐标根据不同视频的车道位置预设定.假设视频中共有4个车道,算法以两个车道为例,具体如图2所示.左侧图中虚拟线圈中没有车辆经过,右侧图中虚拟线圈中有车辆经过.预先在配置文件中定义两个相邻线圈的6个顶点坐标,完成虚拟线圈定位.算法将线圈上、下底4个三等分点划分为两组,基于4个三等分点坐标,可以计算出每组三等分点连线的斜率,再通过斜率信息和内部顶点的高度坐标,计算出内部4个顶点的宽度坐标,从而完成虚拟线圈6个顶点坐标的定位,实现虚拟线圈定位与子线圈划分.
在虚拟线圈定位和子线圈划分的基础上,算法依据摄像头的拍摄方向初始化每一个虚拟子线圈的权值.采用非中心对称权值将其中一侧子线圈赋予中心列子线圈相同的权重,当车辆跨线行驶时,可以将其判决为左(或右)侧车道有车辆通过,可避免漏检.当摄像头朝向右侧时,中心列子线圈权值复制到右侧列,反之,则为左侧列.具体权值示意图如图3所示,左图为中心对称权值,中图为非中心对称权值(右侧朝向),右图为非中心对称权值(左侧朝向).
3 车辆跨线行驶判断
当两个相邻的虚拟线圈全被车辆前景占据时,可能会出现两种情况,具体如图4所示:一种是两辆机动车各自在对应的车道上正常行驶,即使算法不进行识别,车辆数量也可以被准确统计;另外一种是一辆机动车跨线行驶(压车道线行驶),如果算法不进行有效识别,程序会判断一辆车为两辆车,造成重复统计.为避免重复统计,采用基于连通域分析和DCNN的级联分类器对跨线行驶车辆进行识别.
3.1 基于连通域分析的车辆跨线行驶判断
本文基于深度优先搜索方法[6]实现连通域分析,算法具体步骤如下.首先,扫描输入图像,直到找到像素点B(x,y),其中B(x,y)表示坐标为(x,y)像素点的像素值:① 设定像素点(x,y)为根节点,同时赋予根节点一个标签,然后将像素点8个邻域中被判断为前景的像素点坐标入栈;② 将栈顶端像素出栈,赋予像素点与根节点相同的标签,然后将此像素点的8个邻域中被判断为前景的像素坐标入栈;③ 重复上步直到栈中元素全都出栈,至此算法完成了输入图像中的一个连通域位置定位,连通域中的像素点被赋予相同的标签.然后改变标签,重复上述操作直到输入图像完成.完成对输入图像的扫描后,算法得到输入图像中所有连通域的位置和数量.在实际应用中,算法将小范围的连通域认定为噪声而进行去除,噪声通常包括行人和自行车等的前景信息.针对没有被滤除的连通域,如果输入图像中的连通域个数为1,同时连通域尺寸足够大,算法则将其判断为一辆车在跨线行驶.如果连通域信息不满足上述要求,可能存在以下两种情况:一辆机动车跨线行驶,由于背景减除不彻底导致车辆前景出现缺失,甚至大范围空洞;另一种为两辆机动车在各自车道正常行驶.
3.2 基于DCNN的车辆跨线行驶判断
在交通监控视频中,由于背景减除算法的准确性较不稳定,通常会导致车辆前景信息的缺失,连通域分析对于缺失的前景识别效果有限,所以在基于连通域分析的车辆跨线行驶判断后,还需对模糊区域使用DCNN分类器作为级联分类器的第二层,进行车辆行驶跨线的判断.本文通过一组简单的DCNN网络结构,该网络结构节点数量较低,对训练数据的需求量较小,较易实现.算法在保证网络结构相对简单的同时,实现良好的分类识别性能.DCNN网络结构共有6层,每一个卷积层都与一个降采样层相结合,完成第一轮卷积降采样后,程序得到12个特征图,完成第二轮卷积降采样后,程序得到24个特征图,最后通过全连接层完成对象特征的前景提取.算法定义虚拟线圈中跨线行驶车辆图像作为训练正样本,两辆在相邻车道正常行驶的车辆图像作为训练负样本.所有的训练样本均来自于实际交通监控视频,包括高速公路场景和市内公路场景,训练正负样本的数量比例相同.为了增加训练数据对实际场景摄像头角度的适应性,所有数据样本都经过镜像化处理.为避免过拟合现象,程序设定所有训练样本被遍历的次数均为15次.每一次迭代过程中,程序选取40个训练样本作为一批进行参数更新.为验证模型性能,程序将训练数据随机分成5组分别进行交叉验证,每一次交叉验证选取5组数据作为训练级,一组数据作为测试集,交叉验证结果如表1所示.从交叉验证结果可看出,DCNN的数学模型在训练集和测试集性能相差不大,测试精度都在90%以上,说明模型没有产生过拟合现象,同时模型对于跨线行驶和两辆车相邻车道正常行驶现象具有良好的识别精度,可以用于车辆跨线行驶判断.
表1 CNN跨线行使模型交叉验证Tab.1 CNN cross line exercise model cross validation
4 算法验证实验
为验证本文所提出车流量统计算法的正确性,在实际交通监控视频上进行了测试验证.
4.1 测试数据
测试集包括3段高速公路监控视频和3段市内交通监控视频.在测试集中,测试视频的分辨率普遍较低:在3段高速公路摄像头中,视频分辨率只有480×270;在3段市内公路视频中,视频分辨率为704×576.监控摄像头安装在路面左侧,面向路面右侧拍摄,监控摄像头相对路面的偏移角度在15°~45°之间,测试缩略图如图5所示.测试数据集实际车辆数量均由人工进行计数获取,为便于统计,在数据集准备中,每段测试视频被随机截取3~4段作为最终测试集,每一段截取视频车流量为120辆左右.
4.2 评测方法
造成错误计数的原因有重复计数和漏检两种情况.为仔细考量算法性能,综合考虑两种误检情况,引入两个指标对算法的性能进行评测:相对准确度Pr和绝对准确度Pa.相对准确度测试视频与算法为黑盒,不考虑重复计数和漏检数量,只考量程序计数与实际车辆数量之间的偏差;绝对准确度综合考虑错误计数情况,将重复计数和漏检均视为误检,是一种更严格的评测指标.两种评测指标定义为:
Pr=1-|Sp-Sa|/Sa,Pa=1-|Sm+Sr|/Sa,
式中:Sp表示算法统计的车流量数,Sa表示实际场景中由人工统计的车流量数,Sm表示漏检的个数,Sr表示重复计数的次数.
4.3 实验结果
实验结果依照数据集名称进行统计,即同一段测试视频中截取视频的综合统计,车流量统计结果如表2所示.
为验证本文采用的基于连通域分析和DCNN的跨线车辆判决分类器的性能,算法将级联分类器去除,在相同的数据集上进行对比实验,实验结果如表3所示.
从表2可以看出,算法在实际路口测试取得了良好的效果,相对准确度全部超过95%,且平均值为98.05%,绝对准确度平均值也达到了88.5%,接近90%.从对比实验结果表3可以看出,所采用的级联分类器对跨线行驶车辆具有较强的识别性能,能够有效降低重复计数的数量,同时保证漏检数量与不使用级联分类器基本相同,得以提升车流量计数的相对准确度和绝对准确度.在测试过程中同时测试了程序的耗时情况,在视频分辨率为704×576时,整帧图像背景减除耗时10 ms,级联分类器识别一次耗时10 ms.由于算法在虚拟线圈区域内进行背景减除[7],而且级联分类器只有部分视频帧可以触发,因此算法在标清、高清数据集下都可以实现实时处理,应用性较强.
表2 车流量统计实验结果Tab.2 Experimental results of vehicle flow statistics
表3 车流量统计对比实验结果Tab.3 Experimental results of statistical comparison of vehicle flow
4.4 对错误统计的原因分析
本文算法在某些情况下容易产生重复计数和漏检两种情况,导致重复统计的主要原因如下:(1) 出现虚拟线圈内跨线行驶现象.通常是一辆车进入左侧虚拟线圈然后斜穿进入右侧虚拟线圈,在右侧虚拟线圈判断车辆进入前离开左侧虚拟线圈,使两个虚拟线圈不能同时被触发,级联分类器也无法被触发,造成重复统计.当摄像头距路面较远或摄像头角度偏移较大时,类似现象较容易发生,例如在高速1和高速2两个数据集中.(2) 多辆电动车、自行车或多个行人在同一线圈内行驶.当多辆电动车或自行车出现在同一虚拟线圈时,前景面积之和超过虚拟线圈阈值,造成虚拟线圈虚警现象的发生.在市内公路场景中,电动车、自行车在机动车道行驶的现象比较常见,触发此类事件可能性较高.(3) 场景出现大规模的抖动,影响背景减除算法的精度,造成虚拟线圈虚警.这类现象通常由于测试集分辨率较低,场景噪声较多,摄像头出现抖动等造成.
导致漏检的主要原因如下:(1) 车辆出现严重遮挡现象,具体如图6所示.车辆严重遮挡导致被遮挡车辆前景无法完整出现在虚拟线圈中,同时被遮挡车辆前景通常被划分成遮挡车辆的前景[8],致使虚拟线圈仅识别出一辆车的信息,造成漏检.遮挡现象在所有测试数据集中都有出现,在实验过程中,考虑到车辆遮挡因素的影响,道路下方离摄像头距离较近,车辆信息比较丰富,程序在设定虚拟线圈位置时通常将其放置在道路下方,遮挡现象相对较弱.(2) 虚拟线圈范围过大.当虚拟线圈范围较大时,前景有部分缺失的车辆或者尺寸规格较小的车辆进行跨线行驶时,车辆前景无法触发相邻两个车道中的任意一个虚拟线圈,导致车辆从虚拟线圈中穿过,造成漏检.在路段3数据集中,虚拟线圈过大是造成漏检的主要原因.
5 结论
针对车流量统计中跨线行驶车辆容易造成重复统计的问题,提出了一种以深度卷积神经网络技术为框架进行车流量统计的算法,算法通过连通域分析和DCNN的级联分类器对跨线行驶车辆进行识别,有效提高了车流量统计的准确率.最后通过实验进行了算法验证,算法的相对准确度均值达到了98.05%,绝对准确度均值达到了88.5%,取得了较好的效果.但算法无法在夜间进行车流量统计,这还需在后续的工作中继续研究.