车牌识别相关资料收集整理

1、License Plate Detection with RetinaFace

链接:https://github.com/zeusees/License-Plate-Detector

利用单物体检测算法Retinaface进行了车牌检测模型的训练,通过测试,检测效果和适用性都更突出,支持的模型也更为丰富。

开源版本的检测算法经过了多个版本迭代,考虑到检测的效率跟准确率,原始版本逐步淘汰,从最初的基于LBP和Harr特征的车牌检测,感兴趣的小伙伴可以参考 train-detector(https://github.com/openalpr/train-detector) 这个仓库;到后来逐步的采用深度学习的方式,我们的上一个版本采用基于mobilenet-ssd的算法进行检测,大家可以移步 (https://gitee.com/zeusees/Mobilenet-SSD-License-Plate-Detection) 这里进行查看,后续请尽量采用新模型进行测试。

该版本的检测模型的训练,结合了CCPD数据集跟我们自有的数据,能够做到更多车牌种类的支持。

Clone and install

  1. git clone https://github.com/zeusees/License-Plate-Detector.git

  2. Pytorch version 1.2.0

  3. Python 3.6

  4. python detect.py

基于C++的NCCNN模型测试

Source Code Compile

  1. cd Prj-ncnn

  2. cmake .

  3. make

支持车牌种类

  • 蓝色单层车牌
  • 黄色单层车牌
  • 绿色新能源车牌、民航车牌
  • 黑色单层车牌
  • 白色警牌、军牌、武警车牌
  • 黄色双层车牌
  • 绿色农用车牌
  • 白色双层军牌

参考

2、License-Plate-Recognition-Items

https://github.com/Haveoneriver/License-Plate-Recognition-Items

车牌识别的思路

车牌识别的思路其实就是和验证码识别是一样的道理,在中国的车牌中一共有7位字符可以对这7个字符进行one-hot编码生成一个向量 一张车牌对应一个车牌标签即这7个字符生成的向量

使用google的colaboratory训练resnet34模型

train.ipynb是在colaboratory中运行的

在model.fit_generator()可以调参,我没有调参使用的默认的参数,调参数可以上keras查看模型调参函数的设置

#训练的时候每轮1000个样本共5轮,一个batch_size=32,所以一共有16W张图片

model.fit_generator(gen(), samples_per_epoch=1000,nb_epoch=5, nb_worker=1, pickle_safe=True, validation_data=gen(), nb_val_samples=1280)

test.py是使用训练好的模型进行测试

调用评价函数时: 跑完后的是每个字符的准确率不是整张图片的准确率

3、百度paddle

https://gitee.com/paddlepaddle/PaddleOCR/blob/develop/deploy/hubserving/readme.md

基于OCR的方法识别车牌,

4、Python+Tensorflow+CNN实现车牌识别

https://blog.csdn.net/weixin_43397593/article/details/102372100

自己生成车牌和采用简单的CNN模型做深度学习,

本次项目目标是实现对自动生成的带有各种噪声的车牌识别。在噪声干扰情况下,车牌字符分割较困难,此次车牌识别是将车牌7个字符同时训练,字符包括31个省份简称、10个阿拉伯数字、24个英文字母('O’和’I’除外),共有65个类别,7个字符使用单独的loss函数进行训练。
(运行环境:tensorflow1.14.0-GPU版)

本次构建的CNN模型较为简单,只有6卷积层+3池化层+1全连接层,可以通过增加模型深度以及每层之间的神经元数量来优化模型,提高识别的准确率。此次训练数据集来源于自动生成的车牌,由于真实的车牌图像与生成的车牌图像在噪声干扰上有所区分,所以识别率上会有所出入。如果使用真实的车牌数据集,需要对车牌进行滤波、均衡化、腐蚀、矢量量化等预处理方法。

5、TensorFlow车牌识别完整版(含车牌数据集)

https://blog.csdn.net/u011808673/article/details/81215459

在之前发布的一篇博文《MNIST数据集实现车牌识别--初步演示版》中,我们演示了如何使用TensorFlow进行车牌识别,但是,当时采用的数据集是MNIST数字手写体,只能分类0-9共10个数字,无法分类省份简称和字母,局限性较大,无实际意义。

经过图像定位分割处理,博主收集了相关省份简称和26个字母的图片数据集,结合前述博文中贴出的python+TensorFlow代码,实现了完整的车牌识别功能。本着分享精神,在此送上全部代码和车牌数据集。

车牌数据集下载地址(约4000张图片):https://pan.baidu.com/s/1RyoMbHtLUlsMDsvLBCLZ2w

省份简称训练+识别代码(保存文件名为train-license-province.py)(拷贝代码请务必注意python文本缩进,只要有一处缩进错误,就无法得到正确结果,或者出现异常):

6、基于MNIST数据集实现车牌识别--初步演示版

和5是姊妹篇

https://blog.csdn.net/shadown1ght/article/details/78078499

 

7、车牌识别github资源

资源比较老旧

https://blog.csdn.net/yang_daxia/article/details/90449150

8、HyperLPR

开源的第三方库,车牌识别,和1类似

https://github.com/zeusees/HyperLPR

9、FakeLPR车牌识别(3) ----- 车牌端到端识别

介绍

前一篇介绍了车牌的角点定位,这一篇就到端到端识别车牌了

1.粗定位

2.角点检测矫正

3.端到端识别字符

本文介绍第三步,端到端识别车牌,思路和前一篇中的角点检测一样,通过 caffe 实现多标签分类来识别车牌

10、使用腾讯云 GPU 学习深度学习系列之五:文字的识别与定位

基于CNN和OCR识别,方法和4类似

https://cloud.tencent.com/developer/article/1005199

 

11、keras-ocr

采用深度学习 同8的方法类似,但没中文的OCR识别,

https://github.com/faustomorales/keras-ocr

12、基于u-net,cv2以及cnn的中文车牌定位,矫正和端到端识别软件

https://blog.csdn.net/qq_32194791/article/details/106748685

https://github.com/duanshengliu/End-to-end-for-chinese-plate-recognition

整体思路:1.利用u-net图像分割得到二值化图像,2.再使用cv2进行边缘检测获得车牌区域坐标,并将车牌图形矫正,3.利用卷积神经网络cnn进行车牌多标签端到端识别

实现效果:拍摄角度倾斜、强曝光或昏暗环境等都能较好地识别,甚至有些百度AI车牌识别未能识别的图片也能识别

环境:python:3.6, tensorflow:1.15.2, opencv: 4.1.0.25

方法同4、10

13、keras+resnet34实现车牌识别

https://blog.csdn.net/weixin_38226321/article/details/107299660

自己生产车牌,然后训练

14、通过GAN网络生成车牌

https://www.cnblogs.com/kevin-dx/p/13900592.html