news 2026/9/1 18:18:19

YOLOv5/v8在矿山皮带检测中的部署流程

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
YOLOv5/v8在矿山皮带检测中的部署流程

YOLOv5/v8 在矿山皮带检测中的部署流程基本一致,主要包括以下六个阶段:

  1. 环境准备:配置训练与部署环境。

  2. 数据处理:采集、标注并划分皮带图像数据集。

  3. 模型训练:使用YOLOv5/v8训练定制模型。

  4. 评估优化:在验证集上评估并优化模型。

  5. 模型导出:将模型转换为适合部署的格式。

  6. 应用部署:集成到矿山现场系统,实现实时检测与告警。


1. ⚙️ 环境准备

训练环境 (GPU服务器/工作站)
  • 硬件:带NVIDIA GPU的服务器,用于模型训练。

  • 软件

    • YOLOv5: Python 3.8+, PyTorch, CUDA, cuDNN。通过官方仓库安装依赖。

      bash

      git clone https://github.com/ultralytics/yolov5.git

      cd yolov5

      pip install -r requirements.txt

    • YOLOv8: 通过ultralytics包安装,更为便捷。

      bash

      pip install ultralytics

部署环境 (现场服务器/边缘设备)
  • 硬件:工控机、AI边缘计算盒或NVIDIA Jetson等。

  • 软件:根据部署形式选择,如ONNX Runtime、TensorRT、OpenVINO或直接安装ultralytics库。


2. 📊 数据处理

数据采集

在皮带机头、机尾、转载点等关键位置安装工业相机,覆盖正常、跑偏、撕裂、有异物、粉尘大等多种工况。视频帧率建议不低于25fps,分辨率不低于1080p。

数据标注
  • 工具:LabelImg (YOLO格式) 或 Labelme (JSON格式)。

  • 标注类别:根据需求定义,如belt,foreign_object(异物),tear,misalignment,smoke等。

  • 关键:确保标注覆盖各种光照、粉尘、遮挡和模糊情况。

数据集组织与划分

推荐目录结构如下,并按比例(如8:1:1)划分训练、验证和测试集。

text

dataset/

├── images

│ ├── train/

│ ├── val/

│ └── test/

└── labels

├── train/

├── val/

└── test/

创建data/belt.yaml配置文件,指定数据集路径和类别名:

yaml

train: ../dataset/images/train

val: ../dataset/images/val

nc: 3 # 类别数

names: ['belt', 'foreign_object', 'tear']


3. 🧠 模型训练

YOLOv5 训练

使用预训练权重(如yolov5s.pt)进行迁移学习,以加快收敛。

bash

python train.py \

--img 640 \

--batch 16 \

--epochs 100 \

--data data/belt.yaml \

--weights yolov5s.pt \

--project runs/train --name belt_exp

YOLOv8 训练

使用ultralytics命令行工具,用法更简洁。

bash

yolo task=detect mode=train \

model=yolov8s.pt \

data=data/belt.yaml \

epochs=100 \

imgsz=640

训练完成后,最佳模型权重通常保存在runs/train/belt_exp/weights/best.ptruns/detect/train/weights/best.pt路径下。


4. 📈 评估与优化

使用验证集评估模型性能,关注mAP@0.5、精确率、召回率等指标。

  • YOLOv5:python val.py --weights best.pt --data data/belt.yaml --img 640

  • YOLOv8:yolo task=detect mode=val model=best.pt data=data/belt.yaml

根据评估结果进行优化:

  • 效果不佳:增加数据增强(如Mosaic)、调整学习率、或更换更复杂的模型(如从s升级到m/l)。

  • 过拟合:增加数据量、使用正则化、或提前停止训练(Early Stopping)。


5. 📦 模型导出

为适配不同部署环境,将训练好的.pt模型导出为中间格式。

  • YOLOv5 导出:

    bash

    python export.py --weights best.pt --include onnx,torchscript,tflite,engine --simplify

  • YOLOv8 导出:

    bash

    yolo task=detect mode=export model=best.pt format=onnx opset=12

常见导出格式对比

格式

适用平台

特点

ONNX

跨平台 (CPU/GPU)

通用性强,是转换到其他格式的中间件。

TorchScript

PyTorch 环境

便于C++部署,依赖PyTorch库。

TensorRT

NVIDIA GPU

性能最优,延迟最低,需转换和校准。

TFLite

移动端/嵌入式

专为移动和嵌入式设备优化。


6. 🚀 应用部署

方案A:本地/边缘实时检测程序

适用于工控机或边缘计算盒,直接处理摄像头视频流。

  • YOLOv5: 使用detect.py脚本或将其封装为类。

  • YOLOv8: 使用YOLO('best.pt').predict(source=0, stream=True)进行实时推理。

  • 核心逻辑:读取视频 -> 预处理 -> 模型推理 -> 后处理(NMS)-> 绘制结果 -> 告警判断 -> 输出(画面/日志/信号)。

方案B:封装为HTTP服务 (API)

适用于需要中心化管理和多系统调用的场景。

  • 框架:使用Flask/FastAPI等创建Web服务。

  • 流程:接收图片 -> 调用模型推理 -> 将结果(类别、坐标、置信度)封装为JSON返回。

  • 调用示例 (YOLOv8):

    python

    from flask import Flask, request, jsonify

    from ultralytics import YOLO

    app = Flask(name)

    model = YOLO('best.pt')

    @app.route('/detect', methods=['POST'])

    def detect():

    file = request.files['file']

    img = Image.open(file.stream)

    results = model(img)

    return jsonify(results[0].tojson())

方案C:集成QT/Web可视化界面

适用于需要本地操作人员进行监控的场景。

  • 实现:使用PyQt5/PySide2 (桌面端) 或 Vue/React (Web端) 构建界面。

  • 功能:提供实时画面显示、告警列表、历史查询、参数配置等。界面通过调用本地API或直接加载模型与检测程序进行交互。

方案D:联动PLC/集控系统

实现从“看到”到“停机”的闭环控制。

  • 接口:通过OPC、Modbus TCP或Socket等方式与PLC通信。

  • 逻辑:当检测到严重故障(如撕裂、大块异物)时,向PLC发送停机或降速指令,并触发声光报警器。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/14 17:26:11

OpenClaw本地安装

这是一个以win11本地环境搭建OpenClaw的教程 官方文档地址 注意:API KEY是有额度的超出是需要费用,免费的可以试用,不要因为使用过度使用导致扣费超出了心里预期价格 一、环境准备 1.1 Node.js(必须) OpenClaw运行…

作者头像 李华
网站建设 2026/7/14 17:26:16

2026大专电子商务毕业后适合做跨境电商运营吗?

跨境电商运营的职业适配性分析2026年大专电子商务毕业生完全适合从事跨境电商运营工作。电子商务专业课程通常涵盖国际贸易、网络营销、供应链管理等基础知识,与跨境电商运营的核心技能高度契合。以下是具体分析:关键因素说明专业课程匹配度电子商务专业…

作者头像 李华
网站建设 2026/7/14 17:26:17

PAT 乙级 1063

依旧最简单的一集。printf("%.2f", max1); 可以直接实现四舍五入。四舍五入取整数的方法&#xff1a;(a b / 2) / b#include<bits/stdc.h> using namespace std;int main() {int n;cin >> n;int num1, num2;double max1 -0.1;for(int i 0; i < n; …

作者头像 李华
网站建设 2026/7/14 17:26:28

[ExecuTorch 系列] 3. 导出自定义的大语言模型

简介 如果你有自己的 PyTorch 模型且该模型是大型语言模型&#xff08;LLM&#xff09;&#xff0c;本文档将展示如何手动将其导出并适配到 ExecuTorch&#xff0c;其中包含许多与之前的 export_llm 指南中相同的优化。 本文档提供一个实际示例以利用 ExecuTorch 导入自定义 …

作者头像 李华