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

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.rhkb.cn/news/35280.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

提示词工程(Prompt Engineering)

https://www.bilibili.com/video/BV1PX9iYQEry 一、懂原理,要知道 为什么有的指令有效,有的指令无效为什么同样的指令有时有效,又是无效怎么提升指令有效的概率 大模型应用架构师想什么? 怎样能更准确?答&#xff1…

从Instagram到画廊:社交平台如何改变艺术家的展示方式

从Instagram到画廊:社交平台如何改变艺术家的展示方式 在数字时代,艺术家的展示方式正在经历一场革命。社交平台,尤其是Instagram,已经成为艺术家展示作品、与观众互动和建立品牌的重要渠道。本文将探讨社交平台如何改变艺术家的…

Typora 使用教程(标题,段落,字体,列表,区块,代码,脚注,插入图片,表格,目录)

标题 一个#是一级标题, 2个#是二级标题, 以此类推, 最多可达六级标题 示例 输入#号和标题后回车即可 注意: #和标题内容之间需要存在空格(一个或多个均可), 没有空格就会变成普通文字 标题快捷键 Ctrl数字 1-6 可以快速调成对应级别的标题 (选中文本/把光标放在标题上再按…

关于deepseek R1模型分布式推理效率分析

1、引言 DeepSeek R1 采用了混合专家(Mixture of Experts,MoE)架构,包含多个专家子网络,并通过一个门控机制动态地激活最相关的专家来处理特定的任务 。DeepSeek R1 总共有 6710 亿个参数,但在每个前向传播…

力扣hot100二刷——二叉树

第二次刷题不在idea写代码,而是直接在leetcode网站上写,“逼”自己掌握常用的函数。 标志掌握程度解释办法⭐Fully 完全掌握看到题目就有思路,编程也很流利⭐⭐Basically 基本掌握需要稍作思考,或者看到提示方法后能解答⭐⭐⭐Sl…

网络安全 --- 基于网络安全的 Linux 最敏感目录及文件利用指南

目录 基于网络安全的 Linux 最敏感目录及文件利用指南 Linux 中最敏感的目录及文件 1. /etc 2. /root 3. /var/log 4. /proc 5. /tmp 6. /home 7. /boot 8. /dev 如何利用这些敏感文件 你可能没想到的知识点 总结 Linux 中最敏感的目录及文件 1. /etc 存放内容&a…

深入浅出:Java实现斐波那契数列的七种武器与性能调优指南

​​​ 引言:当数学之美邂逅算法之力 斐波那契数列——这个诞生于13世纪的数学瑰宝,在计算机科学中焕发出新的生命力。作为递归与动态规划的经典案例,它不仅是算法入门的必修课,更是性能优化的试金石。本文将带您深入探索Java实现斐波那契数列的七种核心方法,并揭秘不同…

音视频入门基础:RTP专题(17)——音频的SDP媒体描述

一、引言 在《音视频入门基础:RTP专题(3)——SDP简介》中对SDP协议进行了简介,以H.264为例介绍了视频的SDP的媒体描述。本文对该文章进行补充,以AAC为例,讲述音频的SDP媒体描述。 二、文档下载 《RFC 364…

MyBatis-Plus防全表更新与删除插件BlockAttackInnerInterceptor

防全表更新与删除插件 BlockAttackInnerInterceptor 是 MyBatis-Plus 框架提供的一个安全插件,专门用于防止恶意的全表更新和删除操作。该插件通过拦截 update 和 delete 语句,确保这些操作不会无意中影响到整个数据表,从而保护数据的完整性…

嵌入式开发之STM32学习笔记day06

基于STM32F103C8T6的开发实践——从入门到精通01 1. 引言 STM32系列微控制器是STMicroelectronics推出的一款高性能、低功耗的32位微控制器,广泛应用于嵌入式系统中。STM32F103C8T6是其中非常受欢迎的一款,凭借其强大的性能、丰富的外设接口和低廉的价格…

TCP/IP 协议精讲-精华总结版本

序言 本文旨在介绍一下TCP/IP涉及得所有基础知识,为大家从宏观上俯瞰TCP/IP提供一个基石,文档属于《TCP/IP图解(第五版)》的精简版本。 专业术语 缩写 全称 WAN Wide area network广域网 LAN Local area network局域网 TC…

Ubuntu22.04虚拟机里安装Yolov8流程

1. 安装pytorch sudo apt install nvidia-cuda-toolkit nvcc --version # 官方适配地址:https://download.pytorch.org/whl/torch/import torch print(torch.__version__) print(torch.cuda.is_available())2. 安装环境 # cuDNN 安装:https://develop…

stm32第五天按键的基础知识

一:按键连接示意图 按键控制LED灯 软件设计流程 初始化系统 o 初始化GPIO外设时钟 o 初始化按键和LED的引脚 • 检测按键输入电平来控制LED灯 o SW2控制灯开 。 SW3控制灯关 1:key.c工程 #include"key.h" #include"stm32f10x.h"v…

Xposed模块开发:运行时修改技术

1. Xposed框架核心原理 1.1 运行时架构解析 Android ART Hook机制: graph TD A[目标APP进程] --> B{系统Zygote} B -->|加载Xposed| C[XposedBridge] C --> D[模块1] C --> E[模块2] D --> F[Hook目标方法] E --> F 1.1.1 核心组件交…

【Python学习笔记】一些关于多线程,xls文件读取,PyQt5,PyInstaller打包等问题的解决方案记录

背景: 最近利用休息时间写了个小型exe程序,主要涉及的技术点有:多线程,读取xls文件,基于PyQt5的简单GUI页面,利用PyInstaller打包成exe。虽然有ChatGPT等协助,但难免还是在开发过程中遇到了一些…

基于javaweb的SpringBoot智能相册管理系统图片相册系统设计与实现(源码+文档+部署讲解)

技术范围:SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容:免费功能设计、开题报告、任务书、中期检查PPT、系统功能实现、代码编写、论文编写和辅导、论…

【AI知识管理系统】(一)AI知识库工具测评

嘿,朋友们!🧐你们有没有想过,咱们平日里那些一闪而过的知识笔记、各种碎片化的idea,记录下来之后都是怎么管理的呀? 还有啊,咱们读过的那些书,大家会不会随手写点东西记录一下呢?📝要知道,如果不写的话,很可能过不了多久就全忘得一干二净啦。 😭那多年前记下的…

JVM并发编程AQSsync锁ReentrantLock线程池ThreadLocal

并发编程2 synchronized锁实现**AQS****ReentrantLock实现****JUC 常用类**池的概念 ThreadLocalThreadLocal原理内存泄露强引用:软引用弱引用虚引用ThreadLocal内存泄露 synchronized锁实现 synchronized是一个关键字,实现同步,还需要我们提供一个同步锁对象,记录锁状态,记录…

C++从入门到入土(八)——多态的原理

目录 前言 多态的原理 动态绑定与静态绑定 虚函数表 小结 前言 在前面的文章中,我们介绍了C三大特性之一的多态,我们主要介绍了多态的构成条件,但是对于多态的原理我们探讨的是不够深入的,下面这这一篇文章,我们将…

自带多个接口,完全免费使用!

做自媒体的小伙伴们,是不是经常为语音转文字的事儿头疼? 今天给大家推荐一款超实用的语音转文字软件——AsrTools,它绝对是你的得力助手! AsrTools 免费的语音转文字软件 这款软件特别贴心,完全免费,而且操…