当前位置: 首页 > news >正文

【工业机器视觉】基于深度学习的水表盘读数识别(4-训练与预测)

【工业机器视觉】基于深度学习的仪表盘识读(读数识别)(3)-CSDN博客

训练与预测

        Ultralytics YOLO指的是由Ultralytics公司开发的一系列基于YOLO(You Only Look Once)架构的目标检测算法。YOLO是一种实时目标检测系统,它能一次性预测图像中所有对象的边界框和类别概率,因此在速度上有很大的优势。

        Ultralytics是YOLOv3、YOLOv5等版本的维护者,并且推出了YOLOv8等一系列改进版本。这些模型通常具有更高的精度和更快的速度,同时保持了YOLO系列简单易用的特点。Ultralytics提供的YOLO实现通常是开源的,可以在GitHub等平台上找到,允许研究者和开发者使用、修改和贡献代码。

        此外,Ultralytics还提供了训练、评估和部署YOLO模型的工具和文档,使得用户能够根据自己的数据集定制YOLO模型,用于各种计算机视觉任务,如物体识别、跟踪等。

Home - Ultralytics YOLO Docs

本项目基于Ultralytics YOLOv8模型进行训练和预测。

下载项目

前往github:github.com

进入ultralytics目录,目录结构:

cfg:网络模型架构配置文件

my_datas:自定义数据集

weights:权重文件

需要安装的包:

pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118
pip install ultralytics==8.0.143

(如果要使用最新版的ultralytics,则不需要带版本号,最新版的已更新到YOLO11)

项目配置

为了快速上手,下面只介绍核心流程。在自定义数据集目录下,创建自己的项目(项目名称自定义即可),然后将数据准备好,最后创建一个data.yaml的文件,参考如下目录结构和配置:

data.yaml文件配置:

train、val:自定义数据集的训练和验证数据图片目录

nc:目标检测类别数量

names:目标检测类别

训练

在ultralytics目录下创建train.py脚本,如下:

from ultralytics import YOLOif __name__ == '__main__':model = YOLO('cfg/models/v8/yolov8s.yaml').load('yolov8s.pt')model.train(data='my_datas/detect-pointer/data.yaml', epochs=300, imgsz=640, task='detect', batch=64, device=0, amp=True, patience=10, close_mosaic=30)

加载网络模型和权重,本地没有权重文件时,会自动下载。更详细的训练参数请参考cfg目录下的default.yaml文件。

运行脚本开始训练,训练开始后,会在runs/detect目录下生成训练过程数据:

预测

创建predict.py脚本,与train.py同目录。

from ultralytics import YOLO
import cv2if __name__ == '__main__':img_path = 'assets/meter-pointer1.jpg'model = YOLO('runs/detect/train/weights/best.pt')img = cv2.imread(img_path)results = model.predict(img, imgsz=640, show=True, show_labels=True, show_conf=True, device=0, conf=0.8)cv2.waitKey(0)cv2.destroyAllWindows()

img_path:指定需要预测的图片路径

YOLO(...):加载训练好的模型

predict:预测

预测效果

指针目标检测:

最低位X0.001由目标检测直接分类得出结果,高位只需要检测到即可,后面需要结合梅花针分割模型,计算角度,映射读数。最后再通过修正算法修正误差,得到最终结果。

p2表示最低位读数是2,也就是0.002

指针区域梅花针分割:

circle_area:刻度盘

pointer:梅花针区域

字轮目标检测:

d10表示读数为0,是由0到1的过渡,同时也需要结合最高位指针读数X0.1的值,来进行修正

至此,我们已成功达成了本项目的第一阶段目标:实现了指针区域的目标检测与梅花针的精准分割,以及完成了字轮数字的自动识别任务,并且获得了预期的成果。

接下来的步骤将是开发上位机软件和应用相应的模型,通过集成并优化修正算法,以最终实现表盘读数的准确解析与输出。这一过程不仅将提升数据读取的自动化水平,也将显著增强系统的整体性能与可靠性。

相关文章:

【工业机器视觉】基于深度学习的水表盘读数识别(4-训练与预测)

【工业机器视觉】基于深度学习的仪表盘识读(读数识别)(3)-CSDN博客 训练与预测 Ultralytics YOLO指的是由Ultralytics公司开发的一系列基于YOLO(You Only Look Once)架构的目标检测算法。YOLO是一种实时目标检测系统,它…...

opencv获取摄像头的最大分辨率图像

事情是这样的,在拼多多花了40买了一个4k高清的摄像偷,确实清楚。但是我一直以为网络摄像头分辨率只有640*480,于是用python测试了一下,上代码 import cv2def get_max_resolution(camera_index):"""获取摄像头的最大分辨率。&…...

23.DDD与微服务

学习视频来源:DDD独家秘籍视频合集 https://space.bilibili.com/24690212/channel/collectiondetail?sid1940048&ctype0 文章目录 DDD与微服务的关系1. DDD可以用微服务实现,也可以不用微服务实现2. DDD是微服务拆分的必须参考项之一3. 微服务架构…...

Redis是什么?Redis和MongoDB的区别在那里?

Redis介绍 Redis(Remote Dictionary Server)是一个开源的、基于内存的数据结构存储系统,它可以用作数据库、缓存和消息中间件。以下是关于Redis的详细介绍: 一、数据结构支持 字符串(String) 这是Redis最…...

git SSL certificate problem: unable to get local issuer certificate

Git 客户端将会验证服务器端提供的SSL证书是否由受信任的证书颁发机构(Certification Authority,CA)签发。如果Git客户端无法找到或验证本地签发者证书,就会出现 unable to get local issuer certificate 或类似的错误。 该问题一…...

使用Keil V6编译 FreeRTOS CMSIS V2版本 ETH + Lwip 编译报错问题解决方式

网上其他人写的都解决不了,要不用的是CMSIS V1版本,根据他们的方式搞完还是报错,今天花点时间自己搞一下。 不想自己动手?没问题,模版已上传Gitee https://gitee.com/maybe_404/stm32-f4xx_-free-rtos_-lwip_-templa…...

驱动开发系列30 - Linux Graphics DRM光标绘制分析

一:概述 本文分析了 Linux 直接渲染管理器 (DRM) 绘制光标的过程,目的是将 OpenGL 与 DRM 连接,弄清楚整个调用逻辑。本文将详细描述这一过程,介绍如何在图形软件栈中实现光标渲染。整体软件栈的架构图也将展示其中的各个组成部分及其相互关系。 二:代码介绍 drm-cursor …...

如何利用Java爬虫获得淘宝买家秀

在电商平台上,买家秀数据是商家了解消费者反馈、优化产品和服务的重要资源。本文将详细介绍如何利用Java爬虫技术获取淘宝商品的买家秀信息,并提供一个完整的代码示例。 一、淘宝买家秀数据的重要性 买家秀数据包括买家上传的图片、视频、评论等内容&a…...

【ArcGIS】基于R语言、MaxEnt模型融合技术的物种分布模拟、参数优化方法、结果分析制图与论文写作

第一章、以问题导入的方式,深入掌握原理基础【理论篇】 1、R语言入门: (1)安装R及集成开发环境(IDE);(2)R语言基础语法与数据结构,包括:程序包安…...

虚幻引擎C++按键绑定

在项目的 Project Settings -> Engine -> Input 中进行配置。 配置输入映射的步骤: 打开 Project Settings: 在 Unreal Editor 中,点击菜单栏的 Edit -> Project Settings。 导航到 Input: 在 Project Settings 窗口的左侧导航栏中&#xff0…...

秒杀抢购场景下实战JVM级别锁与分布式锁

背景历史 在电商系统中,秒杀抢购活动是一种常见的营销手段。它通过设定极低的价格和有限的商品数量,吸引大量用户在特定时间点抢购,从而迅速增加销量、提升品牌曝光度和用户活跃度。然而,这种活动也对系统的性能和稳定性提出了极…...

【Pandas】pandas interval_range

Pandas2.2 General Top-level dealing with Interval data 方法描述interval_range([start, end, periods, freq, …])用于生成固定长度的区间序列 pandas.interval_range() pandas.interval_range() 是 Pandas 库中用于生成固定频率的 Interval 对象的函数。这些 Interval…...

有没有办法让爬虫更加高效,比如多线程处理?

要让Python爬虫更加高效,确实可以采用多线程处理。多线程可以显著提高爬虫的效率,因为它允许程序同时执行多个任务,从而减少等待时间。以下是一些提高爬虫效率的方法,特别是通过多线程技术: 1. 多线程爬虫 多线程爬虫…...

go-zero(十三)使用MapReduce并发

go zero 使用MapReduce并发 一、MapReduce 介绍 MapReduce 是一种用于并行计算的编程模型,特别适合在大规模数据处理场景中简化逻辑代码。 官方文档: https://go-zero.dev/docs/components/mr 1. MapReduce 的核心概念 在 MapReduce 中,主…...

【实操之 图像处理与百度api-python版本】

1 cgg带你建个工程 如图 不然你的pip baidu-aip 用不了 先对图片进行一点处理 $ 灰度处理 $ 滤波处理 参考 import cv2 import os def preprocess_images(input_folder, output_folder):# 确保输出文件夹存在if not os.path.exists(output_folder):os.makedirs(output_fol…...

java 导出word锁定且部分内容解锁可编辑

使用 Apache POI 创建带编辑限制的 Word 文档 在日常工作中,我们可能需要生成一些带有编辑限制的 Word 文档,例如某些段落只能被查看,而其他段落可以自由编辑。本文介绍如何使用 Apache POI 创建这样的文档,并通过代码实现相应的…...

SQL 在线格式化 - 加菲工具

SQL 在线格式化 打开网站 加菲工具 选择“SQL 在线格式化” 或者直接访问 https://www.orcc.online/tools/sql 输入sql,点击上方的格式化按钮即可 输入框得到格式化后的sql结果...

大数据法律法规——《关键信息基础设施安全保护条例》(山东省大数据职称考试)

大数据分析应用-初级 第一部分 基础知识 一、大数据法律法规、政策文件、相关标准 二、计算机基础知识 三、信息化基础知识 四、密码学 五、大数据安全 六、数据库系统 七、数据仓库. 第二部分 专业知识 一、大数据技术与应用 二、大数据分析模型 三、数据科学 大数据法律法规…...

【CVE-2024-5660】ARM CPU漏洞:硬件页面聚合(HPA)安全通告

安全之安全(security)博客目录导读 目录 一、概述 二、修改历史 三、什么是硬件页面聚合? 四、修复解决 一、概述 在一些基于arm的cpu中发现了一个问题,该问题可能允许修改的、不受信任的客户机操作系统...

数智读书笔记系列008 智人之上:从石器时代到AI时代的信息网络简史

书名:智人之上:从石器时代到AI时代的信息网络简史 作者:[以]尤瓦尔赫拉利 译者:林俊宏 出版时间:2024-09-01 ISBN:9787521768527 中信出版集团制作发行 作者信息 尤瓦尔・赫拉利 1976 年出生于以色列海法,是牛津大学历史学…...

挑战杯推荐项目

“人工智能”创意赛 - 智能艺术创作助手:借助大模型技术,开发能根据用户输入的主题、风格等要求,生成绘画、音乐、文学作品等多种形式艺术创作灵感或初稿的应用,帮助艺术家和创意爱好者激发创意、提高创作效率。 ​ - 个性化梦境…...

Oracle查询表空间大小

1 查询数据库中所有的表空间以及表空间所占空间的大小 SELECTtablespace_name,sum( bytes ) / 1024 / 1024 FROMdba_data_files GROUP BYtablespace_name; 2 Oracle查询表空间大小及每个表所占空间的大小 SELECTtablespace_name,file_id,file_name,round( bytes / ( 1024 …...

(二)TensorRT-LLM | 模型导出(v0.20.0rc3)

0. 概述 上一节 对安装和使用有个基本介绍。根据这个 issue 的描述,后续 TensorRT-LLM 团队可能更专注于更新和维护 pytorch backend。但 tensorrt backend 作为先前一直开发的工作,其中包含了大量可以学习的地方。本文主要看看它导出模型的部分&#x…...

Keil 中设置 STM32 Flash 和 RAM 地址详解

文章目录 Keil 中设置 STM32 Flash 和 RAM 地址详解一、Flash 和 RAM 配置界面(Target 选项卡)1. IROM1(用于配置 Flash)2. IRAM1(用于配置 RAM)二、链接器设置界面(Linker 选项卡)1. 勾选“Use Memory Layout from Target Dialog”2. 查看链接器参数(如果没有勾选上面…...

Qt Http Server模块功能及架构

Qt Http Server 是 Qt 6.0 中引入的一个新模块,它提供了一个轻量级的 HTTP 服务器实现,主要用于构建基于 HTTP 的应用程序和服务。 功能介绍: 主要功能 HTTP服务器功能: 支持 HTTP/1.1 协议 简单的请求/响应处理模型 支持 GET…...

什么?连接服务器也能可视化显示界面?:基于X11 Forwarding + CentOS + MobaXterm实战指南

文章目录 什么是X11?环境准备实战步骤1️⃣ 服务器端配置(CentOS)2️⃣ 客户端配置(MobaXterm)3️⃣ 验证X11 Forwarding4️⃣ 运行自定义GUI程序(Python示例)5️⃣ 成功效果![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/55aefaea8a9f477e86d065227851fe3d.pn…...

RNN避坑指南:从数学推导到LSTM/GRU工业级部署实战流程

本文较长,建议点赞收藏,以免遗失。更多AI大模型应用开发学习视频及资料,尽在聚客AI学院。 本文全面剖析RNN核心原理,深入讲解梯度消失/爆炸问题,并通过LSTM/GRU结构实现解决方案,提供时间序列预测和文本生成…...

关键领域软件测试的突围之路:如何破解安全与效率的平衡难题

在数字化浪潮席卷全球的今天,软件系统已成为国家关键领域的核心战斗力。不同于普通商业软件,这些承载着国家安全使命的软件系统面临着前所未有的质量挑战——如何在确保绝对安全的前提下,实现高效测试与快速迭代?这一命题正考验着…...

安宝特方案丨船舶智造的“AR+AI+作业标准化管理解决方案”(装配)

船舶制造装配管理现状:装配工作依赖人工经验,装配工人凭借长期实践积累的操作技巧完成零部件组装。企业通常制定了装配作业指导书,但在实际执行中,工人对指导书的理解和遵循程度参差不齐。 船舶装配过程中的挑战与需求 挑战 (1…...

iOS性能调优实战:借助克魔(KeyMob)与常用工具深度洞察App瓶颈

在日常iOS开发过程中,性能问题往往是最令人头疼的一类Bug。尤其是在App上线前的压测阶段或是处理用户反馈的高发期,开发者往往需要面对卡顿、崩溃、能耗异常、日志混乱等一系列问题。这些问题表面上看似偶发,但背后往往隐藏着系统资源调度不当…...