[YOLOv8] - YOLO数据集格式介绍和案例

YOLO (You Only Look Once) 是一种目标检测算法,它使用了一个单独的神经网络来同时识别图像中的多个对象。它可以支持一下多种的训练数据集的格式。其中YOLO数据集格式是非常常用的一种。

YOLO DataSet Format - Ultralytics YOLOv8 Docs

YOLO数据集格式

YOLO数据集的格式主要包括以下几部分:

  • 图像文件: 这是数据集中的图像文件,通常是jpg或png格式。
  • 标注文件: 这是一个文本文件,包含了每张图像中目标对象的类别和位置信息。
  • 类别文件: 这是一个文本文件,包含了数据集中所有目标对象的类别信息。

[YOLOv8] - YOLO数据集格式介绍和案例_第1张图片

 注意:除扩展名外,标注文件的名称必须和图像的名称保持一致哦。

标注文件格式

主要包含了以下内容:

  • 每个目标对象的类别编号
  • 目标对象在图像中的中心位置 (x,y)
  • 目标对象的宽度和高度 (w,h)

[YOLOv8] - YOLO数据集格式介绍和案例_第2张图片备注:

1) 列1 - 目标类别id ,  列2 - 目标中心位置x, 列3 - 目标中心位置y, 列4 - 目标宽度w,列5 - 目标高度h。

2)x,y,w,h是小于1的浮点数,因为是经过对图像进行了归一化处理得到的值,也就是目标的真实的x,w值除以图像的宽度,y,h除以图像的高度。

类别文件格式

主要包含了以下内容:

  • 每个类别的编号
  • 每个类别的名称

[YOLOv8] - YOLO数据集格式介绍和案例_第3张图片

 备注:一行代表一个类别,行号代表类别id,比如normal是类别名称,它在第四行,那么它的类别id为3(索引从0开始),比如上面的显示的图像的标注文件,有2个类别为normal的目标。

一点小思考

YOLO的类别文件一行代表一个类别名称,行号代表类别id,这样似乎不能够很好的描述数据集的类别信息。我们可以考虑使用classes.json文件来描述数据集的类别信息:

{
  "categories": [
    {
      "id": 0,
      "name": "black_hole",
      "zh_name": "黑孔"
    },
    {
      "id": 1,
      "name": "bubble",
      "zh_name": "气泡"
    },
    {
      "id": 2,
      "name": "dip",
      "zh_name": "凹陷"
    },
    {
      "id": 3,
      "name": "normal",
      "zh_name": "正常",
    },
    {
      "id": 4,
      "name": "others",
      "zh_name": "其它"
    },
    {
      "id": 5,
      "name": "unclean",
      "zh_name": "研磨不净"
    }
  ],
  "info": {
    "year": 2023,
    "version": "1.0"
  }
}

这样方便我们通过classes.json文件生成classes.txt用于训练,呈现时使用中文标签。

你可能感兴趣的:(YOLO,YOLO,数据集格式)