唐 霞 苏盈盈 罗 妤 王艳玲
(重庆科技学院电气工程学院, 重庆 401331)
指针式仪表有结构简单、使用维修方便、价格低廉等优点,在工业生产中应用普遍。目前,大量的指针仪表未实现智能化,仍需通过人工检定仪表读数,耗时且读数误差较大。
本次研究将面向工业指针仪表设计智能识别系统,以提高指针定位的准确性和实效性,满足工业需求。设计思路是:首先,基于Faster-RCNN[1]法对表盘进行定位;然后,采用灰度化、k-Means二值化方法对提取的目标图像进行预处理;最后,指针定位采用虚拟旋转直线拟合的方法。
针对工业用圆形表盘指针式仪表设计了一套智能识别系统,系统主要包括三大部分:仪表定位、指针确定、读数识别。整个识别系统的流程如图1所示。
仪表定位设计中,采用了深度学习中的Faster-RCNN方法,可实现在复杂背景下的精确定位。其作用是,将拍摄的工业现场图片输入进去,然后自动检测仪表盘的位置,并指定此目标仪表盘的区域框。此时,此区域框有4个参数,即围绕中心点的x、y轴坐标,以及框的宽、高。通过Faster-RCNN方法得到这4个参数的主干网络结构(见图2)。
图1 仪表智能识别系统流程图
在主干网络结构中,首先,将指针仪表图片输入到Faster-RCNN网络中,统一将输入图像的最小边像素处理成600,不改变长宽比例,形成对应大小的不失真图片。
然后,传入到主干特征提取网络Resnet50中,经4次压缩图片,得到共享特征层(Feature Map)[2]。此时网格为共享特征层大小,每个网格默认先验框为9,先进行3×3的卷积处理,再分别进行两次1×1的卷积处理,所得通道数依次为18、36。据此判断原始先验框内是否包含物体,并得到每一个网格、每一个先验框的调整参数,调整之后得到建议框(Proposal)。
图2 仪表定位的主干网络结构图
最后,将此区域传入感兴趣区域池(ROI Pooling)[3],利用建议框在特征共享层上截取图片。将所截取图片的不同大小区域调整成相同大小,利用分类与回归网络判断截取到的图片中是否包含目标,并对建议框进行调整。综合判断所截取到的图片,进行目标预测,从而获得Faster-RCNN目标指针仪表检测结果。
先后进行灰度化和k-Means二值化处理[4],以便使后续指针的识别结果更加准确。灰度是指黑白图像中像素点的颜色深浅程度。k-Means二值化是最常用的聚类方法,通常将输入数据看作样本集,通过k-Means实现样本聚类,相似样本视为同一类别。将输入的数据划分为k个类别,实现的步骤如下:
(1) 在输入的数据中随机选取k个点,作为每个类的中心点。
(2) 计算样本中每个点到中心点的距离,当距离最近时进行一次聚类。
(3) 根据聚类结果,重新计算新的中心点(均值)。
(4) 重复步骤(2) — (3),直到中心点不再发生变化为止。
采用虚拟旋转拟合直线算法实现对指针的确定。在仪表图像经过k-Means二值化处理之后,虚拟旋转拟合直线再以右侧0°顺时针绕仪表中心旋转360°。当拟合直线旋转经过目标指针时,记录像素重合度信息,重合度信息最密集处即可确定为指针位置。记录此时的角度。虚拟旋转拟合直线的计算如式(1)(2)所示:
x=(x1-x0)×cos(i×π/180°)+x0
(1)
y=(x1-x0)×sin(i×π/180°)+y0
(2)
式中:(x0,y0)为仪表盘中心坐标;(x,y)为虚拟旋转直线端点坐标;i为虚拟直线旋转的角度;x1为指针长度。
以(x0,y0)为起点、(x,y)为终点构造一条虚拟旋转拟合直线。首先,通过寻找像素位置程序找到仪表中每个整数数值的坐标并存放在数组中,计算每个整数对应的角度;然后,通过直线拟合中记录的角度与整数对应的角度进行计算,得到最后的指针识别结果。假设指针指向整数刻度值a和b之间,以虚拟直线起始角度0°,计算角度r和指针识别结果t。
(3)
t=a+|b-a|×|(r-r1)/(r2-r1)|
(4)
式中:(x′,y′)为确定指针之后的端点坐标;r为指针指向的角度;r1为a刻度值对应的角度;r2为b刻度值对应的角度。
智能识别系统的仿真实验在Windows 10操作系统上进行。CPU为3 600 6-Core,GPU为GeForce RTX 2 060 SUPER,开发语言为Python。此外,图像处理部分用到了OpenCV、Matpoltlib开源库,深度学习网络用到了Tensorflow-gpu 1.13.2、Kares 2.1.5。
收集工业应用指针仪表图像,制作指针仪表数据集500张,选用其中400张作为训练集,其余100张作为验证集。整个数据集使用开源Labelimg工具[5],运用VOC数据集的格式进行手动标注。测试集用于测试训练的效果。
在训练过程中,输入的图片像素为1 080×1 920,使用Resnet 50网络进行预训练。其中,设置世代为50,每个世代训练的步数为1 000,最初学习速率为0.0001(20世代以后的学习速率为0.000 01),最后训练得到的损失率为0.235。按照此损失率的权重随机对50张含有仪表的图片进行预测,得到部分仪表盘定位(见图3)。 根据表盘定位结果可知,Faster-RCNN能够精确地对工业仪表盘进行定位,效果良好。
图3 部分仪表盘定位结果
将定位的仪表盘提取出来后,为了使仪表的数值识别结果更加准确,对目标图像进行预处理。
(1) 灰度化处理。采用OpenCV自带的COLOR_BGR2GRAY函数予以灰度化。
(2)k-Means二值化处理。截取指针仪表的圆盘像素点区域作为样本,将k设置为2,像素点以黑白颜色来区分。每张图片的像素点均值为阈值,大于阈值的像素点为白色,小于阈值的像素点为黑色。
预处理后的图像如图4所示:
图4 图像的预处理
以图像的中心为仪表盘的圆心,构造虚拟旋转直线(见图5)。直线从右侧0°处绕圆心顺时针旋转360°,直线线宽的像素设置为3,记下与直线像素重合的数量。重合数量的最大值为指针指示的位置,记录下此时的角度。
图5 构造虚拟旋转直线效果图
采集50组工业应用指针仪表样本,进行识别测试,其中具有代表性的10组样本识别测试结果如表1所示。
表1 部分仪表样本识别测试结果
表1中数据显示,系统识别结果的准确率不低于97.87%,智能读数相对于人工读数的平均误差仅为0.308 42 ℃。测试结果表明,智能读数比人工读数更为精确,可满足大多数工业应用的要求。
针对圆形表盘指针式仪表识别中人工判读耗时较长且读数不精确的问题,基于Faster-RCNN快速准确定位表盘的方法,设计了一套工业仪表智能识别系统。这套智能识别系统的功能主要包括仪表定位、指针确定和读数识别:基于Faster-RCNN法对仪表进行定位;采用旋转虚拟直线拟合法对指针进行定位;采用角度法对指针仪表进行识别。
采用Faster-RCNN方法进行定位,可以直接将训练好的模型用于定位识别,节约识别时间,且定位结果准确可靠。本次设计的指针仪表智能系统可满足大多数工业应用的需求,有很强的实用性。