首页
/ Ultralytics YOLO26 实战:Objects365 大规模目标检测数据集训练、预训练检查点与 712GB 下载机制全解

Ultralytics YOLO26 实战:Objects365 大规模目标检测数据集训练、预训练检查点与 712GB 下载机制全解

2026-09-04 21:18:49作者:舒璇辛Bertina

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 预训练数据源的原因;
  • 典型应用场景:检测骨干预训练(后续在 COCOVOC 等更小数据集上微调)、零售货架识别(瓶、杯、运动鞋、手提包等日用类别)、机器人与智能环境的无结构化场景识别、以及检测模型泛化能力基准评测。

数据集结构与 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 个类别,包括 PersonSneakersCarStreet LightsBottleDogCatTraffic SignLaptopRefrigerator 等(完整 365 项见 Objects365.yaml)。需要特别留意类别名中带有斜杠的复合类别,如 Cabinet/shelfHandbag/SatchelPen/PencilBowl/BasinTruckHeavy Truck 分属不同类别等——在自定义下游数据集中若沿用其中部分类别,需保持这种命名一致才能对齐权重中的类别索引。

下载脚本的源码级解析

YAML 尾部(Objects365.yamldownload: 块)内嵌了一段 Python 脚本,这是 Ultralytics "数据集即配置" 设计的核心——把数据获取逻辑与配置放在一起,首次训练时自动执行。该脚本的工作流程:

  1. 安装评估依赖:调用 check_requirements("faster-coco-eval") 安装 faster-coco-eval 包,并从中导入 COCO 类用于解析原始 COCO 格式标注;
  2. 分片并行下载: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
  3. 图像归位:用 ThreadPoolExecutor(max_workers=16) 把各补丁解压出的 *.jpg 重命名平铺到 images/<split>/ 下;
  4. 标注格式转换:以类别为主循环遍历 365 个类别,对每张图像调用 COCO.getAnnIds / loadAnns 取出标注框,将 COCO 的像素级 xywh 经 xyxy2xywhn 转为归一化 xywhn 五元组,逐行追加写入 labels/<split>/<image>.txt{class_id} {x} {y} {w} {h},精度 5 位小数)——这正是 YOLO 训练所需的标准标签格式。

其中坐标转换函数 xyxy2xywhn 定义在 ultralytics/utils/ops.pyclip=True 参数保证越界框被裁剪到图像内部,避免出现归一化坐标大于 1 的脏标签。

这套脚本如何被触发?入口在 ultralytics/data/utils.pycheck_det_dataset()

  • 它先做数据完整性校验——trainval 键必须存在,namesnc 必须二选一,二者共存时长度必须一致(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.pyGITHUB_ASSETS_NAMES 包含 yolo26{k}-objv1{suffix}.pt(k ∈ nsmlx,suffix 为 -150-seg),意味着 yolo26n-objv1-150.ptyolo26s-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、转换标注 → 继续训练。首次运行日志会提示数据集下载目录位置。训练过程中的可调参数(epochsimgszbatchpatience 早停等)的完整列表在 训练模式文档 中。

标注样例

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 类类别名与内嵌下载脚本,是搭建训练环境的唯一入口配置。

登录后查看全文
热门项目推荐
相关项目推荐

项目优选

收起
kernelkernel
deepin linux kernel
C
33
18
ops-transformerops-transformer
本项目是CANN提供的transformer类大模型算子库,实现网络在NPU上加速计算。
C++
1.12 K
2.72 K
kernelkernel
openEuler内核是openEuler操作系统的核心,既是系统性能与稳定性的基石,也是连接处理器、设备与服务的桥梁。
C
527
590
ops-nnops-nn
本项目是CANN提供的神经网络类计算算子库,实现网络在NPU上加速计算。
C++
904
1.82 K
pytorchpytorch
作为 Ascend for PyTorch 社区的核心组件,TorchNPU 是昇腾专为 PyTorch 打造的深度学习适配插件,使 PyTorch 框架能够直接调用昇腾 NPU,为开发者提供昇腾 AI 处理器的超强算力。
Python
854
1.34 K
docsdocs
暂无描述
Markdown
889
5.78 K
jiuwenswarmjiuwenswarm
JiuwenSwarm 是一款基于openJiuwen开发的智能AI Agent,它能够将大语言模型的强大能力,通过你日常使用的各类通讯应用,直接延伸至你的指尖。
Python
3.52 K
1.01 K
ops-mathops-math
本项目是CANN提供的数学类基础计算算子库,实现网络在NPU上加速计算。
C++
1.33 K
1.45 K
cann-learning-hubcann-learning-hub
CANN 学习中心仓,支持在线互动运行、边学边练,提供教程、示例与优化方案,一站式助力昇腾开发者快速上手。
Jupyter Notebook
980
502
AscendNPU-IRAscendNPU-IR
AscendNPU-IR是基于MLIR(Multi-Level Intermediate Representation)构建的,面向昇腾亲和算子编译时使用的中间表示,提供昇腾完备表达能力,通过编译优化提升昇腾AI处理器计算效率,支持通过生态框架使能昇腾AI处理器与深度调优
C++
540
384