本项目基于 YOLOv8 实现车牌检测与定位,提供完整的训练流程与可视化桌面应用,支持图片、视频、摄像头多种输入方式的实时检测。


一、项目技术栈

类别技术
深度学习框架PyTorch、Ultralytics YOLOv8
计算机视觉OpenCV
桌面 UIPyQt6
数据处理NumPy、Pandas
可视化Matplotlib
其他PyYAML、Pillow、EasyOCR

二、数据集说明

2.1 数据来源

采用 CCPD2020(Chinese City Parking Dataset 2020)数据集,经 PASCAL VOC 格式整理后的 CCPD2020-voc 版本。

2.2 图片种类与数量

子集图像数量标注数量用途
训练集 (train)5,7695,769模型训练
验证集 (val)1,0011,001验证与早停
测试集 (test)5,0065,006最终评估
合计11,77611,776—

2.3 图片内容

  • 格式:JPG
  • 内容:含车牌的完整场景图像(车辆、道路等)
  • 标注:PASCAL VOC XML,包含车牌边界框 (xmin, ymin, xmax, ymax)
  • 类别:单类别 plate(车牌)

2.4 数据集结构

CCPD2020-voc/
├── train/
│   ├── Annotations/   # XML 标注
│   └── JPEGImages/    # 训练图像
├── val/
│   ├── Annotations/
│   └── JPEGImages/
└── test/
    ├── Annotations/
    └── JPEGImages/

训练前会将 VOC 格式转换为 YOLO 格式(归一化坐标),输出至 dataset/ 目录。


三、训练过程与参数

3.1 训练流程

  1. 数据准备:从 CCPD2020-voc 读取 VOC 标注,转换为 YOLO 格式
  2. 配置生成:生成 dataset/data.yaml(路径、类别等)
  3. 模型训练:使用 YOLOv8n 预训练权重进行微调

3.2 主要训练参数

参数取值说明
模型YOLOv8n轻量级 backbone
Epochs100训练轮数
Batch size16每批样本数
图像尺寸640×640输入分辨率
Patience50早停耐心值
设备0GPU 编号
Workers4数据加载线程数

3.3 运行训练

python train.py

训练完成后,最佳权重保存在 runs/train/license_plate_detection/weights/best.pt。


四、可视化图表含义

训练结果可视化脚本 visualize_training.py 基于 results.csv 生成以下图表:

4.1 损失曲线 (loss_curves.png)

子图含义
Box Loss边界框回归损失,衡量预测框与真实框的偏差
Classification Loss分类损失,衡量类别预测的准确性
DFL Loss分布焦点损失,用于边界框的分布建模

每条曲线包含 Train(训练集)与 Val(验证集),用于判断过拟合与收敛情况。

4.2 评估指标曲线 (metrics_curves.png)

指标含义
Precision精确率,预测为正例中实际为正例的比例
Recall召回率,实际正例中被正确预测的比例
mAP50IoU=0.5 时的平均精度均值
mAP50-95IoU 从 0.5 到 0.95 步长 0.05 的 mAP 均值,综合评估指标

图中会标注最佳 Epoch 及对应 mAP50-95 值。

4.3 学习率曲线 (learning_rate.png)

展示训练过程中学习率随 Epoch 的变化,用于检查学习率调度是否合理。

4.4 综合汇总图 (training_summary.png)

2×2 子图,包含:总损失、核心指标、训练损失分解、累计训练时间。

4.5 mAP 对比图 (mAP_comparison.png)

对比 mAP50 与 mAP50-95 随 Epoch 的变化,并标注最佳 Epoch。

4.6 运行可视化

python visualize_training.py

图表输出至 runs/detect/runs/train/license_plate_detection/ 目录。


五、系统功能

5.1 登录与注册

  • 本地用户管理,支持注册与登录
  • 用户数据存储在 local_data/users.json

5.2 图片识别

  • 打开本地图片进行检测
  • 左侧预览原图与检测结果,右侧展示统计与明细
  • 支持导出结果图、导出 CSV
  • 统计卡片:目标总数、类别数、平均置信度、最高置信度
  • 类别分布表、详细数据表(序号、类别、置信度、坐标、面积)

5.3 视频识别

  • 打开本地视频文件
  • 支持按帧间隔检测(默认每 2 帧)
  • 实时显示检测结果与累计统计
  • 支持导出当前帧

5.4 摄像头识别

  • 实时摄像头画面检测
  • 可切换摄像头索引、检测开关
  • 支持截图保存
  • 显示当前帧与累计统计

5.5 历史记录

  • 只读查询所有检测记录
  • 支持按类型(图片/视频/摄像头)筛选、关键词搜索
  • 支持导出历史 CSV

5.6 模型选择

  • 默认使用 runs/detect/runs/train/license_plate_detection/weights/best.pt
  • 支持浏览并加载自定义 .pt 模型
  • 可配置置信度阈值、IoU 阈值、最大检测数

5.7 指标展示

  • 训练曲线:损失、P/R、mAP、学习率
  • 指标汇总:mAP50、mAP50-95、Precision、Recall 等统计卡片及条形图、雷达图
  • 可视化图表:mAP 对比、总损失曲线等

六、项目结构

c90/
├── app.py                 # 桌面应用入口
├── train.py               # 训练脚本
├── visualize_training.py  # 训练结果可视化
├── requirements.txt       # 依赖列表
├── dataset/               # 转换后的 YOLO 数据集
│   ├── data.yaml
│   ├── images/
│   │   ├── train/
│   │   ├── val/
│   │   └── test/
│   └── labels/
│       ├── train/
│       ├── val/
│       └── test/
├── ui_app/                # 桌面应用模块
│   ├── config.py          # 路径与常量配置
│   ├── storage.py         # 用户、历史、设置存储
│   ├── styles.py          # QSS 样式
│   ├── detector.py        # YOLO 检测封装
│   ├── login_window.py    # 登录/注册窗口
│   ├── main_window.py     # 主窗口(导航+页面堆栈)
│   └── pages/             # 功能页面
│       ├── image_page.py  # 图片识别
│       ├── video_page.py  # 视频识别
│       ├── camera_page.py # 摄像头识别
│       ├── history_page.py# 历史记录
│       ├── model_page.py  # 模型选择
│       ├── metrics_page.py# 指标展示
│       └── common.py      # 公共组件
├── local_data/            # 本地数据(用户、历史、设置)
├── runs/                  # 训练输出与权重
│   └── detect/runs/train/license_plate_detection/
│       ├── weights/
│       │   └── best.pt
│       ├── results.csv
│       └── args.yaml
└── 数据集结构说明.md      # 数据集说明文档

七、运行说明

7.1 环境要求

  • Python 3.9+
  • 建议使用 GPU(CUDA)以加速训练与推理

7.2 安装依赖

pip install -r requirements.txt

7.3 启动桌面应用

python app.py

默认账号:admin / 123456。

7.4 数据准备

将 CCPD2020-voc 数据集置于项目根目录,结构与 数据集结构说明.md 一致。运行 train.py 时会自动完成 VOC→YOLO 转换。


八、作者与开发信息

  • 作者:Jay
  • 定制联系:vx Jay8059
  • 开发日期:2026 年

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐