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

文章目录

一、概述

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

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

二、训练数据准备

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

2.1 自动生成图片

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

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

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

以下为代码自动生成的图片示例

2.2 爬虫搜集图片

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

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

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

三、模型训练及测试

3.1 数据集组成

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

图片类别 生成图片 网络爬取图片 实际场景图片 合计 训练集图片 验证集图片 测试集图片
数量 3000 452 70 3522 2113 704 705

3.2 模型训练及评价

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

测试集图片 精确率P 召回率R
705 0.993 0.983

3.3 预测结果可视化

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

四、小结

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

相关推荐
不想敲代码!!!3 天前
爆改YOLOv8|使用MobileNetV4替换yolov8的Backbone
pytorch·python·深度学习·yolo·目标检测·yolov8
不想敲代码!!!8 天前
爆改YOLOv8|利用yolov9的ADown改进卷积Conv-轻量化
人工智能·pytorch·深度学习·yolo·目标检测·计算机视觉·yolov8
kay_5459 天前
YOLOv8改进 | 模块缝合 | C2f 融合RFAConv和CBAM注意力机制 【二次融合 小白必备】
人工智能·python·深度学习·yolo·目标检测·面试·yolov8
F800010 天前
YOLOv8改进:CA注意力机制【注意力系列篇】(附详细的修改步骤,以及代码,CA目标检测效果由于SE和CBAM注意力)
深度学习·yolo·目标检测·yolov8
不想敲代码!!!10 天前
爆改YOLOv8|利用SCConv改进yolov8-即轻量又涨点
pytorch·python·神经网络·yolo·目标检测·yolov8
不想敲代码!!!11 天前
爆改YOLOv8|利用yolov10的PSA注意力机制改进yolov8-高效涨点
人工智能·python·yolo·目标检测·yolov8
不想敲代码!!!12 天前
爆改YOLOv8|利用yolov10的SCDown改进yolov8-下采样
pytorch·yolo·目标检测·计算机视觉·yolov8
不想敲代码!!!21 天前
爆改YOLOv8 | 利用CPA-Enhancer提高低照度物体检测(适用于雨,雪,雾天)
人工智能·pytorch·python·yolo·目标检测·yolov8
不想敲代码!!!21 天前
爆改YOLOv8|使用RCS-OSA替换C2f暴力涨点
人工智能·pytorch·python·yolo·目标检测·yolov8