YOLO户外垃圾分拣场景中可回收与不可回收物目标检测数据集

高数据量生物垃圾检测:YOLO26 深度训练方案

📊 数据集基本信息

  • 目标类别: [‘bio’, ‘glass’, ‘metals_and_plastic’, ‘non_recyclable’, ‘other’, ‘paper’, ‘unknown’]
  • 中文类别:[‘生物垃圾’, ‘玻璃’, ‘金属与塑料’, ‘不可回收垃圾’, ‘其他’, ‘纸类’, ‘未知’]
  • 训练集:9141 张
  • 验证集:805 张
  • 测试集:366 张
  • 总计:10312 张

📄 data.yaml 配置信息

该数据集提供了data.yaml文件,内容如下:

train: ../train/images
val: ../valid/images
test: ../test/images

nc: 7
names: ['bio', 'glass', 'metals_and_plastic', 'non_recyclable', 'other', 'paper', 'unknown']

🖼️ 标注可视化

标注图1
标注图2
标注图3

📦 数据集下载

🚀 👉 立即下载完整数据集 👈

✅ 包含全部 train / val / test 图像与 YOLO 标签,可直接训练。

数据集详细介绍

该数据集专为户外垃圾分拣场景设计,适用于智能垃圾分类、环境监测及自动化回收系统等实际应用。从名称和类别可推断,该数据集主要聚焦于城市或公共场所中的垃圾识别与分类任务,涵盖常见的可回收物与不可回收物,如塑料瓶、易拉罐、纸张、果皮、烟头、玻璃瓶和金属制品等。此类数据集可广泛应用于智能垃圾桶、环卫机器人、城市清洁管理平台等场景,为实现高效、精准的垃圾分拣提供数据支持。

数据集包含10312张图片,覆盖7种不同类别的垃圾目标,其中既包括常见可回收物如塑料、金属、玻璃等,也包含不可回收物如食物残渣、烟蒂等。图像内容多来源于真实户外环境,包含不同光照条件、背景复杂度及目标遮挡情况,具有较强的现实代表性和挑战性。这种多样化的数据分布有助于提升模型在复杂场景下的泛化能力,尤其适用于需要高精度检测的实际部署环境。

标注规范方面,数据集采用统一的边界框标注格式,确保每张图像中目标位置的准确性与一致性。标注过程中可能遵循了标准的目标检测标注流程,包括明确的类别定义、合理的标注边界以及对重叠目标的处理机制。这些规范为后续的模型训练提供了高质量的基础,能够有效提升目标检测模型的召回率与精确度,尤其适合用于YOLO系列等轻量级检测框架的优化与应用。

在典型应用方向上,该数据集可直接用于训练面向户外垃圾分拣的检测模型,辅助实现自动化分拣系统,也可结合图像识别与机械控制技术,构建智能回收设备。建议在实际落地时,结合具体场景进行数据增强与模型微调,以适应不同地区的垃圾类型分布与环境变化。同时,可进一步扩展至多模态融合、语义分割等更复杂的任务,提升整体系统的智能化水平。

YOLO26 目标检测算法原理

从工程角度看,YOLO26 最有价值的改进就是干掉了 NMS 后处理,这对部署来说省了太多事。

端到端无 NMS 推理:传统 YOLO 模型在推理后需要执行非极大值抑制(NMS)来去除冗余检测框,这增加了后处理延迟和部署复杂度。YOLO26 默认采用一对一(one-to-one)检测头,直接输出每张图像最多 300 个检测结果 (N, 300, 6),完全省去 NMS 步骤,推理流水线大幅简化。在 CPU 上的 ONNX 推理速度相比 YOLO11n 提升高达 43%。

无 DFL 回归:YOLO26 移除了分布焦点损失(Distribution Focal Loss, DFL)结构,检测头更加轻量。边界框回归不再受限于预设的离散区间,既降低了模型复杂度又保持了同等甚至更优的回归精度。

Progressive Loss 与 STAL:训练过程中通过渐进损失(Progressive Loss)将监督信号逐步从辅助头部转移到推理阶段的主头部。小目标感知标签分配(STAL)策略特别提升小目标的正样本标签覆盖率,改善小物体检测性能。

MuSGD 混合优化器:创新性地将大语言模型常用的 Muon 优化器与 SGD 结合,实现更稳定高效的训练收敛。相比纯 SGD,MuSGD 在大 batch 训练时收敛更快且不易震荡。

模型尺度与 COCO 性能:YOLO26 提供 N/S/M/L/X 五种尺度:

模型 mAP50-95 CPU ONNX(ms) T4 TensorRT(ms) 参数量
YOLO26n 40.9 38.9 1.7 2.4M
YOLO26s 48.6 87.2 2.5 9.5M
YOLO26m 53.1 220.0 4.7 20.4M
YOLO26l 55.0 286.2 6.2 24.8M
YOLO26x 57.5 525.8 11.8 55.7M

Nano 版本参数量仅 2.4M,CPU 推理速度比 YOLO11n 快 43%,适合边缘设备和小数据集;X 版本 mAP 达 57.5,适用于对准确率要求极高的场景。

双头架构设计:YOLO26 检测模型内置两个检测头——一对一(默认,无 NMS,输出 300 个检测框)和一对多(需 NMS,输出 8400 个候选框)。训练时一对多头作为辅助监督信号加速收敛,推理时默认使用一对一头实现端到端输出。

YOLO26 支持全部七大视觉任务:检测、实例分割、语义分割、深度估计、分类、姿态估计和定向边界框检测(OBB),一个框架覆盖从 2D 检测到 3D 感知的完整需求。

关键训练参数配置详解

YOLO 的超参设置有一定规律——不同规模的数据集适用的参数组合不同。以下表格是适配本数据集的建议配置。

参数 默认值 本项目设置 含义
model - yolo26n.pt 预训练权重,n/s/m/l/x 五种尺度
epochs 100 150 训练总轮数
imgsz 640 416 输入图像尺寸
batch 16 64 批次大小,根据显存调整
lr0 0.01 0.02 初始学习率
lrf 0.01 0.01 最终学习率因子(lr0 × lrf)
momentum 0.937 0.937 SGD 动量
weight_decay 0.0005 0.0005 权重衰减(L2 正则化)
warmup_epochs 3.0 3.0 预热轮数
warmup_momentum 0.8 0.8 预热期间动量初始值
box 7.5 7.5 边界框回归损失权重
cls 0.5 0.5 分类损失权重
dfl 1.5 1.5 DFL 损失权重(YOLO26 可置 0)
patience 100 -1 早停轮数
cos_lr False True 余弦学习率衰减
close_mosaic 10 10 最后 N 轮关闭 Mosaic 增强
optimizer auto SGD 优化器选择
amp True True 自动混合精度训练
freeze None 0 冻结前 N 层骨干网络参数
dropout 0.0 0.1 分类头 Dropout 率,防过拟合

损失权重的调参经验:如果你发现模型总是把背景误检为目标(FP 高),优先降 cls 权重;如果框的位置对但尺寸偏差大,优先调 box 权重。

学习率调参经验

  • 训练初期 loss 不下降 → 调大 lr0 或增加 warmup_epochs
  • 训练后期 loss 震荡 → 降低 lr0,增大 weight_decay
  • 验证集 loss 先降后升(过拟合)→ 增大 dropoutweight_decay 或减小 epochs
  • 小数据集(<100张)→ lr0=0.001, weight_decay=5e-4, dropout=0.2
  • 大数据集(>1000张)→ lr0=0.01, weight_decay=5e-4, batch=32+

训练可视化与TensorBoard:YOLO26 默认开启 TensorBoard 日志记录,训练过程中可实时查看 loss 曲线和指标变化。在命令行执行 tensorboard --logdir runs/detect/train 即可打开 Web 看板,每轮训练完成后自动刷新。训练结束后 results.png 生成的六合一曲线图是最直观的诊断工具——一眼就能看出是否过拟合、是否收敛、哪个 loss 在震荡。

断点续训机制:如果训练意外中断(断电、OOM 等),不用从头开始。YOLO 每轮保存 last.pt,恢复训练时指定 model=last.pt 并设置 resume=True,学习率和优化器状态都会从断点恢复,训练曲线也和连续训练一样平滑。

模型评估指标解读

训练完成后需要科学评估模型性能。YOLO26 训练器自动输出以下核心指标。

训练完成后,YOLO26 训练器自动输出以下指标:

mAP50(mAP@0.5):IoU 阈值为 0.5 时的平均精度均值,反映模型粗粒度定位能力。mAP50 ≥ 0.90 表示定位效果很好。

mAP50-95(mAP@0.5:0.95):IoU 从 0.5 到 0.95 共 10 个阈值上取平均。更严苛,反映精确定位能力,是更具代表性的综合评价指标。

Precision(精确率):检测结果中正确检测的比例。高 Precision 意味着虚警少。

Recall(召回率):真实目标中被成功检测到的比例。高 Recall 意味着漏检少。

F1 Score:Precision 和 Recall 的调和平均数 = 2×P×R/(P+R),综合衡量模型平衡性。

Confusion Matrix(混淆矩阵):N×N 矩阵,对角线为正确分类,非对角线为误分类,可定位类别间混淆情况。

训练曲线分析

  • train/box_loss 单调下降 → 边界框回归正常收敛
  • val/box_loss 先降后升 → 过拟合风险,应增大数据增强或减小模型
  • metrics/mAP50(B) 增长放缓趋于平稳 → 模型接近收敛上限
  • train 持续降、val 持续升 → 严重过拟合,建议减小模型或增大 dropout

指标使用场景

  • 安全生产场景(如安全帽检测)→ 优先保证 Recall,宁可多报不能漏报
  • 质检场景(如缺陷检测)→ 优先保证 Precision,降低误检率减少人工复核量
  • 通用检测 → 均衡优化,关注 mAP50-95 和 F1 Score

PR 曲线下面积就是 AP。但更重要的是曲线在不同 Recall 区间的表现:Recall < 0.5 时 Precision 暴跌说明模型太保守,Recall > 0.8 时 Precision 还行说明召回能力强。

YOLO 系列算法演进史

回看 YOLO 这十多年的进化史,你会发现目标检测的核心矛盾始终没变——如何在速度和精度之间取得最佳平衡。只是解决这个矛盾的手段在不断升级。

YOLOv1 (2015):将检测问题建模为单一回归问题,直接在输出层预测边界框和类别概率。速度极快但定位精度较差。

YOLOv2/YOLOv3 (2016-2018):引入 anchor box 机制、特征金字塔(FPN)和多尺度训练。YOLOv3 的 Darknet-53 骨干网络成为经典架构,至今仍被广泛使用。

YOLOv5 (2020):Ultralytics 在 PyTorch 上的实现,带来了完善的训练框架、自动锚框聚类和数据增强 pipeline,大幅降低了使用门槛。

YOLOv8 (2023):统一了检测、分割、分类和关键点任务的框架,引入 C2f 模块和无锚框(anchor-free)检测头。

YOLOv9 (2024):提出 GELAN(通用高效层聚合网络)和 PGI(可编程梯度信息),同等参数量下精度提升显著。

YOLOv10/YOLOv11 (2024):YOLOv10 首次提出无 NMS 端到端检测。YOLOv11 进一步优化骨干网络和训练策略,在速度和精度之间取得新平衡。

YOLO26 (2026):集历代之大成,核心创新包括:① 端到端无 NMS 一对一检测头 ② 无 DFL 的简化回归头 ③ Progressive Loss 渐进式监督转移 ④ STAL 小目标感知标签分配 ⑤ MuSGD 混合优化器。

关键设计演进总结

  • Anchor-based → Anchor-free(v8 起)
  • C3 → C2f → C3k2(骨干模块持续优化)
  • 多任务统一框架(v8 起)
  • NMS 后处理 → 无 NMS 端到端(v10/v26)
  • 单一损失函数 → 多任务联合损失(Box + Cls + DFL,v26 可去 DFL)

YOLO26 训练步骤详解

写个 Python 脚本控制训练流程,比命令行灵活不少

环境准备

pip install ultralytics
yolo checks
python -c "import torch; print(torch.cuda.is_available())"

命令行训练

yolo detect train     data=data.yaml     model=yolo26n.pt     epochs=150     imgsz=416     batch=64     device=0     lr0=0.02     patience=-1     cos_lr=True     close_mosaic=10

Python API 训练

from ultralytics import YOLO

model = YOLO("yolo26n.pt")
results = model.train(
    data="data.yaml",
    epochs=150,
    imgsz=416,
    batch=64,
    device=0,
    lr0=0.02,
    patience=-1,
    cos_lr=True,
    close_mosaic=10,
    augment=True,
    amp=True,
    workers=8,
)

训练输出文件

  • runs/detect/train/weights/best.pt:验证集上 mAP 最高的权重
  • runs/detect/train/weights/last.pt:最后一轮保存的权重
  • runs/detect/train/results.csv:每轮 loss 和指标数据
  • runs/detect/train/confusion_matrix.png:混淆矩阵图
  • runs/detect/train/results.png:训练曲线图
  • runs/detect/train/val_batch*_pred.jpg:验证集预测效果图

单张推理测试

model = YOLO("runs/detect/train/weights/best.pt")
results = model("test_image.jpg")
results[0].show()

多 GPU 分布式训练

yolo detect train data=data.yaml model=yolo26n.pt device=0,1 epochs=100

恢复中断的训练

yolo detect train model=path/to/last.pt data=data.yaml resume=True

部署与应用建议

大规模生产部署:10312 张训练数据 + YOLO26,精度基础已经很好。重点是推理吞吐和稳定性。

model.export(format="engine", imgsz=416, half=True, batch=32)
# TensorRT FP16 + 大 batch → 单 GPU 轻松 500+ FPS

生产环境 checklist:① 导出时指定 opset=12(ONNX)/ workspace=4GB(TensorRT)② 做一轮 int8 量化对比,确认精度损失可控 ③ 压测时同时测 1/4/8/16/32 的 batch 吞吐,找到最优配置 ④ 设置 P99 < 50ms 的监控告警。

训练的坑与填坑指南:训了这么多次 YOLO,我发现这规模的训练容易出现几个典型问题。

第一个坑是 batch size 和 imgsz 的配合。中等数据集下 batch=16 是个起点,但如果显存够,batch=32 会让梯度估计更稳定。不要为了省显存把 imgsz 降太多——416 以下小目标检测容易翻车。

第二个坑是验证集划分。自动 split 出来的验证集如果不做检查,可能和训练集有大量重复(特别是视频截帧数据集),导致验证指标虚高。跑完 split 后随机抽 10 对 train/val 样本用肉眼看看有没有高度相似的。

第三个坑是预训练权重的版本匹配。如果用的是 yolo26n.pt 但训练代码是旧版 YOLO,加载权重时可能 silently fail(部分层不匹配但不报错)。训练前用 model.info() 确认所有层都正常加载了。

你可能还需要知道的几个细节:YOLO26 的文档很全,但有些实战经验不在文档里。

imgsz=416imgsz=640 的差异比你想象的大。416 下每张图的训练时间短大约 30%,但对小目标的召回率可能差 5 个点以上。如果你的数据集中小目标(小于 32×32 像素)占比超过 30%,建议用 512 或 640。

② AMP(自动混合精度)默认开启,但这在 GTX 16 系列等不支持 TensorCore 的 GPU 上反而拖慢训练。如果遇到训练速度异常慢,试试关掉 AMP:amp=False

close_mosaic=10 意味着最后 10 轮关闭 Mosaic 数据增强。这个设置很关键——如果不关,模型始终在"拼贴图"上评估,没见过真实数据的分布,最终部署时精度会掉一大截。

④ 训练数据里有大量重复或高度相似的图片时(比如视频截帧),split='val' 自动划分可能导致训练和验证集高度相似,验证指标虚高。建议手动划分或使用按场景/时间分割的策略。

workers=8 是默认值,但如果你的硬盘是机械硬盘而非 SSD,并发读图可能会成为瓶颈。CPU 占用率满但 GPU 利用率低时,试着降低 workers 到 2-4。

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐