Skip to content

Latest commit

 

History

History
130 lines (100 loc) · 4.67 KB

File metadata and controls

130 lines (100 loc) · 4.67 KB

YOLO 数据格式

概述

YOLO(You Only Look Once)是一种流行的目标检测和实例分割算法,其数据格式被广泛用于训练和评估模型。YOLO格式使用简单的文本文件存储标注信息,每个图像对应一个标签文件。

核心特点

  • 每图一标签:每个图像(如 image.jpg)对应一个同名的 .txt 标签文件(如 image.txt)。
  • 归一化坐标:所有坐标值均归一化到 [0, 1] 区间,相对于图像的宽度和高度。
  • 独立的类别文件:类别名称存储在一个独立的文本文件(如 classes.names)中,每行一个类别。
  • 支持检测与分割
    • 检测格式:使用边界框(bounding box)表示目标。
    • 分割格式:使用多边形(polygon)顶点表示目标的精确轮廓。

标签结构

标签文件(.txt

标签文件是一个纯文本文件,每行代表图像中的一个标注实例。每行的格式取决于标注类型:

1. 检测格式(Bounding Box)

class_id x_center y_center width height
  • class_id:整数,表示目标的类别索引(从 0 开始)。
  • x_center:浮点数,边界框中心点的 x 坐标(归一化)。
  • y_center:浮点数,边界框中心点的 y 坐标(归一化)。
  • width:浮点数,边界框的宽度(归一化)。
  • height:浮点数,边界框的高度(归一化)。

归一化公式

x_center = (x_min + width/2) / image_width
y_center = (y_min + height/2) / image_height
width = bbox_width / image_width
height = bbox_height / image_height

2. 分割格式(Polygon)

class_id x1 y1 x2 y2 ...
  • class_id:整数,表示目标的类别索引(从 0 开始)。
  • x1 y1 x2 y2 ...:一系列浮点数,表示多边形顶点的归一化坐标,顺序为 x1, y1, x2, y2, ...
  • 至少需要 3 个点(6个坐标值)才能构成一个有效的多边形。

归一化公式

x_i = original_x_i / image_width
y_i = original_y_i / image_height

类别文件(.names

类别文件是一个纯文本文件,每行一个类别名称,顺序与 class_id 对应。

示例

person
car
bicycle
traffic light

示例

示例图像

  • 图像文件:image.jpg(尺寸:640×480 像素)

检测格式示例

标签文件 image.txt

0 0.512500 0.400000 0.175000 0.300000
1 0.200000 0.600000 0.100000 0.150000

解释

  • 第一行:类别 0(person),中心点位于 (0.5125*640, 0.4*480) = (328, 192),宽度 0.175*640=112,高度 0.3*480=144
  • 第二行:类别 1(car),中心点位于 (0.2*640, 0.6*480) = (128, 288),宽度 0.1*640=64,高度 0.15*480=72

分割格式示例

标签文件 image.txt

0 0.3 0.2 0.5 0.2 0.5 0.6 0.3 0.6

解释

  • 类别 0(person),多边形顶点(归一化):(0.3,0.2), (0.5,0.2), (0.5,0.6), (0.3,0.6)
  • 对应原始坐标(640×480):(192,96), (320,96), (320,288), (192,288)

类别文件示例

classes.names

person
car
bicycle
traffic light

坐标系统

归一化坐标

YOLO 使用归一化坐标,使标注与图像尺寸无关。归一化坐标的计算方式为:

normalized_x = original_x / image_width
normalized_y = original_y / image_height

边界框表示

  • 原始格式[x_min, y_min, width, height],其中 x_min, y_min 为左上角坐标。
  • YOLO 格式[x_center, y_center, width, height],均为归一化值。

多边形表示

  • 多边形顶点按顺序列出,形成闭合区域。
  • 坐标值必须为偶数个(每对表示一个点)。

注意事项

  1. 坐标范围:归一化坐标应在 [0, 1] 范围内,超出范围的坐标可能被截断或导致错误。
  2. 图像尺寸:在读取标签时通常需要图像的实际尺寸(宽度、高度)以进行坐标反归一化。
  3. 分割标注:分割格式要求至少 3 个点(6个坐标值)。如果点数不足,该标注可能被视为无效。
  4. 类别索引class_id 必须与类别文件中的行号对应(从 0 开始计数)。如果索引超出范围,标注可能被忽略。
  5. 文件编码:建议使用 UTF-8 编码保存标签文件和类别文件,以确保兼容性。

参考