【计算机视觉】工业表计读数(2)--表计检测

news2025/3/19 11:03:20

1. 简介

工业表计(如压力表、电表、气表等)在工控系统、能源管理等领域具有重要应用。然而,传统人工抄表不仅工作量大、效率低,而且容易产生数据误差。近年来,基于深度学习的目标检测方法在工业检测中展现出极大优势,其中YOLO(You Only Look Once)系列模型因其端到端的检测流程和实时性备受关注。本文以YOLO11为基础,构建了一套完整的表计检测系统,实现对表计区域的自动识别与裁剪,为后续的读数识别奠定基础。

2. 系统架构与实现方法

本系统主要分为两个模块:表计检测模型训练模块与检测后预测模块。下文分别介绍这两个模块的实现细节。

2.1 表计检测模型训练

在训练阶段,系统利用YOLO11模型对采集到的表计图像进行目标检测模型训练,主要步骤如下:

  1. 模型构建与权重加载
    利用Ultralytics的YOLO库,根据自定义的配置文件(yolo11.yaml)构建模型,并加载预训练权重(yolo11n.pt)。

    from ultralytics import YOLO
    import warnings
    warnings.filterwarnings("ignore")
    
    if __name__ == '__main__':
        # 模型配置文件与预训练权重路径
        yolo_yaml = "/root/cv/task_0/yolo_model/yolo11.yaml"
        yolo_pt = "/root/cv/task_0/yolo_model/yolo11n.pt"
        data_yaml = "/root/autodl-tmp/meter_data/meter_detect/dataset.yaml"
    
        # 构建模型并加载预训练权重
        model = YOLO(yolo_yaml)
        model.load(yolo_pt)
    
        # 开始训练,设置训练数据、迭代次数及图像尺寸
        results = model.train(data=data_yaml, epochs=200, imgsz=640)
    

    以上代码展示了如何通过加载模型配置与权重,利用自定义数据集进行200个epoch的训练。数据集的配置文件中包含了表计的标注信息,确保模型能够在多样化环境下学习到稳定的表计特征。

  2. 数据预处理与增强
    为了提升模型在复杂场景下的泛化能力,对原始数据进行了旋转、缩放、模糊等数据增强操作,增强模型对光照、遮挡等干扰因素的鲁棒性。

2.2 表计检测预测模块

在预测阶段,训练好的模型用于对新的表计图像进行检测,主要流程包括加载模型、对输入图像进行检测、裁剪出目标区域及保存检测结果。代码实现如下:

import cv2
import numpy as np
import os
import matplotlib.pyplot as plt
from ultralytics import YOLO

# 加载训练好的自定义模型
model = YOLO('/root/cv/task_0/runs/detect/train5/weights/best.pt')

# 指定保存预测结果的目录
output_dir = '/root/cv/test/task_0_result'
os.makedirs(output_dir, exist_ok=True)

# 对单张图片进行预测
image_path = '/root/cv/test/detected_meter/test.jpg'
results = model(image_path, conf=0.60, save=False)

# 读取原始图像并转换为RGB格式(用于显示)
frame = cv2.imread(image_path)
frame_rgb = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)

# 遍历检测结果,提取目标边界框并保存目标图像
for idx, result in enumerate(results):
    # 获取检测结果中的边界框数据
    boxes = result.boxes.cpu().numpy()
    for i, box in enumerate(boxes.data):
        l, t, r, b = box[:4].astype(np.int32)  # 左、上、右、下坐标
        conf, id = box[4:]  # 置信度与类别
        id = int(id)
   
        # 裁剪出目标区域图像
        target_image = frame[t:b, l:r]
        target_image_path = os.path.join(output_dir, f"target_{idx+1}_{i+1}.jpg")
        cv2.imwrite(target_image_path, target_image)
   
        # 在原图上绘制检测边界框和类别置信度
        cv2.rectangle(frame_rgb, (l, t), (r, b), (0, 0, 255), 2)
        cv2.putText(frame_rgb, f"{model.names[id]} {conf * 100:.1f}%", (l, t - 10),
                    cv2.FONT_HERSHEY_SIMPLEX, 1, (0, 0, 255), 2)

# 显示检测结果图像
plt.imshow(frame_rgb)
plt.show()

# 保存整体检测结果图像
image_name = image_path.split("/")[-1]
output_image_path = os.path.join(output_dir, image_name)
cv2.imwrite(output_image_path, cv2.cvtColor(frame_rgb, cv2.COLOR_RGB2BGR))
print(f"Prediction result saved to: {output_image_path}")

在预测流程中,首先通过加载最佳权重文件获得训练好的模型,然后对目标图像进行预测。检测结果中,模型会返回多个边界框,每个边界框包括位置信息、置信度以及类别信息。根据这些信息,可以对检测区域进行裁剪,保存为单独的图像,同时在原图上绘制检测框和置信度文本以便直观展示检测效果。

3. 实验结果与讨论

3.1 实验设置

  • 数据集:所使用的数据集为采集自工业现场的表计图像,涵盖不同类型、不同角度和多种光照条件下的表计图像。
  • 训练参数:设置训练轮数(epochs)为200,图像尺寸(imgsz)为640,并采用适当的数据增强策略以提高模型鲁棒性。
  • 检测阈值:在预测阶段,置信度阈值设为0.60,确保输出的检测结果较为准确。

3.2 实验结果

通过训练与预测流程,YOLO11模型在表计检测任务中展现了较高的准确性和实时性。模型能够在复杂背景下准确定位表计区域,并将目标区域有效裁剪出来,为后续的表针和刻度关键点检测提供了稳定的输入。检测结果图像中,边界框标注清晰,类别与置信度信息准确显示。
在这里插入图片描述

3.3 讨论与改进方向

尽管实验结果表明系统在表计检测上具有较好表现,但仍存在一些挑战:

  • 小目标检测问题:部分边缘模糊或尺寸较小的表计在复杂背景中检测精度稍低,需要进一步优化模型结构或采用多尺度训练策略。
  • 环境光照影响:在低光或强反射场景下,表计检测效果受到一定影响,数据预处理与增强手段仍需改进。
  • 实时性与部署:考虑到工业现场对实时监控的需求,未来工作中将着重研究模型轻量化与边缘计算方案。

4. 小结

本文基于YOLO11模型实现了工业表计的自动检测,构建了一套从数据预处理、模型训练到目标检测与结果展示的完整流程。实验结果验证了该方法在复杂工业环境下的高效性和准确性,为后续表针和刻度的关键点检测与自动读数识别提供了坚实基础。未来工作将进一步优化检测精度和实时性,以适应更为复杂的工业应用场景。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2317750.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Zbrush插件安装

安装目录在: ...\Zbrush2022\ZStartup\ZPlugs64

LeRobot源码剖析——对机器人各个动作策略的统一封装:包含ALOHA ACT、Diffusion Policy、VLA模型π0

前言 过去2年多的深入超过此前7年,全靠夜以继日的勤奋,一天当两天用,抠论文 抠代码 和大模型及具身同事讨论,是目前日常 而具身库里,idp3、π0、lerobot值得反复研究,故,近期我一直在抠π0及l…

OpenCV基础【图像和视频的加载与显示】

目录 一.创建一个窗口,显示图片 二.显示摄像头/多媒体文件 三.把摄像头录取到的视频存储在本地 四.鼠标回调事件 五.TrackBar滑动条 一.创建一个窗口,显示图片 import cv2img_path "src/fengjing.jpg" # 自己的图片路径 img cv2.imre…

杨校老师课堂之编程入门与软件安装【图文笔记】

亲爱的同学们,热烈欢迎踏入青少年编程的奇妙世界! 我是你们的授课老师杨校 ,期待与大家一同开启编程之旅。 1. 轻松叩开编程之门 1.1 程序的定义及生活中的应用 程序是人与计算机沟通的工具。在日常生活中,像手机里的各类 APP、电…

Excel(函数篇):IF函数、FREQUNCY函数、截取函数、文本处理函数、日期函数、常用函数详解

目录 IF函数等于判断区间判断与AND函数、OR函数一同使用IFNA函数和IFERROR函数 FREQUNCY函数、分断统计LEFT、RIGHT、MID截取函数FIND函数、LEN函数SUBSTITUTE函数ASC函数、WIDECHAR函数实战:如何获取到表中所有工作簿名称文本处理函数TEXT函数TEXTJOIN函数 日期函数…

利用大语言模型生成的合成数据训练YOLOv12:提升商业果园苹果检测的精度与效

之前小编分享过关于《YOLO11-CBAM集成:提升商业苹果园树干与树枝分割的精准度》,改进YOLO11算法后,进行苹果树的实例分割。本期文章我们将分享关于最新的YOLO12算法改进的苹果目标检测。 论文题目:Improved YOLOv12 with LLM-Gen…

整合百款经典街机游戏的模拟器介绍

对于80、90后而言,街机游戏承载着童年的欢乐记忆。今天要给大家介绍一款超棒的软件——「MXui街机厅经典游戏101款」,它能带你重回那段热血沸腾的街机时光。 「MXui街机厅经典游戏101款」是一款绿色免安装的街机模拟器,体积约1.39G。无需繁琐…

中小型企业大数据平台全栈搭建:Hive+HDFS+YARN+Hue+ZooKeeper+MySQL+Sqoop+Azkaban 保姆级配置指南

目录 背景‌一、环境规划与依赖准备‌1. 服务器规划(3节点集群)2. 系统与依赖‌3. Hadoop生态组件版本与下载路径4. 架构图二、Hadoop(HDFS+YARN)安装与配置‌1. 下载与解压(所有节点)2. HDFS高可用配置3. YARN资源配置‌4. 启动Hadoop集群三、MySQL安装与Hive元数据配置…

Tomcat、Open Liberty 和 WebSphere Application Server (WAS) 的配置、调试和跟踪

一、Tomcat Tomcat 是一个轻量级的开源 Java Servlet 容器。 1、配置 Tomcat 的主要配置文件位于其安装目录下的 conf 文件夹中。 server.xml: 这是 Tomcat 的核心配置文件,包含了服务器的基本设置,例如端口号、连接器配置、虚拟主机配置、以及全局的…

使用yolov8+flask实现精美登录界面+图片视频摄像头检测系统

这个是使用flask实现好看登录界面和友好的检测界面实现yolov8推理和展示,代码仅仅有2个html文件和一个python文件,真正做到了用最简洁的代码实现复杂功能。 测试通过环境: windows x64 anaconda3python3.8 ultralytics8.3.81 flask1.1.2…

微软OneNote无法同步解决方案

目录 前言原因UWP特性 解决方案C***h注册表 参考链接 前言 假设有多台Windows电脑,最方便且免费的多设备笔记同步方案就是微软自家的OneNote,使用OneDrive自带的5G云存储。 但是在国内大陆的OneNote,经常会出现无法同步、同步失败&#xff1…

Log4j2漏洞实战

1,打开环境后访问该ip 2,打开dnslog.cn,获取一个域名,我们这里是2bfvl6.dnslog.cn 3,访问http://47.122.51.245:8983/solr/admin/coresaction${jndi:ldap://${sys:java.version}.2bfvl6.dnslog.cn} 4,返回d…

【含文档+PPT+源码】基于小程序的智能停车管理系统设计与开发

项目介绍 本课程演示的是一款基于小程序的智能停车管理系统设计与开发,主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的 Java 学习者。 1.包含:项目源码、项目文档、数据库脚本、软件工具等所有资料 2.带你从零开始部署运行本套系统 3…

idea 编译打包nacos2.0.3源码,生成可执行jar 包常见问题

目录 问题1 问题2 问题3 问题4 简单记录一下nacos2.0.3,编译打包的步骤,首先下载源码,免积分下载: nacos源码: https://download.csdn.net/download/fyihdg/90461118 protoc 安装包 https://download.csdn.net…

YOLOv8 OBB 旋转目标检测模型详解与实践

引言 在计算机视觉领域,目标检测是至关重要的任务之一。YOLO(You Only Look Once)系列算法因其高效性和准确性而广受欢迎。YOLOv8 作为稳定版本,在目标检测领域取得了显著成果,依旧能打。本文将深入探讨 YOLOv8 OBB&a…

机器学习之支持向量机(SVM)算法详解

文章目录 引言一、 什么是支持向量机(SVM)二、 SVM的基本原理三、数学推导1.线性可分情况2. 非线性可分情况3. 核函数 四、SVM的优缺点优点:缺点: 五、 应用场景六、 Python实现示例七、 总结 引言 支持向量机(Suppor…

Linux系统移植篇(十一)Linux 内核启动流程

要分析 Linux 启动流程,同样需要先编译一下 Linux 源码,因为有很多文件是需要编译才 会生成的。首先分析 Linux 内核的连接脚本文件 arch/arm/kernel/vmlinux.lds,通过链接脚本可以 找到 Linux 内核的第一行程序是从哪里执行的。vmlinux.lds …

功能强大的电脑硬件检测及驱动安装工具

今天给大家带来一款超实用的电脑硬件检测软件——入梦工具箱。它是开源的,全程无广告干扰,使用起来清爽又安心。 打开入梦工具箱,进入“硬件信息”选项,电脑各个配件的详细参数一目了然。 无论是CPU的型号、频率,还是…

【Altium Designer】设计技巧

目录 技巧一:铺铜连接方式 技巧二:铺铜连接方式 技巧一:铺铜连接方式 Design -> Rules -> PolygonConnect 三种选择: 1)Relief Connect:十字连接,可选择是45还是90 2)Direct…

基于FPGA的3U机箱模拟量高速采样板ADI板卡,应用于轨道交通/电力储能等

板卡简介: 本板为模拟量高速采样板(ADI),主要用于电机转速和相电流检测,以实现电机闭环控制。 性能规格: 电源:DC5V,DC3.3V,DC15V,DC24V FPGA:…