☰
管道泄漏监测 YOLOv8 完整训练 测试教程
2026/10/1 15:36:21 网站建设 项目流程

配套数据集:管道监测目标检测数据集,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 依次精度更高、显存占用更大。项目落地优先 yolov8s
  • epochs=100:训练轮次,管道检测场景一般 80~150 轮足够
  • imgsz=640:输入图像分辨率
  • batch=8:批次大小,显存不够就调小为 4、2
  • device=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=test

Python 代码

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=True
  • conf=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,根据硬件平台选择。

八、调优建议(针对管道泄漏场景)

  1. 泄漏 leak 属于小目标,容易漏检
    • 开启多尺度训练:增加参数scale=0.5
    • imgsz 可提升至 800,代价是显存占用翻倍
  2. 背景杂草、泥土容易产生误检
    • 增加数据增强:hsv_h=0.015, hsv_s=0.7, hsv_v=0.4
    • 对泄漏样本做复制增强,平衡样本(很多数据集 pipe 样本远多于 leak 泄漏样本)
  3. 训练不收敛 / 指标低:
    • 检查 yaml 类别顺序和标注 id 是否匹配
    • 清洗标注,剔除模糊、错标图片

九、常见问题

  1. OOM 显存溢出:减小 batch 值,如 batch=2
  2. 训练后泄漏识别效果差:泄漏样本数量偏少,可对 leak 类别做样本增强
  3. 路径报错:yaml 里面路径不要包含中文、空格

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询