Ultralytics YOLO27:
Get Started

目标检测数据集概览#

训练稳健且准确的目标检测模型需要全面的数据集。本指南介绍了多种与 Ultralytics YOLO 模型兼容的数据集格式,并深入讲解其结构、用法以及不同格式之间的转换方法。

支持的数据集格式#

Ultralytics YOLO 格式#

Ultralytics YOLO 格式是一种数据集配置格式,可用于定义数据集根目录、训练/验证/测试图像目录的相对路径或包含图像路径的 *.txt 文件,以及类别名称字典。示例如下:

ultralytics/cfg/datasets/coco8.yaml
# Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license

# COCO8 dataset (first 8 images from COCO train2017) by Ultralytics
# Documentation: https://docs.ultralytics.com/datasets/detect/coco8
# Example usage: yolo train data=coco8.yaml
# parent
# ├── ultralytics
# └── datasets
#     └── coco8 ← downloads here (1 MB)

# Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
path: coco8 # dataset root dir
train: images/train # train images (relative to 'path') 4 images
val: images/val # val images (relative to 'path') 4 images
test: # test images (optional)

# Classes
names:
  0: person
  1: bicycle
  2: car
  3: motorcycle
  4: airplane
  5: bus
  6: train
  7: truck
  8: boat
  9: traffic light
  10: fire hydrant
  11: stop sign
  12: parking meter
  13: bench
  14: bird
  15: cat
  16: dog
  17: horse
  18: sheep
  19: cow
  20: elephant
  21: bear
  22: zebra
  23: giraffe
  24: backpack
  25: umbrella
  26: handbag
  27: tie
  28: suitcase
  29: frisbee
  30: skis
  31: snowboard
  32: sports ball
  33: kite
  34: baseball bat
  35: baseball glove
  36: skateboard
  37: surfboard
  38: tennis racket
  39: bottle
  40: wine glass
  41: cup
  42: fork
  43: knife
  44: spoon
  45: bowl
  46: banana
  47: apple
  48: sandwich
  49: orange
  50: broccoli
  51: carrot
  52: hot dog
  53: pizza
  54: donut
  55: cake
  56: chair
  57: couch
  58: potted plant
  59: bed
  60: dining table
  61: toilet
  62: tv
  63: laptop
  64: mouse
  65: remote
  66: keyboard
  67: cell phone
  68: microwave
  69: oven
  70: toaster
  71: sink
  72: refrigerator
  73: book
  74: clock
  75: vase
  76: scissors
  77: teddy bear
  78: hair drier
  79: toothbrush

# Download script/URL (optional)
download: https://github.com/ultralytics/assets/releases/download/v0.0.0/coco8.zip

train、val 和 test 均可接受目录、目录列表,或每行列出一个图像路径的 *.txt 文件(以 ./ 开头的路径相对于 *.txt 文件解析)。*.txt 文件适用于从目录中选取部分数据进行训练、跳过未标注图像,或将多个来源的图像合并到一个数据集划分中。

将图像路径写入 `*.txt` 文件
path: datasets/coco8 # dataset root
train: train.txt # a directory, a list e.g. [images/a, images/b], or a *.txt file
val: val.txt
names:
  0: person

此格式的标签应导出为 YOLO 格式,每张图像对应一个 *.txt 文件。如果图像中没有目标,则无需提供 *.txt 文件。*.txt 文件应采用 class x_center y_center width height 格式,每个目标占一行。边界框坐标必须采用归一化 xywh 格式(范围为 0 到 1)。如果边界框坐标以像素为单位,则应将 x_center 和 width 除以图像宽度,将 y_center 和 height 除以图像高度。类别编号从 0 开始。

YOLO labeled image with bounding boxes on persons and tie

上图对应的标签文件包含 2 个人(类别 0)和 1 条领带(类别 27):

YOLO format label file with normalized coordinates

使用 Ultralytics YOLO 格式时,请按照下方的 COCO8 数据集示例组织训练集和验证集中的图像及标签。

YOLO dataset directory structure with train and val folders

使用示例#

以下介绍如何使用 YOLO 格式的数据集训练模型:

示例
from ultralytics import YOLO

# 加载模型
model = YOLO("yolo26n.pt")  # 加载预训练模型(推荐用于训练)

# 训练模型
results = model.train(data="coco8.yaml", epochs=100, imgsz=640)

Ultralytics NDJSON 格式#

NDJSON(按行分隔的 JSON)格式提供了另一种为 Ultralytics YOLO 模型定义数据集的方式。此格式将数据集元数据和标注存储在一个文件中,每行包含一个独立的 JSON 对象。

NDJSON 数据集文件包含:

  1. 数据集记录(第一行):包含数据集元数据,包括任务类型、类别名称和一般信息
  2. 图像记录(后续各行):包含单张图像的数据,包括尺寸、标注和文件路径
NDJSON 示例
{
    "type": "dataset",
    "task": "detect",
    "name": "Example",
    "description": "COCO NDJSON example dataset",
    "url": "https://platform.ultralytics.com/user/datasets/example",
    "class_names": { "0": "person", "1": "bicycle", "2": "car" },
    "bytes": 426342,
    "version": 0,
    "created_at": "2024-01-01T00:00:00Z",
    "updated_at": "2025-01-01T00:00:00Z"
}

自定义图像元数据#

每条图像记录都可以包含一个 metadata JSON 对象,用于存储应用特定的上下文信息,例如拍摄条件、设备标识符或审核状态。支持嵌套值。导入 Ultralytics Platform 后,元数据会与对应图像一同存储,并可在图像的全屏信息面板中查看或编辑。

{
    "type": "image",
    "file": "airbus-wing.jpg",
    "url": "https://example.com/airbus-wing.jpg",
    "split": "train",
    "metadata": {
        "aircraft": { "family": "A350", "section": "wing" },
        "inspectionStatus": "reviewed"
    }
}

Platform 将顶层元数据键的长度限制为 128 个字符,将每张图像序列化后的元数据对象限制为 500,000 个字符,并将单次 NDJSON 导入中的有效元数据总量限制为 500,000 个字符。

使用示例#

要在 YOLO26 中使用 NDJSON 数据集,只需指定 .ndjson 文件的路径:

示例
from ultralytics import YOLO

# 加载模型
model = YOLO("yolo26n.pt")

# 使用 NDJSON 数据集进行训练
results = model.train(data="path/to/dataset.ndjson", epochs=100, imgsz=640)

NDJSON 格式的优势#

  • 单文件:所有数据集信息都包含在一个文件中
  • 流式处理:无需将所有数据加载到内存,即可逐行处理大型数据集
  • 云集成:支持远程图像 URL,可用于云端训练
  • 可扩展:便于添加自定义元数据字段
  • 版本控制:单文件格式与 git 和版本控制系统配合良好

支持的数据集#

以下列出了受支持的数据集及其简要说明。其中大多数数据集也托管在 Ultralytics Platform 上,你可以浏览图像和标注、查看数据集统计信息,并克隆数据集用于云端训练。

  • African-wildlife:一个展示非洲野生动物图像的数据集,包括水牛、大象、犀牛和斑马。
  • Argoverse:Argoverse-HD 2D 检测数据集,包含 54,446 张城市自动驾驶图像,涵盖 8 类道路目标。
  • Brain-tumor:一个用于脑肿瘤检测的数据集,包含 MRI 或 CT 扫描图像,并提供肿瘤是否存在、位置及特征等详细信息。
  • COCO:上下文中的常见物体(COCO)是一个大规模目标检测、分割和图像描述数据集,包含 80 个目标类别。
  • COCO8:从 COCO train2017 的前 8 张图像中选取的较小子集,其中 4 张用于训练,4 张用于验证,适合快速测试。
  • COCO8-Grayscale:将 RGB 转换为灰度图像后生成的 COCO8 灰度版本,适用于单通道模型评估。
  • COCO8-Multispectral:通过插值 RGB 波长生成的 COCO8 10 通道多光谱版本,适用于具备光谱感知能力的模型评估。
  • COCO12-Formats:一个包含 12 张图像的测试数据集,涵盖 12 种受支持的图像格式(AVIF、BMP、DNG、HEIC、JP2、JPEG、JPG、MPO、PNG、TIF、TIFF、WebP),用于验证图像加载流程。
  • COCO16:从 COCO train2017 的前 16 张图像中选取的子集(8 张训练图像 + 8 张验证图像),适用于快速测试。
  • COCO32:从 COCO train2017 的前 32 张图像中选取的子集(16 张训练图像 + 16 张验证图像),适用于快速测试。
  • COCO64:从 COCO train2017 的前 64 张图像中选取的子集(32 张训练图像 + 32 张验证图像),适用于快速测试。
  • COCO128:从 COCO train2017 的前 128 张图像中选取的较小子集,适用于测试。
  • Construction-PPE:一个展示建筑工地工人及其标注安全装备的数据集,包括安全帽、背心、手套、靴子和护目镜;还包含 no_helmet、no_goggle 等缺失装备标注,可用于真实环境中的合规监测。
  • Global Wheat 2020:一个包含 2020 年全球小麦挑战赛所用麦穗图像的数据集。
  • HomeObjects-3K:一个包含室内家居用品的数据集,如床、椅子、电视等,非常适合智能家居自动化、机器人、增强现实和房间布局分析等应用。
  • KITTI:一个包含真实驾驶场景以及立体视觉、LiDAR 和 GPS/IMU 数据的数据集,在此用于2D 目标检测任务,例如识别城市、乡村和高速公路环境中的汽车、行人和骑行者。
  • LVIS:一个大规模目标检测和实例分割数据集,包含 1,203 个目标类别。
  • Medical-pills:一个包含药品图像的数据集,标注可用于药品质量保证、药片分类和法规合规等应用。
  • Objects365:一个高质量、大规模的目标检测数据集,包含 365 个目标类别和超过 170 万张训练图像。
  • OpenImagesV7:Google 提供的综合性数据集,包含 170 万张训练图像和 4.2 万张验证图像。
  • Roboflow 100:一个多样化的目标检测基准,包含涵盖七个图像领域的 100 个数据集,可用于全面评估模型。
  • Signature:一个包含各种文档图像及签名标注的数据集,可支持文档验证和欺诈检测研究。
  • SKU-110K:一个包含零售环境中密集目标检测数据集,拥有超过 11K 张图像和 170 万个边界框。
  • TT100K:探索清华-腾讯 100K (TT100K) 交通标志数据集,其中包含 16,817 张街景图像,涵盖 221 种标志类别,可用于稳健的检测和分类。
  • VisDrone:一个包含无人机拍摄图像中目标检测和多目标跟踪数据的数据集,拥有超过 1 万张图像和视频序列。
  • VOC:Pascal 视觉对象类别 (VOC) 数据集,用于目标检测和分割,包含 20 个目标类别和超过 11K 张图像。
  • xView:一个用于俯视图像目标检测的数据集,包含 60 个目标类别和超过 100 万个已标注目标。

添加你自己的数据集#

如果你有自己的数据集,并希望使用它以 Ultralytics YOLO 格式训练检测模型,请确保它符合上文“Ultralytics YOLO 格式”中指定的格式。将标注转换为所需格式,并在 YAML 配置文件中指定路径、类别数量和类别名称。

转换或迁移标签格式#

将 COCO 数据集格式转换为 YOLO 格式#

你可以使用以下代码片段,轻松地将标签从常用的 COCO 数据集格式转换为 YOLO 格式:

示例
from ultralytics.data.converter import convert_coco

convert_coco(labels_dir="path/to/coco/annotations/")

此转换工具可用于将 COCO 数据集或任何采用 COCO 格式的数据集转换为 Ultralytics YOLO 格式。该过程会将基于 JSON 的 COCO 标注转换为更简洁的文本格式 YOLO 标注,使其兼容 Ultralytics YOLO 模型。如需了解完整工作流程,包括类别 ID 映射、目录布局以及分割或姿态标注,请参阅将 COCO 标注转换为 YOLO。

请务必仔细检查你想使用的数据集是否与你的模型兼容,并遵循必要的格式约定。格式正确的数据集对于成功训练目标检测模型至关重要。

接下来做什么#

整理好数据集后,开始训练模型。不确定从哪个预训练模型开始?在 YOLO26 模型系列中比较各个选项。

常见问题#

  • Ultralytics YOLO 格式是一种结构化配置,用于在训练项目中定义数据集。你需要设置训练、验证和测试图像及其对应标签的路径。例如:

    # Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license
    
    # COCO8 dataset (first 8 images from COCO train2017) by Ultralytics
    # Documentation: https://docs.ultralytics.com/datasets/detect/coco8
    # Example usage: yolo train data=coco8.yaml
    # parent
    # ├── ultralytics
    # └── datasets
    #     └── coco8 ← downloads here (1 MB)
    
    # Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
    path: coco8 # dataset root dir
    train: images/train # train images (relative to 'path') 4 images
    val: images/val # val images (relative to 'path') 4 images
    test: # test images (optional)
    
    # Classes
    names:
      0: person
      1: bicycle
      2: car
      3: motorcycle
      4: airplane
      5: bus
      6: train
      7: truck
      8: boat
      9: traffic light
      10: fire hydrant
      11: stop sign
      12: parking meter
      13: bench
      14: bird
      15: cat
      16: dog
      17: horse
      18: sheep
      19: cow
      20: elephant
      21: bear
      22: zebra
      23: giraffe
      24: backpack
      25: umbrella
      26: handbag
      27: tie
      28: suitcase
      29: frisbee
      30: skis
      31: snowboard
      32: sports ball
      33: kite
      34: baseball bat
      35: baseball glove
      36: skateboard
      37: surfboard
      38: tennis racket
      39: bottle
      40: wine glass
      41: cup
      42: fork
      43: knife
      44: spoon
      45: bowl
      46: banana
      47: apple
      48: sandwich
      49: orange
      50: broccoli
      51: carrot
      52: hot dog
      53: pizza
      54: donut
      55: cake
      56: chair
      57: couch
      58: potted plant
      59: bed
      60: dining table
      61: toilet
      62: tv
      63: laptop
      64: mouse
      65: remote
      66: keyboard
      67: cell phone
      68: microwave
      69: oven
      70: toaster
      71: sink
      72: refrigerator
      73: book
      74: clock
      75: vase
      76: scissors
      77: teddy bear
      78: hair drier
      79: toothbrush
    
    # Download script/URL (optional)
    download: https://github.com/ultralytics/assets/releases/download/v0.0.0/coco8.zip

    标签以 *.txt 文件保存,每张图像对应一个文件,格式为 class x_center y_center width height,使用归一化坐标。详细指南请参阅 COCO8 数据集示例。

  • 你可以使用 Ultralytics 转换工具将 COCO 数据集转换为 YOLO 格式。以下是一个快速方法:

    from ultralytics.data.converter import convert_coco
    
    convert_coco(labels_dir="path/to/coco/annotations/")

    此代码会将 COCO 标注转换为 YOLO 格式,从而与 Ultralytics YOLO 模型无缝集成。更多详情请参阅转换或迁移标签格式部分。

  • Ultralytics YOLO 支持多种数据集,包括:

    每个数据集页面都提供详细信息,介绍其结构和用法,助你高效训练 YOLO26。你可以在支持的数据集部分查看完整列表。

  • 要开始训练 YOLO26 模型,请确保数据集格式正确,并在 YAML 文件中定义路径。使用以下脚本开始训练:

    示例
    from ultralytics import YOLO
    
    model = YOLO("yolo26n.pt")  # 加载预训练模型
    results = model.train(data="path/to/your_dataset.yaml", epochs=100, imgsz=640)

    如需详细了解如何使用不同模式(包括 CLI 命令),请参阅用法部分。

  • Ultralytics 提供了大量示例和实用指南,介绍如何在各种应用中使用 YOLO26。你可以访问 Ultralytics 博客了解全面概述,其中包含案例研究、详细教程和社区故事,展示如何使用 YOLO26 进行目标检测、分割等任务。具体示例请查看文档中的预测模式页面。

评论