基于卷积神经网络的指针式仪表识别①

2021-10-11 06:46李金红熊继平陈泽辉朱凌云
计算机系统应用 2021年9期
关键词:象限指针仪表

李金红,熊继平,陈泽辉,朱凌云

1(浙江师范大学 数学与计算科学学院,金华 321004)

2(浙江师范大学 物理与电子信息工程学院,金华 321004)

指针式仪表识别技术不仅仅是模式识别技术领域的前沿研究发展方向,还具有宽阔的应用前景[1].目前在很多公司中,存在大量的指针式仪表,尤其是用在变电站这种场景中,仪表几乎全部为模拟式显示而非数字式显示的仪表,这种指针式仪表如果靠人工去读数,不仅在人工上消耗很大,而且人工读数还会存在一定的误差,导致精度不高[2,3].因此研究一种快速、准确、鲁棒性强的指针式仪表识别的方法具有十分重要意义[4,5].

针对指针式仪表识别的问题,研究人员从不同的研究方向提出了各种解决方法.徐发兵等人[6]提出先检测图像中的文本,再从这些文本中筛选出刻度线处的数字,其中文本检测和筛选数字使用的方法分别是改进过的EAST 算法和印刷体数字识别模型.根据那些数字的位置计算确定指针直线和仪表圆盘的圆心,该方法中图像质量对于最终提取的效果影响较大,并且整个研究过程步骤较多;刘葵等人[7]先应用连通域分析、图像阈值分割实现指针分割,再用最小二乘法实现了细化直接提取中轴线;徐丽等人[8]提出了一种基于迭代最大类间方差的算法,该方法在对光照条件、拍摄角度的不同以及表盘中一些干扰等影响的抗干扰性较好,具有良好的鲁棒性能;邢浩强等人[9]提出通过透视变换消除仪表图像畸变,双边滤波、MSRCR算法增强图像,再通过Hough 检测仪表的表盘与指针,最终得到仪表的读数.此研究方法对硬件计算资源要求较高,还存在一定的漏检的情况.

然而,直接基于Hough 变换等传统图像处理技术获取指针位置,对图像噪声非常敏感,常会出现提取指针所在区域、识别精度较差等问题.针对这个问题,本文提出了一种基于深度学习的指针式仪表识别的方法,该方法先通过Faster R-CNN 算法先检测指针目标框,裁剪出指针目标框区域,再在该区域图像上对指针进行细化、Hough 变换检测直线,提取指针,此方法减少了仪表圆盘背景及刻度线对指针提取的影响,提高了指针提取的准确度和鲁棒性,还适用于不同背景下的仪表指针检测.

1 仪表的识别系统

针对指针式仪表,本文所提出研究方法包括仪表目标检测、仪表指针目标检测以及仪表读数识别3 个主要部分.识别系统的具体流程如图1所示.

图1 仪表识别系统的流程图

1.1 仪表圆盘自动检测

目前,深度学习在计算机视觉领域发展了许多,其在图像分类、目标检测和语义分割等方面都取得了一定的成果[10-16].卷积神经网络(CNN) 采用卷积(convolution)、权值共享(shared weights)等,是一种模拟人类视觉神经细胞处理图像的方法[17].适用于处理图像分类、分割和目标识别等问题.采用Faster R-CNN模型检测仪表类目标[18].

1.2 指针自动检测

目前对于指针式仪表自动识别研究大多基于传统的图像处理技术,先用深度学习方法得到仪表圆盘目标之后,直接在截得的仪表圆盘区域图像基础上或者直接在最原始的图像上用传统图像处理方法定位仪表指针中轴线所在直线.此方法对图像的质量的要求高,前期对图像处理步骤多.本文提出了先用深度学习方法检测出指针,再根据检测的位置信息裁剪得到的指针区域图像上用传统图像处理方法定位指针中轴线所在直线.此方法与上述方法相比大大减少了原始图像上其它区域对指针中轴线所在直线定位过程的干扰,而定位指针中轴线所在直线是仪表读数识别中非常关键的一步,很大程度上决定了最后结果的精度.采用Faster R-CNN 模型用于仪表类目标的检测,Faster RCNN 模型分为4 个主要内容:

(1)卷积层:Faster R-CNN 首先使用一组基础的卷积加ReLU 激活函数再加上池化组成层提取图片的特征图,将特征图输入RPN 层和全连接层.

(2)RPN 网络:RPN 网络就是专门用来提取候选区域.

(3)感兴趣区域池化:该层得到特征图和候选区域,结合这些信息提取候选区域的特征图,输入全连接层判断得到目标类别.

(4)分类器:根据候选区域的特征图得到候选框的类别,再次采用边框回归得到更精确的检测框.具体如图2所示.

图2 Faster R-CNN 模型流程图

Faster R-CNN和Fast R-CNN 之间最大的不同,它提出了一个RPN的网络,该网络起到了推荐候选区域的作用.RPN 网络能够进行端对端的训练,最后目的是选出候选框区域.整个模型详细的框架结构设置如表1[19].本文中的模型是在ImageNet 数据集上的预训练好的模型上进行微调的模型,采用的主要超参数如学习率为0.001,“gamma”学习率衰减设置为0.1,“weight_decay”即权值衰减用于防止过拟合的参数设置为0.0005,“momentum”设置为0.9.其中Faster R-CNN 模型使用的损失函数为式(1).

表1 Faster R-CNN 结构图

1.3 仪表读数识别

式(3)可得到仪表圆盘的圆心的坐标(Cx,Cy).

1.3.1 仪表圆盘的圆心

根据检测到的仪表目标框的位置,即仪表目标框的左上角和右下角的坐标 (bx1,by1) 、(bx2,by2),如图3所示,通过如式(2)可得到仪表圆盘的半径r,再通过如

图3 仪表目标框

得到圆心的坐标后,将原始图像的坐标系转换为以仪表圆盘圆心为原点的坐标系,如图4所示,再将1.2 节中检测仪表的指针目标框的位置坐标变成转换后的新坐标系下的,转换后的指针目标框的位置坐标为(zx1,zy1) 、(zx2,zy2),如图5所示,分别为指针在新坐标系第二、四象限下,其它两个象限情况类似.

图4 转换后的新坐标系

图5 指针目标框坐标

1.3.2 指针的细化

首先根据指针检测中得到的指针目标框的坐标,从原图中裁剪出指针图像,在此基础上进行传统图像处理,如果直接得到的仪表圆盘的基础上进行操作,细化后会得到结果如图6(a)所示.从图中可以看出细化后的结果中有很多直线,对定位到指针直线具有很大的干扰性.

将指针细化前需要先把仪表的指针图像进行二值化.本文采用的二值化方法是OpenCV2 库中的自适应阈值法(adaptive threshold)函数,此函数并不是像固定阈值方法那样,它是按照图像的不同部分亮度的情况来计算局部阈值,因此对于图像的不同部分,计算出不同的阈值,相较固定阈值法效果更好.

本文采用的细化(骨架提取)方法是查表法,细化如“瘦身”,把图中一些不必要的点去掉,比如一个圆,最终得到的结果就是一个圆心,这个圆心就是圆的骨架.具体思想就是基于八领域来判断一个点是否去除,比如内部点、直线端点等不可以.指针图像和细化的结果如图6(b)、图6(c)所示.

图6 细化结果

1.3.3 霍夫变换直线检测

霍夫变换是一种常用图像处理方法[20],本文采用霍夫变换检测已经经过细化后的指针图像中的指针中轴线.它采用投票算法,该方法可以得到所有你所需要检测的特定形状,并将结果组合成一个集合,其中用到的以x,y为坐标的极坐标系装换为ρ,θ霍夫空间的公式如式(4).该方法可以进行直线,椭圆等形状的检测.检测的结果如图7所示,加粗黑色部分表示检测到的直线.

图7 霍夫变换直线检测

1.3.4 最小二乘法拟合直线

根据霍夫变换检测到的直线,利用得到的直线集合中所有直线的两个坐标,再将这些坐标点用最小二乘法去拟合出一条直线,即为指针中轴线的表达式.它通过最小化误差的平方即残差平方和公式如式(5)所示,来得到能够拟合数据的最佳函数.

1.3.5 仪表示数结果

根据1.3.1 节所述中的新坐标系下的指针目标框的位置坐标为(zx1,zy1) 、(zx2,zy2)来判断指针所在新坐标系下的象限.具体判断依据如下:

(1)第一象限:k>0,zx2≥10;

(2)第二象限:k<0,zx1≤-10;

(3)第三象限:k>0,zx1≤-10;

(4)第四象限:k<0,zx2≥10.

还有两种情况:k=0和k不存在.若k=0,即指针中轴线与新坐标系下的X 轴重合;若k不存在即指针中轴线与新坐标系下的Y 轴重合.通过上述得到仪表指针中轴线所在直线的斜率,再根本上述判断象限的方法可知指针位置所属的象限,可以得到仪表指针中轴线所在直线与X 正轴或者负轴所成的角度angle.然后通过已知的指针式仪表的量程,即指针刻度的具体分布和两条相邻刻度线相交的角度,如本文实验中的仪表的刻度7和刻度12 之间的角度为90°,和刻度12 与图4中转换后的坐标系下的X 轴正半轴重合等.具体示数value求解情况分为以下情况:

(1)第一象限:value=(angle/90)×13+33;

(2)第二象限:value=7-(angle/90)×13;

(3)第三象限:value=(angel/90)×13+7;

(4)第四象限:value=((90-angle)/90)×13+20.

通过上述计算即可得到仪表的示数.

2 实验及结果分析

2.1 仪表圆盘检测测试模块

首先自制所需的仪表数据集,自制仪表目标数据集共有225 张指针式仪表图片,其中205 张图像作为训练集,剩余的20 张作为测试集.训练集采用VOC 数据集格式,使用标记软件LabelImg4.1 进行手工标记.然后用网络训练数据集,测试数据集用于测试训练效果.测试结果如图8所示.由测试结果可知,基于Faster R-CNN 模型的指针式仪表检测模型能够准确地检测出不同状态下的仪表表盘.

2.2 指针检测测试模块

和上述的仪表圆盘检测一样,所用到的数据集是一样的,不同的是在使用标记软件LabelImg4.1 进行手工标记时在仪表图像上标记的指针区域,然后用网络训练数据集,这个的训练和上述仪表圆盘的训练是一起训练的,测试数据集用于测试训练效果.其中仪表圆盘与指针进行目标检测的训练的损失函数loss的曲线如图9所示,其中横坐标iterations 表示的是训练的轮数,轴坐标loss 表示的是训练时的loss 损失值,由图中可以看出最终的loss 值趋近于0.

图9 损失函数loss 曲线

对含有仪表的图像进行测试,得到测试结果如图8所示,下面的图为不同摆放角度下不同示数的仪表图像.表2所示为随机选取的20 张测试图片的测试结果,其中每张测试图片中有且仅有一个仪表表盘,每个表盘中只有一个指针目标 由测试结果可知,基于Faster R-CNN 模型的指针式仪表检测模型能够准确地检测出不同状态下指针,具有良好的效果,具有很强的准确性和鲁棒性.

表2 指针目标检测模块测试结果

图8 目标检测结果图

2.3 仪表读数识别测试模块

为了检测算法的各方面性能,本文对采集的20 组仪表样本进行测试,测试的样本由不同的角度拍摄的显示不同示数的指针式仪表.表3所示为其中10 组样本测试结果,测试数据集的平均准确率高达为96.55%.

表3 仪表读数识别测试结果

3 结论

本文提出了一种基于深度学习的指针式仪表的识别方法.针对刻度分布均匀的指针式仪表,本文所提出的指针式仪表的识别方法由仪表检测、仪表指针检测以及仪表读数识别3 个部分组成.该方法通过获得仪表圆盘目标的包围框,仪表指针目标的包围框、指针细化、霍夫变换检测直线、最小二乘法确定指针中轴线表达式等步骤识别仪表最终读数.该方法先基于深度学习的方法检测仪表表盘和指针目标,根据得到的指针目标框的位置信息裁剪得到指针图像,在指针图像的基础上再结合一些传统图像处理的方法提取指针直线,与直接在仪表表盘目标框图像或原始图像上进行传统图像处理相比很大程度上减少了定位指针中轴线所在直线过程中的干扰,该方法具有很好的鲁棒性和实际应用价值.测试实验结果表明,提出的方法对于指针式仪表检测与识别具有良好的准确性与稳定性,能够满足一定的实际应用.另外提高指针的中轴线位置的检测精度,使得结果更精确,将是本文后续重点研究内容.

猜你喜欢
象限指针仪表
汽车组合仪表氛围灯结构设计与开发
复数知识核心考点综合演练
商用车仪表台中段下护板与仪表台本体间隙问题分析与解决方案
电气仪表自动化安装与调试分析
常数牵手象限畅游中考
郊游
为什么表的指针都按照顺时针方向转动
平面直角坐标系典例分析
三角函数核心考点综合演练
探讨自动化仪表安装调试技术要点