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

配电房数字式仪表读数识别算法开发

文章目录

    • 一、概述
    • 二、训练数据准备
      • 2.1 自动生成图片
      • 2.2 爬虫搜集图片
    • 三、模型训练及测试
      • 3.1 数据集组成
      • 3.2 模型训练及评价
      • 3.3 预测结果可视化
    • 四、小结

一、概述

数字式仪表是指以数字的形式呈现仪表读数的仪表类型,其特点是读数比较直观,如下图为配电房常用数字式仪表

在这里插入图片描述

对于数字仪表的读数识别实质上就是0-9十个数字字符的识别,可以把它当成一个具有10个类别的目标检测任务来实现,由于当前目标检测算法比较成熟,因此算法方面不是难点,最关键的是训练数据集的搜集和准备。目前仅有70张来自实际配电房场景的数字仪表相关图片,这显然无法满足目标检测算法的训练要求,因此还需要想各种办法增加或扩充训练数据。本文主要介绍配电房数字式仪表读数识别算法的开发过程,其中重点阐述训练数据的扩充过程。

二、训练数据准备

由于来自实际场景的图片很难搜集,因此主要通过以下两种方式对训练数据进行扩充,一是根据图片特点,自动生成相关训练图片;二是利用爬虫技术从互联网爬取相关图片。

2.1 自动生成图片

由于数字仪表中的数字读数部分是一种数码管字体,因此可以考虑利用相应的数码管字体产生相应的数字字符串,然后将这些数字字符串叠加到背景图片中,从而达到自动生成数字字符训练图片的目的,由于生成过程是通过程序控制的,因此在生成图片的同时,还能够同步获取这些数字字符在图片中的坐标信息,从而可以生成这些图片对应的标注文件,这样就能够节省大量的数据标注工作,可以无限量地自动生成训练图片及其对应的标注文件。

为了能够更加贴合实际场景,背景图片选择实际配电房场景的图片。

为了增加数据的丰富性,生成的数字字符串的颜色、大小和放置位置都在一定范围内随机产生,且不同字符串之间不重叠。

以下为代码自动生成的图片示例
在这里插入图片描述

2.2 爬虫搜集图片

上一步中利用代码可以自动生成无限量的训练图片及其标注文件,但为了防止过拟合,还需要一些其他来源的训练数据,为此,可以借助爬虫技术从网络中爬取一些相关的图片,作为训练集的补充。

利用爬虫脚本,分别以“数字表计”、“数字仪表”、“数码管仪表”等为关键词,从百度图片网址爬取下载图片,共获得1500多张图片,经过清洗筛选,得到 **452 **张可用于训练的数字表计图片,如下图所示:

可以看到,网上爬取的图片五花八门,虽与配电房场景不太匹配,但在已有大量生成图片的基础上,可以作为训练集的补充和完善,进一步丰富数据的来源,防止过拟合的发生。

三、模型训练及测试

3.1 数据集组成

上述第二步描述了训练数据的自动生成方法,理论上可以生成无限量的训练图片,但由于生成图片毕竟与实际图片有些不同,如果生成图片数量过多,会导致过拟合的发生。因此,经过综合考虑和衡量,决定生成3000张图片用于训练,然后再将利用爬虫得到的452张图片,以及来自实际场景的70张图片合并到一起,组成一个3522张图片的数据集,然后再将该数据集按照6:2:2的比例随机划分为训练集、验证集、测试集。数据集组成如下表所示

图片类别生成图片网络爬取图片实际场景图片合计训练集图片验证集图片测试集图片
数量30004527035222113704705

3.2 模型训练及评价

准备好数据集后,利用yolov8目标检测算法对数据集进行训练,经过200轮的训练,得到的yolov8模型在测试集上进行测试,最终的精确率、召回率如下表所示

测试集图片精确率P召回率R
7050.9930.983

3.3 预测结果可视化

训练得到模型后,对测试集图片进行推理预测,得到的可视化结果如下所示

四、小结

本文主要介绍了配电房数字式仪表读数识别算法的开发过程,在严重缺乏实际场景图片的情况下,采用了两种数据扩增方法,一种是利用代码自动生成大量图片,另一种是利用爬虫技术从网络爬取相关图片,然后将所有数据组成一个数据集,并进行模型训练,所得模型在测试集的精确率、召回率分别达到0.993、0.983,同时从可视化预测结果来看,模型也具有很好的识别效果,与预期相符,表明了本文提出的数据生成方法及读数识别算法的有效性。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 开放式激光振镜运动控制器在Ubuntu+Qt下的文本标刻
  • Leetcode3271. 哈希分割字符串
  • Tranformer分布式特辑
  • 【C++】Stack
  • 【ShuQiHere】探索人工智能核心:机器学习的奥秘
  • 计算机毕业设计 智能推荐旅游平台 Java+SpringBoot+Vue 前后端分离 文档报告 代码讲解 安装调试
  • Spring Boot之DevTools介绍
  • 网络安全 DVWA通关指南 DVWA Reflected Cross Site Scripting (反射型 XSS)
  • C#使用TCP-S7协议读写西门子PLC(三)
  • 2024 年 8 月区块链游戏研报:用户增长与加密货币市场波动并存
  • 队列-数据结构
  • django学习入门系列之第十点《A 案例: 员工管理系统5》
  • 嵌入式音视频开发:探索多领域的融合与创新
  • 跟李沐学AI:长短期记忆网络LSTM
  • 个人用户如何有效利用固态硬盘数据恢复工具
  • 自己简单写的 事件订阅机制
  • 《用数据讲故事》作者Cole N. Knaflic:消除一切无效的图表
  • 2019.2.20 c++ 知识梳理
  • ES2017异步函数现已正式可用
  • IIS 10 PHP CGI 设置 PHP_INI_SCAN_DIR
  • iOS筛选菜单、分段选择器、导航栏、悬浮窗、转场动画、启动视频等源码
  • JavaScript设计模式之工厂模式
  • Java程序员幽默爆笑锦集
  • MD5加密原理解析及OC版原理实现
  • Quartz初级教程
  • React组件设计模式(一)
  • zookeeper系列(七)实战分布式命名服务
  • 闭包--闭包之tab栏切换(四)
  • 关于List、List?、ListObject的区别
  • 规范化安全开发 KOA 手脚架
  • 计算机在识别图像时“看到”了什么?
  • 简析gRPC client 连接管理
  • 精彩代码 vue.js
  • 手机端车牌号码键盘的vue组件
  • 网页视频流m3u8/ts视频下载
  • 小程序开发之路(一)
  • 优化 Vue 项目编译文件大小
  • 基于django的视频点播网站开发-step3-注册登录功能 ...
  • 新年再起“裁员潮”,“钢铁侠”马斯克要一举裁掉SpaceX 600余名员工 ...
  • ​【已解决】npm install​卡主不动的情况
  • ​软考-高级-信息系统项目管理师教程 第四版【第23章-组织通用管理-思维导图】​
  • ​十个常见的 Python 脚本 (详细介绍 + 代码举例)
  • (06)Hive——正则表达式
  • (16)UiBot:智能化软件机器人(以头歌抓取课程数据为例)
  • (k8s)kubernetes集群基于Containerd部署
  • (Redis使用系列) Springboot 使用redis实现接口幂等性拦截 十一
  • (八十八)VFL语言初步 - 实现布局
  • (附源码)springboot工单管理系统 毕业设计 964158
  • (过滤器)Filter和(监听器)listener
  • (免费领源码)Java#ssm#MySQL 创意商城03663-计算机毕业设计项目选题推荐
  • (四)模仿学习-完成后台管理页面查询
  • (四)软件性能测试
  • (原創) 人會胖會瘦,都是自我要求的結果 (日記)
  • (转)eclipse内存溢出设置 -Xms212m -Xmx804m -XX:PermSize=250M -XX:MaxPermSize=356m
  • (转)Linux整合apache和tomcat构建Web服务器