Ultralytics YOLO26 实战:Objects365 大规模目标检测数据集训练、预训练检查点与 712GB 下载机制全解
【免费下载链接】ultralyticsUltralytics YOLO26, YOLO11, YOLOv8 — object detection, instance segmentation, semantic segmentation, image classification, pose estimation, object tracking项目地址: https://gitcode.com/GitHub_Trending/ul/ultralytics
Objects365 是由 Megvii 研究团队发布的大规模目标检测数据集,以约 174 万张训练图和 365 个物体类别成为检测模型预训练的首选数据源之一。本篇基于 Ultralytics 仓库中的 Objects365 数据集文档 与配套配置、源码,讲透三件事:如何用Objects365.yaml一键自动下载并训练 YOLO26 检测器、如何免下载直接使用官方 Objects365 预训练权重做预测与微调,以及这套"YAML 内嵌 Python 下载脚本"机制在 ultralytics/data/utils.py 中的真实执行链路。
数据集概览与关键特性
Objects365 是 ICCV 2019 论文(Shao et al., "Objects365: A Large-Scale, High-Quality Dataset for Object Detection")发布的数据集,聚焦真实世界场景中的多样化物体,覆盖从人、车、椅子到瓶子、狗、路灯等 365 个类别。官方文档给出的核心规格:
| 指标 | 数值 |
|---|---|
| 训练图像 | 1,742,289 张 |
| 验证图像 | 80,000 张 |
| 类别数 | 365 |
| 上游发布规模 | 约 200 万张图像、3000 万个边界框 |
从数据集特性看,它适合目标检测的原因有四:
- 365 类词汇表 + 稠密框标注:标注以边界框形式给出,天然适配检测模型的训练与评估;
- 真实场景多样性:图像覆盖各类 in-the-wild 场景,构成有挑战性的检测基准;
- 预训练价值高:官方文档引用 ICCV 2019 论文的实验结论——以 Objects365 预训练比以 ImageNet 预训练在 COCO 基准上高 5.6 个点(42.0 vs 36.4 mAP)。这正是 Ultralytics 选择它作为 YOLO26 预训练数据源的原因;
- 典型应用场景:检测骨干预训练(后续在 COCO、VOC 等更小数据集上微调)、零售货架识别(瓶、杯、运动鞋、手提包等日用类别)、机器人与智能环境的无结构化场景识别、以及检测模型泛化能力基准评测。
数据集结构与 YAML 配置
Ultralytics 在 ultralytics/cfg/datasets/Objects365.yaml 中维护该数据集的完整配置,定义两个数据划分:
| 划分 | 图像数 | 用途 |
|---|---|---|
| Train | 1,742,289 | 模型训练 |
| Validation | 80,000 | 评估与基准测试 |
下载流程会拉取 train 与 val 两个划分(合计 1,822,289 张图像),配置中的test:键刻意留空。YAML 的头部注释给出了路径约定与磁盘占用预估:
# Objects365 dataset https://www.objects365.org/ by Megvii # Example usage: yolo train data=Objects365.yaml # parent # ├── ultralytics # └── datasets # └── Objects365 ← downloads here (712 GB = 367G data + 345G zips) path: Objects365 # dataset root dir train: images/train # train images (relative to 'path') 1742289 images val: images/val # val images (relative to 'path') 80000 images test: # test images (optional)names段按 0–364 索引完整定义了 365 个类别,包括Person、Sneakers、Car、Street Lights、Bottle、Dog、Cat、Traffic Sign、Laptop、Refrigerator等(完整 365 项见 Objects365.yaml)。需要特别留意类别名中带有斜杠的复合类别,如Cabinet/shelf、Handbag/Satchel、Pen/Pencil、Bowl/Basin、Truck与Heavy Truck分属不同类别等——在自定义下游数据集中若沿用其中部分类别,需保持这种命名一致才能对齐权重中的类别索引。
下载脚本的源码级解析
YAML 尾部(Objects365.yaml 的download:块)内嵌了一段 Python 脚本,这是 Ultralytics "数据集即配置" 设计的核心——把数据获取逻辑与配置放在一起,首次训练时自动执行。该脚本的工作流程:
- 安装评估依赖:调用
check_requirements("faster-coco-eval")安装faster-coco-eval包,并从中导入COCO类用于解析原始 COCO 格式标注; - 分片并行下载:train 划分下载 51 个补丁包(
patch0.tar.gz~patch50.tar.gz,即代码中的50 + 1)外加标注文件zhiyuan_objv2_train.tar.gz,使用 17 线程;val 划分下载 44 个补丁包(43 + 1),v1 补丁(patch0–14)与 v2 补丁(patch16–43)分两组以 16 线程下载,另有标注文件zhiyuan_objv2_val.json; - 图像归位:用
ThreadPoolExecutor(max_workers=16)把各补丁解压出的*.jpg重命名平铺到images/<split>/下; - 标注格式转换:以类别为主循环遍历 365 个类别,对每张图像调用
COCO.getAnnIds/loadAnns取出标注框,将 COCO 的像素级 xywh 经xyxy2xywhn转为归一化 xywhn 五元组,逐行追加写入labels/<split>/<image>.txt({class_id} {x} {y} {w} {h},精度 5 位小数)——这正是 YOLO 训练所需的标准标签格式。
其中坐标转换函数xyxy2xywhn定义在 ultralytics/utils/ops.py,clip=True参数保证越界框被裁剪到图像内部,避免出现归一化坐标大于 1 的脏标签。
这套脚本如何被触发?入口在 ultralytics/data/utils.py 的check_det_dataset():
- 它先做数据完整性校验——
train、val键必须存在,names与nc必须二选一,二者共存时长度必须一致(Objects365 的 365 个names会被自动折算为nc: 365); - 当 val 图像目录不存在且
autodownload为真时,检查download键:若以http开头且以.zip结尾则按 URL 下载;若以bash开头则执行 shell 命令;否则直接把脚本当作 Python 代码exec(s, {"yaml": data})执行(ultralytics/data/utils.py)。Objects365 走的正是最后这条分支,脚本内通过闭包变量yaml["path"]拿到数据集根目录; - 下载目录默认为
DATASETS_DIR(默认位于项目根目录的datasets/),可在 Ultralytics 设置文件中修改,日志会提示 "Note dataset download directory is ..."。
⚠️磁盘与时间预算:Objects365 首次使用自动下载,共需约712GB 空闲磁盘——345GB 的 tar.gz 压缩包 + 367GB 解压后的数据集。下载脚本还会执行标注转换,耗时取决于网络带宽与硬件。在评估训练方案前,官方文档建议先到 检测数据集总览 对比体积更小的替代数据集(如 COCO128、COCO8 等)。
Objects365 预训练模型:免下载直接可用
Ultralytics 官方发布了在 Objects365v1 上预训练的 YOLO26 检测与分割模型(均为 150 epochs、640 分辨率训练),无需下载 712GB 数据集即可检测全部 365 类。检测模型在 Objects365v1 验证集上的单模型单尺度指标:
| 模型 | 尺寸 (px) | mAP val 50-95 | mAP val 50 | 参数量 (M) | FLOPs (B) |
|---|---|---|---|---|---|
| YOLO26n | 640 | 16.3 | 22.3 | 2.5 | 6.0 |
| YOLO26s | 640 | 24.3 | 31.7 | 9.6 | 21.3 |
| YOLO26m | 640 | 30.3 | 38.2 | 20.6 | 69.4 |
| YOLO26l | 640 | 32.2 | 40.1 | 25.0 | 87.7 |
| YOLO26x | 640 | 35.8 | 44.1 | 56.1 | 195.7 |
分割模型使用 Objects365v1 的掩码生成,同时报告框与掩码精度:
| 模型 | 尺寸 (px) | mAP box 50-95 | mAP mask 50-95 | 参数量 (M) | FLOPs (B) |
|---|---|---|---|---|---|
| YOLO26n-seg | 640 | 15.7 | 13.2 | 2.8 | 9.7 |
| YOLO26s-seg | 640 | 23.8 | 19.5 | 10.5 | 34.8 |
| YOLO26m-seg | 640 | 29.5 | 23.8 | 23.8 | 122.7 |
| YOLO26l-seg | 640 | 31.7 | 25.3 | 28.2 | 141.0 |
| YOLO26x-seg | 640 | 35.4 | 27.9 | 63.1 | 315.3 |
注:mAP val 为单模型单尺度、Objects365v1 验证划分上的结果;Params 与 FLOPs 为model.fuse()融合后模型的数值。
这些检查点在源码中的资产清单有明确定义:ultralytics/utils/downloads.py 的GITHUB_ASSETS_NAMES包含yolo26{k}-objv1{suffix}.pt(k ∈ nsmlx,suffix 为-150或-seg),意味着yolo26n-objv1-150.pt、yolo26s-objv1-seg.pt等文件均可被框架识别为官方资产,首次YOLO("...")加载时自动下载,与常规.pt权重行为一致。
与 YOLO26 官方训练流程的关系:根据 YOLO26 训练配方文档,所有 YOLO26 基础模型都是两阶段训练——先在 Objects365v1 上预训练 150 epochs,再在 COCO 上微调,全程 640×640、MuSGD 优化器、batch 128。官方明确没有任何 YOLO26 检查点是从随机权重直接训练 COCO 得到的,各尺寸 COCO 检查点(yolo26n.pt~yolo26x.pt)的训练配置中都记录了对应的yolo26*-objv1-150.pt起始权重。换言之,Objects365 预训练是 YOLO26 性能的一部分来源,而这些中间检查点被官方一并发布供社区复用。
使用预训练检查点:预测与微调
基于 Objects365 预训练权重做预测(365 类检测)或在其基础上微调,Python 与 CLI 两种方式如下:
# Python from ultralytics import YOLO # 加载 Objects365 预训练 YOLO26n 模型 model = YOLO("yolo26n-objv1-150.pt") # 运行预测 results = model.predict(source="image.jpg") # 从该预训练检查点开始训练(在你的数据集上) results = model.train(data="coco8.yaml", epochs=100, imgsz=640)# CLI:使用 Objects365 预训练模型做预测 yolo detect predict source=image.jpg model=yolo26n-objv1-150.pt # CLI:从 Objects365 预训练检查点开始训练 yolo detect train data=coco8.yaml model=yolo26n-objv1-150.pt epochs=100 imgsz=640从源码结构看,加载这些权重与加载普通yolo26n.pt走的是同一条资产下载与检查链路(GITHUB_ASSETS_NAMES白名单校验),因此不需要任何额外配置即可复用。官方训练配方文档给出的建议是:微调自己的数据集时直接从yolo26s-objv1-150.pt这类同尺寸 Objects365 权重出发,而不是从 COCO 检查点出发,因为后者只面向 80 类;完整训练参数列表见 训练模式文档,预测参数见 预测模式文档。
全量训练:在 Objects365 数据集上训练 YOLO26n
若要在整个 Objects365 数据集上从头训练(例如复现预训练阶段或扩展数据),以 100 epochs、640 图像尺寸训练 YOLO26n 为例:
# Python from ultralytics import YOLO # 加载模型(推荐加载预训练权重开始训练) model = YOLO("yolo26n.pt") # 开始训练 results = model.train(data="Objects365.yaml", epochs=100, imgsz=640)# CLI:从预训练 *.pt 模型开始训练 yolo detect train data=Objects365.yaml model=yolo26n.pt epochs=100 imgsz=640执行data="Objects365.yaml"时的实际链路:model.train()→ 数据校验入口check_det_dataset("Objects365.yaml")→ 解析 YAML、发现images/val不存在且autodownload开启 → 执行 YAML 内嵌下载脚本(见上文解析)→ 下载 712GB、转换标注 → 继续训练。首次运行日志会提示数据集下载目录位置。训练过程中的可调参数(epochs、imgsz、batch、patience早停等)的完整列表在 训练模式文档 中。
标注样例
Objects365 包含多样化的高分辨率图像,365 类上标注稠密,典型样本呈现真实户外/室内场景中的多目标框标注——这种 in-the-wild 密集标注风格正是其作为预训练源的说服力所在(官方文档配有样例图,可在 Objects365 数据集文档 中查看)。
引用与致谢
若在你的研究或开发工作中使用 Objects365 数据集,请引用原始论文:
@InProceedings{Shao_2019_ICCV, author = {Shao, Shuai and Li, Zeming and Zhang, Tianyuan and Peng, Chao and Yu, Gang and Zhang, Xiangyu and Li, Jing and Sun, Jian}, title = {Objects365: A Large-Scale, High-Quality Dataset for Object Detection}, booktitle = {Proceedings of the IEEE/CVF International Conference on Computer Vision (ICCV)}, month = {October}, year = {2019} }感谢创建并维护 Objects365 数据集的研究团队,该数据集是计算机视觉研究社区的重要资源。
常见问题
Objects365 用来做什么?训练与评估目标检测模型,尤其是"大词汇表预训练 + 小数据集微调"的范式:先在 365 类、174 万张图上预训练,再在任务特定的小数据集上微调。
数据规模到底多大?Ultralytics 的Objects365.yaml覆盖 365 类、1,742,289 张训练图 + 80,000 张验证图(共 1,822,289 张,无 test 划分);上游发布版本整体报告约 200 万张图像、3000 万个边界框。
下载需要多少空间?约 712GB:345GB 压缩包 + 367GB 解压数据。首次以data="Objects365.yaml"训练时自动触发下载,脚本还会安装faster-coco-eval并转换标注,耗时较长;空间紧张时可先查看 检测数据集总览 中的小体积替代方案。
为什么选 Objects365 而不是其他预训练集?365 类词汇表 + 稠密框标注 + 真实场景多样性。官方文档引用 ICCV 2019 论文:Objects365 预训练相对 ImageNet 预训练在 COCO 上提升 5.6 个 mAP 点(42.0 vs 36.4),且 Ultralytics 已用它为全部 YOLO26 尺寸模型完成预训练阶段(训练配方文档)。
YAML 配置文件在哪?仓库内 ultralytics/cfg/datasets/Objects365.yaml,包含数据路径、365 类类别名与内嵌下载脚本,是搭建训练环境的唯一入口配置。
【免费下载链接】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),仅供参考