数据集格式
这个功能解决什么问题
创建数据集需要上传一个 ZIP 压缩包,但 ZIP 内部怎么组织目录、标注文件怎么写,平台有一套明确的要求。本页说明 VortLab 支持的四种数据集格式及其目录结构,帮助你提前准备合规的 ZIP 包,避免上传后校验失败。
支持的格式
- YOLO 格式(推荐):平台原生支持,识别最准确。
- COCO 格式:常见于公开数据集,导入时自动转换为 YOLO。
- VOC 格式:基于 XML 的标注格式,导入时自动转换为 YOLO。
- 纯图片:只有图片没有标注,作为无标签数据导入。
上传后系统会自动识别 ZIP 内的格式,无需手动声明。识别完成后,COCO 和 VOC 会在后台自动转换成 YOLO 格式存储。
格式对比
| 字段 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
YOLO | 格式 | 可选 | 推荐使用 | 包含 classes.txt、train/images、train/labels 等目录;平台原生支持,识别最准确,无需转换。 |
COCO | 格式 | 可选 | — | 包含 images 目录和含 images / annotations / categories 字段的 JSON 标注文件;导入时自动转换为 YOLO 格式。 |
VOC | 格式 | 可选 | — | 包含 JPEGImages 目录和 Annotations/*.xml 标注文件;导入时自动转换为 YOLO 格式。 |
纯图片 | 格式 | 可选 | — | 仅图片无标注;作为无标签图片导入,后续可在标注工作台补充标注。 |
YOLO 格式目录结构(推荐)
推荐使用以下目录结构组织 ZIP 包。train / val / test 三个子集可以只提供其中一两个,但每个子集内部的 images/ 和 labels/ 目录需要成对出现。
dataset.zip
├── classes.txt # 每行一个类别名,行号即类别 ID(从 0 开始)
├── dataset.yaml # 可选,平台会以 classes.txt 为准
├── train/
│ ├── images/ # 图片文件(jpg / jpeg / png / bmp / webp)
│ └── labels/ # 标注文件(txt)
├── val/
│ ├── images/
│ └── labels/
└── test/
├── images/
└── labels/

classes.txt 要求
- 文件名固定为
classes.txt,放在 ZIP 根目录。 - 每行一个类别名,行号即类别 ID(第一行为 0,第二行为 1,以此类推)。
- 缺失
classes.txt不会报错,系统会自动生成一个默认类别(默认类别名为object),但这样无法正确还原你标签里的类别含义。 - 建议始终提供
classes.txt,确保类别名和类别 ID 的对应关系正确。
classes.txt 示例:
person
car
bicycle
traffic_light
上面这份文件表示:类别 0 = person,类别 1 = car,类别 2 = bicycle,类别 3 = traffic_light。标签文件里写的 class_id 必须与这里的行号一一对应。
支持的图片扩展名
数据集导入时识别的图片扩展名为:jpg、jpeg、png、bmp、webp。
其他扩展名(如 tif、tiff、gif)在数据集导入流程中不会被识别。如果你的原始数据是其他格式,请先转换成上述五种之一再打包。
标注文件格式说明
YOLO 格式的标注文件是纯文本(.txt),每个图片对应一个同名 .txt 文件,放在对应的 labels/ 目录下。不同任务类型的标注行格式不同,不能混用。
- 检测(detect):每行
class_id x_center y_center width height,所有坐标都是归一化到 0 到 1 之间的相对值。 - 实例分割(segment):每行
class_id x1 y1 x2 y2 ... xn yn,归一化的多边形顶点坐标,每个实例至少 3 个点(6 个数值)。 - 旋转框(obb):每行
class_id后跟 8 个坐标值(4 个角点的归一化坐标)。 - 姿态(pose):边界框后跟关键点坐标。
- 同一个数据集里不能混用不同任务类型的标注格式,否则训练或校验会失败。
检测标签示例(一行代表一个目标):
0 0.512 0.433 0.224 0.178
1 0.207 0.612 0.095 0.141
实例分割标签示例(一行代表一个多边形):
0 0.10 0.20 0.30 0.20 0.35 0.80 0.05 0.75
COCO 和 VOC 自动转换
- 如果你已有 COCO 或 VOC 格式的数据,不需要手动转换,直接按原格式打包上传即可。
- 系统会在导入时自动识别并转换为 YOLO 格式存储。
- 转换过程中页面会显示转换进度,转换完成后类别名、图片数、标注数都会重新统计。
- 转换是单向的:导入后数据集内部统一以 YOLO 格式存储,原始 COCO / VOC 文件不再保留。
纯图片数据
如果你的 ZIP 包里只有图片、没有任何标注文件,系统会把它识别为纯图片数据:
- 所有图片会被收集到
train/images/下。 - 系统会生成一个默认类别(默认类别名为
object)。 - 这类数据适合后续用标注工作台补充标注,再发布版本用于训练。
常见问题
最常见的原因是目录层级不对:图片和标签必须分别放在 images/ 和 labels/ 子目录下,而不是直接堆在 ZIP 根目录或 train/ 下。请对照上面的 YOLO 目录结构示例调整。
标签文件里的 class_id 必须严格对应 classes.txt 的行号(从 0 开始)。如果标签里出现了 class_id = 5 但 classes.txt 只有 3 行,校验会报错。请在打包前确认两者一致。
可以。train/、val/、test/ 三个子集可以同时存在于同一个 ZIP 里,也可以只提供 train/。如果只上传了训练集又想划分验证集,可以在创建数据集时勾选「启用自动分割」让平台自动划分。