Python3 HyperLPR 中文车牌识别

HyperLPR 高性能开源中文车牌识别框架
github地址: https://github.com/szad670401/HyperLPR
在使用的过程中真的踩了好多坑,GitHub中项目文件很多,相关的说明比较少,刚开始下手甚至不知道需要用到的是哪几个文件o(╥﹏╥)o,不过在参考各位大佬的方法之后,总算摸索出来了!记录一下以防自己忘记,如果能帮到遇到同样问题的人就更好啦~

1 HyperLPR特性

  • 速度快 720p,单核 Intel 2.2G CPU (MaBook Pro 2015)平均识别时间低于100ms
  • 基于端到端的车牌识别无需进行字符分割
  • 识别率高,卡口场景准确率在95%-97%左右
  • 轻量,总代码量不超1k行

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

  • 单行蓝牌
  • 单行黄牌
  • 新能源车牌
  • 白色警用车牌
  • 使馆/港澳车牌
  • 教练车牌
  • 武警车牌
  • 民航车牌
  • 双层黄牌
  • 双层武警
  • 双层军牌
  • 双层农用车牌
  • 双层个性化车牌

3 搭建环境

3.1 下载项目代码

GitHub中下载项目代码至本机,真正用到的文件为以下三个:
1)model

  • cascade.xml 检测模型 - 目前效果最好的cascade检测模型
  • cascade_lbp.xml 召回率效果较好,但其错检太多
  • char_chi_sim.h5 Keras模型-可识别34类数字和大写英文字 使用14W样本训练
  • char_rec.h5 Keras模型-可识别34类数字和大写英文字 使用7W样本训练
  • ocr_plate_all_w_rnn_2.h5 基于CNN的序列模型
  • ocr_plate_all_gru.h5 基于GRU的序列模型从OCR模型修改,效果目前最好但速度较慢,需要20ms。
  • plate_type.h5 用于车牌颜色判断的模型
  • model12.h5 左右边界回归模型
    2)Font
    3)hyperlpr_py3
    把这三个文件单独拿出来放到一起,文件结构如下图
    在这里插入图片描述

3.2 安装依赖包

HyperLPR兼容性较差,依赖的第三方库版本需要指定。
最开始由于没有指定TensorFlow和keras的版本,报了很多错误:
1.RuntimeError: It looks like you are trying to use a version of multi-backend Keras that does not support TensorFlow 2.0. We recommend using ‘tf.keras’, or alternatively, downgrading to TensorFlow 1.14.

2.ValueError: GRU(reset_after=False) is not compatible with GRU(reset_after=True)

3.ModuleError: No module named 'tensorflow.core'

最后根据hyperlpr_py3文件中的requirements安装依赖包就可以了。

absl-py == 0.9.0
alembic == 1.4.2
astor == 0.8.1
click == 7.1.1
cycler == 0.10.0
decorator == 4.4.2
Flask == 1.0
Flask-Migrate == 2.5.3
Flask-MySQLdb == 0.2.0
Flask-Script == 2.0.6
Flask-Session == 0.3.1
Flask-SQLAlchemy == 2.4.1
gast == 0.3.3
grpcio == 1.27.2
h5py == 2.10.0
imageio == 2.8.0
itsdangerous == 1.1.0
Jinja2 == 2.11.1
joblib == 0.14.1
Keras == 2.1.1
Keras-Applications == 1.0.8
Keras-Preprocessing == 1.1.0
kiwisolver == 1.1.0
Mako == 1.1.2
Markdown == 3.2.1
MarkupSafe == 1.1.1
matplotlib == 3.2.1
mock == 4.0.2
mysqlclient == 1.4.6
networkx == 2.4
numpy == 1.17.4
opencv-contrib-python == 3.4.2.16
opencv-python == 3.4.2.16
Pillow == 7.0.0
protobuf == 3.11.3
pyparsing == 2.4.6
python-dateutil == 2.8.1
python-editor == 1.0.4
PyWavelets == 1.1.1
PyYAML == 5.3.1
redis == 3.4.1
scikit-image == 0.16.2
scikit-learn == 0.22.2.post1
scipy == 1.4.1
six == 1.14.0
sklearn == 0.0
SQLAlchemy == 1.3.15
tensorboard == 1.13.1
tensorflow == 1.15.2
tensorflow-estimator == 1.13.0
termcolor == 1.1.0
Theano == 1.0.4
Werkzeug == 1.0.0

3.3 代码修改

原代码中引用py文件时,使用的是相对路径导入,例如:

from . import e2e

在这里需要把from .去掉即可。

//from . import xx
import xx

4 运行

新建一个main.py文件,测试一下效果

import pipline as pp
import cv2.cv2 as cv2

image = cv2.imread("img/car.jpg")
image, res = pp.SimpleRecognizePlate(image)
print(res)

测试图片:
在这里插入图片描述
注:图片为网上下载,侵删~

结果如下:

在这里插入图片描述

  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Rena要努力

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值