HyperLPR - 一个基于深度学习的支持多种车牌的中文开源车牌识别框架

介绍

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

识别样例

HyperLPR - 一个基于深度学习的支持多种车牌的中文开源车牌识别框架_第1张图片

数据分享和捐赠

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


HyperLPR - 一个基于深度学习的支持多种车牌的中文开源车牌识别框架_第2张图片


获取帮助

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

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

你可能感兴趣的:(深度学习)