【目标检测软件 04】基于 YOLO 目标检测与 LPRNet/OCR 车牌识别的一体化系统 (含 PyQt5 可视化界面、25 万张标注数据集、完整训练模型及 Python 源码-毕设推荐项目)
目录
简介
一、软件界面
二、软件功能
三、环境部署
3.1、硬件配置
3.2、安装步骤
四、数据集
4.1、数据来源
4.2、数据集分类
4.3、数据集统计
4.4、数据集结构
4.5、数据集配置文件
五、软件演示
5.1、模型选择和参数设置
5.2、图片检测
5.2.1、加载图片文件
5.2.2、开始图片检测
5.2.3、预览检测结果
5.2.4、导出检测表格
5.2.5、导入检测表格
5.3、视频检测
5.3.1、加载视频文件
5.3.2、开始视频检测
5.3.3、预览检测视频
5.4、鼠标悬停展示
六、模型训练(YOLO)
6.1、训练代码
6.2、开始训练
6.3、训练结果
七、模型评估(验证)
7.1、评估代码
7.2、开始评估
7.3、评估结果
八、模型预测(测试)
8.1、预测代码
8.2、开始预测
8.3、预测结果
九、模型导出
9.1、导出代码
9.2、开始导出
十、车牌识别模型
十一、完整代码
十二、版本
十三、链接
简介
本项目是一个功能完整、界面友好的车牌识别(License Plate Recognition, LPR)软件,采用 Python 开发,融合了深度学习与图形界面技术,适用于图像、视频、摄像头及网络流等多种输入场景。
系统核心亮点在于同时支持两种主流 OCR 模型——专为中文车牌优化的 LPRNet 与通用性强、精度高的 CRNN,用户可在运行时自由切换,灵活应对不同环境下的识别需求。所有模型均支持 PyTorch 原生格式(.pth) 与高性能推理格式 ONNX,兼顾开发便利性与部署效率。
前端界面基于 PyQt5 构建,提供直观的操作面板:支持图片/视频文件加载、实时摄像头预览、RTSP 网络流接入,并能动态展示识别结果、置信度、IOU 等关键信息。同时,软件内置配置管理模块,可保存用户偏好设置(如模型路径、识别阈值等),提升使用体验。
该项目代码结构清晰、模块解耦良好,既可作为智能交通、安防监控等领域的原型系统,也适合作为计算机视觉与 PyQt 应用开发的学习范例。无论是研究人员、开发者还是技术爱好者,都能从中快速上手并进行二次开发。
一、软件界面
主界面

设置界面

二、软件功能
功能1:支持多种输入源,包括本地摄像头、图片文件、视频文件及网络视频流(如HTTP/RTSP)
功能2:支持实时车牌检测和识别,在视频流中动态框出车牌(黄、绿、蓝)目标并显示置信度
功能3:支持可视化交互界面,基于 PyQt5 开发,操作简洁、信息清晰
功能4:支持自定义检测参数,如置信度阈值、NMS IoU 阈值等,灵活调整识别灵敏度
功能5:支持检测结果导入/导出,可保存带标注框的图像或视频用于回溯分析
功能6:支持模型热替换与再训练,用户可加载自定义数据集重新训练并部署新模型
功能7:支持鼠标在显示画面悬停切换展示目标框信息。
三、环境部署
本系统基于 Python 开发,依赖库包括 OpenCV、ONNX、PyQt5、NumPy、Matplotlib 等(详见 requirements.txt)。需安装大型深度学习框架(PyTorch),模型支持 ONNX 格式运行,并可通过 PyInstaller 打包为独立可执行程序。
3.1、硬件配置
| 项目 | 要求 |
|---|---|
| 操作系统 | Windows /10/11(推荐 64 位)、Ubuntu 20.04+、macOS 12+ |
| CPU | Intel Core i5 或更高(建议支持 AVX2 指令集) |
| 内存 | ≥16 GB |
| GPU(可选) | NVIDIA 显卡,支持 CUDA 11+(如 RTX 3060/4060 及以上) |
GPU 非必需,但如果硬件支持可显著提升推理和训练速度。
3.2、安装步骤
安装Python 版本:3.11(推荐)
Python 下载地址 www.python.org

下载完成,直接点击安装。
使用PyCharm IDE 打开工程,创建虚拟环境(virtualenv)。

安装依赖库
pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple/

再根据GPU或者CPU安装深度学习库
CPU 版本
pip install torch==2.5.1 torchvision==0.20.1 torchaudio==2.5.1 --index-url https://pypi.tuna.tsinghua.edu.cn/simple
pip install onnxruntime==1.19.0 -i https://pypi.tuna.tsinghua.edu.cn/simple/
GPU 版本 根据自己的gpu 选择对应的CUDA
pip install torch==2.5.1+cu121 torchvision==0.20.1+cu121 torchaudio==2.5.1+cu121 --extra-index-url https://download.pytorch.org/whl/cu121
pip install onnxruntime-gpu==1.19.0 -i https://pypi.tuna.tsinghua.edu.cn/simple/
安装完成 python 解析器会显示所有依赖库

主要依赖库如下:
| 库名 | 版本 | 主要作用 |
|---|---|---|
| opencv-python | 4.12.0.88 | 核心计算机视觉库,用于摄像头捕获、图像/视频读写、预处理(如缩放、归一化)等 |
| PyQt5 | 5.15.11 | 构建图形用户界面(GUI),提供窗口、按钮、视频显示区域等交互组件 |
| torch | 2.5.1 | PyTorch 深度学习框架核心,仅在模型训练或再训练阶段使用 |
| torchaudio | 2.5.1 | PyTorch 音频处理扩展(本项目未使用音频功能,通常为 torchvision 的间接依赖,可选) |
| torchvision | 0.20.1 | 提供 YOLO 等模型结构、数据增强工具和预训练模型支持,用于训练阶段 |
| numpy | 2.2.6 | 科学计算基础库,所有数值运算(如图像张量、坐标处理)均依赖 NumPy 数组 |
| onnx | 1.17.0 | 支持 ONNX 模型格式的加载与保存,用于模型导出和跨平台兼容 |
| onnxruntime | 1.19.0 | 推理核心引擎,在 CPU 上高效运行 ONNX 格式的烟火检测模型(日常检测无需 PyTorch) |
| onnxslim | 0.1.78 | 优化 ONNX 模型结构,减小体积、提升推理速度,用于模型部署前的精简 |
| PyInstaller | 6.17.0 | 将整个 Python 项目打包为独立可执行文件(如 .exe),便于分发给普通用户 |
详细依赖库:requirements.txt
altgraph==0.17.5
certifi==2026.1.4
#cffi==2.0.0
charset-normalizer==3.4.4
colorama==0.4.6
coloredlogs==15.0.1
contourpy==1.3.3
#cryptography==45.0.5
cycler==0.12.1
et_xmlfile==2.0.0
filelock==3.20.0
flatbuffers==25.9.23
fonttools==4.61.1
fsspec==2025.10.0
ftfy==6.3.1
humanfriendly==10.0
idna==3.11
imutils==0.5.4
Jinja2==3.1.6
kiwisolver==1.4.9
MarkupSafe==3.0.3
matplotlib==3.10.8
ml_dtypes==0.5.4
mpmath==1.3.0
networkx==3.6
numpy==2.2.6
onnx==1.17.0
#onnxruntime==1.19.0
onnxslim==0.1.78
opencv-python==4.12.0.88
openpyxl==3.1.5
packaging==25.0
pefile==2024.8.26
pillow==12.0.0
polars==1.36.1
polars-runtime-32==1.36.1
protobuf==6.33.1
#pycparser==2.23
pyinstaller==6.17.0
pyinstaller-hooks-contrib==2025.10
pyparsing==3.3.1
PyQt5==5.15.11
PyQt5-Qt5==5.15.2
PyQt5_sip==12.17.1
pyreadline3==3.5.4
python-dateutil==2.9.0.post0
pywin32-ctypes==0.2.3
PyYAML==6.0.2
regex==2025.11.3
requests==2.32.5
scipy==1.16.3
six==1.17.0
sympy==1.13.1
#torch==2.5.1
#torchaudio==2.5.1
#torchvision==0.20.1
tqdm==4.67.1
typing_extensions==4.15.0
urllib3==2.6.3
wcwidth==0.2.14
四、数据集
4.1、数据来源
本项目使用的公开的CCPD数据集进行筛选转换成YOLO训练的数据集。
有关CCPD数据集可以查看文章【数据集 02】车牌CCPD命名规则及下载地址-CSDN博客,文章详细介绍了CCPD数据集的命名规则以及下载地址
在此特别提醒,CCPD数据集标注有错误的地方,尤其是CCPD2019车牌的标注,很多车牌标注的框都不是对应的车牌,因此需要手动筛选,不然会影响训练效果。
下面编写的python代码是把CCPD数据集转成YOLO数据集的脚本
搜集绿牌和蓝牌除了CCPD数据集还有CRPD,CRPD与CCPD不同之处在于CRPD分成三类车牌集、单车牌、双车牌、多车牌,而CCPD只有单车牌场景,因此他们的拍摄环境是不一样,可以根据具体应用项目进行选择。
因为CCPD、CRPD没有黄牌数据因此通过其他方式搜集黄牌。根据经验数据集在1万张以上YOLO模型训练可实现较好的检测效果,因此本项目最终制成包含蓝牌、绿牌、黄牌的YOLO数据集1.5万张,具体如下。
4.2、数据集分类
| 类别ID | 英文名称 | 中文名称 | 标注框个数 |
|---|---|---|---|
| 0 | blueplate | 蓝牌 | 5,072 |
| 1 | greenplate | 绿牌 | 5,045 |
| 2 | yellowplate | 黄牌 | 5,247 |
4.3、数据集统计
| 数据集类型 | 图像数量 | 占比 | 用途 |
|---|---|---|---|
| 训练集(train) | 13,827 张 | 90% | 模型训练 |
| 验证集(val) | 1,383 张 | 9% | 模型验证 |
| 测试集(test) | 154 张 | 1% | 性能评估 |
| 总计 | 15,364 张 | 100% | - |
4.4、数据集结构
dataset/
├── train/
│ ├── images/
│ │ ├── blue_plate_00001.jpg
│ │ └── ...
│ └── labels/
│ ├── blue_plate_00001.txt
│ └── ...
├── valid/
│ ├── images/
│ └── labels/
└── test/
├── images/
└── labels/
4.5、数据集配置文件
data.yaml
train: D:/work/my/datasets/BlueGreenYellowPlate/train/images
val: D:/work/my/datasets/BlueGreenYellowPlate/valid/images
test: D:/work/my/datasets/BlueGreenYellowPlate/test/images
nc: 3
names: ['blueplate', 'greenplate', 'yellowplate']
labelfast:
version: 1.3
路径使用绝对路径,如果训练自己的数据集可以改成自己的数据集路径。
数据集详细请看文章
【数据集 03】中国蓝/黄/绿车牌检测数据集(按比例划分训练、验证、测试)包含训练好的yolo11/yolov8模型-CSDN博客
有关YOLO训练分析详细请看
【深度学习02】YOLO模型的数据集、训练、验证、预测、导出_yolomap计算公式使用验证集还是训练集-CSDN博客
五、软件演示
软件支持多种输入数据源,为了节省文本,本文重点介绍图片、视频文件、网络视频输入演示。
软件更详细操作可查看文章
【目标检测软件 02】AirsPy 目标检测系统操作指南-CSDN博客
视频演示
目标检测软件(AirsPyqt5)_哔哩哔哩_bilibili
5.1、模型选择和参数设置
初次使用软件必须设置。
模型:检测模型使用yolov8/yolo11训练号的模型,识别模型使用OCR或者LPRNnet模型
类文件:项目已经制作好,选择自己的文件路径。
交并比:默认0.75,可以根据自己情况改动。
置信度:本系统最理想设置为0.35,可以根据自己情况改动。
帧间隔:视频抽帧检测,如果电脑只有CPU,那么可以设置大点,减少CPU的使用率。
保存:图片/视频,如果选择开启,将会保存带标注的图片或者视频。表格,如果选择开始,将会保存所有检测到的检测信息。
5.2、图片检测
5.2.1、加载图片文件
点击“图片文件”按键
提示加载完成
5.2.2、开始图片检测
点击“开始运行”按钮
进度条在显示进度,表示已经开始检测了,在检测过程中可以选择暂停或者停止检测。
5.2.3、预览检测结果
点击“上下切换键”或者选中表格行,展示检测结果。鼠标悬停,显示目标框信息。
保存的带有目标框的图片和表格
5.2.4、导出检测表格
点击“导出”按钮
输入表格名称
导出成功
打开表格
5.2.5、导入检测表格
点击“导入”按钮
选择表格
导入成功
点击界面表格行显示检测车牌类别和车牌号
5.3、视频检测
5.3.1、加载视频文件
点击“视频文件”按钮
打开项目准备好的视频
加载成功
5.3.2、开始视频检测
点击“运行”按钮,进度条开始更新,检测到目标框,更新表格。
5.3.3、预览检测视频
检测完成
保存的检测文件
视频检测完成,同样支持导入、导出操作。
5.4、网络视频检测
5.4.1、加载网络视频
点击“网络视频”按钮

输入HTTP URL,本测试使用的是window搭建的http 服务器。

加载成功

5.4.2、开始视频检测
点击“运行”按钮,进度条开始更新,检测到目标框,更新表格。


5.4.3、预览检测结果



5.5、鼠标悬停展示

六、模型训练(YOLO)
6.1、训练代码
model_train.py

如果要自训练,替换模型和数据集路径,其他参数按照自己的需求和电脑硬件的情况更改。

对应数据集里的data.yaml也要修改路径。
6.2、开始训练
执行model_train.py,出现下面画面,表示训练已经开始。

6.3、训练结果
训练完后的模型保存在runs/plate/train文件夹下


模型训练结果分析可查看文章
【深度学习02】YOLO模型的数据集、训练、验证、预测、导出_yolomap计算公式使用验证集还是训练集-CSDN博客
训练部分,详细介绍了训练结果所有文件的作用和怎么分析模型。
七、模型评估(验证)
7.1、评估代码
model_val.py

根据自己的训练模型和数据集路径,修改对应的变量,其他参数按照自己的需求和电脑硬件的情况更改。
7.2、开始评估
执行 model_val.py

7.3、评估结果
评估完后的保存在runs/plate/val文件夹下

评估生成文件

模型评估结果分析可查看文章
【深度学习02】YOLO模型的数据集、训练、验证、预测、导出_yolomap计算公式使用验证集还是训练集-CSDN博客
验证部分,详细介绍了评估结果所有文件的作用和怎么分析模型。
八、模型预测(测试)
8.1、预测代码
model_predict.py

根据自己的模型和数据集路径,修改对应的变量,其他参数按照自己的需求和电脑硬件的情况更改。
8.2、开始预测
执行 model_predict.py

8.3、预测结果
预测完后的保存在runs/plate/detce文件夹下

验证结果

模型预测可查看文章
【深度学习02】YOLO模型的数据集、训练、验证、预测、导出_yolomap计算公式使用验证集还是训练集-CSDN博客
预测部分,详细介绍了预测结果返回的参数和方法。
九、模型导出
9.1、导出代码
model_export.py

根据自己的模型路径,修改对应的变量。
导出的模型经过优化,可加快推理时间。
模型转成ONNX格式,CPU 速度提升高达 3 倍,GPU 速度提升高达 5 倍。
9.2、开始导出
执行model_export.py

导出的模型保存在runsplate rainyolo11sweightsest.onnx文件夹下

十、车牌识别模型
本项目使用两种可选择的方式识别车牌
10.1、识别模型配置


10.2、车牌识别模型命名规则
如果是CRNN OCR训练的模型 必须包含字符“crnn_ocr”命名
如果是LPRNET 训练的模型 必须包含字符"lprnet"命名
如果不按上面命名规则,车牌识别模型无法加载,代码判断如下。

车牌识别模型具体怎么训练请看下面对应的文章
10.3、模型CRNN OCR训练
【深度学习03】基于 CRNN 架构的轻量级车牌识别OCR:从数据准备到模型部署全流程解析(包含源码+数据集(25万张)+训练模型)-CSDN博客
10.4、模型LPRNET 训练
【深度学习04】基于改进 LPRNet 的高效车牌识别系统:从数据构建到工业部署的完整实践(包含源码+数据集(25万张)+训练模型)-CSDN博客
十一、完整代码
检测软件代码

CRNN OCR 代码

LPRNET 代码

数据集
YOLO 数据集

车牌数据集

十二、版本
| 版本 | 描述 |
| v1.0 | 功能1:支持多种输入源,包括本地摄像头、图片文件、视频文件及网络视频流(如HTTP/RTSP) 功能2:支持实时车牌检测和识别,在视频流中动态框出车牌(黄、绿、蓝)目标并显示置信度 功能3:支持可视化交互界面,基于 PyQt5 开发,操作简洁、信息清晰 功能4:支持自定义检测参数,如置信度阈值、NMS IoU 阈值等,灵活调整识别灵敏度 功能5:支持检测结果导入/导出,可保存带标注框的图像或视频用于回溯分析 功能6:支持模型热替换与再训练,用户可加载自定义数据集重新训练并部署新模型 功能7:支持鼠标在显示画面悬停切换展示目标框信息。
附加:训练、验证、测试、导出代码,以及软件打包 |
十三、链接
| 描述 | 链接 |
| 代码链接 | 基于YOLO检测与LPRNet/OCR车牌识别系统(Pyqt5界面+源码+训练的模型pt/onnx格式+数据集) |
| 数据集 | 【数据集 03】中国蓝/黄/绿车牌检测数据集(按比例划分训练、验证、测试)包含训练好的yolo11/yolov8模型-CSDN博客 |
| LPRNET介绍 | 【深度学习04】基于改进 LPRNet 的高效车牌识别系统:从数据构建到工业部署的完整实践(包含源码+数据集(25万张)+训练模型)-CSDN博客 |
| CRNN OCR介绍 | 【深度学习03】基于 CRNN 架构的轻量级车牌识别OCR:从数据准备到模型部署全流程解析(包含源码+数据集(25万张)+训练模型)-CSDN博客 |
| 往期回顾 | |
| 标注工具 | 【标注工具 01】labelfast标注工具使用指南(支持YOLOCOCOVOC格式)-CSDN博客 |
| 通用版检测软件1 | 【目标检测软件 01】YOLO识别软件功能与操作指南_yolo软件-CSDN博客 |
| 通用版检测软件2 | 【目标检测软件 02】AirsPy 目标检测系统操作指南-CSDN博客 |
| 室内烟火系统 | 【目标检测软件 03】基于yolo的室内烟火识别系统(含Python源码、UI界面、数据集、训练模型与代码-毕设推荐项目)_火焰识别数据集-CSDN博客 |
| 【数据集 01】家庭室内烟火数据集(按比例划分训练、验证、测试)包含训练好的yolo11/yolov8模型_yolo烟火训练集-CSDN博客 | |
| 参考 | |
| yolo训练详细介绍 | 【深度学习02】YOLO模型的数据集、训练、验证、预测、导出_yolomap计算公式使用验证集还是训练集-CSDN博客 |
| CCPD介绍 | 【数据集 02】车牌CCPD命名规则及下载地址-CSDN博客 |
| 视频演示 | 目标检测软件(AirsPyqt5)_哔哩哔哩_bilibili |









