HyperLPR

来源:互联网 发布:java撤销 编辑:程序博客网 时间:2024/06/05 19:36

介绍

HyperLPR是一个使用深度学习针对对中文车牌识别的实现,与较为流行的开源的EasyPR相比,它的检测速度和鲁棒性和多场景的适应性都要好于目前开源的EasyPR,HyperLPR可以识别多种中文车牌包括白牌,新能源车牌,使馆车牌,教练车牌,武警车牌等。
Github地址:https://github.com/zeusees/HyperLPR

特性

  • 基于端到端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(必须是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  ppimport cv2image = cv2.imread("filename")image,res  = pp.SimpleRecognizePlate(image)print(res)

Linux/Mac 编译

  • 仅需要的依赖OpenCV 3.3 (需要DNN框架)
cd cpp_implementationmkdir build cd buildcmake ../sudo make -j 

可识别和待支持的车牌的类型


  • 单行蓝牌
  • 单行黄牌
  • 新能源车牌
  • 白色警用车牌
  • 使馆/港澳车牌
  • 教练车牌
  • 武警车牌

识别测试APP

  • 测试 Android APP:https://fir.im/HyperLPR

识别样例

这里写图片描述

数据分享和捐赠

车牌识别框架开发时使用的数据并不是很多,有意着可以为我们提供相关车牌数据。联系邮箱 455501914@qq.com。
如果您愿意支持我们持续对这个框架的开发,可以通过下面的链接来对我们捐赠。


这里写图片描述


获取帮助

  • HyperLPR讨论QQ群:673071218, 加前请备注HyperLPR交流。

这里写图片描述
zeusee.com 智云视图