YOLO住宅区街道垃圾桶目标检测数据集

YOLO26 端到端检测模型训练笔记

📊 数据集基本信息

  • 目标类别: [‘0’]
  • 中文类别:[‘垃圾桶’]
  • 训练集:496 张
  • 验证集:141 张
  • 测试集:71 张
  • 总计:708 张

📄 data.yaml 配置信息

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

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

nc: 1
names: ['0']

🖼️ 标注可视化

标注图1

标注图2

标注图3

数据集下载

数据集下载:点击下载

数据集详细介绍

YOLO住宅区街道垃圾桶目标检测数据集聚焦于城市环境中常见的垃圾收集设施,旨在为智能城市管理、环境监控及自动化巡检提供基础数据支持。该数据集适用于需要识别和定位住宅区内垃圾桶位置的场景,如环卫机器人路径规划、智能垃圾分类系统开发以及城市基础设施管理平台构建。通过该数据集,可训练高效的检测模型,提升对复杂环境下垃圾桶的识别准确率与响应速度,具有较强的实用价值。

数据集包含708张图像,覆盖多种光照条件、天气状况及拍摄角度,以增强模型的泛化能力。尽管类别数量仅为1类,即“垃圾桶”,但其在实际应用中需具备对不同形状、颜色和材质垃圾桶的识别能力,因此数据的多样性对于提升模型鲁棒性至关重要。此外,数据集中可能包含不同品牌或型号的垃圾桶,进一步增加了检测任务的挑战性。

标注规范方面,数据集采用严格的边界框标注方式,确保每个垃圾桶的位置信息精确无误。这种高精度标注为训练高质量的目标检测模型提供了可靠依据,尤其适合用于YOLO等轻量级检测算法的优化与部署。同时,数据集的规模适中,便于快速迭代和验证算法效果,降低了实验成本。

在实际应用中,该数据集可广泛用于环卫设备智能化改造、城市环境监测系统建设及基于视觉的自动巡检方案设计。建议开发者结合具体场景需求,对数据进行扩展或与其他传感器数据融合,以提升系统的整体性能。此外,针对类别单一的特点,可考虑引入多任务学习框架,拓展至垃圾满溢状态识别等更复杂的任务,进一步挖掘数据的应用潜力。

YOLO26 目标检测算法原理

相比于 YOLOv11 等前代版本,YOLO26 在架构层面做出了几个重要改变,让推理流程更简洁高效。

端到端无 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 感知的完整需求。

YOLO26 训练步骤详解

训练其实很简单,装好环境后两行命令就能跑起来

环境准备

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

命令行训练

yolo detect train     data=data.yaml     model=yolo26n.pt     epochs=120     imgsz=416     batch=32     device=0     lr0=0.01     patience=100     cos_lr=True     close_mosaic=10

Python API 训练

from ultralytics import YOLO

model = YOLO("yolo26n.pt")
results = model.train(
    data="data.yaml",
    epochs=120,
    imgsz=416,
    batch=32,
    device=0,
    lr0=0.01,
    patience=100,
    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

关键训练参数配置详解

拿到一个新数据集时,面对 YOLO 那一长串参数难免眼花。其实大部分保持默认就好,只需要关注几个关键参数。

参数 默认值 本项目设置 含义
model - yolo26n.pt 预训练权重,n/s/m/l/x 五种尺度
epochs 100 120 训练总轮数
imgsz 640 416 输入图像尺寸
batch 16 32 批次大小,根据显存调整
lr0 0.01 0.01 初始学习率
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 100 早停轮数
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 率,防过拟合

损失权重里最需要关注的是 box=7.5 和 cls=0.5 的比例。box/cls 比越大,模型越在意框的位置而非类别正确性。如果你的场景对定位精度要求极高(如精密零件检测),可以考虑把 box 提到 10。

学习率调参经验

  • 训练初期 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,学习率和优化器状态都会从断点恢复,训练曲线也和连续训练一样平滑。

YOLO 系列算法演进史

从 2015 年 YOLOv1 初代论文发表算起,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)

YOLO 数据增强策略

小数据集训练的关键是数据增强,YOLO 内置的这几个增强手段很实用。

Mosaic 拼接:将 4 张训练图像随机缩放后拼接为一张,大幅增加场景组合的多样性。对背景复杂、目标尺寸差异大的场景特别有效。训练最后 10 轮通过 close_mosaic=10 自动关闭 Mosaic,让模型适应真实数据分布。

MixUp 混合:两张图像按一定比例(α=0.3)线性混合,标签也按同比例混合。能平滑模型决策边界,对小数据集防过拟合效果显著。

HSV 色彩空间扰动:在 HSV 通道上对图像进行随机偏移(色相 ±0.015、饱和度 ±0.7、明度 ±0.4),模拟不同光照和色彩条件下的拍摄效果,提升模型对光照变化的鲁棒性。

几何变换:随机水平翻转(fliplr=0.5)、随机缩放(scale=0.5)、随机平移(translate=0.1),帮助模型学习位置不变性特征。

Copy-Paste 增强:将目标实例复制到另一张图像的随机位置,增加目标实例多样性。通过 copy_paste=0.3 控制概率。

增强参数配置(data.yaml 中可选覆盖):

hsv_h: 0.015
hsv_s: 0.7
hsv_v: 0.4
degrees: 0.0
translate: 0.1
scale: 0.5
shear: 0.0
perspective: 0.0
flipud: 0.0
fliplr: 0.5
mosaic: 1.0
mixup: 0.1
copy_paste: 0.1

部署与应用建议

部署架构选择:708 张图的数据量处于训练+部署的"甜蜜点"——数据够多让模型有了泛化能力,又不至于大到部署困难。建议采用 ONNX + OpenCV DNN 的纯 CPU 方案,对硬件要求最低。

model = YOLO("runs/detect/train/weights/best.pt")
# GPU 服务器场景选 TensorRT
model.export(format="engine", device=0, half=True)
# 移动端/嵌入式选 NCNN
model.export(format="ncnn", imgsz=416)

硬件选型建议

  • 预算充足 + 追求实时 → NVIDIA Jetson Orin(TensorRT,>100fps)
  • 中等预算 + 低延迟 → RK3588(NCNN,20-40fps)
  • 零硬件成本 + 准实时 → 普通 PC CPU(ONNX Runtime,30-50ms/帧)

持续迭代方案:模型上线后建立反馈机制——把低置信度(0.3-0.5)的检测结果保存下来,每周人工复核 10-20 张加入训练集。这种"主动学习"流程能持续提升模型精度,不需要一次性标完所有数据。

中等规模数据集的快速迭代策略:708 张图不算多也不算少,刚好处于一个可以玩出花的区间。

建议先把训练拆成两阶段:第一阶段用默认参数完整训 80 轮看上限在哪,第二阶段针对弱项做定向优化。不要在第一次训练就试图把参数调到完美——这只会浪费时间。

第一阶段结束后,看三个指标做诊断:

  • val_box_loss 是否降到 0.7 以下 → 如果没到,加大 epochs
  • mAP50-95 相对 mAP50 的差距 → 如果差距 > 15 个点,说明定位精度差,尝试提高 imgsz
  • 各类别的 AP 方差 → 如果某类 AP 远低于均值,优先补充该类数据

第二阶段根据诊断结果调整参数重新训练,通常 2-3 轮迭代就能找到最优组合。

实践建议:以上内容整理了 YOLO26 官方文档和社区反馈的核心要点。真实训练中不同的数据集总会有意料之外的问题,因此跑起来后重点盯三个指标:val/box_loss(边界框回归质量)、metrics/mAP50(B)(粗粒度检测精度)、metrics/mAP50-95(B)(精确定位水平)。

如果训练到一半 val/box_loss 开始抬头,第一时间检查是否过拟合——把 weight_decay 加倍、dropout 拉到 0.2,通常能刹住车。反过来,如果两个 loss 都居高不下且训练了 30 轮都没改善,那大概率是学习率太低或者标注有硬伤,建议先排查标签质量再回头调参。

训练完成后的操作清单:① 在测试集上确认 mAP 符合预期 ② 检查 confusion_matrix.png 有无异常的模式 ③ 抽取几张 val_batch*_pred.jpg 用肉眼判断预测效果是否合理。这些都做完后,再决定是否导出部署。

另外一个容易踩的坑是标注类别名称不统一——比如有些标签文件里同一类目标叫 ‘car’,有些叫 ‘Car’,YOLO 会当成两个不同的类。训练前用 grep 检查一遍 labels/ 下的 txt 文件就能避免这种低级错误。

Logo

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

更多推荐