一、数据集介绍

本文数据集从网络下载得来,数据组织结构如下所示

在这里插入图片描述
images 存放所有将用于训练和验证的图片,示例如下
在这里插入图片描述
labels 为上述图片对应的YOLO格式的标签,文件名称要一致,示例如下:
在这里插入图片描述
lab.txt 记录标签索引对应的类别,示例如下
在这里插入图片描述

✅ YOLO 标签格式详解

YOLO 使用的是 归一化的边界框坐标(normalized coordinates),每一行代表一个目标对象,其格式如下:
<class_id> <center_x> <center_y> <width> <height>
各字段含义:

字段 类型 类型
class_id 整数 类别编号(从 0 开始,如 0 表示 “cap”,1 表示 “hard hat” 等
center_x 浮点数 边界框中心点的 x 坐标(相对于图像宽度归一化,范围 [0,1])
center_y 浮点数 边界框中心点的 y 坐标(相对于图像高度归一化,范围 [0,1])
width 浮点数 边界框的宽度(相对于图像宽度归一化)
height 浮点数 边界框的高度(相对于图像高度归一化)

📌 示例解析

以第一张图的标签为例,表示:

1 0.5110876451953538 0.412385643912375 0.8975712777191129 0.733286418015482

在这里插入图片描述
类别编号为 1:对应 lab.txt 中定义的 ‘hard hat’,即这是一个“安全帽”。
边界框中心坐标

  • center_x = 0.5111 → 图像宽度方向约 51% 的位置(接近中间)
  • center_y = 0.4124 → 图像高度方向约 41% 的位置(略偏上)

边界框尺寸

  • width = 0.8976 → 框的宽度占整张图像宽度的近 90%
  • height = 0.7333 → 框的高度占整张图像高度的约 73%

👉 这意味着这个“安全帽”的边界框几乎覆盖了图像的中央区域。

二、模型训练

下载Yolov13源码,如下图所示
在这里插入图片描述

2.1 划分训练集和验证集

使用 split.py 脚本,设置保存路径,图片路径和标签路径
在这里插入图片描述

2.2 创建数据集yaml文件

如下图所示,创建 satety-hat.yaml(名称任意), 设置 train.txt 和 val.txt 的保存路径,以及names与lab.txt的索引一致
在这里插入图片描述

2.3 训练

打开 main.py 脚本,设置预训练模型路径,数据配置文件路径,以及默认的 ultralytics/cfg/default.yaml 参数配置文件。
在这里插入图片描述
设置完成之后,即可右键开始训练在这里插入图片描述

训练过程中要注意的地方

  • Arial.ttf :刚开始训练的时候,模型会自动下载这个字体文件,但由于网络原因,有可能会下载失败,因此这里提供了这个文件,需要放到模型训练时候提示的路径中,笔者这里的路径为 /root/.config/yolov13
  • default.yaml:刚开始训练的时候,可能会提示错误TypeError: ‘workspace=None’ is of invalid type str. Valid ‘workspace’ types are int (i.e. ‘workspace=0’) or float (i.e. ‘workspace=0.5’)
    这是因为在某些版本的 ultralytics 中,如果传入的是字符串 “None” 或者类型不对(比如不是 int 或 float),就会抛出类似错误,这时候按照提示修改workspace=0即可
    在这里插入图片描述

三、预测

打开 predict.py,设置模型训练完成后的路径
在这里插入图片描述
以及在 ultralytics/cfg/default.yaml 修改 source 路径为预测图片路径,如下图所示
在这里插入图片描述
预测结果示例:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
为了小伙伴们能够,更好的学习实践,本文已将训练代码和数据集打包上传,供小伙伴们学习。获取方式如下:
关注公众哈【小白深度学习之路】,发送【yolov13】即可。

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐