ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

Ultralytics YOLO 上的 COCO 数据集实战:配置、自动下载与训练全流程解析

Ultralytics YOLO 上的 COCO 数据集实战:配置、自动下载与训练全流程解析 Ultralytics YOLO 上的 COCO 数据集实战配置、自动下载与训练全流程解析【免费下载链接】ultralyticsUltralytics YOLO26, YOLO11, YOLOv8 — object detection, instance segmentation, semantic segmentation, image classification, pose estimation, object tracking项目地址: https://gitcode.com/GitHub_Trending/ul/ultralyticsCOCOCommon Objects in Context是目标检测、实例分割与姿态估计领域最广泛使用的基准数据集。在 Ultralytics 仓库中围绕 COCO 已形成一套完整的工作流从 coco.yaml 数据集配置 定义 80 个类别与数据划分到 check_det_dataset() 在首次训练时自动下载 20.3 GB 数据再到 Python/CLI 两种训练入口与 COCO JSON 到 YOLO 格式的转换工具 convert_coco()。本文基于仓库文档与源码完整讲清这套工作流的配置细节、执行路径与实操要点。COCO 数据集概览与核心特性COCO 是一个大规模的对象检测、分割与图像描述数据集旨在推动多类别物体识别研究也是计算机视觉模型基准测试的通用标尺。其核心特性包括330K 张图像其中 200K 张针对检测、分割与描述任务提供了标注80 个物体类别涵盖汽车、自行车、动物等常见物体以及雨伞、手提包、运动器材等更具体的类别标注形式包括每个图像的目标边界框bounding boxes、分割掩码segmentation masks以及图像描述文本captions提供 mAPmean Average Precision检测任务与 mARmean Average Recall分割任务等标准化评测指标便于横向比较不同模型的表现。在 Ultralytics 生态中官方 YOLO 系列模型如 YOLO26n/s/m/l/x均以 COCO2017 训练因此该数据集同时承担官方预训练权重复现和自研模型基准对比两个角色。仓库中对训练指标的定义可见 ultralytics/utils/metrics.py验证模式输出的 mAP50、mAP50-95 等指标计算均基于此。数据集结构三个子集与各自的用途COCO2017 划分为三个子集各自的定位与规模如下子集图像数用途标注获取方式Train2017118,287 张训练检测、分割、描述模型公开发布Val20175,000 张训练过程中的验证公开发布Test201720,288 张 test-dev 图像已训练模型的基准评测真值不公开需提交结果至 COCO 评测服务器需要注意 Test2017 的一个关键约束其 ground truth 标注不对外公开模型在该子集上的输出需要提交到 COCO 官方评测服务器才能获得分数。这也是为什么仓库中 coco.yaml 的自动下载脚本只下载train2017.zip19 GB118k 图像与val2017.zip1 GB5k 图像并明确注释test2017.zip excluded: ground truth is withheld, only used for the eval-server test-dev split——本地训练与验证根本用不到它。数据集 YAML 配置coco.yaml 全字段解读Ultralytics 使用 YAML 文件声明数据集的路径、类别与下载逻辑。COCO 对应配置文件为 ultralytics/cfg/datasets/coco.yaml其结构可以拆成四部分理解路径与数据划分path: coco # dataset root dir train: train2017.txt # train images (relative to path) 118287 images val: val2017.txt # val images (relative to path) 5000 images test: test-dev2017.txt # 20288 of 40670 images, submit via COCO evalpath是数据集根目录。从源码的 check_det_dataset() 可以看到路径解析规则若path是相对路径且当前目录不存在会自动回退到数据集默认下载目录DATASETS_DIR即../datasets/coco下的同名目录train/val/test若为字符串会与path拼接为绝对路径。因此标准布局为parent/ ├── ultralytics # 本仓库 └── datasets └── coco # 数据下载位置20.3 GB ├── images/ │ ├── train2017/ │ └── val2017/ ├── labels/ │ ├── train2017/ │ └── val2017/ ├── train2017.txt └── val2017.txttrain2017.txt/val2017.txt是图像清单文件每行一个图像相对路径它们随标签压缩包一起分发避免依赖目录扫描。80 个类别定义names字段以0: person…79: toothbrush的形式完整列出 80 个类别从交通类person、car、airplane、bus、动物类bird、cat、elephant、giraffe到食品类banana、pizza、cake与家具家电类bed、microwave、toaster、refrigerator。这份类别表是官方预训练权重的标签空间——任何加载官方权重做推理或迁移的模型输出类别都严格对应这张表。自动下载块download 字段download: | from pathlib import Path from ultralytics.utils import ASSETS_URL from ultralytics.utils.downloads import download # Download labels segments True # segment or box labels dir Path(yaml[path]) # dataset root dir urls [ASSETS_URL (/coco2017labels-segments.zip if segments else /coco2017labels.zip)] download(urls, dirdir.parent) # Download data (test2017.zip excluded) urls [ http://images.cocodataset.org/zips/train2017.zip, # 19G, 118k images http://images.cocodataset.org/zips/val2017.zip, # 1G, 5k images ] download(urls, dirdir / images, threads3)这段内嵌 Python 脚本是首次训练自动下载的执行体。源码层面check_det_dataset() 的处理逻辑是校验 YAML 中train/val等键存在、names/nc合法L590-L619解析出val实际路径后若对应文件不存在且autodownloadTrue则取出 YAML 的download字段若以http开头且以.zip结尾走 safe_download()若以bash开头则按脚本执行L656-L658否则像 COCO 这样直接exec()内嵌 Python 脚本L659-L660脚本中ASSETS_URL指向 ultralytics/utils/init.py 定义的资产发布地址标签文件含.txt清单与 YOLO 格式.txt标签约 169 MB segments 版从该地址下载而图像本体直接从images.cocodataset.org拉取threads3表示并发下载。segments True这一行值得注意下载的是含分割多边形坐标的标签版本这样同一份数据即可同时服务 detect 与 segment 两种任务detect 训练时分割字段会被自动忽略。两种下载方式自动下载与手动脚本方式一训练时自动下载推荐首次执行训练时若本地找不到val2017.txt指向的数据上述download块会自动触发COCO2017 训练验证数据共 20.3 GB 会下载到datasets/coco。无需任何预配置。方式二手动下载脚本仓库提供 ultralytics/data/scripts/get_coco.sh 用于手动/部分下载支持参数# 默认下载 train val 的 box 标签与图像 bash ultralytics/data/scripts/get_coco.sh # 指定子集与标签类型 bash ultralytics/data/scripts/get_coco.sh --train --val --test --segments参数作用--train下载 train2017.zip19 GB118k 图像--val下载 val2017.zip1 GB5k 图像--test下载 test2017.zip7 GB41k 图像可选--segments标签使用含分割多边形的 segments 版本169 MB否则为 box 标签版46 MB--sama标签使用 SAMA 社区精选标注版本199 MB脚本内部通过curl -L拉取并unzip解压各下载任务在后台并行执行后wait汇总。默认行为不带参数等价于--train --val与自动下载的内容一致适合带宽受限需要断点重试或只取验证集的场景。在 COCO 上训练与验证 YOLO训练示例以 YOLO26n 在 COCO2017 上训练 100 个 epoch、图像尺寸 640 为例# Python API from ultralytics import YOLO # Load a model model YOLO(yolo26n.pt) # load a pretrained model (recommended for training) # Train the model results model.train(datacoco.yaml, epochs100, imgsz640)# CLI从预训练权重开始训练 yolo detect train datacoco.yaml modelyolo26n.pt epochs100 imgsz640关键点说明datacoco.yaml是裸数据集名check_det_dataset() 允许传入不带路径、不带扩展名的数据集名会自动在ultralytics/cfg/datasets/下查找并补全为coco.yaml所以无需写明完整路径。必须传data参数训练命令显式指定数据集后模型的训练配置会被持久化为模型属性见下文验证部分。完整可训练参数batch、optimizer、lr0、patience等详见 训练模式文档YOLO26 系列的模型结构定义位于 ultralytics/cfg/models/26/如 yolo26.yamldetect、yolo26-seg.yamlsegment、yolo26-pose.yamlpose。验证示例训练完成后在 Val2017 上验证只需from ultralytics import YOLO model YOLO(path/to/best.pt) metrics model.val(datacoco.yaml, imgsz640) metrics.box.map # mAP50-95 metrics.box.map50 # mAP50 metrics.box.maps # 每个类别的 mAP50-95yolo detect val modelpath/to/best.pt datacoco.yaml imgsz640如果验证时不传data模型会读取训练时记住的数据集与参数yolo val modelyolo26n.pt即可这是官方权重复现 COCO 指标最省事的方式。测试用例中的使用方式仓库测试脚本直接以coco.yaml作为真实数据集成件测试对象例如 tests/test_engine.py 中有model.train(datacoco.yaml, epochs1, imgsz32)这样的冒烟训练用例以及YOLO(yolo26n.pt).val(datacoco.yaml, ...)的验证用例tests/test_cli.py 与 tests/test_exports.py 也复用coco.yaml覆盖 CLI 与模型导出路径。这意味着只要本地datasets/coco存在 val 子集这些测试就是端到端链路下载校验 → 训练 → 验证 → 导出的最直接参照。马赛克增强文档示例背后的训练细节COCO 文档配图展示的训练批次马赛克mosaic图像对应的是 Ultralytics 默认开启的数据增强策略将 4 张图像拼合为一张训练样本提高每个 batch 内物体尺度、长宽比与场景背景的多样性从而增强模型对不同上下文中小/大目标的泛化能力。增强参数定义在 ultralytics/data/augment.py其默认值如mosaic1.0、mixup、copy_paste等在 ultralytics/cfg/default.yaml 中声明。COCO 作为多尺度、密背景数据集从这种组合增强中受益尤为明显若需关闭训练时传mosaic0.0即可。从 COCO JSON 到 YOLO 格式自有数据的转换路径COCO 文档中有一句关键提示Annotations exported from labeling tools in COCO JSON follow this same structure——大量标注工具Label Studio、CVAT 等导出的正是 COCO JSON。Ultralytics 训练使用 YOLO TXT 格式每图一个.txt归一化坐标class x_center y_center width height因此仓库提供 ultralytics/data/converter.py 中的convert_coco()from ultralytics.data.converter import convert_coco convert_coco( labels_dirmy_dataset/annotations/, # 存放 JSON 文件的目录 save_dirmy_dataset/converted/, # 转换结果输出目录 cls91to80False, # 自定义数据集必须设为 False )两种格式的字段差异对照维度COCO JSONYOLO TXT结构全部图像共用一个 JSON每图一个.txt标签文件框格式[x_min, y_min, w, h]像素class x_center y_center w h归一化 0-1类别 ID任意category_id从 0 开始的连续 ID分割segmentation多边形数组类别 ID 后跟随多边形坐标关于cls91to80参数这是理解 COCO 类别体系的一个常见误区COCO 原始 JSON 的category_id并不连续1-90 共 91 个 ID 中只有 80 个有效类别因此标准 COCO 数据需要一张 91→80 的映射表源码即 coco91_to_coco80_class()返回 91 元素的列表索引为原始category_id、值为连续 ID 或None。转换时标准 COCO 数据集cls91to80True默认是正确的自定义数据集必须cls91to80False否则类别会被静默地按 COCO 映射表错配若category_id在映射表中无对应项转换会抛出TypeError: must be real number, not NoneType而非生成错误标签。转换完成后按转换输出建立目录结构、编写自己的dataset.yaml参照 coco.yaml 的path/train/val/names结构即可即可用同一套model.train(data...)接口开始训练。完整的分步指南含分割与姿态估计变体见 COCO 标注转 YOLO 文档若希望直接以 COCO JSON 训练而不生成.txt则见 COCO JSON 训练文档。相关数据集与延伸阅读COCO 80 类小子集 coco8.yaml8 张图像 对应标注用于快速验证环境与代码链路是仓库测试最常用的数据集COCO128.yaml128 张图像的中量级子集适合快速调参coco.yaml 中 test-dev2017.txt 的说明本地无法评测 test-dev仅用于向评测服务器提交其他检测基准数据集VisDrone、Open Images、Objects365 等均在 ultralytics/cfg/datasets/ 下提供对应 YAML完整的检测任务数据集索引见 docs/en/datasets/detect/index.md。引用与致谢若在你的研究或开发中使用 COCO 数据集请引用原始论文misc{lin2015microsoft, title{Microsoft COCO: Common Objects in Context}, author{Tsung-Yi Lin and Michael Maire and Serge Belongie and Lubomir Bourdev and Ross Girshick and James Hays and Pietro Perona and Deva Ramanan and C. Lawrence Zitnick and Piotr Dollár}, year{2015}, eprint{1405.0312}, archivePrefix{arXiv}, primaryClass{cs.CV} }COCO 数据集采用 CC-BY-4.0 许可由 COCO Consortium 创建并维护是计算机视觉社区不可多得的公共资源。常见问题FAQ问COCO 数据集为什么对计算机视觉如此重要它是大规模检测/分割/描述三任务数据集330K 图像、80 类别且提供 mAP 等标准指标是模型横向比较的公共标尺。Ultralytics 官方权重全部基于其训练因此它也是复现官方性能表的基准。问如何只用 COCO 训练我自己的 YOLO 模型无需手动下载——model.train(datacoco.yaml, ...)首次运行时自动下载 20.3 GB 数据或运行 get_coco.sh 手动控制下载子集与标签类型。问官方预训练 YOLO26 模型yolo26n 等从哪里来它们正是以本数据集 train2017 子集训练的产物各尺寸n/s/m/l/x在精度与推理速度上形成梯度可依据部署资源选择用datacoco.yaml重新训练即可获得可复现的对照基线。问Test2017 为什么不在自动下载范围内其真值标注被官方保留仅用于向评测服务器提交结果打分本地训练验证链路完全用不到下载它只会多占 7 GB 空间。【免费下载链接】ultralyticsUltralytics YOLO26, YOLO11, YOLOv8 — object detection, instance segmentation, semantic segmentation, image classification, pose estimation, object tracking项目地址: https://gitcode.com/GitHub_Trending/ul/ultralytics创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表