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

2019-07-25 10:10:16马永杰宋晓凤
液晶与显示 2019年6期
关键词:车流量感兴趣嵌入式

马永杰, 宋晓凤

(西北师范大学 物理与电子工程学院,甘肃 兰州 730070)

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聚类训练预测出不同比例的预测框,这样提高了建模精度,也使得网络的训练过程更加容易。YOLO v2使用CNN网络架构Darknet-19。Darknet-19包含19个卷积层和5个最大值池化层[9],需要85.2亿浮点运算,可以在Nvidia Titan-X GPU上以67 f/s进行物体检测。

.

(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)+cx
by=σ(ty)+cy
bw=pwetw
bh=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 time

表2 两种检测算法的测试Tab.2 Test of two detection algorithms

实验结果的分析表明,算法的漏检来自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上算法还需要较长的检测时间,未来需要进一步调高算法的检测速度,以实现基于嵌入式和深度学习的车流量的实时检测。

猜你喜欢
车流量感兴趣嵌入式
更 正
含能材料(2021年1期)2021-01-10 08:34:34
搭建基于Qt的嵌入式开发平台
嵌入式软PLC在电镀生产流程控制系统中的应用
电镀与环保(2016年3期)2017-01-20 08:15:32
这样的智能厨房台面,你会感兴趣吗?
工业设计(2016年8期)2016-04-16 02:43:24
参考答案
高速公路重大节假日免费车流量金额算法研究与应用
一种新型多车道车流量检测算法
电视技术(2014年19期)2014-03-11 15:38:21
Altera加入嵌入式视觉联盟
倍福 CX8091嵌入式控制器
自动化博览(2014年4期)2014-02-28 22:31:15
梦断交易会
兴趣英语(2013年9期)2013-11-28 05:49:22