一份微调YOLOv11的小指南

科技   2024-10-25 10:05   中国香港  

点击上方小白学视觉”,选择加"星标"或“置顶

重磅干货,第一时间送达
引言
在一个自动化和实时数据处理日益成为常态的时代,准确检测和识别车辆牌照的能力是非常宝贵的。从交通管理、收费到执法和停车解决方案,车牌识别系统在各种应用中都扮演着关键角色。
在这篇博文中,我们将探讨如何微调强大的YOLOv11目标检测模型,以使用Roboflow准备的自定义数据集来检测汽车车牌。我们还将集成Gradio以创建一个交互式Web界面,用于实时推理。这种组合为检测车牌提供了一个健壮且用户友好的解决方案,可以进一步处理以提取交通违规或车辆跟踪等场景中的有价值信息。
问题陈述
主要目标是开发一个能够准确检测图像中的汽车车牌的系统。这种检测是自动化流程的第一个关键步骤,可以提取车牌信息,例如注册号,这对于以下方面至关重要:
  • 交通违规执法:识别违反交通规则的车辆。
  • 自动收费:在没有人为干预的情况下识别车辆进行收费。
  • 停车管理:监控车辆在停车设施的进出。
  • 执法:追踪被盗车辆或涉及犯罪活动的车辆。
通过在专业数据集上微调YOLOv11,我们的目标是提高其在车牌检测方面的性能,确保高准确度和实时处理能力。
背景
什么是YOLOv11?
YOLO(You Only Look Once)是一系列实时目标检测模型,以其速度和准确性而闻名。YOLOv11是最新版本,提供了检测能力和计算效率的改进。它一次处理图像,非常适合需要实时目标检测的应用。
为什么要微调YOLOv11?
尽管YOLOv11在覆盖各种物体的庞大数据集上进行了预训练,但在特定数据集上对其进行微调——如汽车车牌——允许模型:
  • 提高准确性:根据车牌的特定特征定制检测能力。
  • 减少误报/漏报:通过关注车牌的细微差别,使模型变得更可靠。
  • 适应特定环境:考虑到现实世界场景中常见的不同光照条件、角度和遮挡。
使用Roboflow准备数据
为什么使用Roboflow?
Roboflow是一个强大的工具,它简化了管理和准备计算机视觉任务数据集的过程。它提供:
  1. 简单的注释:用户友好的界面用于注释图像。
  2. 数据增强:自动增强数据以提高模型的鲁棒性。
  3. 格式转换:导出与不同模型兼容的各种格式的数据集。
数据准备步骤
  1. 收集图像:从各种来源收集包含汽车和车牌的多样化图像集。
  2. 上传到Roboflow:创建一个新项目并上传你的图像。
  3. 注释图像:使用Roboflow的注释工具标记每张图像中的车牌。
  4. 增强数据:应用旋转、缩放和亮度调整等转换以增强数据集。
  5. 导出数据集:选择YOLOv11格式并导出数据集,包括图像和相应的注释文件。
微调YOLOv11
设置环境
确保已安装以下内容:
  1. Python 3.10
  2. PyTorch
  3. Ultralytics YOLOv11仓库
微调步骤
克隆YOLOv11仓库
git clone https://github.com/sh-aidev/yolo-finetuning.gitcd yolo-finetuning

安装要求
python3 -m pip install -r requirements.txt
准备数据集
将从Roboflow导出的数据集放入YOLOv11仓库的数据目录。使用训练和验证数据的路径更新data.yaml文件。
配置模型
我修改了config.toml文件以指定:
  1. 模型参数:输入图像大小
  2. 训练超参数:学习率、批量大小、训练周期数量。
  3. 路径:数据集目录和保存模型检查点的目录。
下载数据集
# Download the Roboflow datasetpython scripts/download_data_roboflow.py

在.env文件中创建并设置环境变量
# ROBOFLOW_API_KEY=<YOUR_ROBOFLOW_API_KEY># MODE=train/infer (for training or inference mode)# ENVIRONMENT=dev/prod (for logging)

开始训练
# Train the YOLOv11 modelpython main.py
  • img:图像大小。
  • batch:批量大小。
  • epochs:训练周期数量。
  • data:数据配置文件的路径。
监控训练
训练日志和结果保存在runs/train目录中。使用TensorBoard或其他可视化工具监控性能指标,如损失、精确度和召回率。
挑战和解决方案
  • 过拟合:实施数据增强和dropout层等技术以防止过拟合。
  • 数据不平衡:确保数据集平衡地代表各种条件,如不同的角度和光照。
  • 小目标检测:车牌相对于图像大小可能很小。调整锚定框并考虑增加图像分辨率。
使用Gradio实现实时推理
Gradio是什么?
Gradio是一个开源的Python库,允许你快速为你的机器学习模型创建可定制的UI组件。它简化了部署过程,使你的模型可以通过Web界面访问。
设置Gradio界面
安装Gradio
python3 -m pip install gradio
运行推理
# Run the Gradio application# To run gradio app, set MODE=infer in .env file and change use_pretrained to True in configs/config.tomlpython main.py
访问界面
打开浏览器,导航到http://localhost:7860以使用Web界面。你可以上传图像,模型将显示检测到的车牌。
使用Gradio的好处
  • 易用性:无需复杂的Web开发;Gradio处理UI。
  • 实时反馈:模型预测的即时可视化。
  • 可分享链接:轻松与他人分享你的界面,用于演示或测试。
结论
通过使用Roboflow准备的自定义数据集微调YOLOv11,并将其与Gradio一起部署,我们已经开发了一个有效的系统来检测汽车车牌。这个解决方案能够实时处理,适合需要即时响应的应用。
未来拓展
  • 文本识别:集成OCR(光学字符识别)系统以从检测到的车牌中提取车牌号码。
  • 视频处理:扩展模型以处理视频流,以进行持续监控。
  • 边缘部署:优化模型以在计算资源有限的边缘设备上部署。

参考资料
YOLOv11仓库:https://docs.ultralytics.com/models/yolo11/
Roboflow:https://docs.roboflow.com/
Gradio文档:https://www.gradio.app/docs
PyTorch:https://pytorch.org/docs/stable/index.html
完整代码:https://github.com/sh-aidev/yolo-finetuning.git
下载1:OpenCV-Contrib扩展模块中文版教程
在「小白学视觉」公众号后台回复:扩展模块中文教程即可下载全网第一份OpenCV扩展模块教程中文版,涵盖扩展模块安装、SFM算法、立体视觉、目标跟踪、生物视觉、超分辨率处理等二十多章内容。

下载2:Python视觉实战项目52讲
小白学视觉公众号后台回复:Python视觉实战项目即可下载包括图像分割、口罩检测、车道线检测、车辆计数、添加眼线、车牌识别、字符识别、情绪检测、文本内容提取、面部识别等31个视觉实战项目,助力快速学校计算机视觉。

下载3:OpenCV实战项目20讲
小白学视觉公众号后台回复:OpenCV实战项目20讲即可下载含有20个基于OpenCV实现20个实战项目,实现OpenCV学习进阶。

交流群


欢迎加入公众号读者群一起和同行交流,目前有SLAM、三维视觉、传感器自动驾驶、计算摄影、检测、分割、识别、医学影像、GAN算法竞赛等微信群(以后会逐渐细分),请扫描下面微信号加群,备注:”昵称+学校/公司+研究方向“,例如:”张三 + 上海交大 + 视觉SLAM“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进入相关微信群。请勿在群内发送广告,否则会请出群,谢谢理解~


小白学视觉
哈工大在读博士的公众号,《OpenCV 4快速入门》的作者,面向初学者介绍计算机视觉基础知识、OpenCV使用、SLAM技术,深度学习等内容。
 最新文章