基于YOLO和嵌入式系统的车流量检测

基于YOLO和嵌入式系统的车流量检测
马永杰;宋晓凤
【摘 要】城市道路普遍存在机动车、非机动车、行人的人车混行路段,车辆目标的准确识别与统计成为视频方法检测混合交通流量的关键问题.本文提出了基于深度学习YOLO(You Only Look Once)的车流量检测算法.用YOLO v2检测道路上移动的目标,对检出目标中的车辆目标进行识别与筛选,设置感兴趣区域,在车辆目标经过感兴趣区域时计数,并用核相关滤波器跟踪车辆,避免车辆重复计数;在ARM上利用该算法实现了混合交通视频中的车流量检测.测试结果表明,该方法中车辆的检测、跟踪、计数结果良好,可应用于混合交通中的车流量检测.
【期刊名称】《液晶与显示》
透明口罩【年(卷),期】2019(034)006
【总页数】6页(P613-618)
【关键词】深度学习算法YOLO v2;核相关滤波器;车流量检测;嵌入式RK3399
【作 者】马永杰;宋晓凤
【作者单位】西北师范大学物理与电子工程学院,甘肃兰州730070;西北师范大学物理与电子工程学院,甘肃兰州730070
【正文语种】中 文
【中图分类】TP29
1 引  言
车流量检测是智能交通系统的关键技术,目前热门的检测方法是基于大数据与机器学习的,但大数据需要经历长期的数据收集,并需要车辆使用特定的软件,如滴滴、快的、美国的优步等,而机器学习的检测方法设备简单、准确率高,因此成为一个主要的研究方向。
深度学习是一种特殊的机器学习方法,在目标检测方面比传统的检测方法与浅层机器学习模型都有着更高的准确率与更好的检测结果。深度学习应用深度卷积神经网络进行大量的
有监督训练来获取图像中的车辆特征,从而检测出车辆。2012年AlexNet模型[1]的出现使深度学习获得了巨大的突破,该模型具有良好的分类优势,但不适合目标检测;Girshick等人在2013年提出R-CNN[2]方法,可以应用于目标检测,但是检测速度不够快;Redmon等人在2016年提出You Only Look Once[3](YOLO)对象检测方法,在高性能GPU上达到了实时检测,但是准确度不高;2017年Redmon等人在改进YOLO后提出YOLO v2[4],又在2018年在YOLO v2基础上再次改进提出YOLO v3[5]。
由于嵌入式系统的便携性和低功耗,基于嵌入式系统的车辆检测应用也越来越广泛,如自动驾驶、无人机、智能机器人、军事等领域[6]。但大多数嵌入式设备可用的计算资源受限于低功率的嵌入式GPU或有限存储器的嵌入式CPU,因此,要在嵌入式设备上实现车流量的实时检测仍然是一个很大的挑战[7],而基于深度学习的嵌入式车流量检测方法更具研究价值。
本文在RK3399嵌入式芯片上用深度学习算法YOLO v2检测车辆,并用核相关滤波器(KCF)跟踪车辆,提高了车辆自动统计的准确度,成功地实现了车流量的检测。
2 YOLO v2检测车流量算法与移植
虽然深度学习框架也可以移植到嵌入式上进行训练,但是嵌入式的CPU与GPU不适合训练模型,若能准确地检测出目标才具有更大的应用价值。本文基于嵌入式的车流量检测算法主要依赖OpenCV实现,由4部分组成:车辆检测算法、感兴趣区域、计数、跟踪算法。检测算法需要准确的检测出车辆,并准确地对汽车与其它目标分类。本文通过OpenCV 3.4.3的函数使用YOLO v2,在每个车道单独设置感兴趣区域,只在感兴趣区域中显示出YOLO v2的检测结果,并进行车辆的跟踪与计数,在YOLO v2检测出汽车时计数才会改变。而跟踪算法能保证同一辆车在连续的几帧内驶不出感兴趣区域时,不会被重复计数,故准确地计数需要检测的准确与跟踪的准确。
2.1 YOLO v2
变速轮在获取图像后先进行图像的灰度化处理,然后用YOLO v2进行检测车辆。YOLO在输入的图像中回归预测目标[8],有效缓解了R-CNN的计算复杂度,并且比R-CNN有着更显著的速度优势,但检测精度方面明显低于R-CNN。YOLO v2与YOLO相比,网络架构中没有完全的连接层。YOLO v2在特征图上用滑窗进行采样,在每个滑窗中心应用k-means聚类训练预测出不同比例的预测框,这样提高了建模精度,也使得网络的训练过程更加容易。YOL
O v2使用CNN网络架构Darknet-19。Darknet-19包含19个卷积层和5个最大值池化层[9],需要85.2亿浮点运算,可以在Nvidia Titan-X GPU上以67 f/s进行物体检测。
YOLO v2将输入图像分成S×S个网格,用置信度分数表示对每个落入网格的目标的预测,并得到多个目标预测框,对预测框特定类别的置信度分数进行筛选得到最终的预测框。用Pr(Object)表示网格单元预测的概率,表示目标区域与预测区域面积的交并比,表示置信度,Pr(Classi|Object)为每个网格单元预测的C条件类概率,则每个预测框的特定类别的置信度分数为:
Pr(Classi|Object)×Pr(Object)×
.
(1)汽车防尘罩
故在统计车辆数时,只需要统计出检测出来的car类、bus类、truck类的个数就行,然后使用跟踪算法避免同一辆车重复计数。跟踪目标由YOLO v2的目标预测框框定。目标预测框b的中心点坐标用(bx,by)表示,宽高为bw、bh。对应图像网格左上角坐标为(cx,cy)。σ(tx)
、σ(ty)是预测框的中心相对栅格左上角的横坐标、纵坐标,pw与ph是边界框的宽度与高度,etw与eth为横纵方向上的缩放因子[10]。bx、by、bw、bh如式(2)所示:
bx=σ(tx)+cxby=σ(ty)+cybw=pwetwbh=pheth
.
(2)
将目标预测框的左下顶点坐标(xlb,ylb)与右上顶点坐标(xrt,yrt)传递给跟踪算法,顶点坐标的计算由式(3)给出:
(3)
2.2 感兴趣区域与计数
根据车辆的速度与摄像机的角度,对每个车道单独设置感兴趣区域(ROI)。使目标的中心在经过ROI时正好落在ROI中,但感兴趣区域又要足够的狭窄,使目标在下一帧时尽可能地驶出ROI。设ROI左下顶点坐标为(xrlb,yrlb),右上顶点坐标为(xrrt,yrrt),在中心位置满足式
(4)时,YOLO v2在检测出car类、bus类、truck类3类时计数加1:
(4)
2.3 核相关滤波器跟踪算法
为了避免车速太慢行驶不出感兴趣区域而重复计数,应用核相关滤波器(KCF)对车辆进行跟踪。KCF跟踪算法基于岭回归函数,利用循环矩阵在目标区域设置采样窗口进行循环移位,使样本具有循环特性,再使用循环矩阵训练分类器,这样可减少存储与计算量[11-13]。但是KCF在跟踪目标时在严重遮挡、尺度变化、相似目标干扰时会出现跟踪失败的情况,而不能进行长期目标跟踪。本文将感兴趣区域设置的更狭窄,从而也可避免长期跟踪。在检测车辆的中心进入感兴趣区域前的一段位置时,对KCF进行初始化,即将前一辆目标的跟踪信息去除,这个值kint根据视频中的车速确定。初始化的区域如式(5)所示:
(5)
2.4 算法的移植
图1是本文基于RK3399开发的检测系统框图。RK3399有6个内核,分别为2个ARM Cortex-A72核和4个ARM Cortex-A53核,GPU采用四核ARM高端图像处理器Mali-T860。算法在ARM上的调用需求与PC一样,需要操作系统与软件,操作系统的搭建需移植U-boot、ARM-Linux内核、文件系统,软件需要交叉编译OpenCV与Qt。本文ARM平台所用软件为:交叉编译器aarch64-linux-gnu、Qt 5.6.1、OpenCV 3.4.3。
图1 检测系统框图Fig.1 Detection system block diagram
在OpenCV交叉编译时,在cmake-gui中选择dnn模块才能调用YOLO v2。dnn模块的编译依赖protobuf。使用OpenCV的KCF等跟踪算法需要opencv_contrib,在cmake-gui中需要设置OPENCV_EXTRA_MODULES_PATH。嵌入式的存储空间有限,可以将不需要的模块不进行编译。本文在cmake-gui的WITH中勾选了FFMPEG、JPEG、PNG、PROTOBUF、V4L。
系统环境就绪后,进行算法程序的移植,根据车辆的数据特征设置网络配置文件,先在PC机上训练好网络,之后将yolov2.cfg、coco.names、yolov2.weights文件移植到ARM上。
最后,将算法程序、图形界面设计程序放在同一文件夹中,设置前面交叉编译成功的共享库路径,交叉编译生成RK3399上的可执行程序,并将可执行程序移植到RK3399上。热流道分流板
3 算法在嵌入式上的测试与分析
图2是系统测试示意图,液晶屏左侧显示的是检测的情况,其中3个小矩形框为感兴趣区域,2个大矩形框为YOLO v2的检测结果,液晶屏右侧是检测的统计信息,分别为帧数、车辆数、日期。
图2 系统测试Fig.2 System test
表1是各方法在RK3399上检测一帧图像所用的时间,其中YOLO v2检测是将文献[14]中的车辆检测算法改成YOLO v2,跟踪与计数方法不变。
表2所示是本文算法与文献[14]中的算法在检测相同视频时的数据。漏检是指有车辆目标却没有检测出车辆,误检是指将其它物体检测成车辆,多计是指将同辆车多次计数。
表1 RK3399上各方法检测时间Tab.1 Real-time detection execution timeYOLO v2检测/s本文算法/s文献[14]方法/s120.960120.8990.014
淀粉加工表2 两种检测算法的测试Tab.2 Test of two detection algorithms视频序号123实际车辆数/辆16742295帧差法/辆18633281本文算法/辆16540265帧差法误检/辆400本文算法误检/辆000帧差法多计/辆25021本文多计/辆9315帧差法漏检/辆10935本文算法漏检/辆11545
实验结果的分析表明,算法的漏检来自YOLO v2会将车辆误检成其他物体或在ROI中无法检测出车辆,而多计是因为跟踪算法在摄像机的位置保持不变时,车辆靠近或远离摄像机时,会造成目标的尺度变化而将目标跟丢,在再次检测到同辆车时而被认为是不同车辆,造成重复计数。
图3是本文算法检测与跟踪效果,在13 949帧时公共汽车还未进入分布在道路上窄矩形框的ROI中,在第13 951帧时公共汽车检测到bus,并用白矩形框出,计数加1,在后面的13 952到13 958帧bus被跟踪,灰方框表示跟踪的结果,此时计数不变,到第13 959帧时bus驶出ROI。
燕窝饼
图3 本文算法检测与跟踪效果Fig.3 Algorithm detection and tracking effect
4 结  论
本文将深度学习算法YOLO v2引入混合交通的车流量检测中,通过设置感兴趣区域(ROI)、在车辆目标经过ROI时计数、用核相关滤波器(KCF)跟踪车辆实现混合交通中的车流量检测,并在嵌入式平台RK3399上实现了该算法。实验结果表明,采用本文方法在RK3399上YOLO v2能成功地检测出车辆,KCF跟踪算法能在ROI中跟踪车辆保证计数的准确。虽然YOLO v2在Nvidia Titan-X GPU上可达到实时检测,但在RK3399上算法还需要较长的检测时间,未来需要进一步调高算法的检测速度,以实现基于嵌入式和深度学习的车流量的实时检测。

本文发布于:2024-09-23 21:29:12,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/3/118566.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:检测   车辆   算法   目标
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议