问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

使用YOLOv8进行车牌号检测:从数据准备到模型训练的完整指南

创作时间:
作者:
@小白创作中心

使用YOLOv8进行车牌号检测:从数据准备到模型训练的完整指南

引用
CSDN
1.
https://blog.csdn.net/QQ_1309399183/article/details/144875206

YOLOv8是目标检测领域最先进、最实用的模型之一,以其卓越的检测速度和精度在众多应用场景中展现出强大的实力。在车牌识别领域,YOLOv8同样表现出色,能够快速准确地识别出车辆的车牌号码,为交通管理、智能停车等场景提供了有力的技术支持。本文将详细介绍如何使用YOLOv8训练车牌号检测数据集,并实现车牌数据集的识别、可视化及评估。

数据集简介

本文使用的车牌号检测数据集包含7800张图片,具体类别及数量分布如下:

  • plate: (7620, 7910)
  • 粤: (796, 800)
  • Z: (499, 515)
  • B: (1028,1115)
  • T: (334, 341)
  • 8: (3150, 4058)
  • 3: (2538, 3095)
  • 港: (132, 133)
  • L: (481, 493)
  • S: (429, 447)
  • 5: (2784,3404)
  • 0: (3038, 4084)
  • A: (3693, 3927)
  • 7: (2618, 3283)
  • 1: (2817, 3425)
  • 警: (64,64)
  • 9: (2853, 3554)
  • 2: (2653, 3212)
  • 豫: (403,405)
  • V: (301, 313)
  • 6: (2914, 3695)
  • Q: (360, 371)
  • 4: (1253, 1432)
  • C: (1064,1106)
  • 鲁: (178,178)
  • D: (1601, 1799)
  • K: (553, 574)
  • Y: (331, 337)
  • G: (537, 560)
  • W: (257, 259)
  • P: (461, 481)
  • 澳: (43, 43)
  • M: (584, 597)
  • R: (444, 454)
  • J: (522, 539)
  • H: (585, 603)
  • 藏: (243, 243)
  • F: (823, 842)
  • X: (327, 339)
  • N: (396, 402)
  • E: (666, 691)
  • U: (300, 310)
  • 辽: (285, 285)
  • 皖: (1148, 1149)
  • 闽: (250, 250)
  • 青: (44, 44)
  • 云: (65, 65)
  • 冀: (163, 163)
  • 新: (11, 11)
  • 苏: (283, 283)
  • 晋: (110. 110)
  • 贵: (180, 180)
  • 川: (196, 196)
  • 蒙: (41, 41)
  • 吉: (285, 285)
  • 浙: (236, 236)
  • 沪: (180, 180)
  • 湘: (268, 268)
  • 京: (128, 128)
  • 津: (90, 90)
  • 桂: (280, 280)
  • 琼: (40, 40)
  • 赣: (299, 299)
  • 渝: (124, 124)
  • 鄂: (394, 394)
  • 陕: (75, 75)
  • 黑: (133, 133)
  • 宁: (10, 10)
  • 甘: (24, 24)
  • 学: (50, 50)

总数: (7817, 65826)
总类(nc): 70类

步骤概述

  1. 安装依赖
  2. 准备数据集
  3. 配置YOLOv8
  4. 训练模型
  5. 可视化评估

1. 安装依赖

首先确保你已经安装了必要的库,特别是ultralytics库,它是YOLOv8的核心库。

pip install ultralytics

2. 准备数据集

假设你的数据集格式符合YOLO的要求,即图像文件夹和对应的标注文件夹。数据集结构应如下所示:

datasets/
├── images/
│   ├── train/
│   │   ├── img1.jpg
│   │   ├── img2.jpg
│   │   └── ...
│   └── val/
│       ├── img1.jpg
│       ├── img2.jpg
│       └── ...
└── labels/
    ├── train/
    │   ├── img1.txt
    │   ├── img2.txt
│   │   └── ...
    └── val/
        ├── img1.txt
        ├── img2.jpg
        └── ...

每个.txt文件对应一张图片,内容格式为:

<class_id> <x_center> <y_center> <width> <height>

其中,坐标值都是归一化的(范围在0到1之间)。

3. 配置YOLOv8

创建一个YAML文件来配置数据集路径和类别信息。例如,创建一个名为license_plate.yaml的文件:

train: ../datasets/images/train
val: ../datasets/images/val

nc: 70
names: ['plate', '粵', 'Z', 'B', 'T', '8', '3', '港', 'L', 'S', '5', '0', 'A', '7', '1', '警', '9', '2', '豫', 'V', '6', 'Q', '4', 'C', '鲁', 'D', 'K', 'Y', '湘', '京', '津', '桂', '琼', '赣', '渝', '鄂', '陕', '黑', '宁', '甘', '学']

4. 训练模型

编写训练脚本,使用YOLOv8进行训练。以下是完整的训练脚本:

from ultralytics import YOLO

# Load a pre-trained YOLOv8n model
model = YOLO('yolov8n.pt')

# Train the model on your dataset
results = model.train(
    data='license_plate.yaml',
    epochs=50,
    imgsz=640,
    batch=8,
    workers=4,
    device='0'  # Use GPU if available
)

# Evaluate the model performance on the validation set
metrics = model.val()

# Export the trained model to ONNX format for deployment
success = model.export(format='onnx')

5. 可视化评估

我们可以使用YOLOv8自带的功能来可视化评估结果。以下是如何进行可视化的代码:

# Visualize predictions on validation set
results = model.predict(source='../datasets/images/val', show=True, save=True)

将上述代码添加到训练脚本中,完整的脚本如下:

from ultralytics import YOLO

# Load a pre-trained YOLOv8n model
model = YOLO('yolov8n.pt')

# Train the model on your dataset
results = model.train(
    data='license_plate.yaml',
    epochs=50,
    imgsz=640,
    batch=8,
    workers=4,
    device='0'  # Use GPU if available
)

# Evaluate the model performance on the validation set
metrics = model.val()

# Export the trained model to ONNX format for deployment
success = model.export(format='onnx')

# Visualize predictions on validation set
results = model.predict(source='../datasets/images/val', show=True, save=True)

解释

  1. 加载预训练模型:我们从预训练的YOLOv8n模型开始。
  2. 训练模型:使用train方法进行训练。参数包括数据集配置文件路径、训练轮数、图像大小、批量大小、工作线程数和设备。
  3. 评估模型:使用val方法对模型进行评估。
  4. 导出模型:将训练好的模型导出为ONNX格式以便部署。
  5. 可视化评估:使用predict方法在验证集上进行预测,并显示和保存结果。

运行脚本

保存上述脚本到一个Python文件中,例如train_license_plate.py,然后运行该脚本:

python train_license_plate.py

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号