计算机系统应用  2024, Vol. 33 Issue (12): 170-176   PDF    
基于YOLOv8和改进UNet++变电站指针式仪表读数识别
李春蕾1,2, 阮艺铭3, 张小明4, 王宏淼1,2, 王明杰2     
1. 许昌市分布式能源教学平台重点实验室, 许昌 461000;
2. 许昌职业技术学院 机电与汽车工程学院, 许昌 461000;
3. 郑州大学 电气与信息工程学院, 郑州 450001;
4. 许继集团有限公司, 许昌 461000
摘要:针对变电站仪表背景复杂、多旋转角度图像导致读数识别准确率低的问题, 提出一种基于YOLOv8和改进UNet++的指针式仪表读数识别方法. 采用YOLOv8模型检测仪表区域, 并利用透视变换进行旋转校正; 采用极化自注意力模块改进的UNet++算法分割表盘图像提取刻度、指针区域; 经过提取指针直线后, 采用角度法计算仪表读数. 实验结果表明: 提出方法识别仪表读数的平均引用误差为1.82%, 具有较高的识别准确性, 将其应用于变电站指针式仪表智能化巡检中具有一定的可行性.
关键词: 仪表读数识别    YOLOv8    UNet++    极化注意力    图像分割    
Reading Recognition of Substation Pointer Instrument Based on YOLOv8 and Improved UNet++
LI Chun-Lei1,2, RUAN Yi-Ming3, ZHANG Xiao-Ming4, WANG Hong-Miao1,2, WANG Ming-Jie2     
1. Xuchang Key Laboratory of Distributed Energy Teaching Platform, Xuchang 461000, China;
2. School of Mechanical and Electrical Engineering and Automotive Engineering, Xuchang Vocational and Technical College, Xuchang 461000, China;
3. School of Electrical and Information Engineering, Zhengzhou University, Zhengzhou 450001, China;
4. XJ Group Co. Ltd., Xuchang 461000, China
Abstract: This study proposes a method for pointer instrument reading recognition based on YOLOv8 and an improved UNet++ to solve the problem of low reading recognition accuracy caused by complex backgrounds and multiple rotational angles in images of substation meters. YOLOv8 is utilized to detect the instrument area, and perspective transformation is used for rotation correction. The improved UNet++, enhanced by a polarized self-attention module, is utilized to segment dial images to extract scales and pointer regions. After the pointer line is extracted, the instrument reading is computed using the angle method. Experimental results indicate that the proposed method achieves an average citation error of 1.82% in identifying instrument readings. The method has superior recognition accuracy and is feasible for application in the intelligent inspection of pointer instruments in substations.
Key words: instrument reading recognition     YOLOv8     UNet++     polarized attention     image segmentation    

由于变电站内具有电磁干扰强、振动等环境特点, 数字化仪表容易出现测量结果失真, 因此在变电站中大多仍采用指针式仪表检测电力设备的运行状态[1,2]. 传统的变电站巡检方式是通过人工读取记录仪表的数值, 巡检效率低, 无法实时感知电力设备运行状态, 并且在一些强电场的环境中容易造成巡检人员触电事故. 随着科技进步, 移动巡检机器人逐步替代人工巡检[3], 采用机器视觉巡检方式进行变电站日常巡检工作, 助力电力巡检数字化技术发展. 然而, 根据机器视觉拍摄仪表图像, 如何智能化、准确识别仪表读数仍然是一个热门的研究课题.

目前, 针对指针式仪表识别主要分为传统图像处理和基于深度学习的图像检测分割两种方法. 张平等[4]提出在利用Hough算法检测到刻度、指针特征的基础上, 采用聚类算法得到仪表特征一致显著性关系, 但该方法需要预设采集正面、高清的仪表图像, 对不同角度的仪表识别准确度差. 沈云青等[5]将Hough算法与仪表模板匹配法相结合识别仪表读数, 但该方法需要多样化模板来匹配不同的待测仪表, 计算量大. 胡秀军等[6]通过同态滤波对图像色彩进行补偿, 降低光照变化对图像色彩的影响, 并且结合霍夫变换算法实现仪表读数识别. 然而, 基于传统图像处理的方法对复杂背景、不同拍摄角度的仪表图像识别准确率低, 鲁棒性不足, 不能适应环境的变化[7].

随着深度学习算法的发展, 以R-CNN系列[8]、SSD[9]、YOLO系列[10]为代表的目标检测算法逐渐应用于复杂背景下的目标检测, 并且语义分割算法[11,12]广泛应用于医疗、交通等领域的图像分割. Wang等[13]利用Faster R-CNN进行复杂背景下的仪表目标检测, 之后结合Hough 算法进行读数识别. 金爱萍等[14]提出基于YOLOv5模型检测仪表, 并采用U-Net网络提取刻度、指针特征, 降低仪表读数识别的误差. 张建寰等[15]采用YOLOv5和改进PSPNet网络检测图像中仪表区域, 并识别仪表读数, 提高复杂背景下仪表读数的准确度. 然而, 上述方法对于针变电站环境复杂背景、巡检机器人拍摄仪表图像距离和角度不同情况下, 指针式仪表读数识别准确率有待进一步提高.

因此, 为提高变电站仪表读数识别准确性, 文章提出基于YOLOv8和改进UNet++变电站指针式仪表读数识别方法. 首先采用YOLOv8模型检测仪表表盘区域, 实现变电站复杂背景下仪表目标检测; 利用透视变换对仪表表盘进行旋转校正图像预处理; 将校正后的仪表图像输入极化自注意力改进的UNet++网络, 精准提取表盘图像提取刻度、指针区域; 进一步提取指针直线, 采用角度法计算得到仪表读数.

1 基于YOLOv8和改进UNet++指针式仪表读数识别算法 1.1 指针式仪表检测与读数识别流程

指针式仪表检测与读数识别流程如图1所示, 分为仪表区域目标检测和表盘刻度、指针位置提取. 首先, 采用YOLOv8算法在包含变电站环境复杂背景图像中检测出仪表区域, 解决图像背景信息对仪表表盘图像分割的干扰; 其次, 对检测得到的仪表区域图像进行透视旋转校正; 之后采用极化自注意力机制改进的UNet++分割算法提取仪表表盘图像中刻度、指针区域, 进一步提取指针直线; 最后, 采用角度法通过指针偏转角度计算得到仪表读数.

图 1 指针式仪表检测与读数识别流程

1.2 基于YOLOv8的指针式仪表检测算法

由于巡检机器人拍摄的指针式仪表图像中包含变电站其他电力设备的背景信息, 需要先采用目标检测算法从复杂背景中检测仪表区域, 之后再对仪表区域进行图像分割, 可以降低图像背景对分割提取刻度、指针特征区域的影响.

YOLOv8算法是在之前YOLO系列算法的基础上搭建新的网络结构, 具有检测精度高、运算速度快的优点, 其网络结构图如图2所示.

图 2 YOLOv8网络结构

YOLOv8模型由主干网络、颈部网络、检测头网络3个部分构成. 采用多个Conv标准卷积模块、C2f模块以及SPPF模块搭建主干网络, 主要用于提取图像中仪表区域特征. 其中, C2f模块设计融合YOLOv7[16]的ELAN模块和C3模块的残差网络, 能够减少模型参数量并且获得丰富的梯度流信息. 颈部网络主要有由Conv模块、Upsample模块和Concat模块构成, 连接图像中高层次特征和底层特征, 实现深度的特征融合. 检测头网络摒弃之前YOLO算法的单检测头网络结构, 采用解耦头结构分别用于预测待检测框的类别和位置坐标, 提高模型检测的精度.

1.3 透视变换图像校正

由于巡检机器人在变电站内拍摄仪表图像的角度存在倾斜、变形的问题, 采用YOLOv8算法检测出仪表区域, 需要对仪表区域图像进行透视变换校正. 透视变换是将原坐标系的坐标点映射到投影三维坐标系中, 变换矩阵计算公式如式(1)所示:

$ \left[ \begin{gathered} {X' } \\ {Y' } \\ {Z' } \\ \end{gathered} \right] = \left[ {\begin{array}{*{20}{c}} {{T_{11}}}&{{T_{12}}}&{{T_{13}}} \\ {{T_{21}}}&{{T_{22}}}&{{T_{23}}} \\ {{T_{31}}}&{{T_{32}}}&{{T_{33}}} \end{array}} \right]\left[ {\begin{array}{*{20}{c}} x \\ y \\ 1 \end{array}} \right] $ (1)

其中, 原平面坐标系坐标点$ \left( {x, y} \right) $, 投影到三维坐标系坐标点$ \left( {{X' }, {Y' }, {Z' }} \right) $, $ {T_{ij}}\;(i, j = 1, 2, 3) $ 表示变换矩阵的系数.

约定本文中待识别的变电站仪表刻度为圆形, 拍摄角度变形导致表盘图像呈现椭圆形, 可通过椭圆的顶点坐标与标准圆形表盘的坐标点计算变换矩阵[17].

1.4 基于改进UNet++算法识别仪表刻度、指针区域

UNet++算法[18]是在U-Net[19]基础上优化网络结构发展而来, 采用跳跃连接将编码器和解码器联系起来, 融合不同层次特征信息, 提高语义的理解能力, 仪表表盘图像分割效果有较大提升. 同时, 在UNet++网络结构中添加极化自注意力机制模块, 提高分割模型对刻度、指针小目标的特征提取能力.

极化自注意力机制(PSA)[20]能够提取待识别特征的全局信息, 加强模型理解上下文信息, 从而提高模型的精度, 网络结构图如图3所示.

图 3 PSA注意力模块网络结构

首先, 将输入矩阵数据分为两个分支处理, 一条分支压缩输入特征矩阵数据得到一个向量, 并且利用归一化 Softmax 函数处理向量, 并与另外一条分支经过压缩后的向量进行连接操作, 之后经过卷积处理形成权重矩阵, 将该权重矩阵与输入特征矩阵数据进行点积计算, 形成一个加权后的特征矩阵. 之后利用非线性变换模块分别处理空间和通道两个分支上的特征数据, 并将两个分支处理后的数据进行点积, 得到与输入相同维度的输出特征矩阵数据.

在UNet++网络结构中加入PSA注意力模块, 形成改进的UNet++模型, 其网络结构如图4所示.

改进的UNet++由编码器网络、解码器网络组成. 编码器网络结构由多个U-Net网络、PSA注意力模块、下采样模块构成, 每个U-Net网络采用卷积模块提取输入图像的特征图, 之后经过PSA注意力模块融合全局特征信息, 接下来进行下采样处理. 解码器网络采用多个卷积模块和上采样模块提取高层次的特征. 通过同层次的每个节点跳跃连接将编码器和解码器网络联系起来, 构建密集卷积块网络, 实现对不同深度特征的提取和融合, 获取更加丰富的语义信息, 提高模型的分割识别精度.

图 4 基于PSA改进的UNet++网络结构

改进的UNet++的损失函数为MAE Loss和SSIM Loss加权和. 其中, MAE Loss重点关注训练样本像素的差异, SSIM Loss则偏向于提取仪表表盘图像区域的纹理与结构信息. 损失函数如式(2)所示:

$ {L_{{\mathrm{MAE}} + {\mathrm{SSIM}}}} = \sum\limits_{j = 1}^4 \left[\alpha \times L_{{\mathrm{MAE}}}^j + (1 - \alpha ) L_{{\mathrm{SSIM}}}^j\right] $ (2)
$ L_{{\mathrm{MAE}}}^j = \frac{1}{n}\sum\limits_{i = 1}^n {\left| {\hat X_i - {X_i}} \right|} $ (3)
$ L_{{\mathrm{SSIM}}}^j = \frac{1}{n}\sum\limits_{i = 1}^n {\left| {1 - {\mathrm{SSIM}}(\hat X_i , {X_i})} \right|} $ (4)

其中, $ {L_{{\mathrm{MAE}} + {\mathrm{SSIM}}}} $为损失函数, $ L_{{\mathrm{MAE}}}^j $为第$j$分支的MAE Loss, $ L_{{\mathrm{SSIM}}}^j $为第$j$分支的SSIM Loss, $ {X_i} $为第$i$张图像真实值, $ \hat X_i $为第$ i $张图像预测值, $n$为批次.

1.5 仪表读数计算

经过改进的UNet++算法分割表盘图像, 得到粗边缘的刻度、指针区域, 为精确计算仪表读数, 需要对指针区域细化并提取指针直线. 本文采用ZS 细化算法[21]对指针进行细化处理, 解决思路是遍历指针图像的边缘坐标点, 根据某边缘坐标点的八邻域连通情况, 判断该边缘点是否可以删除, 经过迭代计算得到每个边缘点都不能被删除的指针骨架形状, 即完成指针的细化.

利用最小二乘法法计算指针直线的斜率、截距参数. 指针直线计算公式如式(5)所示:

$ y = ax + b $ (5)

其中, $\alpha $为斜率, $b$为截距.

最小二乘法的误差函数计算公式如式(6)所示:

$ f(a, b) = \sum\limits_{i = 1}^n {({y_i} - a{x_i} - b)} $ (6)

其中, $ f(a, b) $为误差函数, $ ({x_i}, {y_i}) $为指针直线像素坐标点, $ i = 1, 2, \cdots, n $为指针直线的像素点个数.

$ f(a, b) $误差函数值为最小时, 表明指针直线拟合程度最高, 即$ f(a, b) $函数偏微分方程的值为0, 如式(7)所示:

$ \left\{ \begin{gathered} \frac{{\partial f}}{{\partial a}} = 2\sum\limits_{i = 1}^n {[({y_i} - a{x_i} - b)} {x_i}] = 0 \\ \frac{{\partial f}}{{\partial b}} = 2\sum\limits_{i = 1}^n {[({y_i} - a{x_i} - b)} {x_i}] = 0 \\ \end{gathered} \right. $ (7)

由于本文主要研究识别变电站圆形指针式仪表读数, 仪表表盘采用规则标准的圆形结构制造的, 因此本文采用角度法计算仪表读数.

通过提取指针直线得到指针直线的参数, 改进的UNet++分割算法提取到表盘最小刻度、最大刻度位置坐标, 计算得到最小刻度和最大刻度之间的角度为β, 指针与最小刻度的偏转角度为α, 并结合仪表量程m先验知识, 仪表读数v的计算公式如式(8)所示:

$ v = m \times \frac{\alpha }{\beta } $ (8)
2 实验与结果分析 2.1 数据集及实验环境

本文数据集来自开源的变电站避雷器监测器仪表图像集, 主要检测雷击时通过避雷器的冲击电流, 样本共计2379张, 分为训练样本1934张, 测试样本445张.

实验环境的处理器为NVIDIA GeForce RTX 4070, 显存12 GB, CPU内存为32 GB, 软件操作系统为Ubuntu 20.04, 深度学习软件环境: 深度学习框架PyTorch 1.13, Python版本为3.8.

2.2 仪表区域检测结果

采用精度P和召回率R作为基于YOLOv8的仪表区域检测模型评价指标. 为验证YOLOv8算法的有效性, 选择SSD、YOLOv5、YOLOv7算法与本文算法识别结果进行对比, 如表1所示.

表 1 不同算法仪表区域检测结果对比 (%)

表1可以看出, 本文提出的基于YOLOv8的仪表区域目标检测模型精度达到97.2%, 召回率为95.4%. 与其他算法相比, YOLOv8算法的精度和召回率均有较大提升. 其中, 与YOLOv5算法相比, 精度和召回率分别提升了3.6%、4.3%; 与YOLOv7相比, 精度和召回率分别提升了2.0%、2.4%. 通过对比实验, 表明本文YOLOv8算法在仪表区域目标检测上的优势.

图5为YOLOv8算法检测变电站巡检图像中仪表区域的实验结果, 从图中可以看出, 在不同旋转角度情况下, YOLOv8算法均能准确识别仪表区域, 满足变电站指针式仪表检测要求.

图 5 基于YOLOv8的仪表区域检测结果

2.3 表盘刻度、指针图像分割实验结果

为验证本文提出的基于极化自注意力机制改进的UNet++表盘图像分割算法有效性, 采用平均交并比(mIoU)、像素准确率(PA)作为模型评价指标, 并且将本文算法与PSPNet、DeepLabv3、UNet++进行对比. 评价指标的计算公式如式(9)、式(10)所示:

$ mIoU = \frac{1}{{k + 1}}\sum\limits_{i = 1}^k {\frac{{{p_{ii}}}}{{\displaystyle\sum\limits_{j = 0}^k {{p_{ij}}} + \displaystyle\sum\limits_{j = 0}^k {{p_{ji}}} - {p_{ii}}}}} $ (9)
$ PA = \frac{{\displaystyle\sum\limits_{i = 1}^k {{p_{ii}}} }}{{\displaystyle\sum\limits_{i = 1}^k {\displaystyle\sum\limits_{j = 0}^k {{p_{ij}}} } }} $ (10)

其中, $i$为像素点的真实值, $j$为像素点的预测值, $ {p_{ij}} $表示$i$预测为$j$.

不同仪表表盘图像分割算法性能指标对比如表2所示. 从表2可以看出, 本文提出的改进的UNet++平均交并比为95.41%、像素准确率为96.58%, 两项评价指标均高于其他算法. 与UNet++算法相比, 加入极化自注意力机制模块改进的UNet++算法在mIoUPA指标上分别提高1.85%、2.07%.

表 2 不同仪表表盘图像性能指标对比 (%)

图6为不同算法的仪表图像分割效果对比, 通过图中效果可以看出, 本文提出的基于极化自注意力机制改进的UNet++算法能够准确分割表盘刻度带和指针, 而其他几种算法存在指针边缘分割不完整的问题, 并且在有绿色的刻度表带部分边缘分割不精确, 表明改进的UNet++算法具有较好仪表表盘图像分割性能.

图 6 不同算法的表盘图像分割效果对比

2.4 仪表读数实验结果

本文采用引用误差评价识别仪表读数的准确性. 表3为部分仪表读数结果统计, 根据先验知识可知仪表的量程为3 mA, 在不同仪表读数条件下, 最大的引用误差为2.07%, 最小的引用误差为1.43%, 表明本文方法具有较低的引用误差, 能够准确识别变电站指针式仪表读数.

表 3 不同仪表表盘图像性能指标对比

表4为消融实验结果对比, 通过表中数据可以看出, 本文方法识别仪表读数的引用误差为1.82%, 识别准确性均高于其他方法. 其中, 与YOLOv5+改进UNet++相比, 引用误差降低25.1%; 与YOLOv7+改进UNet++相比, 引用误差降低17.6%; 与YOLOv8+UNet++相比, 引用误差降低14.9%, 验证本文方法具有较高的仪表读数识别精度.

表 4 消融实验结果对比 (%)

3 结论

针对变电站仪表图像背景复杂、巡检机器人拍摄角度倾斜旋转导致读数识别准确性不高的问题, 本文提出一种基于YOLOv8和改进UNet++的指针式仪表读数识别方法. 为提高变电站复杂背景下仪表检测的准确性, 采用YOLOv8算法检测仪表图像中的表盘区域; 采用透视变换方法对图像进行旋转校正, 解决仪表拍摄角度多样的问题; 将极化自注意力模块引入UNet++网络, 提高模型对表盘图像提取刻度、指针区域的分割精度; 采用角度法计算得到仪表读数. 将本文提出方法应用于变电站避雷器监测器指针式仪表的读数识别, 结果表明: 本文方法识别仪表读数的平均引用误差为1.82%, 验证了该方法的有效性, 为变电站指针式仪表数智化巡检提供新的解决手段.

参考文献
[1]
张森, 万吉林, 王慧芳, 等. 基于注意力机制的卷积神经网络指针式仪表图像读数识别方法. 电力自动化设备, 2022, 42(4): 218-224.
[2]
曲海成, 张旺. 基于YOLOv7+U2-Net的指针式仪表检测与识别. 计算机系统应用, 2023, 32(11): 276-285. DOI:10.15888/j.cnki.csa.009301
[3]
贺要锋, 闫明, 张柯, 等. 指针式仪表识别算法及在电力巡检中的应用. 测控技术, 2021, 40(1): 114-117, 122.
[4]
张平, 丁永泽, 王致芃, 等. 变电站指针式仪表精准读数及可靠度估计模型. 激光与光电子学进展, 2020, 57(10): 101012.
[5]
沈云青, 熊卫华, 黄为民, 等. 基于模板匹配与Hough圆检测的仪表识别. 计算机技术与发展, 2021, 31(4): 69-73.
[6]
胡秀军, 于凤芹. 基于单参数同态滤波与全局对比度增强的指针仪表读数识别方法. 仪表技术与传感器, 2021(5): 42-46, 51.
[7]
万吉林. 基于深度学习的电力设备图像识别算法研究与应用 [硕士学位论文]. 杭州: 浙江大学, 2021.
[8]
李金红, 熊继平, 陈泽辉, 等. 基于卷积神经网络的指针式仪表识别. 计算机系统应用, 2021, 30(9): 85-91. DOI:10.15888/j.cnki.csa.008090
[9]
余永维, 韩鑫, 杜柳青. 基于Inception-SSD算法的零件识别. 光学精密工程, 2020, 28(8): 1799-1809.
[10]
Tan L, Lv XY, Lian XF, et al. YOLOv4_drone: UAV image target detection based on an improved YOLOv4 algorithm. Computers & Electrical Engineering, 2021, 93: 107261.
[11]
Liu XY. GLMLP-TRANS: A transportation mode detection model using lightweight sensors integrated in smartphones. Computer Communications, 2022, 194: 156-166. DOI:10.1016/j.comcom.2022.07.006
[12]
杨振, 邸拴虎, 赵于前, 等. 基于级联Dense-UNet和图割的肝脏肿瘤自动分割. 电子与信息学报, 2022, 44(5): 1683-1693.
[13]
Wang L, Wang P, Wu LH, et al. Computer vision based automatic recognition of pointer instruments: Data set optimization and reading. Entropy, 2021, 23(3): 272. DOI:10.3390/e23030272
[14]
金爱萍, 袁亮, 周德勤, 等. 基于YOLOv5和U-Net的指针式仪表读数识别方法. 仪表技术与传感器, 2022(11): 29-33.
[15]
张建寰, 曾亮, 刘涛, 等. 户外巡检机器人指针式仪表识别方法研究. 仪表技术与传感器, 2023(11): 51-56, 64.
[16]
Wang CY, Bochkovskiy A, Liao HYM. YOLOv7: Trainable bag-of-freebies sets new state-of-the-art for real-time object detectors. Proceedings of the 2023 IEEE/CVF Conference on Computer Vision and Pattern Recognition. Vancouver: IEEE, 2022. 7464–7475.
[17]
赵伟达, 陈海文, 郭陆阳, 等. 基于YOLO-E与改进OCRNet图像分割的变电站仪表读数自适应识别方法. 电力建设, 2023, 44(11): 75-85.
[18]
Zhou ZW, Siddiquee MMR, Tajbakhsh N, et al. UNet++: A nested U-Net architecture for medical image segmentation. Proceedings of the 4th International Workshop on Deep Learning in Medical Image Analysis and Multimodal Learning for Clinical Decision Support. Granada: Springer, 2018. 3–11.
[19]
Ronneberger O, Fischer P, Brox T. U-Net: Convolutional networks for biomedical image segmentation. Proceedings of the 18th International Conference on Medical Image Computing and Computer-assisted Intervention. Munich: Springer, 2015. 234–241.
[20]
Liu HJ, Liu FQ, Fan XY, et al. Polarized self-attention: Towards high-quality pixel-wise regression. arXiv:2107.00782, 2021.
Liu HJ, Liu FQ, Fan XY, et al. Polarized self-attention: Towards high-quality pixel-wise regression. arXiv:2107.00782, 2021.
[21]
常庆贺, 吴敏华, 骆力明. 基于改进ZS细化算法的手写体汉字骨架提取. 计算机应用与软件, 2020, 37(7): 107-113, 164.