APP下载

基于边缘设备和改进YOLOv5算法的车牌号码识别

2022-11-25梁允泉董苗苗齐振岭刘羿漩葛广英孙群

现代计算机 2022年17期
关键词:树莓车牌边缘

梁允泉,董苗苗,齐振岭,2,刘羿漩,2,葛广英,孙群

(1.聊城大学物理科学与信息工程学院,聊城 252059;2.山东省光通信科学与技术重点实验室,聊城 252059;3.聊城大学计算机学院,聊城 252059;4.聊城大学机械与汽车工程学院,聊城 252059)

0 引言

发展智慧城市是中国促进城市高度信息化、网络化的重大举措。智慧交通作为智慧城市的关键项目之一,以物联网、云计算、移动互联网等新一代信息技术作为技术支撑,建立与完善道路监控体系和信息网络系统。其中,通过监控对行驶中的车辆进行实时的车牌信息检测是智慧交通中的一个重要分支。

对于车牌号码的检测,常用的图像处理和字符分割等方式属于传统的检测方式,例如刘艳华[1]设计了基于MATLAB的车牌检测系统,通过对车牌图像进行灰度图转换、灰度变换、中值滤波去噪、边缘检测等对车牌信息进行定位和字符分割的方式,实现对车牌号码的检测。聂文都等[2]设计了一种基于OpenCV与SVM的车牌识别方法,用Canny算子获取图像边缘轮廓信息,基于SURF算法对车牌进行特征提取,并结合HSV颜色空间来定位车牌位置;基于垂直投影方法来提取车牌字符特征,再利用SVM算法实现对车牌字符的识别,该方法主要利用计算机视觉库OpenCV实现,利用OpenCV封装的SURF算法和SVM算法实现车牌识别。以上两种方式比较简单,可以识别大多数车牌信息,但误差较大,识别精度易受图像质量好坏的影响。

在移动设备计算和物联网快速发展的带动下,将深度学习模型部署到边缘设备中成为发展的新趋势。以微型化的设备推理实时数据,对获取的数据做简化处理后上传至云端计算,不仅减少了数据量的传输,而且缓解了云服务器的计算压力。李向荣等[3]提出一种基于YOLOv3车牌识别的优化算法,构建了新的车牌数据集并对数据集中的车牌和字符进行标注,优化的YOLOv3算法在构建的车牌数据集上取得了较好的识别精度。李世伟[4]利用迁移学习的方式,将YOLOv5算法应用在车牌识别检测中。以上两种方式对车牌号码识别的效果虽然相对于传统方式有了很大提升,但面对复杂的路况和密集的车辆,对硬件设备算力也提出了较高的要求,同时,以云计算为核心的集中式处理模式也无法高效地处理边缘设备产生的大量数据。

因此,本文基于YOLOv5算法,设计改进了一种轻量化的网络结构,与Intel Movidius NCS2[5]和树莓派4B边缘设备相结合,用边缘设备加速推理YOLOv5算法模型,在保持对车牌检测有较高准确率的同时还可以提高推理速度。

1 YOLOv5算法及其改进

根据网络深度的不同,YOLOv5目标检测算法可分为5n,5s,5x,5m,5l五种,本文以YOLOv5n为基础实现对车牌号码的识别,其网络模型结构如图1所示。YOLOv5发布的6.1版本中,输入端不仅使用了Mosic数据增强方式而且还添加了可选项Albumentations[6]的数据增强方式,Albumentations主要通过在YOLOv5中定义图像随机内核的大小对输入图像进行模糊、灰度转换、随机亮度和图像压缩,从而实现在已有的数据中创建新的训练样本,来提高模型的训练质量。在YOLOv5的主干网络中,为提高YOLOv5的兼容性,用于切片操作的Focus结构被的卷积层Conv模块替换掉,两者在理论上是等价的,但对GPU设备而言,6×6大小的卷积层比Focus更加高效。在v6.1版本中,空间金字塔池化SPP结构被改为SPPF结构,此结构与SPP基本相同,唯一不同的是将并行池化方式改为串行三个5×5大小的池化层,这种池化方式使得提取的特征效果更好。

为了能更好地在边缘设备中使用YOLOv5算法,需要降低该算法的计算量,提高对车牌的检测效果,同时实现加速推理。因此对YOLOv5算法做了如下改进:

首先,行驶车辆中的车牌号码属于小目标信息,真实的场景环境复杂,为了能够提高YOLOv5算法对车牌号码小目标的检测能力,在YOLOv5的网络中加入SE[7-8]注意力机制。SE注意力机制易于实现,可以很容易地加入到YOLOv5的网络模型[9]中,虽然会增加一点计算量,但是加入之后的检测效果比原来的算法好。

其次,将原有的卷积层[10]更换为深度可分离卷积。在计算资源受到限制的硬件设备端,原有的卷积层计算量大,影响实际的运行速度[11]。深度可分离卷积和原有的卷积层结构类似,可以用来提取图像的特征,但其网络的参数量和运算成本都要远远低于原有的卷积层。

最后,将YOLOv5中设定好的先验框[12]用K-means算法重新获取[13]。

综上所述,改进后的网络结构如图2所示。

2 系统设计

2.1 树莓派4B

如图3所示,本文所采用的硬件设备为树莓派4B[14],它是一款基于RAM架构的微型电脑主板[15],其拥有基本时钟频率1.5 GHz的BroadcomBCM2711(Cortex-A72)四核处理器。相比树莓派3B+而言,BroadcomBCM2837(Cortex-A53)处理器的性能提升约1.8倍,且单个周期指令吞吐能力提升30%以上,这使得树莓派4B比树莓派3B+整体性能提升近一倍,达到参与边缘计算的能力。树莓派4B的内存升级为DDR4,以此来支持更高的带宽和频率。树莓派4B以SD卡作为硬盘,可以写入Raspberry Pi OS、Ubuntu、Windows 10 IoT操作系统,其对外有4个USB接口、1个以太网接口和两个Mini HDMI接口,最高可以60 fps的刷新速度支持双显示屏。相比树莓派3B+的扩展模块,树莓派4B拥有2.4/5.0双频无线与蓝牙5.0/BLE,各种模块之间的相互结合使得树莓派成为一种体积小、功能全且应用广泛的电脑。

2.2 Movidius NCS2

边缘设备采用英特尔第二代神经计算棒(Neural Compute Stick 2)NCS2,如图3所示,其造型和U盘相似,它可以兼容Ubuntu、CentOS和Windows 10操作系统[16],通过USB 3.0 Type-A接口接入树莓派4B设备,旨在为低功耗设备提供加速推理的功能。第一代神经计算棒基于Intel Myriad 2 VPU视觉处理器[17],与第一代神经计算棒相比,第二代神经计算棒采用了最新的Intel Movidius Myriad X VPU视觉处理器[18],该视觉处理器有专用的神经网络硬件加速器,可以在极低的功耗下执行推理运算。

第二代神经计算棒采用OpenVINO工具套件,OpenVINO是Intel推出开放视觉推理和神经网络优化的开发套件,它可以为不同的网络模型提供转换功能。本文通过修改模型转换代码,舍弃模型中影响推理性能的卷积网络,设置模型优化器转换参数[19],指定输出层,使其能在Intel各类AI设备之间实现加速推理。依靠Open-VINO开发工具可在树莓派4B中搭建边缘设备深度学习环境,使用Intel Movidius NCS2对模型进行加速推理。

2.3 图像采集

在图像采集方面,如图4所示,树莓派支持USB接口和CSI(CMOS图像传感器)两种类型接口摄像头,在选用接口前,首先对两种类型的摄像头进行性能测试。使用OpenCV启动摄像头,查看两种类型摄像头的CPU占用率,以及使用OpenVINO深度学习环境自带样例实时推理,来测试摄像头的帧率、速度,最终对比结果见表1。

表1 两种类型接口摄像头性能对比

从表1中可以看出,在CPU的占用率方面,USB类型的摄像头比CSI摄像头高一倍,但在速度、帧率、启动速度上比CSI摄像头表现更出色。因此,本文对车牌号码的检测采用USB类型的接口摄像头作为前端图像采集。

2.4 整体设计

将改进后的YOLOv5算法部署到树莓派4B硬件设备中,对道路中行驶车辆的车牌号码进行实时检测,加入边缘设备Intel Movidius NCS2进行加速推理,采用远程连接的方式将实时的检测画面传输至服务器端,同时将获取的行驶车辆的车牌信息发送至云端,在云端做进一步推理。整体流程设计如图5所示。

如图6所示,边缘设备由树莓派4B、Intel Movidius NCS2和USB摄像头组成。在树莓派4B中搭建OpenVINO深度学习环境,将树莓派4B与边缘设备Intel Movidius NCS2进行互联通信,可以在前端加速推理YOLOv5深度学习模型,实现对车牌号码的检测与识别。并利用百度云开放的API端口,将检测到的车牌信息发送至百度网盘保存,云计算平台根据百度网盘中的数据做进一步处理,分析边缘设备遗漏的车辆信息。服务器主要用于训练、优化、转换YOLOv5模型,远程连接到服务器端实时观察车牌的识别效果。

3 实验推理流程

3.1 实验环境

前端使用OpenVINO Raspi 2020.3.321版本工具包在树莓派4B上部署深度学习环境,设置树莓派USB规则与神经计算棒连接,利用Python3.7编写推理程序,搭建百度云开放API的Python环境,将推理所得数据上传至百度网盘保存。服务器端使用的GPU型号为NVIDIA Quadro RTX 4000 8 G,训练YOLOv5算法模型的深度学习环境为PyTorch1.81+CUDA10.2,并利用openvino_2020.3.194工具包将训练好的模型转换为IR格式文件。

3.2 实验数据集

为保证训练模型的高准确性,如图7所示,本文采集了质量较高的车牌图片,同时使用OpenCV对数据集进行扩充,使车牌数据集中的图片具有各类场景、不同角度和明暗变化的特点。与传统的车牌号码检测不相同的是,此次训练所用的数据集中添加了新能源车牌、电动车车牌、摩托车车牌以及载重汽车车牌的样本。数据集的车牌图片共计1693张,类别中包含全国(除香港特别行政区、澳门特别行政区以及台湾省)31个省份车牌大类,以及除O、I外的24个英文字母和0至9阿拉伯数字,共记65个类别标签。最后使用Labelimg工具对数据集中的图片进行手工标注,并生成XML文件保存。

3.3 实验结果分析

本文的实验参数设定如下:输入图片大小为640×640,batch-size设 置 为16,epochs为1500。将训练所得模型转换成ONNX格式文件,再利用OpenVINO模型优化器将ONNX文件转换至IR格式文件,编写Python程序实现推理功能,在树莓派上加入神经计算棒对模型进行加速推理,推理结果保存为文本格式,并上传至百度云盘保存。

本文将改进的YOLOv5与未改进的算法做对比,对比结果如表2所示。

从表2的结果可以看出,YOLOv5n的平均推理速度和YOLO层的解析速度均快于YOLOv5s,推理速度提升了38.60%,这是因为YOLOv5n的网络深度较浅,以神经计算棒的算力来推理模型的三个输出层速度较快;在YOLOv5中加入CBAM注意力机制后,推理速度相较于YOLOv5n降低了6.29%,相较于YOLOv5s提升了34.74%;本文改进的算法相较于YOLOv5n推理速度提升了13.41%,YOLO层解析速度也快于YOLOv5n模型。选择100组推理时间作对比,对比结果如图8所示,改进的算法推理过程相比较另外三种YOLO模型更加稳定,上下浮动集中在5 ms与10 ms之间,侧面验证了改进后的算法在推理速度和稳定性方面表现较好。

表2 实验结果

实验发现输入图像的清晰度、亮度与周围环境复杂程度会对推理结果产生影响,而且输出层的推理速度也与每帧图片上同时存在的车牌号数量有关。改进后算法在边缘设备中的实时推理效果如图9所示。

4 结语

综上所述,本文基于边缘设备Movidius NCS2与低功耗、低算力的树莓派4B相结合的方式,通过改进的YOLOv5算法实现车牌号码的识别,同时比较了边缘设备神经计算棒在树莓派上使用不同网络模型的效果和推理速度。从实验的结果来看,在树莓派上利用神经计算棒提高计算性能是可行的,并且改进的YOLOv5算法相比较YOLOv5n网络模型,参数更少、算力要求更低,在边缘设备中推理速度更快。本研究为智慧交通建设中遇到的微型化与实时性问题提供了一个解决方案。为了满足更复杂的交通环境下的需要,下一步工作也将继续在多条神经计算棒共同推理方面做出努力。

猜你喜欢

树莓车牌边缘
车牌颜色里的秘密
基于树莓派的骑行智能头盔设计
第一张车牌
一种侧向插装型车牌架
一张图看懂边缘计算
黄金水果红树莓
e络盟率先推出第三代树莓派
年度睡姿大盘点(下)
“他的车牌是……”
在边缘寻找自我