1. 引言
YOLO(You Only Look Once)系列算法是目前目标检测领域应用最广泛的模型之一。无论是训练、验证还是部署,理解 YOLO 标准数据集的格式都是第一步。本文将从目录结构、标注文件、类别文件、配置文件等几个方面,系统梳理 YOLO 标准数据集的格式规范。
2. 数据集目录结构
YOLO 标准数据集通常采用以下目录结构,将图片和标注文件按训练集、验证集、测试集分开存放:
dataset/ ├── images/ │ ├── train/ │ ├── val/ │ └── test/ ├── labels/ │ ├── train/ │ ├── val/ │ └── test/ ├── classes.txt └── data.yaml其中images目录存放原始图片,labels目录存放与图片一一对应的标注文件,classes.txt记录类别名称,data.yaml是数据集配置文件。
3. 图片文件
YOLO 对图片格式没有严格限制,常见的.jpg、.png、.bmp等格式均可使用。图片文件名与对应的标注文件名必须保持一致(仅扩展名不同),例如:
images/train/000001.jpg labels/train/000001.txt4. 标注文件格式
YOLO 的标注文件是纯文本文件,每一行代表一个目标对象,格式为:
class_id x_center y_center width height其中各字段含义如下:
- class_id:目标所属类别的编号,从 0 开始,对应
classes.txt中的类别顺序。 - x_center:目标中心点的 x 坐标,归一化到 0~1 之间。
- y_center:目标中心点的 y 坐标,归一化到 0~1 之间。
- width:目标的宽度,归一化到 0~1 之间。
- height:目标的高度,归一化到 0~1 之间。
归一化公式为:
x_center = (x_min + x_max) / 2 / image_width y_center = (y_min + y_max) / 2 / image_height width = (x_max - x_min) / image_width height = (y_max - y_min) / image_height5. 标注文件示例
假设一张 640×480 的图片中包含一个类别编号为 0 的目标,其边界框左上角坐标为 (100, 80),右下角坐标为 (300, 240),则标注文件内容为:
0 0.3125 0.3333 0.3125 0.3333计算过程如下:
x_center = (100 + 300) / 2 / 640 = 0.3125 y_center = (80 + 240) / 2 / 480 = 0.3333 width = (300 - 100) / 640 = 0.3125 height = (240 - 80) / 480 = 0.33336. 类别文件 classes.txt
classes.txt是一个纯文本文件,每行一个类别名称,行号即类别编号(从 0 开始)。例如:
person car bicycle上述文件中,person的编号为 0,car的编号为 1,bicycle的编号为 2。
7. 配置文件 data.yaml
YOLO 训练时通常使用一个 YAML 配置文件来指定数据集路径和类别信息,内容示例如下:
train: dataset/images/train val: dataset/images/val test: dataset/images/test nc: 3 names: ['person', 'car', 'bicycle']其中train、val、test分别指定训练集、验证集、测试集的图片路径,nc表示类别总数,names是类别名称列表。
8. 常见注意事项
- 标注文件中的坐标必须归一化到 0~1 之间,不能使用像素坐标。
- 如果图片中没有目标对象,对应的标注文件应为空文件。
- 类别编号必须从 0 开始连续编号,不能跳号。
- 图片与标注文件的文件名必须完全一致(仅扩展名不同)。
- 训练集、验证集、测试集的图片和标注文件要分别放在对应的子目录中。
9. 总结
YOLO 标准数据集的格式核心在于:图片与标注文件一一对应,标注文件采用归一化的中心点坐标和宽高表示边界框,类别通过编号映射到类别文件。掌握这一格式规范,是顺利进行 YOLO 模型训练和数据预处理的基础。