Ultralytics YOLO26 实战:Objects365 大规模目标检测数据集训练、预训练检查点与 712GB 下载机制全解
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 类类别名与内嵌下载脚本,是搭建训练环境的唯一入口配置。
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