变电站指针式仪表示数识别方法研究

2022-03-25 04:44郭宇强易映萍
软件导刊 2022年3期
关键词:指针式读数指针

郭宇强,易映萍

(上海理工大学 机械工程学院,上海 200082)

0 引言

变电站是电力网络的枢纽点,变电站中各类仪表的示数对实时监测变电站运行数据至关重要。变电站常见的仪表包括指针式仪表和数显式仪表两大类,尽管数显式仪表已广泛应用于现代化工业生产中,但指针式仪表因其结构简单、抗干扰、耐用性强等优点,仍具有不可替代的作用[1-3],这些指针式仪表大多没有通信接口,需要人工进行读数。随着人工智能的不断发展,使用计算机视觉技术对仪表进行自动读数成为可能[4]。

识别指针式仪表示数的方法研究较多。文献[5]利用尺度不变特征变换算法,在输入图像中提取仪表表盘区域,采用快速霍夫变换检测指针直线;文献[6]使用中心投影法定位指针;文献[7]提出一种改进的霍夫变换算法用于检测指针,提升了仪表读数精度;文献[8]利用表盘的颜色直方图分布特征和亮度梯度特征定位表盘区域,根据改进的霍夫变换算法进行指针定位;文献[9]使用支持向量机训练图像HOG(Histogram of Oriented Gradient,HOG)特征以检测仪表,再结合图像灰度信息由霍夫变换检测指针位置。近年深度学习方法在图像处理领域发展迅速,广泛应用于电力仪表识别。文献[10]使用基于卷积神经网络的目标检测算法Faster R-CNN 检测表盘,使用连通域分析法定位指针;文献[11]使用Mask-RCNN 分割表盘区域,并使用透视变换对仪表进行校正。

目前仪表指针检测大多基于连通域法和霍夫变换法,但仪表图像易受噪声影响导致指针连通域并不连贯,霍夫直线检测算法空间复杂度和时间复杂度较高,且检测出的直线并非指针中心线而是指针边沿,导致读数精度降低;仪表读数通常需要事先从模板库中获取人为标定的量程信息。针对这些问题,本文提出一种基于卷积神经网络的仪表读数方法,对表盘、刻度值、指针位置进行检测,获取仪表刻度数值、表盘圆心和指针中心线等信息。该方法可以准确定位复杂背景下的指针中心线,且无需仪表量程信息即可读取其示数。

1 仪表示数识别模型

指针式仪表示数识别模型主要包含表盘及刻度值检测、刻度值数值识别、指针分割3 个部分。

1.1 YOLOv3 检测仪表及刻度值

目前主流的深度学习目标检测算法分为两类:①基于two-stage 模型的R-CNN[12-13](Region-CNN,R-CNN)系列。先生成候选框再分类,虽检测精度较高,但检测时间较长,不能满足实时性需求;②基于one-stage 模型的YOLO[14-16](You Only Look Once,YOLO)系列,直接用单一的卷积网络预测目标位置和分类,是一种端到端的检测模型,因其高精度和实时性而应用广泛。本文基于YOLOv3 设计了指针式仪表及刻度值的目标检测模型。YOLOv3 是YOLO的改进版本,其基本思想是把输入图片划分为n×n的网格,每个网格单元负责预测以该单元为中心点的目标边界框和置信度分数。经过神经网络提取和变换输入的图像,每个网格单元及周边信息都被识别和整理,最后编码到输出向量中。

YOLOv3 加入批归一化和预设先验框等处理方法,改进为更深入更强大的特征提取网络Darknet-53。它借鉴残差网络[17]做法,在一些层之间设置快捷连接,其网络结构如图1 所示。其中CBL 层(CONV-BN-Leaky relu,CBL)是YOLOv3的基本组件,卷积层后连接了批归一化层(Batch Normalization,BN),用于提升模型训练速度和精度,使用泄露修正线性单元作为激活函数。残差层依次由零填充层、CBL 层和n 个残差块连接而成,每个残差块由两个CBL 层和一个叠加层构成,另有2 个张量拼接层用于拼接Darknet-53 网络的中间层和上采样层,扩充了张量维度。输出层输出3 个不同尺寸的特征图,YOLOv3 采用多尺度对不同尺寸目标进行检测,加强了小物体的识别能力。

把自制的指针式仪表数据集输入到如图1 所示的网络进行训练,使用训练好的模型对图像进行检测,利用非极大值抑制算法对检测结果进行筛选,最终完成仪表以及仪表刻度值的目标检测。

Fig.1 YOLOv3 network structure图1 YOLOv3 网络结构

选取交并比(IoU)、正确率(P)、召回率(R)和平均准确度均值(mAP)作为评价指标对模型进行评价。交并比是体现预测框与真实框接近程度的指标,计算公式如下:

式中,A为预测框,B为真实边界框。

P、R 和mAP 计算公式如下:

式中,TP为真正例个数,FP为伪正例个数,FN为伪反例个数,N为样本类别数。

1.2 刻度值示数识别

对仪表和仪表刻度值的目标检测完成后,还需识别检测到的刻度值示数。

首先对YOLOv3 检测到的刻度值图像进行二值化操作,然后使用连通域分割法对二值图进行字符分割。本文采用种子填充法(Seed-Filling)进行连通域分析,找出并标记二值图中的各个连通区域。得到图像的连通域之后,去除连通域面积较小的噪声区域,使用剩余连通域的外接矩形作为分割边界进行字符分割,分割结果如图2 所示。

Fig.2 Character segmentation图2 字符分割

完成字符分割后使用LeNet-5[18]卷积神经网络模型对分割出的字符进行识别。LeNet-5 模型的网络结构如图3所示,其主要由两个卷积层、两个池化层以及两个全连接层构成。使用分割出的字符制作数字数据集,输入如图3所示的网络中进行训练,得到可以识别单个数字的网络模型。利用训练好的模型对分割出的字符依次进行识别,完成对仪表刻度值的数值识别。

Fig.3 LeNet-5 network structure图3 LeNet-5 网络结构

1.3 Deeplabv3+分割指针

本文使用基于深度学习的语义分割算法对仪表指针区域进行定位,该方法相较于霍夫变换和连通域方法效果更好。

DeepLab 是Chen 等[19]基于卷积神经网络提出的语义分割模型,DeepLabv3+[20]是DeepLab 系列中性能最优的网络,其网络结构如图4 所示。DeepLabv3+网络由编码器和解码器两部分组成,编码器主要包括特征提取网络和空洞空间金字塔池化(Atrous Spatial Pyramid Pooling,ASPP)两部分。将特征提取网络最后一层输出的特征图送入ASPP模块,ASPP 使用4 种不同空洞率的空洞卷积块和一个平均池化块得到5 组特征图,将其拼接起来后经过1×1 卷积块,最后送入解码器;解码器首先对特征提取网络中间层输出的低级特征图进行通道降维,然后对ASPP的输出进行插值上采样,再将这两个特征图拼接起来送入3×3 卷积块,最后再进行插值上采样,得到与输入图像分辨率一样的预测图。

Fig.4 DeepLabv3+network structure图4 DeepLabv3+网络结构

将制作好的指针数据集输入如图4 所示的网络中进行训练,使用训练好的模型对指针式仪表图像进行检测,完成对仪表指针部分的分割。

选取像素准确率(Pixel Accuracy,PA)作为评价指标,计算公式如下:

式中,k为目标类个数,Pij表示属于i类却预测为j类的像素点总数。

2 仪表读数方法

完成仪表表盘、刻度值、指针识别之后,还需要定位表盘圆心以及刻度值所对应的刻度线,最后使用角度法对仪表进行读数。

2.1 定位表盘圆心

图5(左)是YOLOv3 检测到的表盘图像,对其进行灰度化以及自适应二值化操作,再把由YOLOv3 定位的矩形框内的像素点值设为0(黑色),对处理后的二值图进行连通域分析,去除面积小于20 以及大于200的连通域,计算剩余连通域的最小外接矩形,去除最小外接矩形长宽比和宽长比都大于0.25的连通域,最终结果如图5(右)所示。

Fig.5 Meter tick mark positioning图5 仪表刻度线定位

图5(右)为只包含仪表刻度线连通域的图像,由于每条刻度线都是指向圆心的直线图形,所以使用最小二乘法对图像中所有连通域进行直线拟合,理论上所有直线会交于一点,实际上所有直线之间的交点如图6(左)所示。从中可以看出,由于直线拟合误差以及仪表制造工艺等问题,拟合直线并未交于一点,但大部分交点都位于圆心附近。对以图像中心点为圆心、以图像宽度的十分之一长为半径的圆内所有交点坐标求均值,得到的点作为表盘圆心,结果如图6(右)所示。

Fig.6 Position meter center图6 定位表盘圆心

2.2 角度法读数

本文使用角度法对指针式仪表进行读数。首先依次计算图5(右)中距离每个刻度值矩形框中心点最近的连通域质心,即可找到该刻度值所对应的刻度线;然后设圆心为点O,以点O 为原点建立平面直角坐标系。指针区域像素点中距离圆心最远的点设为点B,线段OB 即为指针中心线;线段OB 逆时针方向最近的刻度值设为d,刻度值d 所对应刻度线连通域的质心设为点A,线段OB 顺时针方向最近的刻度值设为e,刻度值e 所对应刻度线连通域的质心设为点C;OA 与OB 之间的夹角设为α,OA 与OC 之间的夹角设为β。如图7 所示,则指针式仪表读数结果为:

Fig.7 Schematic diagram of angle reading图7 角度法读数

3 实验结果与分析

3.1 YOLOv3 训练与识别

使用开源工具LabelImg 在3 000 张原始图像上标注仪表及刻度值区域,生成标签文件,然后把数据集和相应标签输入到图1 所示网络中进行训练。设定学习率为0.001,批处理大小(batch-size)为8,使用动量因子为0.9的动量梯度下降法迭代500 个epoch 后完成对模型的训练。本文采用Pytorch 深度学习框架进行网络搭建和训练,实验环境如下:①系统:Ubuntu 16.04 LTS;②GPU 型号:GeForce RTX 2070;③CUDA 版本:10.2;④cuDNN 版本:7.6.5。

训练完成后,使用训练好的模型对图片进行测试,单张图片测试结果如图8 所示。

Fig.8 YOLOv3 recognition results图8 YOLOv3 识别结果

选取IoU>50%作为目标是否被正确检测的阈值,则YOLOv3的正确率为94.6%,召回率为91.8%,mAP 为95.2%。mAP 是综合衡量模型性能最为全面的指标,表1 列出了YOLOv3 与Faster RCNN 和SSD 在mAP和每秒帧数(FPS)两类指标上的对比结果。由表1 可以看出,YOLOv3与Faster RCNN 和SSD的准确率相当,但检测速度更快。

Table 1 Comparison of different model parameters表1 不同模型参数对比

3.2 Deeplabv3+训练与识别

将YOLOv3 网络识别并提取的1 000 张表盘图像作为DeepLabv3+的数据集,使用Labelme 图像标注工具对表盘图像中的指针区域进行标注,部分图像标注结果如图9 所示。

Fig.9 Result of pointer marking图9 指针标注结果

将数据集和标签输入图4 网络中进行训练,设定学习率为0.007,批大小(batch-size)为4,使用动量因子为0.9的动量梯度下降法迭代300 个epoch 后完成对模型的训练。然后使用训练好的模型对测试集进行测试,部分图像的指针分割结果如图10 所示。

Fig.10 Segmentation results of DeepLabv3+图10 DeepLabv3+分割结果

DeepLabv3+的像素准确率为97.3%,高于连通域法分割的84.6%,可以准确分割出用于后续读数的指针区域。

3.3 刻度值示数识别

本文对1 000 张指针式仪表图像进行字符分割,从中挑选5 000 个数字图片作为数据集对LeNet-5 模型进行训练。设置学习率为0.01,批处理大小为16,优化方式采用参数为0.5的动量下降法。训练过程中训练集和测试集的损失变化如图11(彩图扫OSID 码可见,下同)所示,测试集准确率变化情况如图12所示,最终测试集准确率达到99.3%。

Fig.11 LeNet-5 loss curve图11 LeNet-5 损失曲线

Fig.12 LeNet-5 test set accuracy图12 LeNet-5 测试集准确率

3.4 仪表读数结果测试

使用本文方法对处于不同环境中的200 张仪表图片进行检测,图片中含有4 种不同量程的仪表,部分检测结果如表2 所示。单张图片平均检测时长0.3s,平均误差率小于3.5%,实验结果表明本文方法拥有较高的准确性和稳定性,可以代替人工对变电站指针式仪表进行示数识别。

Table 2 Test results of meter reading表2 仪表读数检测结果

4 结语

本文基于卷积神经网络的目标检测、语义分割以及字符识别算法,提出一种指针式仪表的示数识别方法。实验表明该方法准确性和稳定性较高,可以代替人工对变电站指针式仪表进行示数识别。但该方法还存在一些不足,如没有对倾斜仪表进行矫正,只能对均匀刻度的仪表进行读数等。后续研究将对仪表刻度值中心点进行椭圆拟合,然后使用透视变换对倾斜仪表进行矫正,以降低读数误差;还需对非均匀刻度仪表的读数算法进行研究,并将本文方法应用于其他电力设备的图像检测,以进一步提升电网的智能化水平。

猜你喜欢
指针式读数指针
不同搂草方式对苜蓿草品质的影响
基于MobileNetV2的圆形指针式仪表识别系统
读数
读数
读数
读数
基于改进Hough变换和BP网络的指针仪表识别
浅谈指针式万用表的测量方法与使用要点
基于提升小波变换的指针式仪表图像边缘检测
ARM Cortex—MO/MO+单片机的指针变量替换方法