type
status
date
slug
summary
tags
category
icon
password
Last edited time
Oct 5, 2024 08:52 PM
😀
通过Ultralytics库使用最新的YOLO11,并通过口罩检测的场景迁移学习出自己的YOLO模型

📝 主旨内容

YOLO11

YOLO11是一种尖端、最先进(SOTA)模型,它建立在先前YOLO版本成功的基础上,并引入了新功能和改进,以进一步提高性能和灵活性。YOLO11的设计目标是快速、准确且易于使用,使其成为各种对象检测和跟踪、实例分割、图像分类和姿态估计任务的绝佳选择。
notion image

Ultralytics

ultralytics
ultralyticsUpdated Nov 18, 2024
Ultralytics是一个非常流行的计算机视觉库,它专注于目标检测,尤其是基于 YOLO(You Only Look Once)系列的模型。
notion image

安装ultralytics库

💡
安装前请先确保已经安装好适合本机的torch环境
notion image

目标检测示例

Ultralytics库提供了一些预训练的YOLO模型,你可以非常容易地加载并使用它们。以下是一个简单的推理示例,使用YOLO11模型来检测一张图片中的目标:
检测结果会保存在runs/detect/predict
notion image

目标追踪示例

检测结果会保存在runs/detect/trace
notion image
notion image

基于迁移学习训练自己的YOLO

首先,需要准备好数据,Ultralytics采用与YOLO格式相似的数据格式,通常以COCO风格的注释文件和相应的图片组成。

数据集准备

你需要准备以下文件结构:
  • images/ 文件夹存放你的训练和验证图片。
  • labels/ 文件夹存放每张图片的标签文件,格式为YOLO格式的txt文件。
每个标签文件包含的格式如下:
其中,x_centery_centerwidthheight 都是归一化的相对坐标。
下面以口罩数据集为案例(数据来源:Kagle)

训练自定义模型

在准备好数据集之后,你可以使用以下代码开始训练模型:
在这里,dataset.yaml 是一个描述数据集的配置文件,它包含了训练集、验证集和类别信息的路径。dataset.yaml 文件的内容如下:
  • trainval 分别指向训练集和验证集的图片文件夹。
  • nc 是类别的数量。
  • names 则是每个类别的名称列表。
训练参数说明
model.train 中,你可以调整不同的参数来优化训练效果:
  • epochs:训练的轮数。
  • imgsz:输入图像的大小,通常是 640 或 512。
  • batch:每批次处理的图片数量。
  • device:指定使用 GPU 或 CPU 训练(例如:'cuda:0''cpu')。
训练完成后,你可以使用验证数据集评估模型的表现。评估时,Ultralytics 库会自动计算精确度(Precision)、召回率(Recall)等关键指标。
这将输出mAP(mean Average Precision)、Precision 和 Recall 等评估结果。
notion image
notion image
notion image
notion image
notion image
notion image
notion image
notion image

导出模型

训练完成后,你可以将模型导出为不同的格式,以便在不同设备上部署和使用:
Ultralytics支持导出到 ONNX、CoreML、TensorRT 等多种格式,便于在各种设备上进行推理加速。
加载训练好的模型进行推理(注意模型路径)
原始图像
原始图像
原始模型推理结果
原始模型推理结果
mask模型推理结果
mask模型推理结果

为什么仅用数百张图片就能奏效

YOLO 模型易于进行迁移学习,主要是因为模型已经在大规模的通用数据集上学习到了高度可重用的特征。当将其迁移到新的数据集时,只需要微调最后几层或少量权重即可,这种方法能有效地节省计算资源和时间,同时还能在新的任务中获得很好的表现。这就是为什么在 YOLO 模型上进行迁移学习如此轻松且有效的原因。

🤗 总结归纳

为什么目标检测深受喜爱(应用)

  1. 低代码
  1. 多场景
  1. 低算力
  1. 训练时间短
  1. 数据量低

口罩数据集处理代码

xml文件转换成txt文件

划分训练集和验证集

📎 参考文章

目标检测——R-CNN系列GPU算力平台
Loading...