基于PaddleOCR框架和PP-OCRv4开源模型训练商用级高质量车牌识别模型
PaddleOCR_Plate是一个基于PaddleOCR框架和PP-OCRv4模型的车牌识别开源项目,由北小菜开发。项目提供了训练好的车牌检测和识别模型,并详细介绍了从环境配置到模型训练、评估及导出的完整流程。支持Python3.8-3.12,提供CPU/GPU版本安装指南。使用CCPD2020数据集训练,包含检测和识别两个阶段,用户可自定义配置文件路径。项目还说明训练模型与导出模型的结构差异,
·
PaddleOCR_Plate
- 作者:北小菜
- QQ:1402990689
- 微信:bilibili_bxc
- 哔哩哔哩主页:https://space.bilibili.com/487906612
- gitee开源地址:https://gitee.com/Vanishi/PaddleOCR_Plate
- github开源地址:https://github.com/beixiaocai/PaddleOCR_Plate
项目介绍
- 基于PaddleOCR框架和PP-OCRv4开源模型训练商用级高质量车牌识别模型
- 本项目在PaddleOCR框架 + PP-OCRv4的开源模型基础上,使用开源的车牌识别样本集CCPD2020迭代训练而来。本项目的目的是,通过编写详细的文档,尽可能让所有人都能学会训练车牌识别模型和调用车牌识别模型。降低行业门槛。
- 项目根目录下checkpoints文件夹里面,内置了作者训练好的车牌检测和车牌识别模型,大家如果不想训练,可以直接使用,调用方法参考tests.py
安装训练环境
(1)首先确保您已经具备Python运行环境
目前支持 Python 3.8 至 Python 3.12(Windows系统推荐Python3.10,作者在Windows用的是3.10)
(2)安装paddlepaddle
//安装CPU版本
python -m pip install paddlepaddle==3.0.0rc0 -i https://www.paddlepaddle.org.cn/packages/stable/cpu/
//安装GPU版本(cu118),需显卡驱动程序版本 ≥450.80.02(Linux)或 ≥452.39(Windows)
python -m pip install paddlepaddle-gpu==3.0.0rc0 -i https://www.paddlepaddle.org.cn/packages/stable/cu118/
//安装GPU版本(cu123),需显卡驱动程序版本 ≥545.23.06(Linux)或 ≥545.84(Windows)
python -m pip install paddlepaddle-gpu==3.0.0rc0 -i https://www.paddlepaddle.org.cn/packages/stable/cu123/
(3)安装paddleocr
pip install paddleocr==2.10.0
//注意:本项目是基于paddleocr==2.10.0和PP-OCRv4实现(如果使用的paddleocr>2.10.0,则可能会面临很多不确定性,建议保持一致)
下载PP-OCRv4的开源预训练基础模型 + 训练样本集
(1)下载PP-OCRv4的开源预训练基础模型 + 下载作者基于CCPD2020转换后适合paddleocr直接训练的样本集
夸克网盘下载地址: https://pan.quark.cn/s/6830234a944f
网盘文件介绍/
├── pretrain_models.zip # (需要下载)PP-OCRv4的开源预训练基础模型
pretrain_models/
├── ch_PP-OCRv4_det_cml_teacher_pretrained
└── ch_PP-OCRv4_rec_train
└── CCPD2020_PPOCR.zip # (需要下载)CCPD2020转换后适合paddleocr直接训练的样本集
CCPD2020_PPOCR/
├── ccpd_green
└── PPOCR
tips: 网盘中上述文件除外,都不需要下载,是用来归档备份的。
注意:解压后的pretrain_models和CCPD2020_PPOCR请务必放置到项目根目录下
训练模型+验证模型+导出模型
(1)车牌识别主要分为两个过程,第一步是车牌检测过程(det),第二步是车牌识别过程(rec)
//在开始训练前,请前往configs文件夹,分别打开configs/plate_det.yml和configs/plate_rec.yml,里面涉及的数据集路径前缀改成与自己本机环境一致,注意路径不要包含中文
(2)车牌检测模型的训练+评估+导出
//(det)训练模型
python tools/train.py -c configs/plate_det.yml -o Global.pretrained_model=pretrain_models/ch_PP-OCRv4_det_cml_teacher_pretrained/teacher.pdparams
//(det)评估模型
python tools/eval.py -c configs/plate_det.yml -o Global.pretrained_model=output/plate_det/best_model/model.pdparams Eval.dataset.data_dir=CCPD2020_PPOCR/ccpd_green Eval.dataset.label_file_list=[CCPD2020_PPOCR/PPOCR/test/det.txt]
//(det)导出模型
python tools/export_model.py -c configs/plate_det.yml -o Global.pretrained_model=output/plate_det/best_model/model.pdparams Global.save_inference_dir=output/plate_det/inference_model
(3)车牌识别模型的训练+评估+导出
//(rec)训练模型
python tools/train.py -c configs/plate_rec.yml -o Global.pretrained_model=pretrain_models/ch_PP-OCRv4_rec_train/student.pdparams
//(rec)评估模型
python tools/eval.py -c configs/plate_rec.yml -o Global.pretrained_model=output/plate_rec/best_model/model.pdparams Eval.dataset.data_dir=CCPD2020_PPOCR/PPOCR Eval.dataset.label_file_list=[CCPD2020_PPOCR/PPOCR/test/rec.txt]
//(rec)导出模型
python tools/export_model.py -c configs/plate_rec.yml -o Global.pretrained_model=output/plate_rec/best_model/model.pdparams Global.save_inference_dir=output/plate_rec/inference_model
补充介绍:关于训练模型结构和导出模型结构的区别
//原始训练模型结构
output/plate_det/best_model/
├── model.pdopt # 优化器状态(用于恢复训练)
└── model.pdparams # 模型参数(权重和偏置)
//原始训练模型转换的pdmodel模型结构
output/plate_det/inference_model/
├── inference.pdmodel # 模型结构
├── inference.pdiparams # 模型参数
└── inference.pdiparams.info # 参数信息
测试图片
- 执行tests.py测试时,测试所用到的模型,并非直接训练获得的模型,而是训练获得的模型转换后的模型
//使用tests.py测试训练模型转换的pdmodel模型
python tests.py
//使用tests_onnx.py测试pdmodel模型转换的onnx模型(转换onnx模型,请参考ONNXRUNTIME.md)
python tests_onnx.py
关于如何部署或移植到项目中
- 可以参考tests.py或tests_onnx.py
更多推荐
所有评论(0)