首页
/ Ultralytics YOLO 数据集体系详解:七大视觉任务数据集、data.yaml 配置与数据集贡献全流程

Ultralytics YOLO 数据集体系详解:七大视觉任务数据集、data.yaml 配置与数据集贡献全流程

2026-09-04 17:05:34作者:曹令琨Iris

本文为 Ultralytics 仓库中数据集总览文档(docs/en/datasets/index.md)的完整技术扩充。你将了解 Ultralytics 覆盖检测、实例分割、语义分割、深度估计、图像分类、姿态估计与 OBB(旋转框)七大任务的全部内置数据集清单,掌握各任务 data.yaml 配置文件的字段语义与源码解析方式,并能独立完成一个新数据集的目录组织、图片压缩、打包与贡献(PR)全流程。

一、数据集体系总览:任务、数据集与文档索引

Ultralytics 内置支持多种主流计算机视觉数据集,覆盖以下任务类型(每个任务均提供独立的数据集索引页):

  • 目标检测(Object Detection):在图像中检测并定位物体,为每个物体绘制边界框。索引页:docs/en/datasets/detect/index.md
  • 实例分割(Instance Segmentation):以像素级精度识别并定位物体,且能区分同一类别的不同实例(与只给每个像素打类别标签的语义分割不同)。索引页:docs/en/datasets/segment/index.md
  • 语义分割(Semantic Segmentation):为图像中每个像素分配类别标签,生成稠密场景图,适用于自动驾驶、场景解析、地表覆盖制图等。索引页:docs/en/datasets/semantic/index.md
  • 深度估计(Depth Estimation):单目深度估计任务,从单张 RGB 图像预测每像素深度图(单位:米),支撑 3D 场景重建、机器人导航与 AR/VR 应用。索引页:docs/en/datasets/depth/index.md
  • 图像分类(Image Classification):根据图像视觉内容将其归入一个或多个预定义类别。索引页:docs/en/datasets/classify/index.md
  • 姿态估计(Pose Estimation):确定物体相对于相机或世界坐标系的姿态,核心是识别人体或动物等物体上的关键点(关节点)。索引页:docs/en/datasets/pose/index.md
  • 旋转框检测(Oriented Bounding Boxes, OBB):使用旋转边界框检测图像中具有任意朝向的物体,常用于航拍与卫星影像;相比传统轴对齐框,OBB 能更好地贴合各种朝向的物体。索引页:docs/en/datasets/obb/index.md

此外,Track 模式直接运行在检测、分割、姿态与 OBB 模型之上,不需要跟踪器专属的训练数据集(见 docs/en/datasets/track/index.md)。

二、目标检测数据集

目标检测类数据集(均为 docs/en/datasets/detect/index.md 下的完整清单):

数据集 文档页 简介
African-wildlife detect/african-wildlife.md 非洲野生动物图像,含水牛、大象、犀牛、斑马等
Argoverse detect/argoverse.md 城市环境的 3D 跟踪与运动预测数据,标注丰富
Brain-tumor detect/brain-tumor.md 脑部肿瘤检测,含 MRI/CT 扫描图像及肿瘤位置、特征信息
COCO detect/coco.md Common Objects in Context,大规模检测/分割/描述数据集,80 个类别
COCO8 detect/coco8.md COCO train 前 4 张 + val 前 4 张的子集,适合快速测试
COCO8-Grayscale detect/coco8-grayscale.md COCO8 的灰度版本(RGB 转灰度),用于单通道模型评估
COCO8-Multispectral detect/coco8-multispectral.md COCO8 的 10 通道多光谱版本(插值 RGB 波长),用于光谱感知模型评估
COCO128 detect/coco128.md COCO train2017 前 128 张图像子集,适合测试
Construction-PPE detect/construction-ppe.md 工地场景安全装备(头盔、反光背心、手套、靴子、护目镜)及缺失装备标注
Global Wheat 2020 detect/globalwheat2020.md 2020 全球小麦挑战赛麦穗图像数据集
HomeObjects-3K detect/homeobjects-3k.md 室内场景标注数据,含 12 种常见家居物品,适用于智能家居/机器人/AR
KITTI(新增) detect/kitti.md 自动驾驶数据集,含立体、LiDAR 与 GPS/IMU 输入,用于 2D 目标检测
LVIS detect/lvis.md 大规模检测/分割/描述数据集,1203 个类别
Medical-pills detect/medical-pills.md 药片标注图像,用于药品质检、分拣与合规
Objects365 detect/objects365.md 高质量大规模检测数据集,365 类、60 万+ 标注图像
OpenImagesV7 detect/open-images-v7.md 170 万训练图、4.2 万验证图的综合数据集
RF100 detect/roboflow-100.md 跨 7 个成像域的 100 个数据集基准,用于综合评估
Signature detect/signature.md 含签名标注的文档图像,支持身份验证与欺诈检测研究
SKU-110K detect/sku-110k.md 零售环境密集目标检测,1.1 万+ 图像、170 万个框
VisDrone detect/visdrone.md 无人机航拍检测与多目标跟踪数据,1 万+ 图像与视频序列
VOC detect/voc.md Pascal VOC,20 类、1.1 万+ 图像
xView detect/xview.md 俯视图影像检测,60 个类别、100 万+ 标注目标

三、实例分割、语义分割与深度估计数据集

实例分割数据集

docs/en/datasets/segment/index.md 下的数据集清单:

  • Carparts-segsegment/carparts-seg.md):面向车辆零部件识别的专用数据集,同时服务于检测与分割任务。
  • COCOsegment/coco.md):大规模检测/分割/描述数据集,20 万+ 标注图像。
  • COCO8-segsegment/coco8-seg.md):8 张 COCO 图像含分割标注的子集。
  • COCO128-segsegment/coco128-seg.md):128 张 COCO 图像含分割标注的子集。
  • Crack-segsegment/crack-seg.md):路面与墙体裂缝检测专用,支持检测与分割双任务。
  • Package-segsegment/package-seg.md):仓库/工业环境包裹识别,适配检测与分割应用。

语义分割数据集

docs/en/datasets/semantic/index.md 下的数据集清单:

深度估计数据集

docs/en/datasets/depth/index.md 下的数据集清单:

  • NYU Depth V2depth/nyu-depth-v2.md):标准室内深度基准,由 Microsoft Kinect v1 采集。
  • KITTIdepth/kitti.md):真实户外自动驾驶场景,含 Velodyne LiDAR 深度。
  • Depth8depth/depth8.md):8 张 SUN RGB-D 图像的精简子集,用于快速流水线检查。

四、图像分类、姿态估计与 OBB 数据集

图像分类数据集

docs/en/datasets/classify/index.md 下的数据集清单:

姿态估计数据集

docs/en/datasets/pose/index.md 下的数据集清单:

  • COCOpose/coco.md):含人体姿态标注的大规模数据集。
  • COCO8-posepose/coco8-pose.md):8 张含人体姿态标注的 COCO 子集。
  • Dog-posepose/dog-pose.md):约 8500 张犬类图像,每只狗 24 个关键点。
  • Hand-Keypointspose/hand-keypoints.md):2.6 万+ 张手部图像,每只手 21 个关键点。
  • Tiger-posepose/tiger-pose.md):263 张虎类图像,每只虎 12 个关键点。

OBB 数据集

docs/en/datasets/obb/index.md 下的数据集清单:

  • DOTA-v2obb/dota-v2.md):170 万实例、11268 张图像的航拍 OBB 数据集。
  • DOTA8obb/dota8.md):DOTAv1 前 8 张(4 训练/4 验证),适合快速测试。
  • DOTA128obb/dota128.md):128 张图像子集,规模与多样性兼顾。

五、data.yaml 配置文件:字段语义与源码级解析

每个内置数据集在 ultralytics/cfg/datasets/ 下都有对应的 *.yaml 配置文件,yolo CLI 与 Python API 通过 data=xxx.yaml 引用它们(例如 yolo train data=coco8.yaml)。结合仓库中的真实配置文件,各字段的语义如下:

通用字段:路径、划分与类别

coco8.yaml 为例:

path: coco            # 数据集根目录
train: images/train   # 训练图像(相对 'path'),4 张
val: images/val       # 验证图像(相对 'path'),4 张
test:                 # 测试图像(可选)

names:                # 类别表
  0: person
  1: bicycle
  2: car
  # ... 共 80 个 COCO 类别
download: https://github.com/ultralytics/assets/releases/download/v0.0.0/coco8.zip
  • path/train/val/test:支持三种写法——目录路径、图像列表文本文件(path/to/imgs.txt)、图像路径列表([path1, path2, ..])。完整的 coco.yaml 就采用了 train: train2017.txt 的列表文件写法,并附带下载脚本(download: 字段),先拉取标签再拉取 train2017.zipval2017.zip 图像包。
  • download:可选字段,支持 URL 或内嵌 Python 下载脚本;训练时数据集若缺失会按此字段自动下载解压。
  • 下载落盘位置:数据集默认下载到 Ultralytics 设置中的 datasets_dir 目录(见 ultralytics/utils/init.py"datasets_dir": str(datasets_root / "datasets")DATASETS_DIR 全局变量定义),各 yaml 头部注释中的 # parent └── datasets └── coco8 ← downloads here 树状图即描述该落盘结构。

任务专属字段

姿态估计——coco8-pose.yaml 额外定义了关键点相关字段:

kpt_shape: [17, 3]   # [关键点数量, 维度]:维度 2 为 (x,y),3 为 (x,y,visible)
flip_idx: [0, 2, 1, 4, 3, 6, 5, 8, 7, 10, 9, 12, 11, 14, 13, 16, 15]  # 水平翻转时的关键点重排索引
names:
  0: person
kpt_names:           # 每个类的关键点名称
  0:
    - nose
    - left_eye
    # ... 共 17 个人体关键点

语义分割——cityscapes8.yamlmasks_dir 指定语义掩码目录,并用 label_mapping 把源标签 ID 映射到训练 ID(不可参与训练的标签映射为 ignore_label,转换后变为 255):

path: cityscapes8
train: images/train
val: images/val
masks_dir: masks        # 语义掩码目录
names:
  0: road
  1: sidewalk
  # ... 共 19 个 Cityscapes 训练类
label_mapping:
  -1: ignore_label
  7: 0                   # 源标签 7 -> 训练类 0 (road)
  24: 11
  # ...

深度估计——depth8.yaml 使用 16 位 PNG 深度图,通过 depth_scale 将像素值换算为米:

path: depth8-png
train: images/train
val: images/val
nc: 1
names:
  0: depth
channels: 3
depth_scale: 1000   # PNG 值 1000 = 1 米

其头部注释还给出了常见取值:ARKitScenes 与 NYU Depth V2 用 1000(1 mm 精度,最大 65.535 m),KITTI 用 256(3.90625 mm 精度),Virtual KITTI 2 用 100(1 cm 精度)。从源码结构看,nc: 1 + names: [depth] 表示深度任务以"单通道回归"方式接入统一的 YOLO 数据加载链路。

OBB——dota8.yaml 只包含通用字段(path/train/val/names 15 个 DOTA 类 + download),说明旋转框标注仍存放在与目标检测一致的 YOLO 格式标签文件中,仅坐标字段扩展为旋转角。

多通道扩展:COCO8-Grayscale(单通道)与 COCO8-Multispectral(10 通道)两个衍生数据集表明,从源码中 check_det_dataset 返回值包含 channels 字段(ultralytics/data/utils.pyreturn {..., "channels": 3})可以推断,数据集加载链路已支持按数据集声明输入通道数,用于单通道/多光谱模型的评估。

六、如何贡献一个新数据集(完整工作流)

向 Ultralytics 贡献数据集需经过以下 8 步,确保与现有基础设施对齐:

  1. 收集图像:从公开数据库或自采渠道获取图像。

  2. 标注图像:根据任务标注边界框、分割多边形或关键点。

  3. 导出标注:把标注转换为 Ultralytics 支持的 YOLO *.txt 格式。

  4. 组织目录:建立如下标准文件夹结构:

    dataset/
    ├── images/
    │   ├── train/
    │   └── val/
    └── labels/
        ├── train/
        └── val/
    
  5. 创建 data.yaml:在数据集根目录编写描述数据集、类别及其他必要信息的 data.yaml(字段写法见上节 ultralytics/cfg/datasets/ 中的真实示例)。

  6. 优化图像(可选):为减小体积、提升下载速度,可压缩图像(推荐但非必需)。

  7. 打包 zip:将整个数据集目录压缩为 zip 文件。

  8. 编写文档并提交 PR:创建描述该数据集及其如何融入现有框架的文档页,然后提交 Pull Request,具体流程见 docs/en/help/contributing.md

官方工具:图像优化与打包的源码实现

文档给出的示例代码如下:

from pathlib import Path

from ultralytics.data.utils import compress_one_image
from ultralytics.utils.downloads import zip_directory

# Define dataset directory
path = Path("path/to/dataset")

# Optimize images in dataset (optional)
for f in path.rglob("*.jpg"):
    compress_one_image(f)

# Zip dataset into 'path/to/dataset.zip'
zip_directory(path)

两个函数在仓库中的实现细节值得贡献者了解:

  • compress_one_imageultralytics/data/utils.py):签名为 compress_one_image(f, f_new=None, max_dim=1920, quality=50)。默认将长边超过 1920 px 的图像等比缩放到 1920 以内,并以 JPEG 质量 50 保存;小于阈值的图像不重采样。实现上优先使用 PIL(并将 Image.MAX_IMAGE_PIXELS 置为 None 以规避约 1.79 亿像素的 DecompressionBombErrorRGBA/LA 图像先转 RGB 再存 JPEG),PIL 失败时自动回退到 OpenCV(cv2.INTER_AREA 插值缩放)。传 f_new 可另存而非覆盖原图——贡献数据集时若不想破坏原始素材,建议保留该参数。
  • zip_directoryultralytics/utils/downloads.py):签名为 zip_directory(directory, compress=True, exclude=(".DS_Store", "__MACOSX"), progress=True)。它会先清理目录中的 .DS_Store 文件,再按目录递归打包,默认使用 ZIP_DEFLATED 压缩,生成的 zip 与源目录同名并放置在同级目录(即 dataset/ 打包为 dataset.zip),同时提供 TQDM 进度条。目录不存在时抛出 FileNotFoundError

这套"标准目录 + data.yaml + 官方打包工具"的组合,保证了社区贡献的数据集能被 yolo train data=xxx.yaml 自动下载、校验和加载,与内置数据集享有同一套数据加载、缓存与缓存校验逻辑。

七、常见问题(FAQ)

Ultralytics 支持哪些目标检测数据集?

Ultralytics 支持大量目标检测数据集,代表性的包括:COCO(80 类大规模检测/分割/描述)、LVIS(1203 类细粒度检测)、Argoverse(城市环境 3D 跟踪与运动预测)、VisDrone(无人机航拍检测与跟踪)、SKU-110K(零售环境密集检测,1.1 万+ 图像)。这些数据集用于训练各类 YOLO 模型,完整清单见 docs/en/datasets/detect/index.md

如何向 Ultralytics 贡献一个新数据集?

按六步概要执行:收集图像 → 标注(框/分割/关键点,视任务而定)→ 导出为 YOLO *.txt 格式 → 按 images/{train,val} + labels/{train,val} 结构组织 → 编写 data.yaml(含描述、类别等)→ (可选)压缩图像减小体积 → 打包为 zip → 编写文档页并提交 PR(遵循 docs/en/help/contributing.md)。完整指南见本文第六节。

如何用 Ultralytics 工具优化和打包数据集?

直接使用 compress_one_imagezip_directory 两个工具函数(代码见本文第六节)。该流程能显著减小数据集体积,获得更高效的存储与更快的下载速度,其参数行为(最大边长 1920、JPEG 质量 50、排除 macOS 垃圾文件等)可直接从源码确认。

Ultralytics YOLO 模型有哪些与数据集生态配套的特性?

  • 统一框架多任务:同一套框架支持检测、实例分割、语义分割、深度估计、分类与姿态估计,本文列举的全部数据集均可通过 yolo train data=xxx.yaml 直接接入;
  • 预训练模型:提供多任务高性能预训练权重,缩短训练周期;
  • 易用 API:简单的 CLI/Python 接口便于集成到既有工作流;
  • 平台能力:Ultralytics 平台还提供数据集上传管理、直接用于训练、可视化与分布分析等能力(见 docs/en/platform/data/index.md),帮助完成从数据管理到训练的一站式流程。
登录后查看全文
热门项目推荐
相关项目推荐

项目优选

收起
kernelkernel
deepin linux kernel
C
33
18
ops-transformerops-transformer
本项目是CANN提供的transformer类大模型算子库,实现网络在NPU上加速计算。
C++
1.12 K
2.72 K
kernelkernel
openEuler内核是openEuler操作系统的核心,既是系统性能与稳定性的基石,也是连接处理器、设备与服务的桥梁。
C
527
590
ops-nnops-nn
本项目是CANN提供的神经网络类计算算子库,实现网络在NPU上加速计算。
C++
904
1.82 K
pytorchpytorch
作为 Ascend for PyTorch 社区的核心组件,TorchNPU 是昇腾专为 PyTorch 打造的深度学习适配插件,使 PyTorch 框架能够直接调用昇腾 NPU,为开发者提供昇腾 AI 处理器的超强算力。
Python
854
1.34 K
docsdocs
暂无描述
Markdown
889
5.78 K
jiuwenswarmjiuwenswarm
JiuwenSwarm 是一款基于openJiuwen开发的智能AI Agent,它能够将大语言模型的强大能力,通过你日常使用的各类通讯应用,直接延伸至你的指尖。
Python
3.52 K
1.01 K
ops-mathops-math
本项目是CANN提供的数学类基础计算算子库,实现网络在NPU上加速计算。
C++
1.33 K
1.45 K
cann-learning-hubcann-learning-hub
CANN 学习中心仓,支持在线互动运行、边学边练,提供教程、示例与优化方案,一站式助力昇腾开发者快速上手。
Jupyter Notebook
981
502
AscendNPU-IRAscendNPU-IR
AscendNPU-IR是基于MLIR(Multi-Level Intermediate Representation)构建的,面向昇腾亲和算子编译时使用的中间表示,提供昇腾完备表达能力,通过编译优化提升昇腾AI处理器计算效率,支持通过生态框架使能昇腾AI处理器与深度调优
C++
540
384