📌 关键要点
data=coco128.yaml中的 yaml 是数据集配置文件——告诉训练程序"数据在哪、有哪些类别",不是给人看的说明文档。
- 核心字段:
path(数据根目录)、train/val(图片路径)、names(类别名)- ultralytics 内置 42 个数据集配置,覆盖检测/分割/姿态/多光谱等任务
类别数由 yaml 的
names决定,与模型版本无关——官方预训练权重都是 COCO 80 类,自定义数据集则可任意设类别数80 个类别 id 就是标注文件第一列的编号,理解 id 才能读懂标注数据
data=coco128.yaml 里那个 yaml,官方术语叫 dataset configuration file(数据集配置文件)。它是一份给程序读的参数表,负责把"图片、标注、类别"三者对应起来。
以内置的 coco128.yaml 为例:
path: coco128 # 数据集根目录(相对当前工作目录)
train: images/train2017 # 训练图片路径(相对 path)
val: images/train2017 # 验证图片路径(相对 path)
test: # 测试集(可选)
names: # 类别定义(id → 类别名)
0: person
1: bicycle
2: car
...
download: https://github.com/ultralytics/assets/releases/download/v0.0.0/coco128.zip # 自动下载地址(可选)
| 字段 | 作用 | 是否必填 |
|---|---|---|
path |
数据集根目录 | 必填 |
train |
训练图片路径(目录 / txt 列表 / 列表) | 必填 |
val |
验证图片路径 | 必填 |
test |
测试图片路径 | 可选 |
names |
类别字典:id: 名称 |
必填 |
download |
数据下载地址或脚本 | 可选 |
💡 找配置文件的顺序:
yolo命令先找当前目录下同名 yaml(自定义优先),找不到再去 ultralytics 安装包内置目录(本机完整路径见第二章)。
本机完整路径:D:\B\software\anaconda\envs\CondaBYP\Lib\site-packages\ultralytics\cfg\datasets\
定位方法:命令行执行
pip show ultralytics可查看安装位置;换环境/换机器后,用此方法重新定位该目录。
安装 ultralytics 就自带这些配置文件,按用途分类:
通用检测(COCO 系)
coco.yaml:完整 COCO 2017(11.8 万训练图 / 5000 验证图 / 80 类),评测标准coco128.yaml:COCO 前 128 张图(入门练手)coco8.yaml:COCO 前 8 张图(极速测试)coco-pose.yaml / coco8-pose.yaml:姿态估计coco128-seg.yaml / coco8-seg.yaml:实例分割coco12-formats.yaml / coco8-grayscale.yaml / coco8-multispectral.yaml:格式/灰度/多光谱变体经典基准数据集
VOC.yaml:PASCAL VOC(20 类)lvis.yaml:LVIS(1200+ 类长尾)Objects365.yaml:365 类街景open-images-v7.yaml:Open Images(600 类)ImageNet.yaml:分类任务kitti.yaml:KITTI 自动驾驶(8 类)cityscapes.yaml / cityscapes8.yaml:街景Argoverse.yaml:自动驾驶航拍 / 遥感
VisDrone.yaml:无人机航拍(10 类)xView.yaml / DOTAv1.yaml / DOTAv1.5.yaml:遥感dota8.yaml / dota128.yaml / dota8-multispectral.yaml:DOTA 子集SKU-110K.yaml:密集货架商品TT100K.yaml:交通标志垂直场景
african-wildlife.yaml:非洲野生动物GlobalWheat2020.yaml:小麦头检测medical-pills.yaml:药片brain-tumor.yaml / crack-seg.yaml / package-seg.yaml / carparts-seg.yaml:分割场景construction-ppe.yaml:施工安全装备signature.yaml:签名HomeObjects-3K.yaml:室内物体姿态估计
hand-keypoints.yaml:手部关键点dog-pose.yaml / tiger-pose.yaml:动物姿态用法都一样:
yolo train data=VisDrone.yaml、yolo val data=coco.yaml……选哪个数据集就写哪个文件名。
YOLO 实际支持 6 种任务:detect(检测)、segment(实例分割)、semantic(语义分割,YOLO26 新增)、classify(分类)、pose(姿态)、obb(旋转框)。42 个配置文件按任务分布如下:
① 目标检测 detect(23 个)——输出矩形框
| 配置文件 | 说明 |
|---|---|
coco.yaml / coco128.yaml / coco8.yaml |
COCO 80 类(完整/入门/极速) |
coco12-formats.yaml |
12 张图测试所有图片格式 |
coco8-grayscale.yaml / coco8-multispectral.yaml |
灰度 / 10 通道多光谱变体 |
VOC.yaml |
PASCAL VOC 20 类 |
lvis.yaml |
1200+ 类长尾检测 |
Objects365.yaml / open-images-v7.yaml |
365 类街景 / 600 类 |
kitti.yaml / Argoverse.yaml |
自动驾驶 |
VisDrone.yaml / xView.yaml / dota8-multispectral.yaml |
无人机/遥感航拍 |
SKU-110K.yaml / TT100K.yaml |
货架商品 / 交通标志 |
african-wildlife.yaml / GlobalWheat2020.yaml / medical-pills.yaml / construction-ppe.yaml / signature.yaml / HomeObjects-3K.yaml |
垂直场景(动物/小麦/药片/安全帽/签名/室内) |
② 实例分割 segment(6 个)——每个目标独立像素掩码
| 配置文件 | 说明 |
|---|---|
coco128-seg.yaml / coco8-seg.yaml |
COCO 80 类分割 |
brain-tumor.yaml / crack-seg.yaml / package-seg.yaml / carparts-seg.yaml |
脑肿瘤 / 裂缝 / 包裹 / 汽车零件 |
③ 语义分割 semantic(3 个,YOLO26 新任务)——整幅图逐像素分类
| 配置文件 | 说明 |
|---|---|
ade20k.yaml |
ADE20K 场景解析 150 类 |
cityscapes.yaml / cityscapes8.yaml |
街景 19 类(masks_dir 掩码格式) |
④ 图像分类 classify(1 个)——整图一个类别
| 配置文件 | 说明 |
|---|---|
ImageNet.yaml |
ImageNet 1000 类 |
⑤ 姿态估计 pose(5 个)——关键点
| 配置文件 | 说明 |
|---|---|
coco-pose.yaml / coco8-pose.yaml |
人体 17 关键点 |
hand-keypoints.yaml |
手部 21 关键点 |
dog-pose.yaml / tiger-pose.yaml |
动物姿态 |
⑥ 旋转框检测 obb(4 个)——带角度的框,适合航拍
| 配置文件 | 说明 |
|---|---|
dota8.yaml / dota128.yaml / DOTAv1.yaml / DOTAv1.5.yaml |
航拍遥感旋转框(飞机/轮船等任意角度目标) |
合计:23 + 6 + 3 + 1 + 5 + 4 = 42 个
五大任务框架 vs YOLO 6 任务(对照 AI 视觉算法总览):
五大任务(通用框架) YOLO 对应任务 配置示例 图像分类 classifyImageNet.yaml目标检测 detectcoco.yaml(23 个)语义分割 semantic(YOLO26)+segment(可近似)ade20k.yaml实例分割 segmentcoco128-seg.yaml全景分割 ❌ YOLO 暂无 — (框架外) pose姿态 /obb旋转框coco-pose.yaml/dota8.yaml
官方预训练权重(yolov8n.pt / yolo11n.pt 等)默认检测的 80 类,即 coco.yaml 里 names 的内容。类别 id 与标注文件第一列一一对应,例如标注 0 0.52 0.55 0.4 0.6 中的 0 表示 person。
| id | 类别 | id | 类别 | id | 类别 | id | 类别 |
|---|---|---|---|---|---|---|---|
| 0 | person 人 | 20 | elephant 大象 | 40 | wine glass 酒杯 | 60 | dining table 餐桌 |
| 1 | bicycle 自行车 | 21 | bear 熊 | 41 | cup 杯子 | 61 | toilet 马桶 |
| 2 | car 汽车 | 22 | zebra 斑马 | 42 | fork 叉子 | 62 | tv 电视 |
| 3 | motorcycle 摩托车 | 23 | giraffe 长颈鹿 | 43 | knife 刀 | 63 | laptop 笔记本电脑 |
| 4 | airplane 飞机 | 24 | backpack 背包 | 44 | spoon 勺子 | 64 | mouse 鼠标 |
| 5 | bus 公交车 | 25 | umbrella 雨伞 | 45 | bowl 碗 | 65 | remote 遥控器 |
| 6 | train 火车 | 26 | handbag 手提包 | 46 | banana 香蕉 | 66 | keyboard 键盘 |
| 7 | truck 卡车 | 27 | tie 领带 | 47 | apple 苹果 | 67 | cell phone 手机 |
| 8 | boat 船 | 28 | suitcase 行李箱 | 48 | sandwich 三明治 | 68 | microwave 微波炉 |
| 9 | traffic light 红绿灯 | 29 | frisbee 飞盘 | 49 | orange 橙子 | 69 | oven 烤箱 |
| 10 | fire hydrant 消防栓 | 30 | skis 滑雪板 | 50 | broccoli 西兰花 | 70 | toaster 烤面包机 |
| 11 | stop sign 停车标志 | 31 | snowboard 单板 | 51 | carrot 胡萝卜 | 71 | sink 水槽 |
| 12 | parking meter 停车计时器 | 32 | sports ball 球 | 52 | hot dog 热狗 | 72 | refrigerator 冰箱 |
| 13 | bench 长椅 | 33 | kite 风筝 | 53 | pizza 披萨 | 73 | book 书 |
| 14 | bird 鸟 | 34 | baseball bat 棒球棒 | 54 | donut 甜甜圈 | 74 | clock 钟表 |
| 15 | cat 猫 | 35 | baseball glove 棒球手套 | 55 | cake 蛋糕 | 75 | vase 花瓶 |
| 16 | dog 狗 | 36 | skateboard 滑板 | 56 | chair 椅子 | 76 | scissors 剪刀 |
| 17 | horse 马 | 37 | surfboard 冲浪板 | 57 | couch 沙发 | 77 | teddy bear 泰迪熊 |
| 18 | sheep 绵羊 | 38 | tennis racket 网球拍 | 58 | potted plant 盆栽 | 78 | hair drier 吹风机 |
| 19 | cow 牛 | 39 | bottle 瓶子 | 59 | bed 床 | 79 | toothbrush 牙刷 |
COCO 官方将 80 类归为 12 个大类,便于理解类别构成:
| 大类 | 类别数 | 包含类别 |
|---|---|---|
| person | 1 | person |
| vehicle 车辆 | 8 | bicycle, car, motorcycle, airplane, bus, train, truck, boat |
| outdoor 户外 | 5 | traffic light, fire hydrant, stop sign, parking meter, bench |
| animal 动物 | 10 | bird, cat, dog, horse, sheep, cow, elephant, bear, zebra, giraffe |
| accessory 配饰 | 5 | backpack, umbrella, handbag, tie, suitcase |
| sports 运动 | 10 | frisbee, skis, snowboard, sports ball, kite, baseball bat, baseball glove, skateboard, surfboard, tennis racket |
| kitchen 厨房 | 7 | bottle, wine glass, cup, fork, knife, spoon, bowl |
| food 食物 | 10 | banana, apple, sandwich, orange, broccoli, carrot, hot dog, pizza, donut, cake |
| furniture 家具 | 6 | chair, couch, potted plant, bed, dining table, toilet |
| electronic 电子 | 6 | tv, laptop, mouse, remote, keyboard, cell phone |
| appliance 家电 | 5 | microwave, oven, toaster, sink, refrigerator |
| indoor 室内 | 7 | book, clock, vase, scissors, teddy bear, hair drier, toothbrush |
训练时自动生成的 labels.jpg:左上为标注框位置/尺寸分布,右下为各类别数量直方图,直观展示数据集的类别构成。
答案:模型能检测哪些类别,由数据集配置(yaml 的 names)决定,与模型版本无关。
| 层面 | 说明 |
|---|---|
| 模型版本(v5/v8/v11/YOLO26) | 决定的是网络结构(层数、参数量、速度),不决定类别 |
| 数据集配置(yaml 的 names) | 决定类别数量和名称,即模型输出头 Detect 的类别维度 |
| 官方预训练权重 | 一律按 COCO 训练 → 都是 80 类,所以不同版本官方模型默认都检测这 80 类 |
证据:训练日志中模型头部显示 Detect [80, 16, ...],其中的 80 来自 coco128.yaml 的 names 数量,不是写死在模型里的。换成 5 类的自定义数据集,Detect 头就是 [5, 16, ...]。
不同任务类别不同(同一版本):
| 任务 | 配置文件 | 类别数 | 类别 |
|---|---|---|---|
| 目标检测 | coco.yaml |
80 | 上面 3.1 的完整表 |
| 姿态估计 | coco-pose.yaml |
1 | person(人体关键点) |
| 实例分割 | coco128-seg.yaml |
80 | 同检测 80 类 |
训练自己的数据时,把标注好的数据集按 YOLO 目录结构放好,再写一个自己的 yaml:
# 例如:识别 3 类水果
path: ../datasets/fruit # 数据集根目录
train: images/train # 训练图片
val: images/val # 验证图片
names:
0: apple
1: banana
2: orange
对应目录结构:
datasets\fruit\
├── images\train\ ├── labels\train\
├── images\val\ ├── labels\val\
标注 txt 与图片同名,每行 类别id x_center y_center width height(归一化)。然后用 yolo train data=fruit.yaml 即可训练自己的模型。
🔗 相关笔记:
📖 资料来源:
📝 创建时间:2026-08-31