基于深度学习的多车道交通流量统计方法
2021-12-07李文雄刘艺腾胡晨祎
于 强,李文雄,刘艺腾,胡晨祎,张 萌
(1.石家庄铁道大学 河北省交通安全与控制重点实验室,河北 石家庄 050043;2.石家庄铁道大学 交通运输学院,河北 石家庄 050043)
随着计算机图像处理技术、计算机视觉技术快速发展,交通正朝着智慧化方向发展,智慧交通需要对交通实况进行全面感知。目前存在庞大的视频方式的交通数据,如何从视频数据中获取服务于智慧交通的信息,已成为广受关注的热点问题之一。通过交通视频,采集道路交通流量数据是其中较为重要的一项工作。
要实现交通视频中目标路段的交通流量统计,首先需要识别出视频帧中的车辆。车辆识别方法可以大致分为2类:传统车辆识别算法和基于深度学习的车辆识别算法。传统车辆识别算法主要包括背景差法、帧差法、光流法等,基于传统车辆识别算法形成了虚拟检测线法[1]和虚拟线圈法[2]等交通流量统计的方法,其基本思想为对视频帧中的像素值及其变化值判定区域内有无车辆通过,该类方法简单易行,但是无法利用像素值的深度特征,易受到场景中光线变化或其他非交通参与对象的影响,且无法对车型进行识别,性能较低,不宜采用[3]。
基于深度学习车辆识别算法进行交通流量统计的方法称为目标跟踪法[11],目标跟踪法的基本思路是:首先识别视频帧中的车辆,然后对识别出的车辆对象进行跟踪,进而统计交通流量,该方法克服了虚拟检测线法和虚拟线圈法的不足,能够识别车辆的车型,并按车型统计交通流量。因此完成车辆识别之后,还应采用准确高效的目标跟踪方法跟踪车辆。
目前车辆跟踪方法大致可分为基于区域轮廓跟踪方法、基于运动信息跟踪方法和基于外观特征信息跟踪方法[12]。基于区域轮廓跟踪方法的基本思想为,通过预设区域与目标车辆的轮廓形状,对视频中的车辆进行跟踪,该方法运算速度较快,但是无法应对路段内车型多样化的现状,存在车辆相互遮挡状况时效果较差,在多车道多种车辆共同存在的环境下不宜采用[13]。基于运动信息跟踪方法基本思想是,将目标物体的运动通过粒子滤波对观测值进行校正,得到该物体的后验概率预测,运算速度较快,但是目标车辆与其他车辆存在部分或完全遮挡时,会出现目标车辆跟丢的状况,容易产生多检[13-16]。基于外观特征信息跟踪方法的基本思想为,对目标车辆的图像进行特征提取,通过计算前后帧之间车辆的特征向量相似度进行车辆跟踪,对于车辆存在部分遮挡或遮挡后再次出现的状况也能完成车辆跟踪,但是相应算法的运算速度较慢,并且对于连续进入视频区域的同车型、同颜色的不同车辆存在编号重复的情况,容易造成漏检[17-19]。
针对基于目标跟踪法的交通流量检测,仍然普遍存在着不同程度的车辆漏检、错检和多检的现象,本文提出了一种基于深度学习的交通流量统计方法。该方法首先使用深度学习的方式进行车辆识别,然后对车辆进行跟踪统计,如图1所示。车辆识别部分,采用了YOLOv4目标识别算法,提取视频中目标车辆的位置信息与车型信息;车辆跟踪部分,结合目标车辆的运动信息、外观信息和空间位置信息对车辆跟踪,有效降低了车辆多检、漏检的状况;交通流量统计部分,计算了检测目标车辆的车型众数,根据目标车型众数确定目标车辆的车型,防止车型被偶然识别错误而产生错误的车型统计,提高了车型统计的准确性。
图1 整体车辆统计框架结构
1 车辆识别
在车辆识别部分,为了实现更好的检测性能,选择了YOLOv4算法,YOLOv4[20]算法是YOLO系列算法的较新版本,该算法模型主要由CSP Darknet-53卷积神经网络、Mish激活函数、SPP图像特征提取网络以及PANet特征增强网络构成,将获取的19×19×255、38×38×255和76×76×255 3种维度特征向量传入YOLO head进行分类回归,并以CIOU作为损失函数。该检测算法具有识别精度高、速度快的优点,目前在车辆识别领域得到了较好的应用[21-24]。
2 车辆跟踪
SORT算法是一种经典的用于车辆跟踪的算法,其核心思想为采用卡尔曼滤波算法进行车辆运动位置信息预测,采用匈牙利算法进行车辆匹配,实现车辆跟踪的目的。由于其仅采用了车辆运动信息,因而会导致车辆跟丢的现象。为克服SORT算法存在的问题,对SORT算法进行改进。改进的SORT算法,首先使用卡尔曼滤波算法[25]对目标车辆进行运动信息预测,并使用外观特征提取网络提取目标车辆的外观特征,可以有效避免目标车辆在追踪过程中被部分或完全遮挡后再次出现时会重复计数的问题;其次对跟踪车辆的环境空间位置进行约束,有效防止了视频区域内连续出现的同车型、同颜色车辆重复编号的问题。
2.1 卡尔曼滤波
(1)
例如在教授学生九年级《出师表》时,我在上课之初,直接问了大家一个问题:“你们怎么看待《三国演义》中诸葛亮这个人物?”有的学生回答道:“诸葛亮很聪明,很有才华。”还有的学生说:“诸葛亮机智无比,雄才伟略。”“那我给大家讲一个和诸葛亮有关的故事,好吗?”学生们听到这里,开心极了,纷纷聚精会神地看着我,看到这样的情况,我将板擦儿往桌子上一拍,大声说道:“话说刘备死后,刘禅登上皇位,当时……”在我绘声绘色的讲述中,学生们的情绪也忽高忽低,上下起伏。随着时间的流逝,板擦儿再次一响,我结束了这个故事。看到大家意犹未尽的眼神,我直接打开书,开始为大家讲述《出师表》里面的内容。
(2)
(3)
式中,h为检测框高度。
2.2 车辆外观特征提取
仅使用运动信息进行车辆跟踪时,若目标车辆被大型车辆或其他物体长时间部分或完全遮挡,会导致ID-switch现象,即同一车辆因长时间未能匹配,算法会赋予同一目标车辆一个新的ID编号,出现ID-switch现象,如图2所示,可能造成多检或“车辆跟丢”的情况。
图2 ID-switch现象
因此,在基于运动信息进行车辆跟踪的基础上加入外观信息,即通过神经网络提取视频帧中目标车辆的外观信息,得到可代表视频帧中目标车辆的128维特征向量[26]。将提取到的特征向量与历史帧中目标车辆提取的特征向量计算余弦距离,判断两特征向量的相似程度,并采用余弦距离作为损失函数,从而确定两车是否为同一车辆,以减少车辆被长时间遮挡后发生的ID-switch现象,从而降低了车辆被多检的可能。
2.3 基于空间位置区别不同车辆
由于对目标车辆进行外观信息匹配时,在算法设置的时间阈值内同车型、同颜色的车辆(不考虑车牌信息)交替驶入视野内,可能会被跟踪算法再次赋予相同的ID编号,导致漏检现象,如图3所示。
图3 漏检现象示意图
为了防止车辆ID编号的重复出现,在车辆ID编号分配机制中加入车辆行进方向的方向向量的判断,使得车辆仅能沿车辆行进方向获得编号。在实验过程中发现,某一车辆即使处于静止状态,在相邻两帧之间由于目标车辆的光线角度或其他原因,通过目标识别算法可能会形成在相邻帧之间检测框抖动现象,产生车辆检测中心点位置“向后移动”的假象。
针对此现象,截取了车辆在等候红灯期间视频,通过记录同一车辆检测框中心点的位置信息,计算每帧视频间车辆检测框中心点的抖动像素距离。在这些数据中随机选取20万个数据,求得其95%分位数为4.031,将阈值设定为5像素。因此当算法设置的时间阈值内同车型、同颜色的车辆(不考虑车牌信息)交替驶入视野时,如果其检测中心点位置与历史帧中相似车辆的中心点检测位置构成向量与车辆行进方向向量相反,且超过车辆检测框抖动阈值时,将损失函数矩阵中相应值设置为极大值,从而判断其为一辆新出现的车辆,将其赋予新的ID编号,如图4所示。
图4 设置阈值防止漏检示意图
2.4 匈牙利算法
根据相邻两帧中目标车辆的运动信息与外观信息误差值矩阵,可以实现将第k帧中车辆跟踪结果和第k+1帧中检测车辆结果进行关联。采用匈牙利算法可以将关联问题转化为最大值匹配问题[27],将第k帧中有且仅有一个最优结果与第k+1帧相匹配。如果存在多余的检测框或者跟踪框,可以通过设置虚拟值,将多余检测框标记为待跟踪,将多余的跟踪框标记为目标消失并删除跟踪器,从而实现车辆ID编号分配。
(4)
式中,cij为损失函数值;xij为匹配结果矩阵,取值为0表示检测与跟踪未匹配,反之匹配。
2.5 优化后的车辆跟踪算法流程设计
优化后的车辆跟踪算法框架结构如图5所示。首先,将检测框与历史跟踪框进行空间位置预测和外观特征的相似度对比,得到损失函数矩阵;其次,将检测位置中心点与历史车辆跟踪中心点构成的向量,与车辆行进方向进行对比,同时将中心点距离与窗口抖动阈值进行对比,如果中心点向量方向与车辆行进方向相反且中心点距离超过窗口抖动阈值,则将对应损失函数矩阵中数值置为极大值,否则将预测与跟踪进行匹配;最后,未匹配的检测将被赋予新的ID编号,未匹配的跟踪若未超过时间阈值则将其列为历史车辆跟踪,否则删除。
图5 优化后的车辆跟踪算法框架结构
通过对视频中车辆的进行检测跟踪,发现本文提出方法对车辆部分或完全遮挡后再识别并跟踪的效果有一定提升。图6为检测跟踪过程中的视频截图,分别选取了其中的第3 962帧、第4 032帧和第4 044帧进行对比(由于2个算法运行过程中对车辆检测与跟踪的差异,导致视频帧中相同车辆的编号不一致),通过图6中公交车后方白色汽车的ID编号变化可知,本文算法能够在白色汽车被遮挡后再次出现时,将其之前的ID编号赋予白色汽车,而SORT算法则是对该白色汽车进行重新编号。
图6 相同视频帧下算法跟踪效果对比图
3 交通流量统计
车辆统计模块的主要作用是统计过往车辆的数量与车型,目前的交通流量统计方法中由于检测ROI位置或道路交通监控视频角度等原因,导致一些车辆在某些位置被错误识别为其他类型车辆,在计数机制中将该车辆统计为错误的车辆类型,导致错检。因此在交通流量统计阶段采用了不断记录目标车辆的车辆类型,最终返回车辆类型的众数,从而减少错检的方法。其统计过程:当车辆中心点坐标在车辆统计框内时,算法保存每帧目标车辆的ID编号和车型,生成数据字典。当车辆中心点坐标通过车辆统计线时,算法返回目标车辆的ID编号与在数据字典中记录车型的众数,并在交通流量统计数据内进行展示,得到更准确的结果,防止误检。车辆检测框与车辆统计线位置如图7所示,当车辆由车道的检测框驶向统计线的过程中,允许车辆存在换道行为,仅统计其驶离车辆统计线的车道,由此可以获得该路口某车道的截面交通流量。
图7 车辆统计线获取不同车道交通流量示意图
4 实验结果与分析
实验环境为Windows 10操作系统和GeForce RTX 2060显卡,验证数据采用Open ITS提供的合肥市黄山路与科学大道交叉口西进口靠近道路中心线的3车道交通视频。为保证数据具有代表性,选取了不同天气下的19段视频数据,其中视频1~11为晴天路况(其中视频1~2为该路段中交通流量较大时段)、视频12~15为阴雨天路况、视频16~19为夜间路况,不同天气路况下视频截图如图8所示。
图8 不同天气路况视频
对每段视频的前5 min进行检测。第1步,打开根据本文算法设计的交通流量检测系统,导入视频路径并输入相应实验所需参数;第2步,根据图像预览效果调整实验参数;最后,根据导出视频结果,进行交通流量统计并与该检测方法检测结果进行对比。多车道交通流量检测系统执行过程截图见图9。实际道路车辆统计结果、本文算法检测道路交通流量与SORT算法检测道路交通流量对比见表1,同时可以计算该交通流量检测算法统计各车型交通流量的加权平均绝对误差百分比。
表1 实际道路车辆统计结果/本文算法检测道路交通流量/SORT算法检测道路交通流量
图9 多车道交通流量检测系统执行过程
(5)
本文统计结果与SORT算法统计结果对比见图10。
图10 交通流量识别结果加权平均绝对误差百分比进行对比
通过图10可以看出,第1车道与第2车道加权平均绝对误差百分比浮动较小,第3车道加权平均绝对误差百分比浮动较大,究其原因为第3车道为该进口车道的左转车道,车流量较少,使得其基数较小,在交通流量统计过程中有少量统计偏差时,对其统计结果会产生较大波动。将本文算法与SORT算法在各个视频文件中的加权平均绝对误差百分比求得平均值,可以更加准确地反映本文算法的效果,见表2。从表2中可以看出,在交通流量较大的第1车道与第2车道中,本文算法将交通流量识别结果加权平均绝对误差的平均值降低了约4.4%;在车流量较小的第3车道,本文算法将交通流量识别结果加权平均绝对误差的平均值降低了约0.9%。
表2 交通流量识别结果加权平均绝对误差百分比平均值 %
5 结束语
在YOLOv4车辆识别框架下,提出了融合车辆运动信息、外观信息和空间位置信息的车辆跟踪算法,并提出了一种交通流量统计方法。通过计算本文算法与SORT算法对于视频中交通流量的加权平均绝对误差百分比,结果表明本文提出的方法可以较为准确地进行交通流量统计,有效减少了SORT算法在交通流量统计中的多检、漏检情况,具有一定实际应用价值。