传送带异物检测数据集与YOLOv11实战:从标注到工业部署
简介本资源为面向工业质检与安全生产场景的传送带异物检测数据集可识别铁棍、垃圾等常见异物适合从事目标检测算法训练、产线智能监控改造的开发者与研究人员使用。数据集采用YOLOv11标注格式可直接接入主流检测框架进行训练与验证。压缩包共211个文件包含105张jpg图像、105个同名txt标注文件及1个yaml配置文件整体约4.68MB其中yaml用于定义类别与数据路径txt提供边界框标注jpg为对应现场画面结构规整便于快速加载。目前已有351人学习下载可作为传送带异物识别任务的入门与对比基线。图像取自真实监控视频抽帧覆盖不同时段与异物形态有助于读者直接开展模型训练、评估与部署验证减少自行采集与标注成本。1. 传送带异物检测数据集从文件名到 YOLOv11 标注这份资源到底能不能直接开训工厂夜班最怕什么传送带跑着煤块、砂石或者包装件突然混进来一根铁棍或者一坨垃圾轻则撕皮带重则卡死下游设备。靠人盯监控十分钟就眼花。这份「传送带中异物检测识别数据集」就是冲着这个场景来的它把 NVR 监控里截出来的真实画面整理成图标注成 YOLOv11 可直接吃的格式目标类别覆盖铁棍和垃圾两类异物。适合谁做工业视觉落地的算法工程师、想拿真实监控图练手 YOLOv11 目标检测的学生以及需要快速验证「传送带异物检测」这个命题能不能跑通的产品团队。文件名里那串NVR_ch1_main_20220912160000_20220912170000-dav_005736-161不是乱码它保留了监控通道、时间段和帧号意味着这批图是从连续视频里抽出来的场景一致性高不是网上随便爬的杂图。下面我按「先看懂数据、再跑通训练、最后避开坑」的顺序拆一遍。2. 拆开数据集文件名编码、类别定义与 YOLOv11 标注格式2.1 从 NVR 文件名反推采集逻辑先看几个典型文件名NVR_ch1_main_20220912170000_20220912180000-dav_000252-044_jpg.rf.b35c48b41b3287406e861ab231bdeeb7.jpg NVR_ch1_main_20220912160000_20220912170000-dav_005736-161_jpg.rf.e455dd23d6c7730174a7cc32f9f18ced.jpg NVR_ch1_main_20220912160000_20220912170000-dav_005820-642_jpg.rf.5025b8e79e70b33994fe4f5c5e89a448.jpg拆开看结构NVR_ch1表示第一路网络录像机通道main是主码流20220912170000_20220912180000是录像起止时间dav是封装格式000252-044里前段是文件序号、后段是帧偏移jpg.rf.后面那串哈希是导出工具自动加的防重名后缀。这套命名说明数据来自真实 NVR 回放导出不是摆拍。对训练的好处是同一时间段内光照、皮带速度、相机角度基本不变模型学到的特征更贴近现场坏处是如果只用一个时间段的数据模型会过拟合到那个特定光照。常见做法是训练前先按时间段做一次划分别让同一小时的图同时进训练集和验证集。2.2 类别定义与标注格式确认这份资源对外宣称可识别「铁棍」和「垃圾」两类。YOLOv11 的标注格式沿用了 YOLOv5/v8 的 txt 体系每张图对应一个同名.txt每行一个目标格式为class_id x_center y_center width height其中坐标都是归一化到 0~1 的相对值。假设类别映射是0: 铁棍、1: 垃圾那么一行标注长这样0 0.512 0.634 0.087 0.041 1 0.233 0.781 0.152 0.096第一行表示图中心偏右位置有一根铁棍宽占整图 8.7%、高占 4.1%第二行表示左下角有一块垃圾。这里有个容易翻车的点铁棍在监控画面里往往是细长条宽高比可能到 1:10 甚至更极端标注框如果贴得太紧训练时正样本面积太小容易漏检。我一般会检查标注框的宽高比分布对极端细长的目标适当外扩 2~3 个像素再归一化。2.3 目录结构该长什么样YOLOv11 官方推荐的数据集目录是dataset/ ├── images/ │ ├── train/ │ └── val/ ├── labels/ │ ├── train/ │ └── val/ └── data.yamldata.yaml是训练入口内容至少包含path: ./dataset train: images/train val: images/val nc: 2 names: 0: tiegun 1: lajinc是类别数names的顺序必须和标注文件里的class_id严格对应。我见过有人把names写成中文导致训练脚本读 yaml 时报编码错稳妥起见用拼音或英文显示的时候再映射回中文。如果你的图里还有「其他异物」没标别硬塞进这两类宁可先空着否则模型会学到矛盾的边界。3. 用 YOLOv11 跑通训练环境、配置与第一轮验证3.1 环境配置与依赖安装YOLOv11 由 Ultralytics 维护装法比早期版本省心。我一般用 conda 建一个干净环境避免和系统里的 torch 打架conda create -n yolo11 python3.10 -y conda activate yolo11 pip install ultralytics装完验证一下yolo checks这条命令会打印 torch、CUDA、显卡型号。如果 CUDA 显示不可用先别急着训检查驱动和 torch 版本是否匹配。工业现场很多机器是 30 系或 40 系卡pip install ultralytics默认会拉带 CUDA 的 torch但如果你之前装过 CPU 版需要手动重装。显存方面传送带异物检测的图分辨率通常不高监控截图常见 1920×1080 或更低8GB 显存跑yolo11s批量 16 基本够用。3.2 训练命令与关键参数假设data.yaml放在dataset/下一条最简训练命令yolo detect train \ datadataset/data.yaml \ modelyolo11s.pt \ epochs100 \ imgsz640 \ batch16 \ projectruns/train \ nameconveyor_foreign逐项说modelyolo11s.pt是官方预训练权重小目标多的话可以换yolo11m但速度会降imgsz640是输入尺寸监控图里铁棍可能只占几十像素如果漏检严重可以提到 960 甚至 1280代价是显存和耗时上涨epochs100对几百到几千张图的数据集通常够看results.csv里 mAP 是否还在涨batch16根据显存调爆显存就减半。训练过程中重点盯三个指标box_loss是否稳定下降、mAP50是否在 0.7 以上、precision和recall是否严重失衡。如果 recall 远低于 precision说明漏检多优先查标注框是不是太小或太紧。3.3 推理与结果保存训完在验证集上跑推理yolo detect predict \ modelruns/train/conveyor_foreign/weights/best.pt \ sourcedataset/images/val \ saveTrue \ conf0.25 \ iou0.45conf0.25是置信度阈值低于它的框不输出iou0.45是 NMS 的 IoU 阈值重叠超过它的框会被合并。工业场景里铁棍和垃圾可能挨得很近iou设太高会误合并设太低会重复框0.45 是个稳妥起点。saveTrue会把带框的图存到runs/detect/predict方便肉眼复核。我习惯先抽 20 张验证图看一遍重点看有没有把皮带接缝、托辊阴影误判成铁棍——这类误报在监控画面里特别常见。3.4 小目标与细长目标的针对性调整传送带异物检测的难点集中在两点铁棍细长、垃圾形态多变。除了提分辨率还可以在训练时开mosaic和copy_paste增强前者把四张图拼一张后者把目标复制粘贴到其他位置都能增加小目标的出现频率。Ultralytics 默认已经开了 mosaic如果想关掉做对比加mosaic0.0。另外anchor在 YOLOv11 里已经是自适应不用手动调但如果你发现铁棍的召回一直上不去可以检查一下数据里铁棍样本占比是不是太低必要时做过采样。4. 避坑与排查标注、划分和训练里最容易翻车的几件事4.1 现象训练 loss 正常但 mAP 一直卡在 0.3 以下原因通常是标注类别错位。比如data.yaml里names写的是0: tiegun, 1: laji但标注文件里把垃圾标成了 0。模型学到的语义和你的预期完全反了。解决写个小脚本统计每个class_id的出现次数再抽几张图用labelImg或cvat打开核对。别嫌麻烦这一步省掉后面全是玄学。4.2 现象验证集 mAP 很高但拿现场新视频一跑全是误报原因多半是数据划分泄漏。同一段 NVR 录像里抽出来的图相邻帧几乎一样如果随机划分训练集和验证集会包含同一场景的近似帧验证指标虚高。解决按时间段或按视频文件划分比如 16:00–17:00 的图做训练17:00–18:00 的图做验证。文件名里的时间段就是现成的划分依据。4.3 现象铁棍漏检严重垃圾检测正常原因是细长目标在 640 分辨率下像素太少或者标注框贴得太紧导致正样本面积不足。解决先把imgsz提到 960 试一轮如果还不行检查标注框是否把铁棍完整包住必要时外扩几个像素再不行就在数据里增加铁棍的样本比例或者用copy_paste增强专门复制铁棍。4.4 现象训练到一半显存爆了原因是batch或imgsz设太大或者workers开太多导致内存交换。解决先把batch减半再降imgsz最后调workers。另外 Ultralytics 默认会缓存图像到内存cacheTrue数据集大而内存小时也会崩加cacheFalse关掉。4.5 现象推理结果里同一个目标被框了好几次原因是 NMS 的iou阈值设太高重叠框没被合并。解决把iou从 0.7 降到 0.45 左右再试。如果目标本身就很密集可以试agnostic_nmsTrue让不同类别之间也做 NMS。5. 进阶技巧把这份数据集用出工业级效果第一轮训练跑通只是起点。想让模型在真实传送带上稳我一般会做三件事。第一用yolo export把best.pt导成 ONNX 或 TensorRT部署到边缘盒子上命令是yolo export modelbest.pt formatonnx imgsz640 halfTruehalfTrue用 FP16 推理速度能快一截精度掉得很少。第二做一轮困难样本挖掘把现场误报和漏检的图挑出来补标后加入训练集再微调 20~30 个 epoch。第三验证时别只看 mAP要按「铁棍召回率」和「垃圾误报率」分开统计因为工业现场对漏检铁棍的容忍度远低于对垃圾误报的容忍度。我吃过一次亏模型整体 mAP 0.85 看着不错但铁棍召回只有 0.6上线后差点让一根铁棍进了破碎机。从那以后我每次训完都强制按类别拆开看指标不达标就不部署。希望这份数据集和上面的流程能帮你少走一段弯路。本文还有配套的精品资源点击获取