Ultralytics YOLO 数据集体系详解:七大视觉任务数据集、data.yaml 配置与数据集贡献全流程
本文为 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-seg(segment/carparts-seg.md):面向车辆零部件识别的专用数据集,同时服务于检测与分割任务。
- COCO(segment/coco.md):大规模检测/分割/描述数据集,20 万+ 标注图像。
- COCO8-seg(segment/coco8-seg.md):8 张 COCO 图像含分割标注的子集。
- COCO128-seg(segment/coco128-seg.md):128 张 COCO 图像含分割标注的子集。
- Crack-seg(segment/crack-seg.md):路面与墙体裂缝检测专用,支持检测与分割双任务。
- Package-seg(segment/package-seg.md):仓库/工业环境包裹识别,适配检测与分割应用。
语义分割数据集
docs/en/datasets/semantic/index.md 下的数据集清单:
- Cityscapes(semantic/cityscapes.md):城市街景语义分割,19 个训练类。
- Cityscapes8(semantic/cityscapes8.md):8 张图像的 Cityscapes 精简子集,用于快速验证语义分割流水线。
- ADE20K(semantic/ade20k.md):场景解析数据集,150 个语义类。
深度估计数据集
docs/en/datasets/depth/index.md 下的数据集清单:
- NYU Depth V2(depth/nyu-depth-v2.md):标准室内深度基准,由 Microsoft Kinect v1 采集。
- KITTI(depth/kitti.md):真实户外自动驾驶场景,含 Velodyne LiDAR 深度。
- Depth8(depth/depth8.md):8 张 SUN RGB-D 图像的精简子集,用于快速流水线检查。
四、图像分类、姿态估计与 OBB 数据集
图像分类数据集
docs/en/datasets/classify/index.md 下的数据集清单:
- Caltech 101(classify/caltech101.md):101 个物体类别。
- Caltech 256(classify/caltech256.md):Caltech 101 的扩展版,256 类、更具挑战性。
- CIFAR-10(classify/cifar10.md):6 万张 32×32 彩色图像,10 类、每类 6 千张。
- CIFAR-100(classify/cifar100.md):100 个类别、每类 600 张。
- Fashion-MNIST(classify/fashion-mnist.md):7 万张灰度图像,10 个服饰类别。
- ImageNet(classify/imagenet.md):1400 万+ 图像、2 万类别的大规模数据集。
- ImageNet-10(classify/imagenet10.md):10 类 ImageNet 子集,用于快速实验。
- Imagenette(classify/imagenette.md):10 个易区分类别的 ImageNet 子集。
- Imagewoof(classify/imagewoof.md):10 个犬种类别、更具挑战性的 ImageNet 子集。
- MNIST(classify/mnist.md):7 万张手写数字灰度图像。
- MNIST160(classify/mnist.md):MNIST train 与 test 中每个数字的前 8 张,共 160 张。
姿态估计数据集
docs/en/datasets/pose/index.md 下的数据集清单:
- COCO(pose/coco.md):含人体姿态标注的大规模数据集。
- COCO8-pose(pose/coco8-pose.md):8 张含人体姿态标注的 COCO 子集。
- Dog-pose(pose/dog-pose.md):约 8500 张犬类图像,每只狗 24 个关键点。
- Hand-Keypoints(pose/hand-keypoints.md):2.6 万+ 张手部图像,每只手 21 个关键点。
- Tiger-pose(pose/tiger-pose.md):263 张虎类图像,每只虎 12 个关键点。
OBB 数据集
docs/en/datasets/obb/index.md 下的数据集清单:
- DOTA-v2(obb/dota-v2.md):170 万实例、11268 张图像的航拍 OBB 数据集。
- DOTA8(obb/dota8.md):DOTAv1 前 8 张(4 训练/4 验证),适合快速测试。
- DOTA128(obb/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.zip、val2017.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.yaml 用 masks_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.py 中 return {..., "channels": 3})可以推断,数据集加载链路已支持按数据集声明输入通道数,用于单通道/多光谱模型的评估。
六、如何贡献一个新数据集(完整工作流)
向 Ultralytics 贡献数据集需经过以下 8 步,确保与现有基础设施对齐:
-
收集图像:从公开数据库或自采渠道获取图像。
-
标注图像:根据任务标注边界框、分割多边形或关键点。
-
导出标注:把标注转换为 Ultralytics 支持的 YOLO
*.txt格式。 -
组织目录:建立如下标准文件夹结构:
dataset/ ├── images/ │ ├── train/ │ └── val/ └── labels/ ├── train/ └── val/ -
创建
data.yaml:在数据集根目录编写描述数据集、类别及其他必要信息的data.yaml(字段写法见上节 ultralytics/cfg/datasets/ 中的真实示例)。 -
优化图像(可选):为减小体积、提升下载速度,可压缩图像(推荐但非必需)。
-
打包 zip:将整个数据集目录压缩为 zip 文件。
-
编写文档并提交 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_image(ultralytics/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 亿像素的DecompressionBombError,RGBA/LA图像先转 RGB 再存 JPEG),PIL 失败时自动回退到 OpenCV(cv2.INTER_AREA插值缩放)。传f_new可另存而非覆盖原图——贡献数据集时若不想破坏原始素材,建议保留该参数。zip_directory(ultralytics/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_image 与 zip_directory 两个工具函数(代码见本文第六节)。该流程能显著减小数据集体积,获得更高效的存储与更快的下载速度,其参数行为(最大边长 1920、JPEG 质量 50、排除 macOS 垃圾文件等)可直接从源码确认。
Ultralytics YOLO 模型有哪些与数据集生态配套的特性?
- 统一框架多任务:同一套框架支持检测、实例分割、语义分割、深度估计、分类与姿态估计,本文列举的全部数据集均可通过
yolo train data=xxx.yaml直接接入; - 预训练模型:提供多任务高性能预训练权重,缩短训练周期;
- 易用 API:简单的 CLI/Python 接口便于集成到既有工作流;
- 平台能力:Ultralytics 平台还提供数据集上传管理、直接用于训练、可视化与分布分析等能力(见 docs/en/platform/data/index.md),帮助完成从数据管理到训练的一站式流程。
atomcodeClaude Code 的开源替代方案。连接任意大模型,编辑代码,运行命令,自动验证 — 全自动执行。用 Rust 构建,极致性能。 | An open-source alternative to Claude Code. Connect any LLM, edit code, run commands, and verify changes — autonomously. Built in Rust for speed. Get StartedRust0622
Hy4-previewHy4 preview 是由腾讯混元团队研发的新一代混合专家(MoE)旗舰模型。模型总参数量 770B,每个 token 激活 49B,主干共包含78层,第一层采用标准 FFN,其余 77 层均为 MoE 结构,每层包含 256 个路由专家与 1 个共享专家,每个 token 激活 top-8 路由专家及共享专家。主干之外原生内置 1 层 MTP(总参数量 10B,激活 0.7B)以支持投机解码。Python00
GLM-5.3GLM-5.3 与 GLM-5.2 使用相同的基座模型——所有提升均来自后训练。与 GLM-5.2 相比,它在复杂编程和长程任务上的表现显著提升。Jinja00
GLM-5.3-FlashGLM-5.3-Flash (320B-A18B),是GLM-5系列的首个原生多模态模型。320B总参数,能力超过GLM-5.2Jinja00
Spark-X2.5-4BSpark-X2.5-4B 旨在让强大的 AI 更实用、更高效、更易获得。在广泛日常任务中表现强劲,涵盖对话、写作、翻译、推理、编码、工具调用以及智能体工作流,并在同等规模的开源模型中取得领先成绩。Spark-X2.5 将面向效率的架构与最高 1M tokens 的原生上下文窗口相结合,并支持 200 多种语言。Python00
Spark-X2.5-1.7BSpark-X2.5-1.7B 旨在让强大的 AI 更加实用、高效且易于获取。这些模型在广泛的日常任务中表现出色,涵盖对话、写作、翻译、推理、编程、工具调用和智能体工作流,并在同等规模的开源模型中取得领先结果。Spark-X2.5 将面向效率的架构与最高 1M tokens 的原生上下文窗口相结合,并支持 200 多种语言。Python00