Ultralytics YOLO26 包裹分割实战:基于 Package Segmentation 数据集训练物流场景实例分割模型
2026/9/7 5:18:15 网站建设 项目流程

Ultralytics YOLO26 包裹分割实战:基于 Package Segmentation 数据集训练物流场景实例分割模型

【免费下载链接】ultralyticsUltralytics YOLO26, YOLO11, YOLOv8 — object detection, instance segmentation, semantic segmentation, image classification, pose estimation, object tracking项目地址: https://gitcode.com/GitHub_Trending/ul/ultralytics

本文围绕 Ultralytics 仓库内置的 Package Segmentation 数据集(2,197 张标注图片、单一package类别)展开,面向物流分拣、仓储自动化与质检等场景,讲解如何借助该数据集训练、验证并部署 YOLO 实例分割模型。读完本文,你将掌握数据集的下载与目录结构、package-seg.yaml配置文件的逐项含义、Python/CLI 两种完整训练流程,以及分割训练器(SegmentationTrainer)与验证器(SegmentationValidator)在源码层面的关键工作机制。

数据集概览

Package Segmentation Dataset 是由 Ultralytics 整理的包裹(package)实例分割数据集,包含2,197 张人工标注图片,全部标注为单一package类别。它专为物流与仓储自动化中的包裹识别、分拣、搬运等需求设计,可与 Ultralytics YOLO 系列分割模型直接搭配,在计算机视觉管线中实现实时包裹分析。

从仓库内置的配置文件 package-seg.yaml 可以确认数据集的完整规格:

项目数值
训练集1,920 张图片(images/train,用于训练深度学习模型)
验证集188 张图片(images/val,训练期间调参、监控过拟合)
测试集89 张图片(images/test,训练结束后评估模型)
类别单一package类,覆盖所有被标注的包裹
下载体积约 103 MB(.zip压缩包)

数据集覆盖多种场地、环境与包裹密度,模型在真实物流场景中训练后需要泛化到的正是这类多样性。关于分割任务的更多工作流,可参考仓库的 segmentation 任务文档;更多分割数据集可查阅 分割数据集索引。

典型应用场景

  • 智能仓储与物流:现代仓库中,视觉 AI 可以自动化包裹识别与分拣。用该数据集训练的模型能在实时甚至光线昏暗、空间杂乱的环境下检测并分割包裹,从而加快处理速度、减少差错、提升整体运营效率。
  • 质量控制与破损检测:通过分析包裹的轮廓形状与外观,模型可以识别变形、破损的包裹,让只有完好的包裹进入供应链,减少客诉与退货。这是制造质量控制的关键一环,对保障货物完整性至关重要。

数据集 YAML 配置详解

在 Ultralytics 中,数据集通过 YAML 文件声明:其中定义路径、类别与下载信息。Package Segmentation 数据集对应的是仓库内的 package-seg.yaml,其完整内容如下:

# Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license # Package-seg dataset by Ultralytics # Documentation: https://docs.ultralytics.com/datasets/segment/package-seg # Example usage: yolo train data=package-seg.yaml # parent # ├── ultralytics # └── datasets # └── package-seg ← downloads here (103 MB) # Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..] path: package-seg # dataset root dir train: images/train # train images (relative to 'path') 1920 images val: images/val # val images (relative to 'path') 188 images test: images/test # test images (relative to 'path') 89 images # Classes names: 0: package # Download script/URL (optional) download: https://github.com/ultralytics/assets/releases/download/v0.0.0/package-seg.zip

逐项说明:

  • path:数据集根目录名。首次使用时框架会自动下载压缩包并解压到datasets/package-seg/目录下(注释中的目录树也说明了这一点);
  • train/val/test:三个划分子集,均为相对于path的目录路径,分别对应 1,920 / 188 / 89 张图片。这里也体现了 YOLO 数据 YAML 支持三种写法:目录、图片路径列表文件(imgs.txt)或目录列表;
  • names:类别字典,本数据集只有0: package一个类;
  • download:可选的自动下载地址。

首次使用时的自动下载与校验机制

源码层面,data=package-seg.yaml会被 check_det_dataset 处理,值得关注的行为有:

  1. 裸名称解析:如果传入的字符串既不是 URL 也不存在对应文件,框架会尝试补全.yaml/.yml后缀(如package-segpackage-seg.yaml),因此在命令行中写data=package-seg.yaml或裸名均可命中仓库内置配置;
  2. 自动下载:若 YAML 中path指向的目录不存在且提供了downloadURL,框架会下载并解压约 103 MB 的package-seg.zip到 datasets 目录,之后无需再下载;
  3. 格式校验:函数会强制要求trainval两个键存在(缺失会抛出SyntaxError),并要求namesnc至少有一个;若两者同时出现,还校验names长度与nc一致。Package 数据集声明了names,框架据此自动推导nc=1

这套机制意味着:只要机器上装好了 ultralytics,第一次调用训练时数据集就会自动就绪,无需手动下载解压。

训练与验证:完整用法

下面以 YOLO26n 分割模型为例,在 Package Segmentation 数据集上训练 100 个 epoch、输入尺寸 640。所有可调参数详见 训练文档 与 超参数调优指南。

Python API

from ultralytics import YOLO # Load a model model = YOLO("yolo26n-seg.pt") # load a pretrained segmentation model (recommended for training) # Train the model on the Package Segmentation dataset results = model.train(data="package-seg.yaml", epochs=100, imgsz=640) # Validate the model results = model.val() # Perform inference on an image results = model("path/to/image.jpg")

CLI

# Load a pretrained segmentation model and start training yolo segment train data=package-seg.yaml model=yolo26n-seg.pt epochs=100 imgsz=640 # Resume training from the last checkpoint yolo segment train data=package-seg.yaml model=path/to/last.pt resume=True # Validate the trained model yolo segment val data=package-seg.yaml model=path/to/best.pt # Perform inference using the trained model yolo segment predict model=path/to/best.pt source=path/to/image.jpg

几点实操建议(结合仓库 模型训练技巧指南):

  • 单类别、2,197 张图的小数据集,建议先用yolo26n-seg.pt这类轻量预训练权重微调,epochs=100是文档给出的推荐起点,实际可用patience早停避免过拟合;
  • 验证集仅 188 张,验证指标会有波动,可结合 89 张测试集做最终评估,不要只看验证曲线;
  • imgsz=640是默认值;若仓库相机视角中大包裹占比高,可以适当降低输入尺寸换取速度,反之小包裹多则可适度增大。

源码视角:分割训练器与验证器如何工作

在 Ultralytics 中,yolo segment trainmodel.train(data=..., task="segment")最终都会落到 SegmentationTrainer。该类继承自DetectionTrainer,核心差异在于:

  • 构造函数中强制将task覆写为"segment"(train.py#L37-L40),确保数据加载器按分割格式解析标注(多边形/掩码而非仅边界框);
  • get_model()SegmentationModel构建网络,并根据数据 YAML 的nc自适应类别数——Package 数据集nc=1,模型的分割头输出即为单类掩码系数;
  • get_validator()返回 SegmentationValidator,训练期间每个验证轮次都会用它计算 Box 与 Mask 双套指标。

SegmentationValidator的几个关键实现值得了解:

  • 双轨指标get_desc()返回的指标表头包含Box(P, R, mAP50, mAP50-95)Mask(P, R, mAP50, mAP50-95)两组列(val.py#L76-L90),因此验证日志中会同时看到检测框与分割掩码两套 mAP;
  • 掩码匹配_process_batch()在类别匹配之外,额外用mask_iou()计算预测掩码与真值掩码的 IoU,生成tp_m正确预测矩阵,这是 Mask mAP 的计算基础(val.py#L140-L167);
  • 原型(proto)解码postprocess()从模型输出中取出 proto 特征图,与逐目标系数结合经ops.process_mask还原出掩码(val.py#L92-L107);开启save_jsonsave_txt时会自动切换到更高精度的process_mask_native
  • COCO 风格评估pred_to_json()将掩码编码为 COCO 的 RLE 字符串(segmentation字段),eval_json()bboxsegm两类指标走 COCO 评测(val.py#L293-L312),适合与第三方基线对比。

对于 YOLO26 系列分割模型,网络结构定义在 yolo26-seg.yaml:backbone 与 head 在 P3/8、P4/16、P5/32 三个尺度上做多尺度预测,末端由Segment26头输出分割原型与系数;文件中的scales段给出了 n/s/m/l/x 五档规格(如n档约 313 万参数、10.5 GFLOPs)。训练包裹这类单类、目标通常较大的场景,n档即有良好性价比。

样本数据与标注示例

数据集中的图片来自真实物流环境,标注掩码勾勒出每一个包裹的轮廓。训练后的典型效果是:模型在一张堆满包裹的传送带画面上同时输出多个带类别标签与置信度的分割掩码,系统可据此实时定位、计数和检验每一个包裹。

数据集覆盖不同场地、环境条件与包裹密度组合,因此在其上训练的模型能够泛化到真实物流场景中的各种画面。更多分割数据集(如 carparts-seg、crack-seg、coco8-seg 等)可在 数据集总览 中查找。

部署建议

训练完成后,模型可按 ONNX 集成文档 与 TensorRT 集成文档 导出为onnx/engine格式,部署到仓库边缘硬件(工控机、Jetson 等)上运行实时推断,例如:

yolo export model=path/to/best.pt format=onnx yolo export model=path/to/best.pt format=engine

单类别、目标数量可控的包裹分割任务在边缘端上的开销通常较低,配合导出格式即可满足实时分拣流水线的延迟要求。

引用与致谢

如果你在研究或开发中使用了 Package Segmentation 数据集,请按如下方式引用(来源为 Roboflow Universe 上 factorypackage 用户发布的数据集):

@misc{ factory_package_dataset, title = { factory_package Dataset }, type = { Open Source Dataset }, author = { factorypackage }, url = { https://universe.roboflow.com/factorypackage/factory_package }, year = { 2024 }, month = { jan }, note = { visited on 2024-01-24 }, }

感谢数据集作者对计算机视觉社区的贡献。更多数据集与训练技巧可分别参考 Ultralytics 数据集合集 与 模型训练技巧指南。

常见问题(FAQ)

Package Segmentation Dataset 是什么?如何配合 YOLO26 使用?它是 2,197 张包裹图片的实例分割数据集,标注单一package类别,面向物流分拣与质检场景。通过仓库内置的package-seg.yaml配置,直接传给YOLO.train()yolo segment train即可使用。

数据集有多少图片和类别?共 2,197 张图:训练 1,920、验证 188、测试 89,均为单一package类。约 103 MB 的压缩包在首次使用时自动下载并解压。

如何训练?加载预训练分割权重(如yolo26n-seg.pt),以package-seg.yaml为数据配置执行训练,Python 与 CLI 完整示例见上文 训练与验证 小节;全量参数见 训练文档。

为什么物流包裹分割适合 YOLO26?YOLO26 在实例分割上兼顾实时速度与精度,能在光线昏暗或杂乱的仓库环境中可靠地检测与分割包裹;训练产物还可导出 ONNX、TensorRT 等格式部署到仓库硬件。

配置文件在哪里?位于仓库的 ultralytics/cfg/datasets/package-seg.yaml,定义了数据集路径、三个子集目录、单一package类别与自动下载地址。

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

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

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

立即咨询