基于YOLOv5的指针式仪表自动读数方法研究

2023-07-25 07:29夏臻康李维刚田志强
仪表技术与传感器 2023年6期
关键词:指针式读数指针

夏臻康,李维刚,2,田志强

(1.武汉科技大学信息科学与工程学院,湖北武汉 430081;2.武汉科技大学冶金自动化与检测技术教育部工程研究中心,湖北武汉 430081)

0 引言

随着计算机技术的不断发展,计算机视觉等智能化技术被广泛应用到工业场景下各类仪表的检测与识别中[1]。其中指针式仪表以其结构简单、维护便捷和抗干扰能力强等特点,已成为工业场合下使用广泛的一类仪表[2]。由于该类仪表无法输出数字信号,只能通过人工进行示数读取[3-4],而人工读数不但消耗大量劳动力且检测效率低[5],并且由于不少工业场景中仪表所处环境复杂,存在无法通过人工进行读数的情况。因此,研究指针式仪表准确、稳定的自动读数方法具有重要意义[6]。

近年来,有大量国内外学者在指针式仪表检测与读数问题上进行了深入研究。文献[7]使用区域生长方法定位指针式仪表的刻度盘区域,并提出了一种改进中心点投影的方法来检测圆形比例区域,在仪表刻度不均匀时能适用。文献[8]提出采用随机样本一致性方法克服背景图像干扰的方案,并使用二值化阈值方法来分割指针区域以解决指针阴影问题。文献[9]提出了一种无先验知识的仪表自动检测与读数算法,通过椭圆检测和非极大值抑制检测表盘区域,结合分扇区选点算法、最大极值稳定区域算法等算法操作完成仪表读数,可解决对仪表先验知识不充足时无法读数的问题。上述文献所提方法虽然能实现对于指针式仪表的自动识别,但主要基于传统机器视觉的检测算法与分割算法,图像在环境复杂时读数难度大,且图像处理步骤繁琐,影响读数精确度。随着深度学习的兴起,其应用显著提高了指针式仪表检测和读数的准确性。文献[10]提出了一种基于NiN(network in network)网络结构的仪表自动读数解决方案,能对不同模拟刻度的仪表进行高效检测,但这种方案的检测精度受环境影响较严重。文献[11]提出一种基于计算机视觉的指针式仪表自动检测与识别方法,该方法能根据检测到的仪表位置调整相机状态,再通过透视变换、霍夫变换等步骤得到最终仪表读数,但该方法对硬件要求较高,并且使用霍夫变换识别指针容易导致识别精度低。文献[12]引入Faster R-CNN检测表盘、指针位置,并使用图像分割的方法替代霍夫变换提高了检测指针的准确率,但是该方法的流程较多,在计算指针倾角的过程中容易积累误差。

本文提出了一种基于目标检测的指针式仪表自动读数方法,此方法针对在指针式仪表检测困难时,读数精度会受到影响的问题,适用于仪表所处环境复杂的情形。该方法首先利用改进的YOLOv5算法对仪表表盘区域进行目标检测,提取表盘图像并进行分类;其次,针对检测到的仪表,对提取出的表盘区域做2次透视变换,以校正倾斜表盘;最后将无倾斜的表盘展开成矩形,再利用原始YOLOv5算法对指针位置进行识别,通过距离法计算结果,实现指针式仪表的自动读数。

1 仪表自动读数方法

本文提出的指针式仪表自动读数方法的流程图如图1所示。该方法流程为:巡检机器人在进入到仪表检测模式后,相机获取存在仪表的当前视野图,通过仪表表盘检测、仪表倾斜校正、仪表指针检测及读数3个模块得到最终的仪表读数结果。

图1 仪表自动读数方法流程

1.1 基于改进YOLOv5算法的表盘检测

目前成熟的目标检测算法有Faster-RCNN[13]、Mask-RCNN[14]、YOLO[15]、SSD[16]等,其中YOLO系列算法作为One-stage算法的典型代表,算法检测速度和精度较平衡,能够广泛地应用在各类工业场所,以解决实际问题。本文选择YOLOv5s网络进行改进,改进后的YOLOv5网络结构如图2所示。对于骨干网络,在最后一个C3模块后面加上全局注意力模块(global attention mechanism,GAM)[17],以强化网络提取能力;在颈部区域,新增尺寸为输入图像1/4的特征图,从而提升网络针对较小目标的特征挖掘能力[18];最后,引入Decoupled-head解耦头[19],以改进网络模型检测模块的分类和定位效果。

图2 改进的YOLOv5网络结构图

1.1.1 加入全局注意力模块

在YOLOv5原始网络中,对每一层特征进行提取时给予同等的关注度,这种方法忽略了不同特征通道具有不同的重要度,将导致部分目标提取困难。针对此网络特征差异性敏感度较弱问题,本文在骨干网络中加入GAM模块,利用该模块对特征利用能力强的优点,减少信息损失并且提高全局特征交互,模块概述图如图3所示。

图3 全局注意力机制概述图

给定输入特征图F1∈RC×H×W,中间状态F2和输出F3定义为:

F2=Mc(F1)⊗F1

(1)

F3=Ms(F2)⊗F2

(2)

式中:Mc和Ms分别为通道注意力图和空间注意力图;⊗表示元素乘法运算。

通道注意力子模块使用三维排列来保留三维信息,并使用2层多层感知器(multi-layer perceptron,MLP)放大跨维的通道空间依赖关系。在空间注意子模块中,使用2个卷积层进行空间信息融合以关注空间信息,并删除了池化操作以进一步保留特性映射。

因此,使用全局注意力模块能使网络目标提取能力更强。

1.1.2 检测端优化

在原始YOLOv5网络中,使用3种不同尺寸的特征图检测不同大小的目标。而根据网络中使用特征金字塔网络(feature pyramid network,FPN)[20]的思想,经过深层次卷积后的特征图虽然拥有丰富语义信息,但在经过多次卷积会丢失掉目标的一些位置信息,影响较小目标的检测;浅层卷积后得到的特征图语义信息较少,但目标的位置信息却比较丰富。

在一些工业场合中,部分仪表位置偏僻,导致采集到的仪表目标在图中占比较小。因此,本文在原始YOLOv5网络中增加一个4倍下采样过程,将通过该下采样过程后的原始图片特征送入后续特征融合网络,能得到新尺寸的特征图,此特征图具有较小感受野且位置信息较丰富。新增特征图将位置信息向检测端传递,从而检测端能在4个尺度上进行目标检测,有利于提升对于较小目标的检测性能,以优化网络整体检测效果。

1.1.3 引入解耦头(decoupled head)

传统的YOLO系列网络在head部分采取的都是耦合头部(coupled head),而文献[21]表明,对于目标检测任务,分类与回归之间存在冲突,采用传统的耦合检测头会导致模型性能降低,YOLOX[19]算法采用解耦头方法,在目标检测任务上取得了较好效果,解耦头示意图如图4所示。本文引入解耦头替换原有耦合头部,解耦头经1×1卷积后,将通道维数减小至统一通道数,再接入2个平行的3×3卷积层,分别用于分类任务和定位、置信度任务,对于用于定位和置信度任务的分支再使用2个平行的1×1卷积进行解耦,最终能使分类、定位和置信度检测分别采用不同的检测层。

图4 解耦头示意图

1.2 仪表倾斜校正

利用改进YOLOv5网络可以在复杂环境下检测和提取目标表盘区域,并对仪表种类进行分类。而由于仪表表盘平面与相机平面一般存在角度偏差,所以提取出的表盘区域图像并不是圆形,而是具有倾斜角度的畸变图像。因此需要通过透视变换对待检测图像进行处理,将其修正为正面视角图像从而减小读数的误差。仪表倾斜校正模块主要包括利用AKAZE[22]算法进行关键点匹配后的次透视变换[23]和对一次透视变换后的图像进行椭圆拟合[24]后的二次透视变换。一次透视变换的作用是,将待检测图像校正成为同模板图像一样的无倾斜图像;二次透视变换的作用是得到仪表圆心,并为展开提供中心,以及保证待检测图像校正为圆形,从而减小给后续步骤带来的误差。

1.2.1 基于AKAZE算法的仪表透视变换

首先,需要对每个类型的仪表,都提前获取一张居中且无倾斜的仪表表盘图像作为模板图像,且对模板图像上包括起始刻度点、终止刻度点在内的关键点进行标注并保存标注数据;接着,针对每张待读数的图像和提前获取到的模板图像,在做灰度化处理之后,经AKAZE算法进行特征点检测,并用双向匹配法匹配特征点,然后利用RANSAC[25]筛除图像中匹配误差较大的特征点,获得单应性矩阵M;最后,通过得到的矩阵M对待读数图像做透视变换,向模板图像校正。

(1)AKAZE算法。AKAZE算法包括3个步骤:构建非线性尺度空间、特征点检测及定位、M-LDB(modified-local difference binary)特征描述子生成。其中,AKAZE算法采用改进局部二值微分算法的M-LDB算法进行特征点描述,该算法利用非线性空间提取的梯度和强度信息,在旋转不变性和尺度不变性上均有较好的鲁棒性。因此,本文利用AKAZE算法能较好检测到待读数图像与模板图像中可以匹配的特征点。

(2)RANSAC算法与透视变换。双向匹配后得到的匹配结果依旧存在错误匹配点,不筛除误匹配点会影响后续透视变换的效果,因此采用RANSAC算法剔除误匹配点。该算法是在已得到匹配点的基础上,随机从中抽取4个点作为样本点,计算出单应性矩阵;然后计算所有匹配点与矩阵间的投影误差,若该误差小于阈值,则在剩余匹配点中选择1个点加入样本点,同时继续按此前方式进行计算比较,不断更换新的矩阵,直到找到最佳的单应性矩阵。透视变换则是利用此前找到的最佳单应性矩阵,将图像从当前平面投影至新的视平面,实现图像校正。

1.2.2 基于椭圆拟合的仪表透视变换

本步骤基于由AKAZE算法透视变换后得到的图像,因此将本次变换称为二次透视变换。由于通过一次透视变换是基于模板图像的透视变换,因此可用模板图像标注的关键点来拟合椭圆,利用拟合后椭圆的长短轴端点作为变换矩阵的计算依据,从而实现保证待匹配图像向模板图像校正的目的,同时拟合椭圆后能得到表盘圆心,为表盘展开提供条件。椭圆拟合是用椭圆方程表示平面上点的分布,即找到一个使平面上点尽可能靠近该椭圆的圆。本文使用最小二乘法拟合表盘椭圆,求解出平面上椭圆的一般方程如式(3)所示。

F(x,y)=Ax2+Bxy+Cy2+Dx+Ey+1=0

(3)

式中A、B、C、D、E为椭圆一般方程系数。

根据透视变换原理,变换矩阵通过2个视平面中4个不同点对应的坐标值得到唯一解。因此,在得到拟合出的椭圆方程后,求解出椭圆长短轴端点作为变换矩阵计算依据,从而达到校正效果,此次变换如图5所示。

图5 基于椭圆拟合的透视变换

1.3 仪表指针检测及读数

经过目标检测与倾斜校正后,能得到圆形且无倾斜的指针仪表图像,通过获取指针位置并采用距离法就能得到仪表示数。仪表指针检测及读数主要分为表盘展开、指针目标检测和基于距离法的读数计算3个部分。

1.3.1 表盘展开

为了便于采用距离法进行仪表读数计算,需要利用极坐标变换[26]将表盘图像由圆形展开为矩形。在二次透视变换阶段,得到了表盘刻度区域的圆心,以该圆心为变换中心进行极坐标变换,将图像变换到极坐标系。极坐标变换表达式如(4)、式(5)所示:

(4)

(5)

式中:ρ、θ分别为极坐标系极半径和极角;xc、yc为变换中心;x0、y0为原坐标系中像素点的横纵坐标。

得到展开图像后,由于极坐标展开的起点与圆形表盘刻度位置并不对应,通过圆形表盘刻度起点、终点位置信息能得到极坐标变换后在矩形表盘上对应的位置信息,对图像进行重新拼接,获得最终只包含刻度所在区域的矩形表盘图像。

1.3.2 指针目标检测和读数计算

目前,对于指针位置的检测大多基于传统的图像处理技术,直接在截得的仪表表盘区域图像上或者在最原始的图像上,用传统图像处理方法定位仪表指针中轴线,此种方法往往需要对图像进行多步处理。本文得到矩形表盘图像后,则能用YOLOv5对指针进行目标检测,得到目标包围框,该包围框的中轴线则为指针尖所在的直线,此方法与常规方法相比,减少了原始图像中其他区域对指针中轴线定位过程的干扰。由于对指针的目标检测背景更加单一、目标更大,因此更好检测,本文选用原始YOLOv5网络进行指针位置的检测。

得到指针位置后,即可用指针位置、最小刻度线位置和最大刻度线位置3者通过距离法公式得到最终读数。基于距离法求得的最终读数r为

(6)

式中:W为矩形仪表宽度;Xp为指针线位置横坐标;m为仪表量程;r0为仪表起始读数。

2 实验与分析

2.1 实验测试平台

本文选择的巡检平台如图6所示,该机器人头部安装有摄像机,可采集待读数的仪表图像,云台可带动摄像机绕水平轴与垂直轴转动,机器人底部装有移动轮,使机器人实现自由移动。巡检机器人将采集到的仪表图像传输至工控机进行处理,工控机可根据处理结果发送指令,控制机器人各部件的操作。仪表读数系统以Python为开发语言,在Ubuntu系统上进行仿真实验。实验的硬件配置为Intel(R)Core i7-9700K CPU,NVIDIA Geforce RTX2080 Ti显卡,软件环境为CUDA10.0,Cudnn7.5.0。

图6 巡检平台

2.2 仪表表盘检测结果分析

对于仪表表盘的目标检测模块,采用巡检机器人采集实验测试场地的2 400张仪表图像,包含一种不同类型的仪表,按照8∶1∶1的比例随机划分成训练集、验证集与测试集。训练时网络输入图片大小为640 pixel×640 pixel,采用SGD优化器,初始学习率为0.01,动量系数大小为0.937,Batch设为32,迭代次数400次。用平均准确度均值(mean average precision,mAP)评价目标检测效果。

为评估本文改进算法检测性能,将本文提出算法与主流算法进行对比分析,实验选取了Faster-RCNN和YOLOX网络模型进行对比验证,同时为验证本文改进点对原始YOLOv5网络性能的影响,通过消融实验来比较3种结构的改进效果,对比结果如表1所示。

表1 表盘检测的性能 %

由表1可知,本文改进算法在mAP上明显优于Faster-RCNN和YOLOX算法。且本文的3种改进点均能使原始网络的检测性能得到提高,使用3种改进组合的改进网络mAP提升最好。综上所述,本文改进算法相对原始YOLOv5算法检测精度得到有效提升,对仪表表盘目标能够进行准确检测,图7为部分仪表检测结果。

图7 部分仪表目标检测结果

2.3 仪表倾斜校正结果分析

本文做一次透视变换时,其中一类模板图像及其标注示例如图8所示。对仪表图像进行2次透视变换,完成倾斜校正后的图像如图9所示。表盘倾斜校正的效果对最终读数精度会有直接影响,实验结果表明本文校正方法能对图像进行有效校正。

图8 模板图像标注示意图

图9 仪表校正效果示意图

2.4 仪表指针检测及读数结果分析

2.4.1 指针检测结果分析

在得到倾斜校正好的仪表表盘图像后,采用极坐标变换对不同种类仪表表盘进行展开。将展开后的仪表数据集用原始YOLOv5网络进行训练,同样以mAP评价目标检测效果,在测试集上得到mAP为99.5%,证明YOLOv5对指针的目标检测在精度上有较好效果,图10为展开仪表图像检测到指针的示意图。

图10 指针目标检测示意图

2.4.2 读数结果分析

在得到指针位置后,就可以通过距离法对仪表示数进行计算,将采用本文方法的读数结果与人工读数相比较,对读数误差进行定量分析。其中,对比实验包括目标检测算法对仪表读数结果影响分析和有干扰环境下读数的结果分析。

(1)目标检测算法对仪表读数结果影响分析。为验证本文流程的有效性并分析目标检测性能对最终读数的影响,对比了改进YOLOv5前后自动读数方法的性能。分别将量程为2.5 MPa的压力表、量程为1.6 MPa的压力表、量程为100 ℃的温度表、量程为150 ℃的温度表和量程为120 ℃的温度表记为仪表1、仪表2、仪表3、仪表4和仪表5,每类仪表随机抽取3组数据进行测试,结果如表2所示。由表2可知,改进YOLOv5后自动读数结果的误差均小于改进前的误差,表明本文的改进策略能有效减小最终读数误差。且不同类型仪表通过本文方法读数误差均较小,其中最大相对误差为1.718 6%,在读数误差可允许的范围内,也表明本文方法能针对不同类型指针式仪表进行准确读数。

续表

(2)有干扰环境下的指针读数。在实际工作环境中,仪表所处环境较复杂,会导致拍摄的仪表图片容易受到光照强度、污垢等因素的影响。为了测试本文方法的稳定性,选取测试集中多组被干扰后的量程为1.6 MPa的压力表的真实图像进行测试,各类干扰示例图像如图11所示,表3为其中部分测试结果。实验表明,各类环境干扰会对读数有影响,其中最大相对误差为1.9089%,但都在预期允许的误差范围内,证明本文方法能在有干扰的情况下对仪表进行较准确的读数。综合表2与表3的情况,可知本方法对于不同影响、不同种类的仪表都能进行较准确的读数,具有一定泛化性和鲁棒性,在所有测试样本上进行实验后,验证本文方法对于指针式仪表读数的最大相对误差小于2.5%,能在实际场合中应用。

图11 各类干扰示意图

表3 不同环境下的部分仪表读数结果

3 结束语

针对复杂环境下指针式仪表的读数问题,本文提出了一种基于目标检测的指针式仪表自动读数方法,该方法由仪表表盘检测、仪表倾斜校正、仪表指针检测及读数3个部分组成。本文提出的方法在表盘检测部分基于改进的YOLOv5网络,改进算法mAP相对原始算法提高了3.6%,达到98.7%,能有效从复杂环境中准确检测到表盘;并且本方法相对传统方法减少了一些图像处理步骤,化简了流程。通过实验证明,本方法对指针式仪表读数的最大相对误差小于2.5%,且具有较好的稳定性与准确性,能够适应多种干扰,满足实际应用的要求。

猜你喜欢
指针式读数指针
不同搂草方式对苜蓿草品质的影响
基于MobileNetV2的圆形指针式仪表识别系统
读数
读数
为什么表的指针都按照顺时针方向转动
读数
读数
基于改进Hough变换和BP网络的指针仪表识别
浅谈指针式万用表的测量方法与使用要点
基于提升小波变换的指针式仪表图像边缘检测