陈秀锋,吴阅晨,邴其春,聂蕊蕊
(青岛理工大学,机械与汽车工程学院,山东青岛266520)
基于视频的车流量检测通过提取、检测、跟踪车辆,实时获取交通流量,监测城市交通拥堵和紧急交通事件,从而缓解交通拥堵并提高道路服务水平,已成为城市智能交通(ITS)技术的重要组成部分。车流量检测方法主要有虚拟线圈法和深度学习法。基于虚拟线圈的车流量检测方法预先设定虚拟线圈,通过背景差分法、帧间差分法、光流法等方法分割图像获得运动目标,进而检测车流量。檀甲甲等[1]在视频车流采集中利用对比度失真和亮度失真两个参数抑制阴影干扰,并有效应对车距过近问题;齐美彬等[2]基于车辆轮廓动态信息分析,建立车辆遮挡模型,利用分层轮廓匹配法对运动车辆进行标记;Pablo Barcellos等[3]结合采样粒子与前景建模检测车辆,通过相邻帧中车辆颜色的相似性跟踪车辆,利用车辆轨迹与虚拟线圈交叉点完成车辆计数;Yingjie Xia等[4]基于虚拟线圈方法,设计一种去除噪声和填充孔洞的复原方法,提高车辆计数精度;Maojin Sun 等[5]定义运动强度指数量化视频活动,采用多通道多任务卷积神经网络在拥挤场景下车辆计数;Hana Rabbouch等[6]提出一个模式识别系统,结合无监督的聚类算法与虚拟线圈提取视频信息,利用期望最大化算法提取车流量等交通参数。
传统虚拟线圈方法检测车辆类型的正检率低,无法区分车辆流向;深度学习方法需要多次卷积整体图像,计算复杂度高,容易漏检和误检车辆。鉴于此,本文借鉴YOLO(You Only Look Once)系列算法中锚框概念[7],提出一种基于类锚虚拟线圈的多流向车流量检测方法。此方法在单一车道上设置类锚虚拟线圈完成运动物体检测和车辆类型识别,然后用改进的KCF(Kernel Correlation Filter)追踪算法追踪车辆,从而完成不同流向、不同类型的车流量检测。
以小客车、公交车、摩托车为车流量检测对象,构建均衡数据集。均衡数据集中小客车、公交车、摩托车的样本量接近。选取典型路段全天24 h 路段监控视频,人工标记6:00-18:00 视频数据获取小客车样本3841 个,公交车样本147 个,摩托车样本370个。本文采用随机裁剪进行数据增强,模型为
式中:(X*,Y*)为随机裁剪后左上角坐标;(x,y)为随机裁剪前左上角坐标,裁剪时图像尺寸不改变;J、K为随机数,为预防卷积神经网络过拟合,随机数符合均匀分布。
小客车样本随机裁剪3 次得到样本15364 个,公交车样本随机裁剪100 次得到样本14847 个,摩托车样本随机裁剪40 次得到样本15170 个,形成45381个样本的均衡数据集。
虚拟线圈在视频图像上设置类似感应线圈的封闭检测区域,系统通过区域内图像变化来检测是否有车辆通过。锚指锚框,起源于YOLO 算法,原理是通过预设不同尺寸的预选框来提高物体识别的准确度。类锚虚拟线圈分为组合车辆识别线圈和物体检测线圈,预设组合车辆识别线圈来提高车辆分类的准确度,物体检测线圈用于判断是否有运动物体。
DBSCAN(Density-Based Spatial Clustering of Applications with Noise)算法[8]能够自适应决定聚类簇数。采用DBSCAN 算法聚类均衡数据集样本,聚类簇数为车辆识别线圈种类数,样本的特征参数为高度、宽度。设定DBSCAN 算法领域半径Eps为2.24,密度阈值MinPts 为4,距离为欧氏距离。聚类结果如表1所示。
表1 DBSCAN算法聚类结果Table 1 Clustering results of DBSCAN
由表1可知,车辆识别线圈种类为3,(80,68)、(115,114)、(293,194)分别对应二轮摩托车、轻微型载客汽车、大型载客汽车这3 类车型的识别线圈。物体检测线圈为横跨道路两侧的长矩形,无具体尺寸要求。
对任意场景布设车辆识别线圈时,框选视频中小客车,该框尺寸为轻微型载客汽车识别线圈尺寸,其他车辆识别线圈以该框尺寸为标准生成,其高度、宽度计算公式为
式中:w′i、h′i分别为车辆识别线圈i的场景宽度、场景高度,i=1,2;wi、hi分别为车辆识别线圈的宽度、高度;w′、h′为轻微型载客汽车识别线圈的场景宽度、场景高度;w、h为轻微型载客汽车识别线圈的宽度、高度。
类锚虚拟线圈工作原理为:物体检测线圈检测到运动物体后,向组合车辆识别线圈发送信号,组合车辆识别线圈对检测车辆进行分类。物体检测线圈与组合车辆识别线圈位置布设如图1所示。
图1 类锚虚拟线圈位置Fig.1 Location of anchor-like visual loops
以检测摩托车、小客车、公交车的车流量为例,图1中,②为二轮摩托车识别线圈,③为轻、微型载客汽车识别线圈,④为大型载客汽车识别线圈。
ResNet18 为卷积神经网络模型[9],输入为224 pixel×224 pixel 图像的三通道分量,输出为图像类型概率。改变ResNet18 网络结构以适应算法,冻结ResNet18网络顶层,删除底层,添加2层全连接层,1 层输出层。全连接层以ReLU 为激活函数,漏失率为0.3;输出层采用Softmax激活函数,输出3个车辆类型的概率。
预处理均衡数据集的图像样本训练ResNet18模型。首先,缩放并补零样本,保持样本宽高比,缩放长边至224 pixel,再用值(125,125,125)的像素补充为224 pixel×224 pixel 图像。然后,打乱样本顺序。最后,将预处理数据集划分为训练集、验证集和测试集,样本量分别为34035,9076,2270个。
训练环境为Python 语言,TensorFlow 开发框架,OpenCV 库。实验所使用的计算机配置为:英伟达RTX2060,CUDA10.0,cuDNN7.5.0。部分超参数设定如下:训练数据缓冲器容量为2000个,采用断点续训与批量训练,单批数据样本100 个,训练总批次340批,模型参数迭代50次,耐心为3。训练结果如图2所示。
图2 模型训练结果Fig.2 Models training results
由图2可知,第27 代训练中,模型验证集准确度连续3 次下降,训练停止,模型内参数恢复至24代。第24代训练中,训练集准确率为93.47%,验证集准确率为91.74%,测试集准确率为90.13%。
本文提出可信度提高车辆类型的判定精度。从卷积神经网络原理出发,对车辆类型的最终判定提出两条原则:在噪声信息相同的条件下,车辆识别线圈包含的车辆信息越多,准确率越高,检测车辆类型的可信度越高;在包含车辆信息相同的情况下,图像内与车辆无关的噪声信息越多,准确率越低,检测车辆类型的可信度越低。第n辆车识别线圈的可信度Bn为
式中:An为第n辆车识别线圈内车辆图像面积;Sn为第n车辆识别线圈面积。车辆图像面积可通过OpenCV库函数求得[3]。
目标追踪算法可检测车辆去向,配合虚拟线圈可检测多流向车流量。室外场景中,KCF算法优于camshift、meanshift 等追踪算法[10]。KCF 算法训练核相关滤波器,该滤波器对跟踪目标响应值最大,对环境响应值最小,以此计算目标位置。目标车辆在道路监控图像中响应值分布如图3所示。
由图3可知,目标车辆所在位置响应值最大,采用KCF算法跟踪车辆是可行的。
图3 相关滤波追踪原理Fig.3 Principle of tracker with correlation filter
(1)动态学习率
KCF算法跟踪速度较慢,通过设置动态学习率提高跟踪速度。当检测区域响应值相对较高时,提升学习速度;当检测区域响应值相对较低时,减缓学习速度,抑制噪声对模型的干扰。目标追踪过程主要分为目标稳定跟踪、目标受干扰和目标丢失3种情况。针对这3种情况,采用动态规划对核相关滤波追踪算法的学习速度进行分类,公式为
式中:αmax为设定的学习率上限;rmax为最大响应值;αi为第i帧图像的学习率;λ2、λ1为控制学习率减缓速度的经验取值,采用穷举法标定参数,λ2、λ1分别取0.2、0.8。
(2)快速重捕机制
在传统KCF 算法的基础上建立快速重捕机制,实现车辆长时间跟踪。重捕效率关键在于搜索区域的划分。首先,基于线性拟合,采用目标丢失前若干帧的位置信息预测目标可能出现的位置,确认目标的重捕获中心;其次,按车辆加速度峰值计算搜索区域。搜索区域公式为
式中:c、r分别为响应值位置的列坐标、行坐标;e为画面的高;a、b分别为目标消失位置的列坐标、行坐标;a′、b′分别为上一帧目标位置的列坐标、行坐标;k为车辆运动方向的斜率;t为帧间时间间隔。
车流量检测共分4步:
Step 1 物体检测线圈根据圈内像素值变化检测移动物体。
Step 2 组合车辆识别线圈通过ResNet18 检测车辆类型,并向KCF追踪器发送信号。
Step 3 改进的KCF追踪器追踪车辆运动轨迹。
Step 4 计数线捕捉车辆流向,对应流向车辆数增加。
对于Step 4,传统车流量计数方法采用车辆中心点坐标与检测线两端坐标差分求积统计车流量,车速较快时容易漏计车辆。本文将车辆位置判定问题转变为线性可分问题。以物体检测线圈为基点,以车道下游为方向,以2 倍车辆识别线圈的高度设置一条检测线,称为计数线,其方程为
式中:(x,y)为计数线上任意一点坐标;p、q为计数线待定参数,用于确定计数线斜率与位置。假设计数线上两端点坐标为(g1,h1)、(g2,h2),则方程联立求解得
车辆位置判别公式为
式中:sign(x)为数学符号函数,根据x正负返回1或-1;C为车辆位置预测值。当车辆运行远离摄像头的视频且C >0 时,判断车辆通过计数线,车辆数变更,停止跟踪,释放跟踪器内存。同理可得,当车辆运行接近摄像头的视频且C <0 时,执行相同步骤。
对于道路监控视频图像的单向车流量检测,采用虚拟线圈检测,结果可分为4 种情况:车辆被正确检测,即1 辆车被正确检测并分类;车辆被重复检测,即1辆车被检测为2辆车或多辆车;车辆类型被误检,即1 辆车的车型检测错误;车辆漏检,即1辆车未能被检测到。为评价虚拟线圈性能,评价指标定义为:正检率=(类别被正确检测车辆数/实际车辆数)×100%;误检率=(类别被误检车辆数/实际车辆数)×100%。
监控地点为胶州市扬州路-常州路交叉口,以西进口为研究对象,时间为2019年3月18日-27日。6:00-18:00为白天时段,其中,7:00-9:00、17:00-18:00为高峰时段,其他时间为平峰时段。以每15 min为1 视频片段,构建视频片段集。采用传统虚拟线圈与类锚虚拟线圈,分别检测每个视频片段的公交车、小客车、摩托车的车流量,计算各评价指标,结果如表2所示。
表2 算法检测结果对比Table 2 Comparison between two algorithms'results (%)
由表2可知,与传统虚拟线圈相比,类锚虚拟线圈高峰、平峰正检率均值分别提升了5.09%、4.57%,高峰、平峰误检率均值分别降低了5.31%、2.35%,表明类锚虚拟线圈检测的准确度优于传统虚拟线圈;类锚虚拟线圈高峰正检率方差、误检率方差,平峰正检率方差、误检率方差分别比传统方法低0.03%、0.82%,0.19%、0.97%,表明类锚虚拟线圈指标值分布离散程度较小,算法鲁棒性更好。
应用交叉口视频评价KCF 算法性能,采用评价指标:跟踪准确度=(抵达计数线的跟踪框个数/实际车辆数)×100%。经计算,传统KCF 算法跟踪准确度为90.67%,改进KCF 算法跟踪准确度为96.85%,准确率提高了6.18%。
对于道路监控视频图像的多流向车流量,采用虚拟线圈和跟踪器进行检测。传统方法为普通虚拟线圈与原始KCF 方法的组合,改进方法为类锚虚拟线圈与改进KCF 方法的组合。为评价性能,定义评价指标为:正计率=(算法正确统计车辆数/实际车辆数)×100%,其中,被正确统计车辆同时满足上文中的准确跟踪与正确检测。
以胶州市扬州路-常州路交叉口西进口为实例,检测各方向车辆,其中,直行、左转车流检测评价指标分布如图4所示、检测结果如表3所示。
由图4可见,改进方法各时段正计率均优于传统方法。由表3可见,改进方法直行车流高峰、平峰正计率提升5.01%、5.99%,左转车流高峰、平峰正计率提升4.29%、4.56%。
图4 多流向车流量检测评价指标值分布Fig.4 Distribution of evaluation index
表3 算法检测结果Table 3 Algorithm's evaluation indexes (%)
本文通过预设不同尺寸的锚框识别不同类型车辆,采用DBSCAN算法聚类均衡数据集样本得出3类车型的识别线圈尺寸,设计物体检测线圈检测运动物体,组合车辆识别线圈检测车辆类型,并采用改进KCF算法追踪车辆轨迹,实现了多类型多流向的车流量检测。对比分析虚拟线圈+KCF检测方法,结果表明:各时段各流向的车流量检测中,本文方法的车流量检测正计率均提高了4.29%以上,优于虚拟线圈+KCF方法。文中车辆识别线圈的尺寸需要人工校正,一定程度影响了车流量检测的适应性,未来可开展基于深度学习的线圈尺寸识别与判定,有效提升不同场景下该检测方法的应用能力。