配套数据集:管道监测目标检测数据集,2 个类别
leak(泄漏)、pipe(管道),共 8718 张图像,YOLO 标准标注格式,已划分 train/valid/test。
数据集是面向工业管道巡检场景的目标检测数据集,用于识别管道本体以及管道泄漏缺陷,可训练 AI 模型自动定位管道位置、识别管道泄漏点,适用于油气管道、市政输水管道、化工管线的视觉智能巡检任务。 数据集总图像数量8718 张,目标检测类别共 2 类:leak(泄漏)、pipe(管道),采用标准 YOLO 系列标注格式,可直接用于 YOLOv5/v8 等主流目标检测模型训练。管道监测与控制计算机视觉数据集介绍
一、环境准备
1. 硬件推荐
- 最低:GPU 显存 ≥6G(如 1660S/3060);推荐显存 ≥8G,训练速度更快
- CPU 仅可做推理,训练速度极慢,不推荐
2. 软件环境安装(Python 3.8 ~ 3.11)
# 安装 ultralytics YOLOv8库 pip install ultralytics # 可选依赖(可视化、数据处理) pip install opencv-python matplotlib安装完成后,可执行下面命令验证环境
yolo --version二、数据集目录结构 & yaml 配置
1. 文件夹目录(固定结构)
pipeline_dataset/ ├─ images/ │ ├─ train/ # 训练集图片 │ ├─ valid/ # 验证集图片 │ └─ test/ # 测试集图片 ├─ labels/ │ ├─ train/ # 训练集txt标注 │ ├─ valid/ # 验证集txt标注 │ └─ test/ # 测试集txt标注 └─ pipeline.yaml # 数据集配置文件2. pipeline.yaml 文件内容
train: ../train/images val: ../valid/images test: ../test/images nc: 2 names: ['leak', 'pipe']注意:根据你实际存放位置,修改 train/val/test 的路径,使用相对路径或者绝对路径。 nc=2 代表 2 个类别,顺序必须和标注 txt 里面的类别 id 保持一致:0=leak,1=pipe。
三、数据校验(重要,提前排查标注错误)
运行代码检查图片、标签是否一一对应,排查空标注、损坏图片、类别 ID 越界问题:
from ultralytics import YOLO import os # 加载配置做数据集检查 model = YOLO("yolov8n.yaml") model.val(data="pipeline.yaml")或者用命令行快速校验:
yolo val data=pipeline.yaml model=yolov8n.pt若出现警告:存在空标签、图片损坏,需要提前清理,否则会影响训练效果。
四、模型训练
命令行训练(推荐)
yolo train data=pipeline.yaml model=yolov8n.pt epochs=100 imgsz=640 batch=8 device=0参数说明:
data=pipeline.yaml:数据集配置文件model=yolov8n.pt:预训练权重,n = 轻量模型;s/m/l 依次精度更高、显存占用更大。项目落地优先 yolov8sepochs=100:训练轮次,管道检测场景一般 80~150 轮足够imgsz=640:输入图像分辨率batch=8:批次大小,显存不够就调小为 4、2device=0:使用 0 号 GPU;CPU 训练写device=cpu
Python 代码方式训练
from ultralytics import YOLO # 加载预训练权重 model = YOLO('yolov8s.pt') # 启动训练 results = model.train( data="pipeline.yaml", epochs=100, imgsz=640, batch=8, device=0, patience=15, # 早停,连续15轮无提升自动停止训练 project="pipeline_leak_exp", name="train_run1" )训练输出结果位置
训练完成后,结果自动保存在runs/detect/train/
best.pt:效果最优权重(推荐用于后续测试推理)last.pt:最后一轮权重- 各类指标曲线、混淆矩阵、预测样例图片
五、模型测试 & 评估(在 test 测试集上验证)
使用训练得到的 best.pt 在独立测试集做评估,输出 mAP、精确率、召回率等指标
命令行
yolo val data=pipeline.yaml model=runs/detect/train/weights/best.pt split=testPython 代码
from ultralytics import YOLO model = YOLO("runs/detect/train/weights/best.pt") # 在test数据集评估 metrics = model.val(data="pipeline.yaml", split="test") print(f"mAP@0.5: {metrics.box.map50}") print(f"Precision: {metrics.box.p}") print(f"Recall: {metrics.box.r}")重点关注指标: mAP@0.5:整体检测精度;
leak泄漏属于小目标,召回率会低于 pipe 管道本体。
六、图片 / 视频实时推理(模拟现场巡检)
单张图片检测
yolo predict model=runs/detect/train/weights/best.pt source=test_img.jpg conf=0.3视频推理(无人机巡检视频)
yolo predict model=runs/detect/train/weights/best.pt source=pipe_video.mp4 conf=0.3 save=Trueconf=0.3:置信度阈值,泄漏目标容易特征微弱,可降低阈值减少漏检;误报多时调高至 0.5- 推理结果默认保存至
runs/detect/predict/
Python 代码推理示例:
from ultralytics import YOLO model = YOLO("runs/detect/train/weights/best.pt") res = model("test_img.jpg", conf=0.3) for r in res: boxes = r.boxes print(boxes.cls, boxes.conf) # 输出类别与置信度七、模型导出(用于边缘设备部署,无人机 / 摄像头端)
导出 ONNX 格式,可部署在工控机、边缘盒子、AI 摄像头:
yolo export model=runs/detect/train/weights/best.pt format=onnx imgsz=640支持导出格式:onnx /tflite/torchscript,根据硬件平台选择。
八、调优建议(针对管道泄漏场景)
- 泄漏 leak 属于小目标,容易漏检
- 开启多尺度训练:增加参数
scale=0.5 - imgsz 可提升至 800,代价是显存占用翻倍
- 开启多尺度训练:增加参数
- 背景杂草、泥土容易产生误检
- 增加数据增强:
hsv_h=0.015, hsv_s=0.7, hsv_v=0.4 - 对泄漏样本做复制增强,平衡样本(很多数据集 pipe 样本远多于 leak 泄漏样本)
- 增加数据增强:
- 训练不收敛 / 指标低:
- 检查 yaml 类别顺序和标注 id 是否匹配
- 清洗标注,剔除模糊、错标图片
九、常见问题
- OOM 显存溢出:减小 batch 值,如 batch=2
- 训练后泄漏识别效果差:泄漏样本数量偏少,可对 leak 类别做样本增强
- 路径报错:yaml 里面路径不要包含中文、空格