车牌识别算法项目调研及优缺点对比
1 CCPD数据命名规则介绍
LPRNet车牌识别模型训练及CCPD数据集预处理-CSDN博客 :章节 3.2
2 车牌号码特点(我自己总结的)
LPRNet车牌识别模型训练及CCPD数据集预处理-CSDN博客 :章节 4
3 现有车牌识别算法
车牌识别(Vehicle License Plate Recognition,VLPR)
车牌识别项目现存难点:
① 车牌识别技术要求能够将运动中的汽车牌照从复杂背景中提取并识别出来。
② 车牌在图像中的尺度差异,不同车辆的悬挂位置差异。
③ 车辆图像质量、车牌角度、运动速度导致的车牌模糊和脏污导致的车牌模糊,光照不足或过曝等问题。
④ 部署场景对模型大小和推理速度的限制。
3.1 EasyOCR
从图像中提取文本的 python 库,目前支持 80 多种语言和所有流行的书写脚本。
缺点:开源模型车牌识别的准确率极低。几乎不适用于车牌识别。
3.2 MMOCR
MMOCR 是基于 PyTorch 和 mmdetection 的开源工具箱,专注于文本检测,文本识别以及相应的下游任务,如关键信息提取。
缺点:不适用于车牌识别。
3.3 simple-car-plate-recognition-2
字符识别模型是参考 HyperLPR 里面的 SegmenationFree-Inception 的模型结构,并改用 pytorch 框架实现后,训练模型。测试用整张车牌图片进行字符识别。
项目地址(最新2020-05版本):https://github.com/airxiechao/simple-car-plate-recognition
源码下载:(github经常连不上)
链接:https://pan.baidu.com/s/1Nl0b3eAaZTakd7c5m9TXRA
提取码:0808
缺点:代码和模型结构简单,效果不稳定,较差。
3.4 HyperLPR
基于深度学习高性能中文车牌识别框架。Python 依赖于 Keras (>2.0.0) 和 Theano(>0.9) or Tensorflow(>1.1.x) 机器学习库。
2023年初已经更新到了v3版本。
项目地址(2023年初):https://github.com/szad670401/HyperLPR
源码下载:(github经常连不上)。
链接:https://pan.baidu.com/s/1PHcvo3Dy7MC8qdwctj3TWw
提取码:0808
优缺点:
① 纯python版中环境相关库版本问题较多。
② 依赖Tensorflow框架,个人比较推荐pytorch的框架。建议使用C++版本。
③ 支持单行蓝牌、黄牌、新能源车牌;有限支持双层黄牌、白底警用车牌 ;暂不支持特殊车牌或保密车牌。
3.5 YOLOv8-LPRNet
车牌检测模型使用YOLOv8。(使用 yolov8n.yaml 的模型文件)
车牌识别模型使用LPRNet。
源码官网:https://github.com/sirius-ai/LPRNet_Pytorch
链接:https://pan.baidu.com/s/1nMzJ2reDcGA6RJnHnNzcWg?pwd=lprn
提取码:lprn
优缺点:
① 训练数据足够的情况下,如果车牌清晰的话,本人觉的准确率95%肯定是没问题的。
3.6 PaddleOCR
paddleOCR-lite
项目地址(2023-8发布PP-OCRv4):https://github.com/PaddlePaddle/PaddleOCR/tree/main
源码下载:(github经常连不上)。
链接:https://pan.baidu.com/s/1sVa3WSRb1M96VC_-LCSl-g
提取码:0808
详细介绍参看目录:\PaddleOCR-main\applications\轻量级车牌识别.md
包含轻量级车牌识别项目文档:\PaddleOCR-main\applications\轻量级车牌识别.md。
优缺点:
① 在CCPD上的fine-tune效果还可以。在CCPD上的测试准确率可达到98%,就是不确定测试集车牌的清晰度。
② 其它优点参看轻量级车牌识别.md文档。
车牌识别算法调研;早期版本
1 HyperLPR
HyperLPR在2023年初已经更新到了v3的版本,用于识别中文车牌的开源图像算法项目。
项目地址:https://github.com/szad670401/HyperLPR
输出:检测到车牌Box,再识别车牌号码。
2 PaddleOCR
基于PaddleOCR的轻量级车牌识别系统,需车牌检测模型和车牌识别模型的微调与串联。
PaddleOCR中的超轻量OCR系统PP-OCRv3进行车牌识别。
字符分割:
字符分类: 阶段用OCR方法实现车牌字符识别
项目地址:https://github.com/PaddlePaddle/PaddleOCR/tree/dygraph/applications
3 YOLO+CRNN
YOLOv8做目标检测+CRNN“卷积递归神经网络”(Convolutional Recurrent Neural Network)。CRNN结合了卷积神经网络(CNN)和循环神经网络(RNN)的优势,主要用于处理具有序列性和空间信息的数据。
流程:车牌检测 + 车牌关键点定位 + 透视变换矫正 + 单双层车牌判断 + CRNN字符识别
- https://github.com/deepcam-cn/yolov5-face
- https://github.com/Sierkinhane/CRNN_Chinese_Characters_Rec
4 YOLO+lprNet
LPRNet没有对字符进行预分割,可以说是一个端到端的车牌识别算法。模型只有1.5M,t瞄准嵌入式设备。
LPRNet采用全卷积+CTC损失来取代LTSM+CTC损失的模式,训练阶段用CTC损失来拟合CNN网络,推理阶段用贪婪搜索和前缀搜索完成字符推理。
过程:
STN网络对输入图像进行处理(可选),目的是变换图像来获得最佳的车牌识别输入图像。
LocNet结构用于估计最佳的转换参数。
源码:https://github.com/sirius-ai/LPRNet_Pytorch
https://github.com/lyl8213/Plate_Recognition-LPRnet
数据集:https://github.com/detectRecog/CCPD (数据集极不平衡)