APP下载

改进YOLOv5s+DeepSORT的监控视频车流量统计

2022-04-09李永上马荣贵张美月

计算机工程与应用 2022年5期
关键词:车流量注意力车辆

李永上,马荣贵,张美月

长安大学 信息工程学院,西安 710064

在智能交通系统中,利用监控视频进行车流量统计是一个研究热点。交管部门通过实时、准确地采集车流量信息,可以合理分配交通资源、提高道路通行效率,有效预防和应对城市交通拥堵问题。

基于监控视频的车流量统计通常包含车辆目标检测和跟踪两个部分。传统的目标检测算法利用人工构建目标特征,之后使用分类算法进行分类,判断目标是否存在,典型的算法如Haar+Adaboost[1]、Hog+SVM[2]、DPM[3],这些算法需要在图像中进行滑动窗口操作,检测效率低、消耗资源大,并且人工设计的特征鲁棒性低、泛化效果差,容易导致车辆误检、漏检现象的出现。随着机器学习和GPU并行计算技术的不断发展,目标检测逐渐由传统方法转为基于深度学习的方法,主要分为One-Stage结构和Two-Stage结构两种[4]。Two-Stage算法在检测时首先生成候选区域,之后在候选区域的基础上分类和校准,准确率相对较高,代表模型有R-CNN系列[5-7]。One-Stage算法在检测时无需生成候选区域,直接对目标类别和边界进行回归,检测速度快,代表模型有SSD[8]、RetinaNet[9]、YOLO[10-12]系列。基于深度学习的车辆检测方法能够从数据中学习车辆特征,兼具检测速度快、准确率高的优势。目前,YOLO模型发展到最新的YOLOv5,由Ultralytics公司发布,按照模型权重大小分为s、m、l、x。其中,YOLOv5s模型参数量(Params)最少,浮点运算量(FLOPs)最低,但是运行速度最快,达到每张图像2 ms的推理速度,在COCO 2017验证集上的mAP达到55.4%。

目标跟踪算法根据初始化方式不同,分为基于检测的跟踪(detection-based tracking,DBT)和无检测的跟踪(detection-free tracking,DFT)。DBT需要一个检测器提前将每一帧图像中的目标检测出来,之后跟踪检测出的目标,因此跟踪效果依赖于检测效果;而DFT需要人工在初始帧将被跟踪目标标注出来,算法灵活性不高,并且无法跟踪后面帧中出现的不同目标。目标跟踪还可以根据视频帧处理方式的不同分为在线跟踪和离线跟踪。在线跟踪处理每一帧时依据当前帧和之前帧中的信息跟踪目标,不能根据当前帧的信息修改之前帧的跟踪结果;离线跟踪则可以利用当前帧的前后数据获取全局最优解,但是不适合现实场景中的实时应用。在监控视频的车辆跟踪任务中,考虑实时性和灵活性,基于检测的在线跟踪是最接近实际应用的方法。

监控视频车流量统计的难点在于视频中的运动模糊、车辆遮挡、目标尺度变化,这些因素会导致车辆检测时出现漏检或误检,或者在车辆跟踪时出现身份切换(ID switch,IDs),影响最后的统计结果。针对这些难点,本文利用基于深度学习的目标检测算法检测车辆,结合检测结果和在线跟踪的DBT算法跟踪目标,最后在视频中利用虚拟检测线的方式完成车流量统计。

1 相关工作

基于深度学习的车辆检测具有速度快、准确率高的优点,不论是在复杂的环境背景中,还是在算力较低的边缘设备上,都能表现出良好的检测效果。黄开启等[13]在雾霾天气的背景下,利用改进的YOLOv3算法检测车辆,构造了一种定位置信度替代分类置信度作为参考项来选择预测框的位置,通过引入软化非极大值抑制(soft-NMS)更新坐标,提高车辆定位精度,但是文章对雾霾图像仍然使用传统图像处理方法,因此无法实现端到端的检测。鞠默然等[14]针对图像中小目标检测率低、虚警率高的问题,将YOLOv3输出的8倍降采样的特征图进行2倍上采样,并与之前的特征图进行融合,以获取更多小目标的特征信息,利用K-means对目标候选框的个数和宽高比进行聚类分析,在VEDAI数据集上的实验结果表明改进后的网络可以有效检测小目标,但是VEDAI是遥感图像的车辆数据集,目标大小较为单一,与监控视频中车辆随着运动而目标大小也随之变化的特点相差较远。李国进等[15]针对车辆检测时存在的漏检问题,提出新的改进Inception模块,替代SSD网络中的部分卷积层,针对识别率低的问题设计了深层特征和浅层特征融合的结构,并在特征提取阶段引入注意力机制SENet,对不同特征通道的重要性重新标定,改进的算法在精度和速度上均有提高,但是文章忽略了SSD网络的模型权重较大,无法部署在边缘设备的问题,实用性不强。

基于监控视频的车辆跟踪是典型的多目标跟踪任务,难点在于车辆遮挡、运动模糊、尺度变化等。李俊彦等[16]在车辆运动轨迹提取任务中,提出基于YOLOv3和KCF相结合的方法,关联目标检测结果和历史轨迹的预测结果,完成目标车辆跟踪,但是KCF算法对目标的尺度变化和快速变形适用性不强,不适用于监控视频场景的车辆跟踪。刘磊等[17]为了解决车流量统计中识别速度慢、统计准确率低的问题,提出YOLO识别和Mean shift跟踪的方法,Mean shift可以根据YOLO的识别结果更新目标模型,以改善跟踪失败的问题,但是Mean shift算法仅仅利用单一颜色特征描述目标,对于相似颜色目标的干扰不够鲁棒。金立生等[18]提出一种优化Deep SORT的前方多车辆目标跟踪算法,使用改进的YOLOv3作为检测器,并在扩增后的VeRi数据集上进行重识别预训练,将中心损失函数和交叉熵损失函数相结合,实验结果相较于原始Deep SORT准确度有所提升,并且IDs次数降低。

综合以上工作,本文提出利用轻量级目标检测模型YOLOv5s作为检测器,结合Deep SORT目标跟踪的车流量统计方法,以实现端到端的检测和统计。针对车辆识别率低问题,将注意力机制与检测网络融合,加强模型提取特征的能力,使模型更加关注被检测目标本身。使用CIoU Loss替换原始的检测框回归损失函数,改善定位精度低、训练过程中目标检测框回归速度慢的问题。使用DIoU-NMS替换原始的NMS,改善车辆遮挡导致的漏检现象。对Deep SORT的特征提取网络进行输入尺寸调整,并在车辆重识别数据集上重新训练。连接检测器和跟踪器,在公开数据集上调试参数,并在实际的道路监控视频中测试应用。

2 YOLOv5s车辆检测

在DBT算法中,检测器效果的好坏严重影响目标跟踪的结果[19],并且检测器速率的快慢和模型的大小也是完成实时目标跟踪的关键。由于监控现场大多是算力较低的嵌入式设备,无法部署规模较大的检测模型,为了降低运算成本,加强实用性,本文选择YOLOv5系列中的最小模型YOLOv5s作为车辆检测的基础模型。

2.1 YOLOv5s

YOLOv5s的结构主要分为四个部分,Input输入端、Backbone主干网络、Neck网络、Head输出端,如图1所示。Input输入端主要包含对数据的预处理,包括Mosaic数据增强[11]、自适应图像填充,并且为了适用不同的数据集,YOLOv5s在Input输入端集成了自适应锚框计算,以便在更换数据集时,自动设定初始锚框大小。Backbone主干网络通过深度卷积操作从图像中提取不同层次的特征,主要利用了瓶颈跨阶段局部结构BottleneckCSP[20]和空间金字塔池化SPP[21],前者的目的是为了减少计算量、提高推理速度,后者实现了对同一个特征图进行不同尺度的特征提取,有助于检测精度的提高。Neck网络层包含特征金字塔FPN、路径聚合结构PAN[22],FPN在网络中自上而下传递语义信息,PAN则自下而上传递定位信息,对Backbone中不同网络层的信息进行融合,进一步提升检测能力。Head输出端作为最后的检测部分,主要是在大小不同的特征图上预测不同尺寸的目标。

图1 YOLOv5s网络结构Fig.1 Structure of YOLOv5s

2.2 YOLOv5s融合注意力机制

在计算机视觉领域,注意力机制的有效性已经得到证明,并且已经广泛用于分类、检测、分割任务。在CNN网络中,注意力机制作用于特征图上,用于获取特征图中可用的注意力信息[23],主要包括空间注意力和通道注意力信息。卷积注意力模块(convolutional block attention module,CBAM)[24]同时关注了空间和通道信息,通过两个子模块CAM(channel attention module)和SAM(spatial attention module)对网络中间的特征图进行重构,强调重要特征,抑制一般特征,达到提升目标检测效果的目的,其结构如图2所示。

图2 CBAM结构Fig.2 Structure of CBAM

对于CNN网络中某一层的三维特征图F∈ℝC×H×W,CBAM顺序地从F推理出一维通道注意力特征图Mc和二维空间注意力特征图Ms,并分别进行逐元素相乘,最终得出与F同等维度的输出特征图,如公式(1)所示。其中F表示网络中某网络层特征图,Mc(F)表示CAM对F进行通道注意力重构,Ms(F′)表示SAM对通道注意力重构的结果F′进行空间注意力重构,⊗表示逐元素乘法。

CAM和SAM的结构如图3所示。图3(a)展示了CAM的计算过程,输入特征图F的每个通道同时经过最大池化和平均池化,得出的中间向量经过一个多层感知机(multi-layer perceptron,MLP),为了减少计算量,MLP只设计一个隐层,最后对MLP输出的特征向量进行逐元素加法并进行Sigmoid激活操作,得到通道注意力Mc。图3(b)展示了SAM的计算过程,经过Mc激活的特征图F′沿通道方向上分别进行最大池化和平均池化,对得到的中间向量进行卷积操作,卷积结果经过Sigmoid激活之后得到空间注意力Ms。

图3 CAM和SAM模块结构Fig.3 Structure of CAM and SAM

注意力机制最重要的功能是对特征图进行注意力重构,突出特征图中的重要信息,抑制一般信息,YOLOv5s网络中提取特征最关键的部分在Backbone,因此,本文将CBAM融合在Backbone之后,Neck网络的特征融合之前,这么做的原因是YOLOv5s在Backbone中完成了特征提取,经过Neck特征融合之后在不同的特征图上预测输出,CBAM在此处进行注意力重构,可以起到承上启下的作用,具体结构如图4所示。

图4 Neck融合CBAMFig.4 Structure of Neck integrating CBAM

2.3 损失函数改进

YOLOv5s使用GIoU Loss[25]作为边界框回归损失函数,用以评判预测边界框(predicted box,PB)和真实边界框(ground truth,GT)的距离,如公式(2):

式中,IoU表示PB和GT的交并比,Ac表示将PB和GT同时包含的最小的矩形框的面积,U表示PB和GT的并集,LGIoU为GIoU损失。GIoU Loss的优势是尺度不变性,即PB和GT的相似性与它们的空间尺度大小无关。GIoU Loss的问题在于当PB或者GT被对方完全包围的时候,GIoU Loss完全退化为IoU Loss,由于它严重地依赖于IoU项,导致在实际训练中收敛速度过慢,并且预测的边界框精度较低。CIoU Loss针对这些问题,同时考虑了PB和GT的重叠面积、中心点距离、长宽比例,如公式(3):

式中,b和bgt表示PB和GT的中心点,ρ2(·)表示求欧式距离,c表示PB和GT的最小包围框的最短对角线长度,α表示一个正平衡参数,v表示PB和GT的长宽比的一致性。α和v的定义如公式(4):

式中wgt、hgt和w、h分别表示GT和PB的宽度和高度。

相比YOLOv5s中使用的GIoU Loss、CIoU Loss在损失项中加入了PB、GT中心距离和长宽比例的惩罚项,使网络在训练时可以保证预测框更快的收敛,并且得到更高的回归定位精度,本文将CIoU Loss作为车辆检测网络的损失函数。

2.4 NMS非极大值抑制改进

在预测阶段,通常使用NMS移除多余的检测框,评判的标准是某个检测框与预测得分最高的检测框的交并比IoU,当IoU大于设定的阈值时,预测的检测框将被移除。在一般场景下,这种方法是有效的,但是在目标密集的环境中,由于各个目标之间相互存在遮挡,不同目标的检测框非常近,重叠面积较大,因此会被NMS错误地移除,导致目标检测失败。在监控视频中,车辆目标集中在图像中的道路中间,是一种较为密集并且容易产生遮挡的场景,本文利用DIoU作为NMS的评判标准改善这个问题。

DIoU在IoU的基础上考虑了两个边界框中心点的距离,如公式(5):

M表示预测分数最高的一个预测框,Bi表示判断是否需要被移除的预测框,si表示分类分数,ε表示NMS的阈值。DIoU-NMS考虑IoU的同时,判断两个边界框M和Bi中心点的距离,当距离较远时不会移除预测框,而是认为检测到了另外的目标,这有助于解决目标互相遮挡情况下的漏检问题。本文使用DIoU-NMS替换原始NMS。

3 Deep SORT车辆跟踪

多目标在线跟踪算法SORT(simple online and realtime tracking)利用卡尔曼滤波和匈牙利匹配,将跟踪结果和检测结果之间的IoU作为代价矩阵,实现了一种简单高效并且实用的跟踪范式。但是SORT算法的缺陷在于所使用的关联度量(association metric)只有在状态估计不确定性较低的情况下有效,因此算法执行时会出现大量身份切换现象,当目标被遮挡时跟踪失败。为了改善这个问题,Deep SORT将目标的运动信息和外观信息相结合作为关联度量,改善目标消失后重新出现导致的跟踪失败问题。

3.1 Deep SORT多目标跟踪算法

3.1.1 跟踪处理和状态估计

Deep SORT利用检测器的结果初始化跟踪器,每个跟踪器都会设置一个计数器,在卡尔曼滤波之后计数器累加,当预测结果和检测结果成功匹配时,该计数器置为0。在一段时间内跟踪器没有匹配到合适的检测结果,则删除该跟踪器。Deep SORT为每一帧中新出现的检测结果分配跟踪器,当该跟踪器连续3帧的预测结果都能匹配检测结果,则确认是出现了新的轨迹,否则删除该跟踪器。

Deep SORT使用8维状态空间(u,v,γ,h,x˙,y˙,γ˙,h˙)描述目标的状态和在图像坐标系中的运动信息。u和v表示目标检测框的中心坐标,γ和h分别表示检测框的宽高比例和高度,(x˙,y˙,γ˙,h˙)表示前面四个参数在图像坐标中的相对速度。算法使用具有恒定速度模型和线性观测模型的标准卡尔曼滤波器,将检测框参数(u,v,γ,h)作为对象状态的直接观测值。

3.1.2 分配问题

Deep SORT结合运动信息和外观信息,使用匈牙利算法匹配预测框和跟踪框。对于运动信息,算法使用马氏距离描述卡尔曼滤波预测结果和检测器结果的关联程度,如公式(7):

式中,dj和yi分别表示第j个检测结果和第i个预测结果的状态向量,Si表示检测结果和平均跟踪结果之间协方差矩阵。马氏距离通过测量检测结果距离平均跟踪结果的标准差,将状态估计的不确定性考虑在内,可以排除可能性低的关联。

当d(2)(i,j)小于指定的阈值,认为关联成功。

马氏距离在短时预测情况下可以提供可靠的目标位置信息,使用外观特征的余弦相似度可以在目标遮挡又重新出现时恢复目标ID,为了使两种度量的优势互补,使用线性加权的方式进行结合:

3.2 深度外观特征

原始算法使用一个残差卷积神经网络提取目标的外观特征,将模型在大规模行人重识别数据集上进行训练,使适用于行人的检测和跟踪。由于原始算法仅用于行人类别,输入图像均被缩放到128×64大小,这与车辆目标的宽高比例不相符,为使模型适用于车辆特征提取,因此本文对网络模型进行改善,调整网络的输入图像大小为128×128,如表1所示。调整后的网络在车辆重识别数据集VeRi[26]进行重识别训练。

表1 调整后的重识别网络Table 1 Adjusted re-identify network

4 实验与分析

4.1 实验准备

车辆检测与跟踪数据集:UA-DETRAC数据集采集于北京和天津24个不同地点,包含超过14万帧视频图像和8 250辆人工标记的汽车目标,共计121万标记过的目标检测框。数据集中含有不同的交通场景,包括高速公路、十字路口、丁字路口,不同的环境背景,包括白天、夜晚、多云、下雨。由于UA-DETRAC的拍摄角度与监控探头较为接近,车辆类型多样,因此选用该数据集作为检测器YOLOv5的实验数据集和Deep SORT多目标跟踪数据集。

车辆重识别数据集:VeRi数据集来自于20个不同的真实监控摄像头,摄像头安装于1 km2内的任意位置和方向,拍摄场景包含十字路口、两车道道路、四车道道路。数据集中含有776辆车的超过50 000张图像,每辆车都被至少两个摄像头从不同角度、光线条件、环境背景拍摄。

车流量统计测试数据:模拟监控摄像头角度,手持相机拍摄于西安市南二环文艺路天桥,共拍摄3段视频,每段5 min。拍摄场景包含平峰时段、高峰时段、夜间,其中平峰和高峰为白天拍摄,每段视频均包含上下行两条道路,如图5(a)、(b)、(c)分别为平峰、高峰和夜间。

图5 三种不同的车流量测试场景Fig.5 Three different traffic flow scenarios

实验平台:网络训练平台采用腾讯云服务器,规格为Tesla V100-NVLINK-32 GB GPU、8核CPU、40 GB RAM。车流量测试平台采用本地主机,规格为RTX 2070s 8 GB GPU、AMD 3700X、32 GB RAM。模型框架为PyTorch。

评价指标:查准率Precision、查全率Recall、平均检测精度AP作为目标检测模型的评价标准。身份切换次数IDs和每秒跟踪帧数Speed作为跟踪模型的评价标准。车流量统计准确率作为整套方案的评价标准。

4.2 实验结果及对比分析

4.2.1 YOLOv5s消融及对比实验

本文仅采用UA-DETRAC数据集的训练集,按照6∶2∶2的比例随机划分为检测网络的训练集、验证集和测试集。本文目的是车流量统计,无需检测车辆类型,因此将原数据集中car、bus、van和others统一为一种类型car。为验证本文提出的对YOLOv5s的三种改进策略,在以上数据集上展开消融实验,以判断每个改进点的有效性,依次在初始YOLOv5s的基础上加入CBAM、CIoU Loss。实验均不采用预训练模型,训练过程使用相同的参数配置,输入图像为640×640,优化器为SGD,初始学习率0.01,动量设置为0.937,衰减系数为0.000 5。实验结果如表2所示。

表2 YOLOv5s消融实验Table 2 Ablation of YOLOv5s %

表2第1行表示原始YOLOv5s在数据集上的基础表现,平均检测精度是93.4%。分别引入CBAM和CIoU Loss之后可以看出,CBAM对检测结果的提升较为明显,Precision、Recall、AP均有明显提高,而CIoU Loss的提升表现稍弱。分析认为这与两个模块的功能不同有关,注意力机制旨在提升网络对重要特征的提取能力,表现在结果上就是准确率的提高,而CIoU Loss则是加快预测框的回归的速度,提高回归精度,因此对于检测准确率仅有小幅提高。同时引入CBAM和CIoU Loss之后,检测网络取得了最好的结果,平均精度AP相较原始网络提升2.3个百分点。

为分析CIoU Loss和DIoU-NMS对检测结果的影响,对部分测试结果进行可视化,如图6。图6(a)为原始YOLOv5s+CBAM的部分检测结果,可以看到在车辆遮挡时,网络出现了漏检,部分检测框精度不高,没有完全覆盖或者超出了目标。图6(b)是在(a)的基础上引入了CIoU Loss的部分检测结果,相比图6(a)在同样的图像中,检测框的回归精度有了明显提高,但是同样存在漏检问题。图6(c)是引入了DIoU-NMS的检测结果,相比图6(b),漏检车辆被检测出来,同时保持了较高的检测精度。

图6 消融实验结果对比Fig.6 Comparison of ablation results

为了进行横向对比,本文选择Faster R-CNN+FPN、YOLOv3+SPP、mobilenetv2-YOLOv4三种网络分别在同样的数据集上训练和测试,均采用预训练模型。实验结果如表3所示。可以看出,本文改进的YOLOv5s在检测速率FPS、权重大小、平均精度AP方面均领先其他三种网络,对于网络权重大小,原始YOLOv5s为7.3 MB,改进之后网络仅仅增加了0.4 MB。

表3 不同检测网络的结果对比Table 3 Comparison of different detection networks

4.2.2 深度外观特征提取网络实验

将3.2节调整后的重识别网络在数据集VeRi上训练,输入图像尺寸为128×128,其余参数保持不变。连接改进后的YOLOv5s和车辆重识别后的Deep SORT,在UA-DETRAC训练集中的MVI_63525、MVI_40204、MVI_40991上进行测试,结果如表4。

表4 车辆跟踪实验Table 4 Vehicle tracking experiment

由于SORT算法仅使用了运动特征作为目标关联的依据,在以上三段数据的车辆跟踪中一共发生了75次身份切换,Deep SORT相比SORT降低了48%,而本文进行车辆重识别后的模型进一步降低了IDs,不仅IDs降低至29次,而且在本地测试平台上的检测速度可以达到32 Hz,满足实时检测的标准。可视化结果如图7所示,车辆在第150帧由于障碍物遮挡而消失,无法跟踪到该目标,在第172帧该目标重新出现,目标身份恢复,跟踪成功。

图7 车辆ID恢复Fig.7 Vehicle ID recovery

4.2.3 车流量统计实验

本文利用在视频中设置检测线的方式统计车流量,具体方法是:在车道中设置与行车方向垂直的虚拟检测线,当一个目标跟踪框的中心点轨迹与检测线相交时,车流量总数累加,并记录该点纵坐标;通过计算后一帧的中心纵坐标与前一帧纵坐标的大小判断车辆是上行还是下行,完成双向车道计数。检测结果如图8。

图8 车流量统计结果Fig.8 Traffic flow statistics

对本文采集的车流量统计测试数据进行人工计数,并进行对比实验,结果如表5所示,每一行数据分别表示人工统计、原始算法和改进算法在三个测试视频中统计到的车流量。从结果可以看出本文提出的改进方法在三个场景中的准确率均高于原始算法。在平峰场景中,由于白天光线好,车辆基本没有遮挡,达到了93.5%的准确率;在高峰场景中,车辆行驶缓慢,甚至停滞,跟车距离近,产生遮挡,准确率有所下滑,为91.2%;在夜间场景中,由于光线较暗,会出现某些车辆漏检,并且车辆前大灯和尾灯影响了目标跟踪的准确度,导致统计准确率相对较低,为89.9%。

表5 车流量统计实验结果Table 5 Traffic flow statistics experiment

5 结束语

本文使用YOLOv5s作为检测器,结合Deep SORT车辆跟踪的方法进行车流量统计。将注意力机制CBAM与YOLOv5s融合,有效地提升了检测器的准确率;使用CIoU Loss损失函数和DIoU-NMS非极大值抑制替换原始的GIoU Loss和普通NMS,进一步提升了检测器的定位精度,并且有效改善了车辆拥挤场景中的漏检现象;将Deep SORT中原始的特征提取网络进行输入调整和重识别训练,使算法更适合于车辆类别的应用;连接改进的YOLOv5s检测器,在行车高峰、平峰和夜间三种场景中对算法进行车流量统计实验,结果表示本文提出的算法在不同场景中均表现出良好的统计准确率。本文所进行实验均在高算力设备上进行,尽管模型权重已经很小,但是对于边缘设备而言仍然负担过重,因此未来的方向是对模型进一步压缩剪枝,并移植到嵌入式设备。

猜你喜欢

车流量注意力车辆
让注意力“飞”回来
车辆
“扬眼”APP:让注意力“变现”
冬天路滑 远离车辆
车辆出没,请注意
A Beautiful Way Of Looking At Things
提高车辆响应的转向辅助控制系统
参考答案
高速公路重大节假日免费车流量金额算法研究与应用
一种新型多车道车流量检测算法