Ultralytics YOLO26 实战:Objects365 大规模目标检测数据集训练、预训练检查点与 712GB 下载机制全解
2026/9/5 20:50:11 网站建设 项目流程

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 中维护该数据集的完整配置,定义两个数据划分:

划分图像数用途
Train1,742,289模型训练
Validation80,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.yaml 的download:块)内嵌了一段 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.py,clip=True参数保证越界框被裁剪到图像内部,避免出现归一化坐标大于 1 的脏标签。

这套脚本如何被触发?入口在 ultralytics/data/utils.py 的check_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-95mAP val 50参数量 (M)FLOPs (B)
YOLO26n64016.322.32.56.0
YOLO26s64024.331.79.621.3
YOLO26m64030.338.220.669.4
YOLO26l64032.240.125.087.7
YOLO26x64035.844.156.1195.7

分割模型使用 Objects365v1 的掩码生成,同时报告框与掩码精度:

模型尺寸 (px)mAP box 50-95mAP mask 50-95参数量 (M)FLOPs (B)
YOLO26n-seg64015.713.22.89.7
YOLO26s-seg64023.819.510.534.8
YOLO26m-seg64029.523.823.8122.7
YOLO26l-seg64031.725.328.2141.0
YOLO26x-seg64035.427.963.1315.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.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 类类别名与内嵌下载脚本,是搭建训练环境的唯一入口配置。

【免费下载链接】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),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询