车牌识别相关资料收集整理
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
-
git clone https://github.com/zeusees/License-Plate-Detector.git
-
Pytorch version 1.2.0
-
Python 3.6
-
python detect.py
基于C++的NCCNN模型测试
Source Code Compile
-
cd Prj-ncnn
-
cmake .
-
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