车牌识别系统可以自动检测并识别图像中的车辆牌照,其算法主要包括牌照定位、牌照分割、字符识别等步骤。本文将给出一种基于深度学习的车牌识别系统方案。

要快速掌握开发人工智能系统的技能,推荐汇智网的 机器学习系列在线课程

由于可以自动地从视频图像中提取车辆牌照信息,因此车牌识别系统可以应用于以下行业:

  • 公共安全:用于检测被盗抢车辆,将车牌与盗抢车辆数据库记录比对即可发现。
  • 停车管理:停车场入口自动放行、出口自动计费。
  • 道路安全:与雷达测试配合使用,识别超速车辆并记录违章

我们的项目包含以下三个步骤:车辆牌照检测、牌照字符分割、牌照字符识别。

1、车辆牌照检测

我们使用Yolo(You Only Look One)算法来检测车辆牌照。Yolo是一个基于卷积神经网络的深度学习目标检测架构。该架构由 Joseph Redmon , Ali Farhadi, Ross Girshick和Santosh Divvala引入,2015年推出第一个版本,然后逐渐升级至版本3:

  • Yolo v1;论文
  • Yolo v2:论文
  • Yolo v3;论文

Yolo是一个端到端训练的单一网络,可以用来预测目标的类别与边界框。Yolo网络速度极快,可以每秒45帧的速度实时处理图像。其中一个较小规模的网络,被称为Fast YOLO,甚至达到了令人咂舌的155帧/秒的处理速度。

下面我们来实现YOLO V3网络。首先,我们准备一个有700张包含土耳其车辆牌照的图片的数据集,对每一张图片,我们都使用一个桌面应用LabelImg标注出车牌位置并存入一个xml文件。数据下载及网络训练脚本如下:

# First download Darknet project
$ git clone https://github.com/pjreddie/darknet.git# in "darknet/Makefile" put affect 1 to OpenCV, CUDNN and GPU if you # want to train with you GPU then time thos two commands
$ cd darknet
$ make# Load convert.py to change labels (xml files) into the appropriate # format that darknet understand and past it under darknet/https://github.com/KhazriAchraf/ANPR# Unzip the dataset
$ unzip dataset.zip# Create two folders, one for the images and the other for labels
$ mkdir darknet/images
$ mkdir darknet/labels# Convert labels format and create files with location of images
# for the test and the training
$ python convert.py# Create a folder under darknet/ that will contain your data
$ mkdir darknet/custom# Move files train.txt and test.txt that contains data path to
# custom folder
$ mv train.txt custom/
$ mv test.txt custom/# Create file to put licence plate class name "LP"
$ touch darknet/custom/classes.names
$ echo LP > classes.names# Create Backup folder to save weights
$ mkdir custom/weights# Create a file contains information about data and cfg
# files locations
$ touch darknet/custom/darknet.data# in darknet/custom/darknet.data file paste those informations
classes = 1
train  = custom/train.txt
valid  = custom/test.txt
names = custom/classes.names
backup = custom/weights/# Copy and paste yolo config file in "darknet/custom"
$ cp darknet/cfg/yolov3.cfg darknet/custom# Open yolov3.cfg and change :
# " filters=(classes + 5)*3" just the ones before "Yolo"
# in our case classes=1, so filters=18
# change classes=... to classes=1# Download pretrained model
$ wget https://pjreddie.com/media/files/darknet53.conv.74 -O ~/darknet/darknet53.conv.74# Let's train our model !!!!!!!!!!!!!!!!!!!!!
$ ./darknet detector train custom/darknet.data custom/yolov3.cfg darknet53.conv.74

在网络训练完之后,为了识别图像中的车辆牌照,我们从darknet/custom/weights中选择最新的模型并在文件object_detection_yolo.py中写入其路径名称,我们也将使用yolov3.cfg文件,注释掉训练部分,然后执行:

python object-detection_yolo.py --image= image.jpg

这就是我们的结果:

2、车牌字符分割

现在我们要分割出我们的车牌号码。这个步骤的输入是车牌图像,我们必须能够提取出单个字符的图像。由于这一步骤的输出将用于识别步骤,因此对于一个车牌识别系统而言,车牌分割步骤非常重要。为了尽可能的正确分割车牌字符,我们需要进行必要的预处理。

像素投影直方图用来找出字符区域的上限和下限、左边及右边。我们使用水平投影来找出字符的顶部
和底部位置,使用垂直投影来找出字符的左边和右边位置:

从车辆牌照中提取数字的另一个方法时使用形态学的开/闭操作来生成一些连通区域,然后再使用连通跟踪算法提取这些连通区域。

3、车牌字符识别

识别阶段是我们的车牌自动检测与识别系统的最后一个环节,识别是基于前面环节得到的单个字符图像。我们的模型将对这些图像进行预测,从而得到最终的车牌号码。

为了尽可能利用训练数据,我们将每个字符单独切割,得到一个车牌字符数据集,该数据集中包含11个类(数字0-9以及阿拉伯单词),每个类包含30~40张字符图像,图像为28X28的PNG格式。

然后,我们就多层感知器MLP和K近邻分类器KNN的比较进行了一些调研,研究结果标明,对于多层感知器而言,如果隐层的神经元增多,那么分类器的性能就会提高;同样,对于KNN而言,性能也是随着近邻数量的增多而提高。不过由于KNN的可调整潜力要远远小于MLP,因此我们最终选择在这个阶段使用多层感知器MLP网络来识别分割后的车牌字符:

你可以在这里找到代码及数据集:github


原文链接:车辆牌照自动检测与识别 —— 汇智网

车牌识别系统原理及代码【YOLO+MLP】相关推荐

  1. 基于BP神经网络的车牌识别系统(Matlab代码实现)

  2. matlab车牌识别系统论文,基于Matlab的车牌识别系统.doc

    摘 要: 车牌识别系统研究在这个信息化的时代是一项重大发展,也是在智能交通范围的一项课题.车牌识别可以获取交通信息,在交通车辆管理.交通车辆监控.交通车流量检测等方面应用普遍,受到相关学者的高度关注. ...

  3. python车牌识别系统开源代码_汽车牌照识别系统【YOLO+MLP】

    车牌识别系统可以自动检测并识别图像中的车辆牌照,其算法主要包括牌照定位.牌照分割.字符识别等步骤.本文将给出一种基于深度学习的车牌识别系统方案. 要快速掌握开发人工智能系统的技能,推荐汇智网的 机器学 ...

  4. 汽车车牌识别系统实现(四)--字符识别+代码实现

    字符识别 一.字符识别算法的实现 车牌字符识别是车牌识别中的最后一步,也是决定车牌识别成功与否的关键步骤.字符识别是对经过车牌定位.车牌纠正和车牌字符划分后得到的各个车牌字符进行识别的过程.字符识别利 ...

  5. python车牌识别系统开源代码_北京百万庄车牌识别的软件人气火爆

    北京车牌识别厂家直销 北京百万庄车牌识别的软件人气火爆 与字符数据库模板中的标准字符表达形式进行匹配判别,结果输出:将车牌识别的结果以文本格式输出,以上就是车牌识别系统的工作原理,希望能够帮助大家更好 ...

  6. 汽车车牌识别系统实现(二)--车牌定位+代码实现

    汽车车牌识别系统实现(二)-- 车牌定位 之前对这部分内容解释的不够详细,自己都看不下去了,因此重新编辑一下. 一.前言 车牌定位是汽车车牌识别能否取得成功的关键过程,车牌定位是否准确直接影响到后续的 ...

  7. python车牌识别系统开源代码_天津谁做车牌识别系统供应商,伸缩栅栏门_郑州荣锋科技有限公司...

    首页 > 新闻中心 发布时间:2020-11-13 22:54:57 导读:郑州荣锋科技有限公司为您提供天津谁做车牌识别系统供应商,伸缩栅栏门的相关知识与详情: (1)门处于关闭状态,控制器应骆 ...

  8. EasyPR--中文车牌识别系统 开发详解(开源)

    人工智能AI与大数据技术实战  公众号: weic2c 一个开源的中文车牌识别系统, Git地址为:https://github.com/liuruoze/EasyPR. 我给它取的名字为EasyPR ...

  9. EasyPR中文车牌识别系统开发

    EasyPR中文车牌识别系统开发,我主要介绍如何使用开源的EasyPR中文车牌识别系统,我会介绍训练机器学习 SVM 支持向量机和 ANN 人工神经网络模型在车牌识别的应用,并公开训练数据. 目录: ...

  10. 毕业设计 : 车牌识别系统实现【全网最详细】 - opencv 卷积神经网络 机器学习 深度学习

    文章目录 0 简介 1 车牌识别原理和流程 1.1 车牌定位 1.2 基于图形图像学的定位方法. 1.3 基于机器学习的定位方法. 1.4 字符分割 1.5 字符识别 2 基于机器学习的车牌识别 2. ...

最新文章

  1. python函数模块概念_python中模块和包的概念
  2. 机器学习算法集锦:从贝叶斯到深度学习及各自优缺点
  3. android 中的组合控件的设计
  4. C语言用位运算构建特定的二进制数
  5. php 函数传值_传址_函数参数,php函数的传值与传址(引用)详解_PHP教程
  6. Java中List的排序
  7. makefile 无法工作_什么是Makefile,它如何工作?
  8. Intel Skylake (Client) 架构/微架构/流水线 (2) - 前端
  9. 决策树 随机森林 xgboost_推荐收藏 | 决策树、随机森林、bagging、boosting、Adaboost、GBDT、XGBoost总结...
  10. 对Chrome自动发送邮件插件的改进
  11. 基于JavaEE的班级管理系统设计与实现_信息管理__JSP网站设计_SQLServer数据库设计
  12. 完成端口(CompletionPort)详解
  13. 未经许可,请勿擅自引用本博客内的原创作品
  14. 腾讯云TDSQL-C云原生数据库技术
  15. wps忘保存关闭,数据恢复步骤
  16. js简单插件(饼形图)
  17. HTML+CSS简单漫画网页设计成品--(红猪(9页)带注释)
  18. 异常:java.lang.LinkageError: loader constraint violation: when resolving interface method “javax.servl
  19. 《数学建模》之层次分析法
  20. 解除newduba首页_解决Chrome浏览器主页驱动精灵自己固定主页行为

热门文章

  1. Word文字怎么居中对齐
  2. 微信小程序怎么登录?如何正确登录微信小程序后台?
  3. 流程框图——各方框含义
  4. 微信公众号图片无法正常显示
  5. 算法:统计n以内素数个数--埃筛法
  6. 中国移动互联网半年大报告解析
  7. 多播(组播)、单播、任播和广播
  8. 《大数据时代》读后感
  9. matlab 人群疏散,建筑物内的人员数量确定方法和人群疏散方法
  10. 用Python3对QQ导出的文本聊天记录进行整理。