简介:本资源为面向工业质检与安全生产场景的传送带异物检测数据集,可识别铁棍、垃圾等常见异物,适合从事目标检测算法训练、产线智能监控改造的开发者与研究人员使用。数据集采用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 python=3.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 \ data=dataset/data.yaml \ model=yolo11s.pt \ epochs=100 \ imgsz=640 \ batch=16 \ project=runs/train \ name=conveyor_foreign逐项说:model=yolo11s.pt是官方预训练权重,小目标多的话可以换yolo11m,但速度会降;imgsz=640是输入尺寸,监控图里铁棍可能只占几十像素,如果漏检严重,可以提到 960 甚至 1280,代价是显存和耗时上涨;epochs=100对几百到几千张图的数据集通常够,看results.csv里 mAP 是否还在涨;batch=16根据显存调,爆显存就减半。训练过程中重点盯三个指标:box_loss是否稳定下降、mAP50是否在 0.7 以上、precision和recall是否严重失衡。如果 recall 远低于 precision,说明漏检多,优先查标注框是不是太小或太紧。
3.3 推理与结果保存
训完在验证集上跑推理:
yolo detect predict \ model=runs/train/conveyor_foreign/weights/best.pt \ source=dataset/images/val \ save=True \ conf=0.25 \ iou=0.45conf=0.25是置信度阈值,低于它的框不输出;iou=0.45是 NMS 的 IoU 阈值,重叠超过它的框会被合并。工业场景里铁棍和垃圾可能挨得很近,iou设太高会误合并,设太低会重复框,0.45 是个稳妥起点。save=True会把带框的图存到runs/detect/predict,方便肉眼复核。我习惯先抽 20 张验证图看一遍,重点看有没有把皮带接缝、托辊阴影误判成铁棍——这类误报在监控画面里特别常见。
3.4 小目标与细长目标的针对性调整
传送带异物检测的难点集中在两点:铁棍细长、垃圾形态多变。除了提分辨率,还可以在训练时开mosaic和copy_paste增强,前者把四张图拼一张,后者把目标复制粘贴到其他位置,都能增加小目标的出现频率。Ultralytics 默认已经开了 mosaic,如果想关掉做对比,加mosaic=0.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 默认会缓存图像到内存(cache=True),数据集大而内存小时也会崩,加cache=False关掉。
4.5 现象:推理结果里同一个目标被框了好几次
原因是 NMS 的iou阈值设太高,重叠框没被合并。解决:把iou从 0.7 降到 0.45 左右再试。如果目标本身就很密集,可以试agnostic_nms=True,让不同类别之间也做 NMS。
5. 进阶技巧:把这份数据集用出工业级效果
第一轮训练跑通只是起点。想让模型在真实传送带上稳,我一般会做三件事。第一,用yolo export把best.pt导成 ONNX 或 TensorRT,部署到边缘盒子上,命令是:
yolo export model=best.pt format=onnx imgsz=640 half=Truehalf=True用 FP16 推理,速度能快一截,精度掉得很少。第二,做一轮困难样本挖掘:把现场误报和漏检的图挑出来,补标后加入训练集,再微调 20~30 个 epoch。第三,验证时别只看 mAP,要按「铁棍召回率」和「垃圾误报率」分开统计,因为工业现场对漏检铁棍的容忍度远低于对垃圾误报的容忍度。我吃过一次亏:模型整体 mAP 0.85 看着不错,但铁棍召回只有 0.6,上线后差点让一根铁棍进了破碎机。从那以后我每次训完都强制按类别拆开看指标,不达标就不部署。希望这份数据集和上面的流程能帮你少走一段弯路。
本文还有配套的精品资源,点击获取