1. 引言
指针式仪表具有结构简单、造价低廉和学习成本低等特性,被广泛应用于工业场景中的参数采集[1]。相比于单指针式仪表盘,双指针式仪表盘将两个相关的读数集成到了一个仪表盘上,提高了信息的可视化效率。同时,这也给仪表读数带来了新的挑战,尤其是两个指针之间存在干扰和重叠现象,可能会影响读数的准确性。在某些场景中,两个读数之间的关系具有一定的线性或非线性关联,正确利用这种关联能消除一定的谬误。
传统的仪表盘读数主要是由工程技术人员进行人工识别和记录,这种方式的准确率和效率均较为低下,且无法直接和数据库中的历史数据进行对比和更新。随着计算机视觉、巡检机器人、无人机和移动设备的发展,出现了各种基于图像处理的仪表盘读数方法。现有的指针仪表识别方法大多基于传统的数字图像处理技术,受到数据质量的严重限制。近年来,深度学习的快速发展为指针式仪表的自动读取提供了一种新的思路。表盘检测是进行读数的首要环节,本质上是一项目标检测类任务。常见的表盘检测方法包括霍夫变换和特征匹配。但是,霍夫变换方法对于背景复杂的仪表检测精度较差,而特征匹配方法需要确定先验特征。Liu等[2]提出将Faster R-CNN用于表盘检测,采用特征对齐和透视变换解决了镜面反射和图像失真的问题。在此基础上,Zuo等[3]采用改进的Mask R-CNN来检测仪表位置,并提出了一种基于二值掩码的透视变换方法用于校正倾斜表盘。陶金等[4]在YOLOv4-tiny网络中添加了残差模块,并改进了Hourglass网络用于仪表盘检测和特征点提取。以上几种方法均只针对单指针式仪表盘进行了检测和读数,并没有考虑从大指针表盘中分离小指针表盘并分开读数这种情况。与上述几种深度神经网络模型相比,YOLOv8加入了解耦头(Decoupled-Head)和无锚机制(Anchor-Free),检测精度和速度均有所提升。另一方面,YOLOv8集成了改进的特征金字塔网络(FPN)结构和高效层聚合网络(ELAN),能够高效地提取和融合来自不同尺度的特征,这在检测大目标嵌套小目标的任务时具有显著优势。
常见的表盘读数方法可分为基于角度、基于距离、基于关键点和基于OCR识别的方法[5]。这几类方法一般都需要确定指针和刻度的相对位置。传统的指针和刻度查找方案均为数字图像处理技术,包括霍夫变换、背景求差、投影和区域增长等。这些方案的鲁棒性较差,在双指针发生重叠干扰时难以准确读数。为此,我们提出了质心拟合法,这是一种基于深度学习和传统图像处理技术的混合方案。借由图像语义分割模型,我们可以判断和舍弃干扰区域,通过分割出的轮廓点集计算出指针的质心,联合表盘中心拟合出一条直线,采用该线段与参考线的角度差来判断读数的大致范围。近年来,图像分割被广泛应用到仪表盘识别研究。这些分割模型需要大规模的标注数据进行训练,往往推理速度较慢。本文采用了快速分割卷积神经网络(Fast-SCNN) [6]进行指针区域分割,这是一种针对高分辨率图像数据的实时高效语义分割模型,在仅仅标注和训练了300多张图像的情况下就达到了工业标准的分割精度。
为了验证本文方法的有效性,我们在实验室和工业场景下采集了大量的双指针式仪表盘图像数据并进行了大量实验。这些实验包括对比实验、基准误差测试实验和鲁棒性测试实验。实验结果表明,本文方法在保证计算实时性的同时维持了较高的识别性能。
2. 方法及原理简介
本文提出的方法的总体技术路线如图1所示。原始数据通过YOLOv8模型进行表盘检测和分离,之后输入到Fast-SCNN进行指针区域分割。分割后的结果运用质心拟合法得到拟合线,再通过角度法得到大指针和小指针的初步读数,经交叉验证后求和得到最终读数。
Figure 1. The pipeline of the proposed method
图1. 提出方法的技术路线图
2.1. 用于表盘检测的YOLOv8模型
YOLOv8是由Ultralytics提出的一种端到端的单阶段目标检测模型,适合处理高分辨率图像和多尺度特征。图2为YOLOv8的结构示意图,主要由主干网络(Backbone)和头部网络(Head)组成。其中主干网络负责特征提取,颈部网络负责对特征图进行融合,头部网络负责解耦和分类预测。
通过YOLOv8模型进行表盘检测的部分结果如图3所示。所有的小表盘均从大表盘中分离了出来,且大小表盘的指针、刻度和表盘轮廓均能较为清晰地检测出来。这得益于YOLOv8模型强大的多尺度特征提取能力,能够较好地处理大小目标相互嵌套这种复杂的情况。
Figure 2. The structure of YOLOv8
图2. YOLOv8结构示意图
Figure 3. Partial dial detection results
图3. 部分表盘检测结果
2.2. 用于指针区域分割的Fast-SCNN模型
Fast-SCNN是一种专为高效实时语义分割而设计的轻量级网络。它在保持高精度的同时大幅降低了计算复杂度,非常适合需要快速处理和有限资源的场景。图4为Fast-SCNN的结构示意图,主要由学习下采样网络、全局特征提取网络、特征融合网络和分类网络四个部分组成。首先,Fast-SCNN通过学习下采样网络对输入图像进行快速下采样,该网络由标准2D卷积(Conv2D)和深度可分离卷积(DSConv)组成。这种设计能够有效降低输入图像的分辨率,减少后续层的计算需求,同时保留关键特征。在下采样后,Fast-SCNN使用了多尺度的全局特征提取网络来捕捉图像中的深层语义信息。这个网络包含多层残差瓶颈块和金字塔池化层,既能够提取全局上下文信息,又能保持高效的计算。提取完语义信息后,Fast-SCNN通过特征融合网络将浅层与深层的语义信息相结合。浅层信息有助于保留细节和边缘信息,而由上采样和深度卷积(DWConv)获取的深层信息则有助于捕捉全局上下文和目标类别,这种融合可以提高分割结果的精确度。分类网络中包含2个深度可分离卷积和1个卷积核尺寸为1 × 1的标准卷积用于提高网络性能。在网络训练时,softmax函数被用于计算分类损失。在推理时,argmax函数则代替softmax函数用于提高推理速度。
通过Fast-SCNN进行指针区域分割的效果如图5所示。所有的大指针区域都分割得较为清晰。大部分的小指针分割区域也都避开了大指针干扰,少部分残留的大指针干扰区域将通过以下阐明的质心拟合法摒弃。
Figure 4. The structure of Fast-SCNN
图4. Fast-SCNN的结构示意图
Figure 5. Segmentation effect of the pointer region
图5. 指针区域分割效果
Figure 6. The center of mass fitting method for obtaining pointer angles
图6. 质心拟合法获取指针角度
2.3. 质心拟合法
采用质心拟合法的目的是从分割区域中获取一条直线来精确拟合指针所指的方向,该方法仅需调用OpenCV库即可实现。首先,我们将图像转换为灰度图像,再将灰度图像二值化以创建二值掩码。这样做的目的主要是方便提取分割区域的轮廓。其次,在得到轮廓点集后将其伸展为二维空间以获取区域边界轮廓的矩特征,这是为了计算得到质心的坐标(x,y)。最后,我们使用最小二乘法来拟合直线,直线的两个端点分别设置为质心和表盘中心。
得到指针的拟合直线后,我们将进一步通过角度差值来初步判断表盘读数。具体的方法如图6所示。假设指针按顺时针旋转,参考线为从表盘中心出发指向0刻度的射线z,表盘中心为坐标轴零点,则通过质心坐标计算可得到角度α = arctan (x,y)。此时,仅需要添加如下的简单判断条件即可得到拟合线与参考线之间的夹角β:1) 若质心坐标位于第一象限即x > 0,y > 0时,β = 90 − α。2) 若质心坐标位于第二象限即x < 0,y > 0时,β = 270 + α。3) 若质心坐标位于第三象限即x < 0,y < 0时,β = 270 − α。4) 若质心坐标位于第四象限即x > 0,y < 0时,β = 90 + α。在得到夹角β后我们需要根据刻度值对应的角度范围来判断读数(1个刻度值的角度范围为30度,12个刻度值对应360度的范围),同时利用大小指针读数间的关系(大指针走一圈代表小指针走一刻度)来协同判断消除误差值。最终计算得到的总指针读数 = 小指针读数(取整) + 大指针读数/10。
3. 实验与结果分析
3.1. 实验配置与数据集
本文所使用的模型和算法均在Windows操作系统中的PyTorch深度学习框架下实现,其中Python版本为3.11.10,CUDA版本为12.6,OpenCV版本为4.10.0.84。硬件平台为一台搭载了Intel Core I7-12700k CPU、NVIDIA GeForce GTX3090 GPU和32G ROM的深度学习工作站。检测大小表盘指针读数的平均耗时约为0.28秒和0.65秒。
本文所使用的数据集由1800张分辨率为2400 × 2400像素的双指针式工业仪表盘图像组成。其中,我们在理想实验室环境中的固定机位下采集了约200张图像,在不同距离和光照条件下采集了约200张图像。考虑需要保证模型的鲁棒性,我们将采集到的图像数量扩充到1600张(原图像400张,随机高斯噪声图像400张,随机泊松噪声图像400张,随机椒盐噪声图像400张)作为检测和分割的训练集,另采集了实际工业场景下的200张图像作为测试集。
3.2. 表盘检测与指针区域分割实验
Table 1. Dial detection results for various models
表1. 各类模型的表盘检测结果
模型 |
平均准确率(%) |
推理速度(ms) |
Fast-RCNN |
87.2 |
126 |
Mask-RCNN |
91.9 |
264 |
YOLOv5 |
98.3 |
72 |
YOLOv8 |
99.5 |
58 |
在本实验中,我们首先使用Labelimg标注了训练集中小表盘的区域,根据标注数据训练了YOLOv8模型进行表盘检测。评估表盘检测的性能指标包括了在测试集上的平均准确率(AP)和推理速度(Time)。为了评估YOLOv8模型在该项任务中的性能,我们还训练了三种应用较为广泛的目标检测模型(Fast-RCNN [7]、Mask-RCNN [8]和YOLOv5与YOLOv8模型进行比较。表1中的详细结果显示YOLOv8模型在测试集上的检测准确率为99.5%,推理速度为58 ms,明显优于其他三种模型的实验效果。
由于每张图像需要分割的对象包含大指针和小指针,所以分割实验的数据集实际包含了3600张图像。训练集总共3200张图像,其中1800张为2400 × 2400像素的大表盘图像,1800张为450 × 450像素的小表盘图像。评估指针区域分割效果的性能指标包括了交并比(IOU)和像素准确率(PA)。为了评估Fast-SCNN模型在该项任务中的性能,我们还训练了三种图像分割模型(U-Net [9]、SegNet [10]和DeepLabv3+ [11])用于对比。表2中的详细结果显示了Fast-SCNN模型的交并比为88.5%,像素准确率为96.1%,超过其他三种主流分割模型的实验效果。
Table 2. Pointer region segmentation results for various models
表2. 各类模型的指针区域分割结果
模型 |
交并比(%) |
像素准确率(%) |
U-Net |
84.7 |
93.6 |
SegNet |
78.4 |
89.8 |
DeepLabv3+ |
86.3 |
94.5 |
Fast-SCNN |
88.5 |
96.1 |
3.3. 读数检测结果
本实验在实际工业场景下对双指针式仪表盘读数进行识别,以检验所提出的读数识别方法的可行性。表3展示了测试集中部分存在遮挡现象的表盘图片(即图3)的真实值、读数值和基准误差。在本次测试中,总体读数的最大绝对误差为0.006,最大基准误差为1.22%。工业仪表盘总体读数的允许误差保持在1.6%以下,因此本次测试的结果符合工业场景的误差要求。
Table 3. Dial readings with obscuration in Figure 3
表3. 图3中存在遮挡现象的表盘读数
No. |
真实值 |
读数值 |
绝对误差(%) |
基准误差(%) |
1 |
3.592 |
3.598 |
0.006 |
0.17 |
2 |
6.548 |
6.545 |
0.003 |
−0.05 |
3 |
7.484 |
7.490 |
0.006 |
0.08 |
4 |
1.092 |
1.090 |
0.002 |
0.18 |
5 |
0.590 |
0.589 |
0.001 |
−0.17 |
6 |
3.013 |
3.016 |
0.003 |
0.09 |
7 |
1.607 |
1.606 |
0.001 |
−0.06 |
8 |
0.082 |
0.083 |
0.001 |
1.22 |
为考察不同干扰噪声对表盘读数的影响,我们还针对所有测试集图像进行了三种随机噪声处理。读数识别测试的结果如表4所示。存在随机高斯噪声、随机泊松噪声、随机椒盐噪声时的平均绝对误差分别为0.007、0.011、0.006。平均基准误差分别为0.66%、0.92%、0.44%。与工业仪表盘的允许误差相比,平均基准误差处于可以接受的范围内。
Table 4. Reading error in the test set with random noise present
表4. 存在随机噪声的测试集读数误差
噪声类型 |
平均绝对误差 |
平均基准误差(%) |
随机高斯噪声 |
0.007 |
0.66 |
随机泊松噪声 |
0.011 |
0.92 |
随机椒盐噪声 |
0.006 |
0.44 |
本实验还针对测试集中的大指针表盘和小指针表盘进行了分开读数识别测试,这样做的目的是探究不同表盘读数误差的敏感性。测试结果如表5所示。大表盘读数和小表盘读数的平均绝对误差分别为 0.002和0.004,平均基准误差分别为0.15%和0.33%。结果显示,小表盘读数误差相较于总体读数误差偏大,大表盘读数误差相较于总体读数误差偏小。这也符合双指针式仪表盘的读数逻辑(小指针指示总体读数的整数部分,大指针指示总体读数的小数部分)。
Table 5. Classification reading error in the test set
表5. 测试集的分类读数误差
分类 |
平均绝对误差 |
平均基准误差(%) |
大指针读数 |
0.002 |
0.15 |
小指针读数 |
0.004 |
0.33 |
总体读数 |
0.004 |
0.28 |
4. 结论
工业仪表盘的自动化读数研究价值较高,比人工读数更加精准的同时,还能有效提高工作生产效率。之前的研究主要聚焦于单指针式仪表盘的自动化读数,而双指针式仪表盘的自动化读数较为复杂且有一定的技术难度。本文提出了一种基于图像分割及质心拟合法的双指针式工业仪表盘读数识别方法,技术路线清晰简单,具有良好的准确性和鲁棒性。
致 谢
本文实验的数据来源于安徽建徽工程质量检测有限公司提供的实际工业场景。感谢西安建筑科技大学、浙江创悦诚科技有限公司和中国科学技术大学先进技术研究院提供的技术支持。
NOTES
*通讯作者。