基于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

识别样例

基于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的中文车牌识别的更多相关文章

  1. EasyPR--一个开源的中文车牌识别系统

    我正在做一个开源的中文车牌识别系统,Git地址为:https://github.com/liuruoze/EasyPR. 我给它取的名字为EasyPR,也就是Easy to do Plate Reco ...

  2. 【基于WPF+OneNote+Oracle的中文图片识别系统阶段总结】之篇一:WPF常用知识以及本项目设计总结

    篇一:WPF常用知识以及本项目设计总结:http://www.cnblogs.com/baiboy/p/wpf.html 篇二:基于OneNote难点突破和批量识别:http://www.cnblog ...

  3. 【基于WPF+OneNote+Oracle的中文图片识别系统阶段总结】之篇二:基于OneNote难点突破和批量识别

    篇一:WPF常用知识以及本项目设计总结:http://www.cnblogs.com/baiboy/p/wpf.html 篇二:基于OneNote难点突破和批量识别:http://www.cnblog ...

  4. 【基于WPF+OneNote+Oracle的中文图片识别系统阶段总结】之篇三:批量处理后的txt文件入库处理

    篇一:WPF常用知识以及本项目设计总结:http://www.cnblogs.com/baiboy/p/wpf.html 篇二:基于OneNote难点突破和批量识别:http://www.cnblog ...

  5. 【基于WPF+OneNote+Oracle的中文图片识别系统阶段总结】之篇四:关于OneNote入库处理以及审核

    篇一:WPF常用知识以及本项目设计总结:http://www.cnblogs.com/baiboy/p/wpf.html 篇二:基于OneNote难点突破和批量识别:http://www.cnblog ...

  6. [Python]基于CNN的MNIST手写数字识别

    目录 一.背景介绍 1.1 卷积神经网络 1.2 深度学习框架 1.3 MNIST 数据集 二.方法和原理 2.1 部署网络模型 (1)权重初始化 (2)卷积和池化 (3)搭建卷积层1 (4)搭建卷积 ...

  7. 使用Python基于百度等OCR API的文字识别

    百度OCR Baidu OCR API:一定额度免费,目前是每日500次 Python SDK文档:https://cloud.baidu.com/doc/OCR/OCR-Python-SDK.htm ...

  8. 探索 Python + HyperLPR 进行车牌识别

    概要 HyperLRP是一个开源的.基于深度学习高性能中文车牌识别库,由北京智云视图科技有限公司开发,支持PHP.C/C++.Python语言,Windows/Mac/Linux/Android/IO ...

  9. HyperLPR车牌识别

    简介 本文基于HyperLPR进行修改,完整代码参考https://github.com/Liuyubao/PlateRecognition. HyperLPR是一个使用深度学习针对对中文车牌识别的实 ...

随机推荐

  1. linux 查看系统性能

    1. 查看内存和CPU信息 cat /proc/cpuinfo                   cpu信息 cat /proc/meminfo |grep MemTotal    内存信息 查看物 ...

  2. 「UVA12293」 Box Game

    题目链接 戳我 \(Solution\) 这道题第一眼看样例,猜了个结论偶数\(Alice\)赢,否则\(Bob\)赢,打了一发,交了上去果不其然的\(wa\)了,第二次猜\(2\)的幂次方\(Ali ...

  3. legend3---6、legend3爬坑杂记

    legend3---6.legend3爬坑杂记 一.总结 一句话总结: 学东西不做项目也学不到深处,其实也就是学了没理解透, 1.lavarel中模型关联可以用的实质是? lavarel在数据库中插入 ...

  4. php laravel左连接leftJoin多条where语句

    通常情况下我们在做leftjoin连接时需要对不止一个条件进行进行匹配,这时候就需要使用闭包方式,如下: leftjoin('db', function ($join) {···}); leftjoi ...

  5. HashMap三两事

    前言 JDK8中对HashMap做了优化,依然是用数组存储数据,但是扩容时采用双链表的方式避免了高并发情况下导致出现循环链表的问题,另外也引入了红黑树,提高碰撞元素的搜索速度. 一段代码 下面这段代码 ...

  6. 3709: [PA2014]Bohater

    3709: [PA2014]Bohater 或者:Bohater 题解 好狠啊这个题 z 要开 long long ,可能算掉血回血的时候会爆 long long 吧 首先把能回血的怪打死(不然你后面 ...

  7. mysql知识点汇集

    1.将两个表字段类型一致的数据合并到一个新表的命令. INSERT into new_table(user_name,password,age) SELECT user_name,password,a ...

  8. Docker,用任何工具链和任何语言来构建任何应用

    在看过Docker的两个Hello World的程序后,我们对Docker有了一个大概的感性的认识,那么Docker是到底是什么呢?Docker是一个面向开发者和系统管理员编译,装载,和运行分布式应用 ...

  9. Log4j(详解)

    Log4j: Log4j是Apache的一个开源项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台.文件.GUI组件, 甚至是套接口服务器.NT的事件记录器.UNIX Syslog守护 ...

  10. python 类中__getattr__的使用

    class F: def __init__(self, name): self.name = name def __getattr__(self, item): return '__getattr__ ...