使用Python基于HyperLPR/Mask-RCNN的中文车牌识别
基于HyperLPR的中文车牌识别
Bolg:https://blog.csdn.net/lsy17096535/article/details/78648170 https://www.jianshu.com/p/7ab673abeaae
GitHub:https://github.com/zeusees/HyperLPR
HyperLPR
简介
HyperLPR是开源的基于深度学习实现的高性能中文车牌识别库,由北京智云视图科技有限公司开发,与较为流行的开源的其他框架相比,它的检测速度、鲁棒性和多场景的适应性都要好于目前开源的框架,HyperLPR可以识别多种中文车牌,包括单行蓝牌/黄牌,白牌(白色警用车牌),新能源车牌,使馆/港澳车牌,教练车牌,武警车牌等。HyperLRP支持PHP、C/C++、Python语言,Windows/Mac/Linux/Android/IOS平台。
特性
- 基于端到端Sequence模型,无需进行字符分割,识别速度更快
- 速度快720p,单核Intel 2.2G CPU(Macbook Pro 2015)平均识别时间<=90ms
- 识别率高,仅仅针对车牌ROI在EasyPR数据集上,0-error达到 95.2%,1-error识别率达到 97.4%(指在定位成功后的车牌识别率)
- 轻量总代码量不超1k行
- 带有Android实现,其Android Demo可解决一些在一些普通业务场景(如执法记录仪)下的车牌识别任务
注意事项
- Win工程中若需要使用静态库,需单独编译
- 本项目的C++实现和Python实现无任何关联,都为单独实现
- 在编译C++工程的时候必须要使用OpenCV 3.3(DNN库),否则无法编译
Python依赖
- Keras (>2.0.0)
- Theano(>0.9) or Tensorflow(>1.1.x)
- Numpy (>1.10)
- Scipy (0.19.1)
- OpenCV(>3.0)
- Scikit-image (0.13.0)
- PIL
CPP依赖
- Opencv 3.3
设计流程
step1. 使用opencv 的 HAAR Cascade 检测车牌大致位置
step2. Extend 检测到的大致位置的矩形区域
step3. 使用类似于MSER的方式的 多级二值化 + RANSAC 拟合车牌的上下边界
step4. 使用CNN Regression回归车牌左右边界
step5. 使用基于纹理场的算法进行车牌校正倾斜
step6. 使用CNN滑动窗切割字符
step7. 使用CNN识别字符
使用
from hyperlpr import pipline as pp
import cv2
image = cv2.imread("filename")
image,res = pp.SimpleRecognizePlate(image)
print(res)
Linux/Mac编译
- 仅需要的依赖OpenCV 3.3 (需要DNN框架)
cd cpp_implementation mkdir build cd build cmake ../ sudo make -j
识别测试APP
- 测试 Android APP:https://fir.im/HyperLPR
识别样例

基于Mask-RCNN及CNN的车牌字符定位、分割与识别
Blog:https://my.oschina.net/airxiechao/blog/2239875
Github:https://github.com/airxiechao/simple-car-plate-recognition(Simple-Car-Plate-Recognition)
数据准备
用于车牌定位的数据集
原始数据:250张车辆图片,200张用于训练,50张用于测试
标记数据:在图片上标注出车牌区域(https://gitee.com/easypr/EasyPR/tree/master/resources/image/general_test)- 标注工具使用VGG Image Annotator(VIA),是一个网页程序,可以导入图片,使用多边形标注,标注好了以后可以导出json - 已标注好的数据集(下载:https://github.com/airxiechao/simple-car-plate-recognition/blob/master/dataset/carplate.zip)

用于字符识别的数据集
分隔好的单个车牌汉子、字母和数字 - https://gitee.com/easypr/EasyPR/blob/master/resources/train/ann.7z

训练Mask-RCNN定位车牌
参考:https://engineering.matterport.com/splash-of-color-instance-segmentation-with-mask-r-cnn-and-tensorflow-7c761e238b46 - 用Mask-RCNN识别图片中的气球
1)下载预训练模型:从https://github.com/matterport/Mask_RCNN/releases下载预先用COCO数据集训练好的模型mask_rcnn_coco.h5
2)载入车辆图片数据:carplate.py(浏览标注数据 - inspect_data.ipynb)
3)训练:mask_rcnn_carplate_0030.h5
python carplate.py train --dataset=../dataset/carplate --weights=coco
4)查看模型训练的效果:inspect_model.ipynd - https://github.com/airxiechao/simple-car-plate-recognition/tree/master/Mask_RCNN
训练CNN单个字符识别
参考:Keras的Mnist_CNN - https://github.com/keras-team/keras/blob/master/examples/mnist_cnn.py
训练:char_cnn.h5 - https://github.com/airxiechao/simple-car-plate-recognition/blob/master/char_cnn/char_cnn.ipynb
分割车牌字符
把车牌区域转换成灰度图像,利用边缘特征分割出区域,再筛选出字符区域 - https://github.com/airxiechao/simple-car-plate-recognition/blob/master/character_segmentation.ipynb

执行推理
https://github.com/airxiechao/simple-car-plate-recognition/blob/master/inference.ipynb
使用Python基于HyperLPR/Mask-RCNN的中文车牌识别的更多相关文章
- EasyPR--一个开源的中文车牌识别系统
我正在做一个开源的中文车牌识别系统,Git地址为:https://github.com/liuruoze/EasyPR. 我给它取的名字为EasyPR,也就是Easy to do Plate Reco ...
- 【基于WPF+OneNote+Oracle的中文图片识别系统阶段总结】之篇一:WPF常用知识以及本项目设计总结
篇一:WPF常用知识以及本项目设计总结:http://www.cnblogs.com/baiboy/p/wpf.html 篇二:基于OneNote难点突破和批量识别:http://www.cnblog ...
- 【基于WPF+OneNote+Oracle的中文图片识别系统阶段总结】之篇二:基于OneNote难点突破和批量识别
篇一:WPF常用知识以及本项目设计总结:http://www.cnblogs.com/baiboy/p/wpf.html 篇二:基于OneNote难点突破和批量识别:http://www.cnblog ...
- 【基于WPF+OneNote+Oracle的中文图片识别系统阶段总结】之篇三:批量处理后的txt文件入库处理
篇一:WPF常用知识以及本项目设计总结:http://www.cnblogs.com/baiboy/p/wpf.html 篇二:基于OneNote难点突破和批量识别:http://www.cnblog ...
- 【基于WPF+OneNote+Oracle的中文图片识别系统阶段总结】之篇四:关于OneNote入库处理以及审核
篇一:WPF常用知识以及本项目设计总结:http://www.cnblogs.com/baiboy/p/wpf.html 篇二:基于OneNote难点突破和批量识别:http://www.cnblog ...
- [Python]基于CNN的MNIST手写数字识别
目录 一.背景介绍 1.1 卷积神经网络 1.2 深度学习框架 1.3 MNIST 数据集 二.方法和原理 2.1 部署网络模型 (1)权重初始化 (2)卷积和池化 (3)搭建卷积层1 (4)搭建卷积 ...
- 使用Python基于百度等OCR API的文字识别
百度OCR Baidu OCR API:一定额度免费,目前是每日500次 Python SDK文档:https://cloud.baidu.com/doc/OCR/OCR-Python-SDK.htm ...
- 探索 Python + HyperLPR 进行车牌识别
概要 HyperLRP是一个开源的.基于深度学习高性能中文车牌识别库,由北京智云视图科技有限公司开发,支持PHP.C/C++.Python语言,Windows/Mac/Linux/Android/IO ...
- HyperLPR车牌识别
简介 本文基于HyperLPR进行修改,完整代码参考https://github.com/Liuyubao/PlateRecognition. HyperLPR是一个使用深度学习针对对中文车牌识别的实 ...
随机推荐
- AcWing:112. 雷达设备(贪心 + 笛卡尔坐标系化区间)
假设海岸是一条无限长的直线,陆地位于海岸的一侧,海洋位于另外一侧. 每个小岛都位于海洋一侧的某个点上. 雷达装置均位于海岸线上,且雷达的监测范围为d,当小岛与某雷达的距离不超过d时,该小岛可以被雷达覆 ...
- 0.JQuery学习
jQuery 教程 jQuery 是一个 JavaScript 库. jQuery 极大地简化了 JavaScript 编程. jQuery 简介 jQuery 库可以通过一行简单的标记被添加到网页中 ...
- Java并发编程(十一)——原子操作CAS
一.原子操作 syn基于阻塞的锁的机制,1.被阻塞的线程优先级很高,2.拿到锁的线程一直不释放锁怎么办?3.大量的竞争,消耗cpu,同时带来死锁或者其他安全. CAS的原理 CAS(Compare A ...
- HttpClient : java.net.SocketException: Connection reset
1. 问题排查 httpclient : 4.5.5 排查过程 : 一次SocketException:Connection reset 异常排查 主要原因 : 调用 http 请求时发生了 Sock ...
- 宝塔linux面板,phpmyadmin进不去的处理方法
1.检查宝塔面板是否开始phpmyadmin是否开启 2.打开阿里云安全组,添加888/888端口
- OpenCV学习笔记(12)——OpenCV中的轮廓
什么是轮廓 找轮廓.绘制轮廓等 1.什么是轮廓 轮廓可看做将连续的点(连着边界)连在一起的曲线,具有相同的颜色和灰度.轮廓在形态分析和物体的检测和识别中很有用. 为了更加准确,要使用二值化图像.在寻找 ...
- AutoCompleteTextView实现搜索提示功能的实现
AutoCompleteTextView和EditText组件类似,都可以输入文本.但AutoCompleteTextView组件可以和一个字符串数组或List对象绑定,当用户输入两个及以上字符时,系 ...
- Delphi让控件随着窗口的大小而改变
Delphi让控件随着窗口的大小而改变方法1:设置Anchors属性,把akLeft,akTop,akRight,akBottom都设为True.方法2:设置Align属性,其值为alClient.
- Centos7下yum安装kubernetes
一.前言 Kubernetes 是Google开源的容器集群管理系统,基于Docker构建一个容器的调度服务,提供资源调度.均衡容灾.服务注册.动态扩缩容等功能套件,目前centos yum源上 ...
- RazorSQL for Mac如何编辑数据?
RazorSQL 是一个非开源的功能非常强大数据库查询工具.SQL的编辑.数据库管理工具.支持通过 JDBC 和 ODBC 连接超过 29 种的数据库.允许您从一个数据库工具查询,更新,导航和管理所有 ...