基于改进YOLOv5和DeepSort的交通流参数检测方法
2023-09-25单振宇侯晓雯
单振宇,张 琳,侯晓雯
(1. 长沙理工大学交通运输工程学院,长沙 410114;2. 中国海洋大学信息与工程学部,青岛 266100)
0 引言
交通流量、速度等交通流参数的检测是交通调查外业工作中的主要任务之一,采集的交通流信息可用于灵活的交通管理与交通安全评价等任务。目前交通调查中常用的交通流参数检测方法仍然以人工现场观测为主,但人工方法存在效率低、误检率高、成本大等问题;此外,高峰时期车流量较大,现场观测也存在一定的安全隐患。因此本研究基于外业采集的交通视频,利用深度学习技术在内业完成流量与速度的自动检测任务。
基于视频的交通流参数检测方法可分为传统机器学习方法和深度学习方法。对于传统机器学习方法,El Bouziady 等[1]通过背景差分法检测车辆,由合加速稳健特征算法(speeded up robust features,SURF)对车辆显著外型信息特征进行匹配并生成稀疏深度图,经过像素坐标转换后由帧差法计算车速。Tourani 等[2]把通过混合高斯背景差分法检测到的车辆使用形态学变换与过滤算法进行匹配,结合斑点跟踪算法跟踪车辆,由帧间行驶距离估计车速。蒋建国等[3]借助视觉前景提取算法(visual background extractor, ViBe)分离背景,随后基于像素以及视频帧相结合的算法更新背景,最后由虚拟线圈法统计道路交通流量。张冬梅等[4]针对无人机(unmanned aerial vehicle,UAV)视频,利用改进的多帧平均方法获取初始背景,由混合高斯背景算法更新背景,通过背景差分法检测车辆目标,最后由虚拟线圈法获取实时交通流量。上述传统机器学习方法检测过程相对简单,处理速度较快,但是对检测环境要求较高,检测精度不稳定。
对于深度学习方法,Arinaldi等[5]使用Faster R-CNN 检测模型检测交通视频中的车辆目标,基于核相关滤波算法(kernel correlation filter,KCF)进行目标跟踪,根据被跟踪车辆行驶距离和时间检测车速。Ke 等[6]利用组合Haar 级联和卷积神经网络(convolutional neural networks,CNN)来检测UAV 视频中的车辆目标,并通过KLT(Kanade Lucas Tomasi)跟踪算法跟踪车辆,进而获取道路上车辆速度以及交通流量等信息。Liu 等[7]使用迁移学习后的深度神经网络(deep neural network, DNN)检测道路中的车辆,然后基于卡尔曼滤波算法进行跟踪,根据跟踪结果估计了车流量与车速。Li 等[8]提出一种基于Faster R-CNN 和域自适应(DA)的车辆检测方法,通过空间金字塔Lucas Kanade光流法计算车辆在两帧之间的行驶距离,并结合检测道路区域面积和车辆数获取流量、密度、速度信息。Li等[9]在YOLOv3目标检测模型的基础上引入了金字塔网络结构,改进了小尺寸和遮挡场景下的车辆检测效果,随后使用多目标跟踪算法(confidence multi-object tracking,CMOT)跟踪车辆,构建了交通流三参数的检测框架。赖见辉等[10]使用YOLOv3 目标检测算法检测路侧采集的交通视频,建立了透视投影变换加卡尔曼滤波预测加匈牙利分配的交通流量计数框架。
深度学习技术的发展有效降低了外界环境对目标特征信息提取的影响,提高了车辆检测与跟踪效果。然而,多数深度学习的方法采用的神经网络结构复杂,模型参数量与计算量较大,不适合小算力的移动端设备使用,且难以在实际应用中实时运行。意识到了这一点,刘磊等[11]提出YOLO 检测和Meanshift 快速跟踪的车流量检测方法。文奴等[12]通过使用可变性卷积和MobileNetV3 轻量化的YOLOv4 目标检测模型接合DeepSort 算法实现了多车道的交通流量检测。上述工作的改进虽有一定成效,但准确率和实时性仍有一定的提升空间。
因此,本文提出一种基于改进YOLOv5s 和DeepSort 的端到端的实时交通流参数检测方法。为提高车辆检测模型运行速度、降低对使用设备的算力要求,引入MobileNetV3 网络作为YOLOv5s 的骨干网络;为提高车辆检测时的定位精度,使用SIoU Loss 作为车辆边界框的损失函数。为提高车辆跟踪算法的跟踪精度与速度,轻量化原算法的外观特征提取网络并在车辆重识别数据集上重新训练。最后,融合改进的YOLOv5s 目标检测模型和DeepSort 多目标跟踪算法实施交通流参数检测任务。
1 交通流参数检测模型
本文提出的实时交通流参数检测方法主要分为车辆检测、车辆跟踪、交通流参数检测三部分,整体流程如图1所示。首先,使用改进的YOLOv5s 模型提取视频中的车辆目标的位置与类型信息;其次,使用改进的DeepSort 多目标跟踪算法结合车辆外观信息与运动信息跟踪车辆目标;最后,设置虚拟检测线并构建检测区域,通过检测区域中车辆的行驶方向和时间计算流量与速度信息。
图1 交通流参数检测流程
1.1 车辆检测
1.1.1 YOLOv5s
YOLOv5 是YOLO(you only look once)系列检测模型的最新版本,较前代版本(YOLOv3、YOLOv4 等)在速度、精度上均有较大提升。YOLOv5按照模型大小,从小到大可分为YOLOv5s、YOLOv5m、YOLOv5l、YOLOv5x。鉴于实时性的考虑,本文选择YOLOv5s作为基础检测模型。
YOLOv5s 模型的网络结构主要包括输入端、Backbone 骨干网络、Neck 融合网络和输出端四部分。其中,输入端对输入图像进行Mosaic 数据增强、自适应锚框计算以及自适应图片缩放等数据预处理操作,丰富数据特征。Backbone骨干网络提取不同层次的图像特征,是占比整个模型参数量最大的部分,原模型使用Focus模块、CSP 瓶颈层结构以及空间金字塔池化模块SPPF。Neck 融合网络的设计采用了路径聚合结构PAN 加特征金字塔结构FPN 的结构,加强特征信息的融合能力,进一步扩大感受野,有效保留图像的上下文信息。输出端输出检测结果,包括目标位置和类别信息。
1.1.2 YOLOv5s改进
为进一步降低模型的参数量和计算量,使其更适合部署到移动端设备,本文使用Mobile-NetV3-Small[13]作为Backbone 骨干网络。Mobile-NetV3 通过使用逆向残差结构(inverted residual structure)、线性瓶颈模块(linear bottleneck)、深度可分离卷积(depthwise separable convolutions)降低模型参数大小与计算量,并引入具有SE(squeeze and excite)机制的轻量级注意力机制模块,通过神经结构搜索NAS来获取网络的最佳结构、参数配置,弥补网络轻量化带来的精度损失,既保持了良好的特征提取能力,又极大程度上压缩了模型。此外,本文还改进YOLOv5s的边界框损失函数,使用SIoU Loss[14]作为目标边界框损失函数,相比原损失函数增加了预测边界框和真实边界框中心距离和长宽比例的惩罚项,可以加快网络训练时预测框的收敛,提高回归定位精度。本文改进的检测模型记作M-YOLOv5s,网络结构如图2所示。
图2 改进的YOLOv5s网络结构
1.2 车辆跟踪
1.2.1 DeepSort
DeepSort算法是经典的多目标跟踪算法,由Sort 算法改进而来,由于Sort 算法仅考虑了目标运动信息,当目标被遮挡后容易出现跟踪丢失的问题。因此,DeepSort算法在运动信息的基础上添加了外观信息,即加入神经网络提取目标的外观特征信息,提高遮挡情况下的跟踪准确率。除此之外,整体依旧延续了卡尔曼滤波算法预测和匈牙利算法匹配的技术路线,如图3所示。首先,由卡尔曼滤波预测目标运动状态,得到描述目标位置和状态的信息(x,y,r,h,ẋ,ẏ,ṙ,ḣ);其中:(x,y)表示检测框的中心坐标;r,h分别表示检测框的长宽比和宽度;(ẋ,ẏ,ṙ,ḣ)表示前四个参数对应的速度信息。其次,结合运动信息和外观信息进行目标关联,计算运动信息时使用马氏距离描述卡尔曼滤波算法预测结果和检测模型检测结果之间的误差,马氏距离表达式为
图3 DeepSort跟踪算法流程
其中:dj表示第j个检测结果的状态向量,yi表示第i个预测结果的状态向量。Si表示检测结果和跟踪结果之间的协方差矩阵。对于外观信息,则先计算出每一个检测框dj对应的外观特征描述符rj。由于车辆和行人运动方式不同,车辆通常是直线运动,相邻两帧的外观相似度变化不大,而行人会经常更换行进位置导致相邻两帧的外观相似度变化较大。因此,对于车辆而言不需要再构建车辆外观特征合集,只计算检测结果和跟踪结果最近时间的相似度即可,一定程度上简化了算法复杂度。外观信息相似度由深度余弦距离衡量,其定义为
随后,使用线性加权的方式(见式(3))结合二者,λ为超参数,由匈牙利算法进行帧间目标匹配。
再次,对状态确定的目标通过前后两帧目标框之间的交并比(IoU)大小构建相似度矩阵,再次使用匈牙利算法匹配。最后,更新卡尔曼滤波算法。
1.2.2 DeepSort改进
在提取外观信息时,原算法使用的是一个离线神经网络(wide residual network,WRN),但由于WRN 参数量和计算量较大,使得Deep-Sort 算法相比Sort算法运行速度降低。鉴于实时性考虑,本文使用轻量型神经网络Mobile-NetV3-Small 作为DeepSort 算法的外观特征提取网络。此外,原算法的特征提取网络使用行人重识别数据集训练,并把输入图片限定为128 × 64大小来拟合行人宽高比。因此,为使其更适用于车辆特征提取,本文将输入图像大小调整到64 ×128,并在车辆重识别数据集VeRi[15]上重新进行训练。本文改进的跟踪算法记作M-DeepSort。
1.3 交通流参数检测
1.3.1 流量检测
考虑到DeepSort 跟踪算法中卡尔曼滤波需要一定的时间确保预测的稳定性,本文设置了虚拟检测区域,如图4灰色区域所示。当一个全新的车辆ID 通过检测区域时,自动生成数据字典保存该ID 车辆在检测区域出现的帧次数,根据其出现的次数判断该次计数是否有效,可以减少车辆因出现身份切换IDs导致的流量统计错误,本文将其设置为三次。其次,根据同一ID车辆的在检测区域的运动轨迹的起终点坐标计算一个矢量方向来判断该车辆的运动方向。最后,根据行驶方向信息和流量计数区域的身份检测信息进行双向交通流量统计。
图4 车辆检测线与检测区域示意图
1.3.2 速度检测
速度由车辆经过两虚拟检测线的时间除以检测线之间的实际距离获得。相比于根据像素距离推算车速的方法,本文方法优点如下:由于不需要对摄像机进行标定,该方法普适性更强;由于只需要计算车辆在两个检测线之间的行驶时间,方法更为简单。速度的计算公式如下:
其中:f1为车辆ID 检测框质点坐标经过检测线1时的帧数,f2为经过检测线2 时的帧数,FPS 为检测视频的帧率,S为两条检测线之间的实际距离,由实际测量确定。
2 实验结果与分析
本文实验在Windows 10环境下使用Python语言,基于PyTorch 深度学习框架进行,硬件配置为NVIDIA RTX3090 GPU,Intel(R)i9-10900K CPU。
2.1 模型训练
本节模型训练采用的评价指标包括检测精度AP、运行速度FPS、模型参数量/MB,计算量/G,IDs/次,其中,前两个指标的数值越高,表明模型效果越好,后三个指标的数值越低则表明效果越好。
2.1.1 车辆检测模型训练
车辆检测模型训练使用的数据集为UADETRAC 数据集,其由北京市、天津市的24 个不同卡口视频截取组成,包括近14 万帧图像,121万已标记的检测框,由于两帧图像之间相似度较高,为了减少训练时间,本文每隔10 帧抽取一张图片,共获得13402 张图像,按照7∶3的比例划分训练集与测试集。
为保证实验的客观性,本文将YOLOv5s 和M-YOLOv5s在UA-DETRAC数据集上进行重新训练时超参数的设置保持一致,均使用YOLOv5s预训练模型进行权重初始化,加快网络拟合速度,缩短训练时间。训练图像大小为640×640,优化器为SGD,初始学习率为0.01,动量为0.935,衰减系数为0.0005,训练次数100个轮次,批大小为16,由于仅保留car类目标,故没有分类损失曲线。M-YOLOv5s 训练过程的边界框损失和置信度损失随训练轮次变化如图5所示,网络已经基本收敛。
图5 M-YOLOv5s训练损失
两个模型测试结果见表1,本文轻量化的YOLOv5s 的模型参数量仅为3.54 MB,为原YOLOv5s的1/2;计算量为2.94 G,为原YOLOv5s的1/3,而准确率AP 较原模型仅下降1.2%,取得了更好的速度与精度之间的均衡,更适合低算力设备部署使用。
表1 车辆检测实验结果
2.1.2 车辆跟踪模型训练
将改进外观特征提取网络在VeRi 车辆重识别训练集上重训练,VeRi[15]数据集来自20 个不同位置的监控摄像头,拍摄场景包括交叉口和道路断面,包括776辆汽车以及从不同视角拍摄的近50000 张图像。训练图像大小为64 × 128,训练200个轮次,其余超参数与检测模型训练时的配置相同,训练时的损失函数变化如图6所示,训练200个轮次后网络损失函数变化基本稳定。
图6 外观特征提取网络训练损失
为验证本文改进跟踪算法的有效性,在UADETRAC测试集的MVI_123123、MVI_1234534上进行跟踪效果测试,测试结果见表2。结果表明本文改进算法在所列跟踪指标的表现中均优于原DeepSort,由于经过车辆重识别数据集的训练,本文算法较原算法IDs 降低4 次。此外,轻量型外观特征提取网络使得算法整体运行速度较原算法提高17%,改进后的跟踪算法更适用于车辆跟踪任务。
表2 车辆跟踪实验结果
2.2 交通流参数检测性能验证
验证使用的视频共两段,每段视频时长5 min,分辨率为1080 p,S=5 m。视频1、2分别对应平峰、高峰场景,每段视频拍摄角度、位置固定。使用准确率评价性能,定义为公式(5),真实值由人工采集,估计值由算法自动采集。性能对比时本文算法指M-YOLOv5s+M-DeepSort,原算法指YOLOv5s+DeepSort。
2.2.1 流量检测验证
分别采用人工统计、本文算法、原算法统计每个视频片段上行、下行与总的交通流量,结果如图7所示。两段视频中真实的上行交通流量略小于下行交通流量,算法检测到的交通流量也同样符合此种情况。其次,本文算法较原算法的估计值更接近人工统计的真实值,表3展示了两种算法的统计准确率,本文算法在上行、下行和总和的准确率均高于原算法,表明了本文改进算法的有效性。此外,视频2中由于车流密度增加、车辆遮挡较为严重,本文算法的统计精度较视频1中的精度降低,但精度仍稳定在94%以上,整体表现效果依旧良好。
表3 交通流量检测准确率对比
图7 不同视频车流量检测结果
2.2.2 速度检测验证
由于无法获取每个车辆真实的行驶速度,故以平均速度为基准进行比较。视频1的实际平均速度为41.56 km/h,视频2 为39.87 km/h。由于车流密度增加,车辆之间的影响增大,车辆行驶速度会有所降低,因此视频1中车辆平均速度较视频2稍高,符合实际情况,且算法采集到数据样本均值也符合此情况。此外由表4对比结果可知,本文算法在视频1、2 中采集到的速度数据的平均值的准确率比原算法都高,再次证明本文算法的有效性。
表4 速度估计准确率对比
2.2.3 检测实时性验证
当车流密度增加时算法的运行速度会相应降低,为检验本文算法在高峰时期的运行速度的情况,对算法主要部分耗时情况进行了统计,结果见表5。车辆检测任务耗时10.21 ms,占总消耗时间的61.25%,其次为车辆跟踪任务耗时4.18 ms,最后为视频读取任务2.28 ms。相对于日常视频25 帧/s 的速率,本文算法可达到59 帧/s,可满足实时性的要求。图8展示了本文算法的实际应用效果,从图8可以看出本文算法具有较强的可靠性。
表5 算法实时性测试分析单位:ms
图8 车流量与车速检测效果
3 结语
本文提出了一种基于改进YOLOv5s和Deep-Sort 的交通流参数检测方法,改进的YOLOv5s在精度较原YOLOv5s 仅降低1.2%的情况下,参数量和计算量分别降低1/2 和2/3;通过重构DeepSort外观特征提取网络,调整图像输入尺寸并进行车辆重识别训练,使得改进DeepSort 算法更适合用于车辆的跟踪任务。实际试验结果表明,该方法的平均准确率在92%以上,运行速度可达59 帧/s,满足实时使用的要求并具有较强的实用性。未来将进一步提高方法在雨、雪等恶劣天气、夜间或者道路极度拥挤等场景下的适用性。