指针式仪表具有结构简单、价格便宜、易于维修等特点, 在工业生产和科研试验中得到广泛的应用[1,2]. 由于仪表的特殊构造常常被使用在高温、高压、高辐射等场所, 这也给人工读取仪表读数带来一定的困难, 其次在仪表的识读过程中往往因为人工误差和一些外部干扰等原因, 存在一定误差性. 随着工业领域的智能化发展, 对于仪表读数数据的实时性和准确性要求越来越高, 仅仅靠人工识读是不现实的, 因此基于人工智能技术的指针式仪表自动识别研究引起了国内外学者的广泛关注.
目前, 指针式仪表的识别方法主要分为传统的视觉方法和深度学习方法两种[3] . 传统方法通过对图像的数字矩阵进行计算, 采用阈值的取舍原则来实现仪表识别, 能够使用更简单、更少量的代码解决问题. 如李腾等人[4]提出了一种结合HSV与局部Hough变化的方法来处理图像阴影问题, 但是在识别阶段使用的Hough方法识别指针因为像素点数量的原因具有一定误差, 导致了识别精度不高. 随后, 李娜等人[5]提出一种Otsu算法与改进Hough变换的方法来处理指针仪表光照不均匀和精度低等问题, 通过对指针仪表进行二值化处理来减少Hough检测的影响, 将仪表识别的误差不断缩小. 传统仪表识别算法虽然能够解决大部分问题, 但是仍然存在着计算量大和推理精度不高等问题. 深度学习方法则是通过神经网络模型处理图像数据从而提取有效特征来识别仪表, 减少了对参数的调整情况和提高了推理精度. 张斌等人[6]提出了基于Mask-RCNN的仪表识别方法, 能够在复杂背景中对表盘位置精准定位, 通过神经网络的介入加快网络对仪表的检测效率. 金爱萍等人[7]提出了基于YOLOv5与U-Net相结合的方法, 成功解决不同背景和距离条件下的指针识别问题, 但是仍存在检测效果不佳导致的较大误差问题.
通过对指针式仪表识别领域的研究成果进行梳理发现该领域还存在以下不足之处: 首先是工业仪表图像数据在网络上比较稀少, 对于目前的深度学习需要大量的数据样本不是很友好, 也限制了相关技术的发展; 其次, 目前的显著性目标检测(salient object detection, SOD)[8]网络都依赖于现有主干网络来提取深层特征, 但是这些主干网络主要用于图像分类任务; 最后现有的检测识别算法过分要求高精度, 没有考虑模型的计算成本消耗, 限制了模型的使用场景.
针对以上问题, 本文提出一种基于YOLOv7+U2-Net的仪表检测识别算法. 首次将U2-Net应用到指针式仪表识别领域, 并将网络进行改进, 提高了网络的推理精度和速度. 其次, 提出了一种阈值多区间的评价策略, 使单一方法泛化到多个应用领域, 提高本文方法的普遍适用性. 最后, 将YOLOv7与U2-Net进行结合, 使用YOLOv7的数据增强来扩充丰富数据集, 通过二者联合增强了目标图像的检测能力, 提升了整体方法的识别精度.
1 仪表检测识别方法 1.1 基于YOLOv7的仪表检测为了提高仪表检测的精确度和丰富数据集, 本文选择了YOLOv7模型作为仪表检测定位的目标检测器. YOLOv7作为YOLO系列较先进的算法, 在精度和速度上超越了目前已知市面上大多数目标检测器, 这也是本文选择YOLOv7作为仪表检测器的重要原因. YOLOv7网络模型由输入端、主干网络、颈部和输出端组成, 在输入端YOLOv7沿用了YOLOv5的mosaic数据增强来丰富检测仪表的背景信息, 保证了模型在实际检测中应对复杂的背景信息, 其次由于仪表拍摄的距离问题, 导致仪表在整张图像中的占比大小情况各异, 在输入端使用mosaic能够解决仪表图像占比过小等问题. 主干网络使用了ELAN结构, 采用双分支的方法, 一条做通道变化, 另一条做特征提取, 最后进行特征融合, 通过控制最短最长的梯度路径, 使网络学习到更多的特征. 颈部使用了SPPCSPC、MP和Rep结构, 在增强感受野的同时, 保证了模型的性能和加快网络收敛. 输出端返回检测目标的分类和边界框.
1.2 仪表矫正方法为了提高模型的仪表识别精度, 在将图像输入到网络模型之前, 需要进行仪表矫正操作. 通过YOLOv7的精确裁剪和图像增强处理大大减少了对复杂背景图像和光照影响情况的矫正难度, 所以本文所使用的矫正技术是模板匹配+仿射变换(旋转)[9,10], 不需要手动选取参考区域且能够在短时间完成矫正. 首先对模板图像和待矫正图像提取特征轮廓, 通过模板图像在待矫正图像上滑动来搜索与模板轮廓相似的轮廓, 得到匹配结果后计算旋转角度, 其次根据角度计算出变换矩阵, 最后使用仿射变换(affine transformation)技术, 根据变换矩阵使用仿射变换对待矫正的仪表图像进行旋转, 以达到矫正的目的, 通过这种组合方式, 可以更加有效的应对不同倾斜角度的仪表图像.
1.3 基于U2-Net的仪表分割图像分割一直是计算机视觉领域中的一项重要任务[11], 目前大多数分割任务都依赖于语义分割模型, 传统的分割模型的使用基准网络提取深层特征, 提取更具表征能力的语义特征. 在本文研究的指针仪表提取特征过程中, 更加重视细节信息和全局对比性信息. 所使用的U2-Net网络是针对显著性目标检测任务提出的, 能够将图像中最具有吸引力的目标提取出来, 对指针式仪表的识别具有较大优势. 此外U2-Net提出了RSU结构, 图1所示为RSU结构模型, RSU结构由输入卷积层、U型编码器和残差连接组成. 输入端接收图像特征图进行通道变换, U型编码器对多种尺度特征编码, 通过渐进式的上采样减小了直接上采样的损失, 最后将特征图通过残差连接进行特征的融合. 通过这样的操作减小了图像的尺度, 使得模型融合了不同尺度的感受野的特征和捕捉更多的上下文信息.
1.4 读数计算方法
指针式仪表识别的最后一步就是读数计算, 也是仪表读数识别中关键的一步. 随着科技手段的不断发展, 人眼已不能满足校准系统的需求, 因此本文采用了比较常见的距离法[12,13]来完成最后的仪表读数识别. 距离法计算仪表读数的原理是根据指针中心轴线平行于相邻刻度线的假设, 本文中研究的圆型指针式仪表, 以图2仪表掩码图为例, 仪表中心点可以看作是极坐标的原点, 将极坐标中的各个点转化为直角坐标系, 直角坐标(x, y)与极坐标(ρ, θ)之间的转换关系如式(1)和式(2)所示:
$ \rho {{ = }}\sqrt {{{{x}}^2} + {{{y}}^2}} $ | (1) |
$ \theta {\text{ = }}\arctan \frac{{{y}}}{{{x}}} $ | (2) |
将仪表的圆心竖直向下的方向作为y轴的负方向, 以−y轴为起始线顺时针旋转扫描, 通过起始设定的超参数来计算当前像素点与−y轴的夹角, 对应关系如式(3)所示:
$ \theta \text=\frac{2 {\text{π}} }{{w}}\times ({col+}1) $ | (3) |
其中, w为初始设定的表盘展开直线的长度, col为像素点距离圆心的像素距离, 最大为表盘展开的宽度. 仪表图像进入到网络后, 会被顺时针扫描, 根据刻度、指针和背景的像素值不同, 会分别累积到对应的类别当中. 因为图像分为两个通道, 扫描出的图像也是两个, 如图3所示, 其中图3(a)为指针位置像素, 图3(b)是刻度位置像素.
为了得到相对精确的仪表刻度值, 需要将刻度和指针绘制到同一坐标系中, 变成一维数组, 以图3为例, 绘制成的折线图如图4所示.
折线图中每一个尖峰的点都代表一个刻度线, 通过累加即可计算出仪表总的刻度数, 根据蓝色线在刻度中所占的比例, 通过指针读数占量程的比例表示为指针左侧刻度线数量除以总刻度线数, 得出来的结果即为仪表刻度数比例.
2 本文方法 2.1 改进U2-Net网络为了增强模型对感兴趣区域的特征提取, 改善分割效果, 将RSU拼接上采样时加入了Attention机制[14], 改进模型如图5所示. 同时U2-Net是基于encode-decode编码形式, 在进行下采样的时候会随着卷积层数的增加造成图像细节特征损失, 同时自身附带的模型参数的数量比较庞大, 经过多次卷积运算会增加模型的计算量, 导致模型推理速度和精度下降.
针对该问题, 将RSU4–RSU7模块中的普通卷积更换为深度可分离卷积(逐通道卷积和逐点卷积)[15], 在扩大原有模型的感受野的同时也能够增强对细节特征的学习能力和降低模型参数[16], 改进示意图如图6所示.
深度可分离卷积将一个完整卷积分解成两步, 分别为Depthwise卷积和Pointwise卷积, 前者每个卷积核只负责一个通道, 后者将所有通道上的特征图加权组合, 以此来达到减少参数的目的. 本文将解码阶段的部分结构更换后对应参数比较见表1.
从表1数据可以看出: 更换后的总参数量等于逐通道卷积和逐点卷积两者参数量之和, 通过表中数据能够看出经过改进的模块的参数与普通卷积模块的参数相比减少了一半左右, 但是模型推理效果并没有减退, 导致这种现象的原因是过多的参数会使网络计算量呈指数级增长, 并不是模型参数越多模型效果越好, 只有当网络中参数处于一个适合的数量, 才会使网络发挥最大的作用.
2.2 图像矫正加入图像矫正的处理, 既保证了目标检测器适应多种角度的仪表图像, 同时提高了仪表识别的精度和稳定性. 下面对本文使用的方法的矫正过程进行详细介绍.
首先对模板图像和待矫正图像提取轮廓特征, 分别使用Canny边缘检测和Hough变换检测技术, 并找到与模板图像轮廓最相似位置, 得到匹配中心点坐标, 根据坐标计算旋转角度和旋转中心, 最后计算出变换矩阵. 再经过仿射变换来矫正图像. 根据模板匹配得出的变换矩阵, 将矩阵作用于原始图像上即可得到对应的矫正矩阵, 如图7所示为本文矫正方法得到的矫正图像.
2.3 分割图像
显著性检测任务都是二分类任务, 致力于将图像中最具有吸引力的目标和背景分割出来, 本文在对指针仪表进行标注时是标注了刻度(scale)和指针(pointer)两个类别, 需要将指针和刻度分开输入到网络中, 所以需要将图像划分成双通道分别处理, 取出掩码图第一通道的特征图, 与刻度和指针的标签像素分别比对, 像素等于1的为指针, 像素等于2的为刻度, 通过该方法将指针和刻度分别绘制到不同通道上. 下面对网络处理输入图像的具体情况做展示, 图8为输入图像, 经过网络处理和二值化处理变成了图9和图10两张图像, 分割的效果图绘制到原图上, 如图11所示.
通过对输入图像与推理图像进行对比, 能够得出模型的推理效果比较不错, 对于表盘内的指针和刻度特征提取也是非常精确的, 也证明了改进后的U2-Net模型对仪表的识别具有很好的处理效果.
3 实验结果分析本次课题实验环境的处理器是AMD Ryzen 7 5800H, 运行内存16 GB, GPU为NVIDIA GeForce RTX 3060 Laptop GPU. 实验平台操作系统为Windows 11版本, 深度学习框架为PyTorch 1.11.0, 并行计算框架版本为CUDA 11.6, 程序实现语言为Python 3.7版本.
本文实验分为两个部分, YOLOv7训练和改进U2-Net训练, 其中YOLOv7输入图像统一为640×640分辨率, 批处理大小为4, 迭代次数为300轮. U2-Net的训练批处理大小为4, 初始学习率为0.0001, 迭代次数为400轮.
3.1 实验数据及处理本文中使用的数据集为工厂实拍数据图像, 该数据集包含不同旋转角度、不同背景和不同量程的仪表图像. 其中训练集为3840张, 验证集和测试集都为480张. 部分数据集图像如图12所示.
3.1.1 数据增强
为了保证网络训练的合理化, 避免出现过拟合问题, 本文采用了一系列图像增强技术, 对仪表图像进行处理和优化, 部分增强技术的图像增强效果如图13所示, 具体内容如下.
(1)旋转: 通过随机旋转操作, 可以将仪表图像进行随机旋转, 并生成多角度的仪表图像, 从而增加数据集的样本丰富性, 提高模型的鲁棒性.
(2)对比度增强: 对比度指的是图像中不同亮度的部分之间明暗差异的程度. 我们通过调整图像亮度和对比度, 增强了图像的可读性和图像信息的丰富性.
(3)拼接: 通过拼接操作能够扩大图像的视野范围, 在保证单张图像的高分辨率的同时, 也缓解了图像失真问题.
3.2 模型训练效果为提高本文方法的推理精度, 选择了YOLOv7作为模型的目标检测器, 训练精度结果如图14所示.
通过图14可以看到, YOLOv7训练时的检测精度很高, 并且收敛速度快, 精确率和召回率在前150轮就趋于稳定. 除了图像收敛速度快, 对比之前的YOLOv5, 在对同一张图像的预测精度也做了对比, 如图15所示, 可以看到图15(a)的YOLOv5的预测精度明显低于图15(b)的YOLOv7.
对于U2-Net的训练, 本文选择的损失函数为Focal loss, 来解决样本不均衡的问题. 损失函数定义如式(4)所示, 其中pt为预测前景的概率, 范围为0–1, γ为一个随机参数, 范围为0–5.
$ {FL}({p_t})=-\alpha _{t}(1{-p_t}{)}^{\gamma }\mathrm{log}({p_t}) $ | (4) |
为了扩展模型的应用场景, 本次实验共包含了3种量程的仪表, 分别为1.6 MPa、10 MPa和25 MPa. 对于模型准确率也设置了一定的标准, 分别设置了0.005, 0.01, 0.02和0.05共4种引用误差区间, 之所以这样设置是因为工业仪表的用途广泛, 例如变电站中对参数的把控、化工生产中对流速和大气压等物理量的测量和生活中水压力表的监测等, 但是并不是所有的应用场景都需要仪表具有非常高的容错率, 大多数仪表的应用场景在合理的误差范围之内都是可以接受的, 这也是以往一些研究学者容易忽略掉的地方. 为此在本次试验中, 将仪表误差设置了4个区间来更好地展现模型的适应性. 部分中间推理结果如图16所示.
从图16可以看出: 模型的整体识别效果较好, 多数图像的推理结果都能覆盖到原始图像上, 对于许多对指针式仪表有需求的行业都是能够满足的, 也证明了本文中提出的模型算法在仪表识别任务上具有一定的成效. 模型的部分推理详细结果见表2.
3.3 消融实验
为判定仪表读数的准确性, 本实验中选择引用误差率来判断模型的推理效果, 引用误差越小, 模型推理越准确. 设仪表的真实值为value', 模型推理值为value, 仪表的量程为l, 引用误差为e, 平均引用误差为ω, 表达式如下.
$ e = \frac{{|value - value'|}}{l} $ | (5) |
$ \omega = \frac{1}{{100}}\sum\limits_{i = 1}^{100} {e_i^{}} $ | (6) |
为了验证本文所提方法的有效性, 对测试集进行了推理测试, 采用如下方法进行消融实验.
(1) YOLOv5+U2-Net: 使用YOLOv5+U2-Net进行仪表读数推理.
(2) YOLOv5+改进U2-Net: 使用YOLOv5+改进U2-Net进行仪表读数推理.
(3) YOLOv7+U2-Net: 使用YOLOv7+U2-Net进行仪表读数推理.
(4) YOLOv7+改进U2-Net: 使用YOLOv7+改进的U2-Net进行仪表读数推理.
(5)本文方法: 使用YOLOv7+图像矫正+改进的U2-Net进行仪表读数推理.
不同阈值下的推理精度和平均引用误差ω结果见表3.
由表3可知: 在一定的阈值范围下, 本文方法的识别成功率高于YOLOv5/YOLOv7和没有经过改进的U2-Net, 在本文设置的最大阈值下, 识别成功率更是达到了96.5%, 平均引用误差为1.89%, 这里的平均误差并没有预想的好, 原因是因为模型应用于多量程仪表, 小量程与大量程的仪表差距较大, 所以该指标仅做参考.当变量调整为检测器时, 在阈值为0.05的条件下, 经过改进的U2-Net比没有经过改进的方法的精度高了9%, 充分说明了改进后的U2-Net在模型推理方面有了长足的进展, 其次是基于YOLOv7的检测器与基于YOLOv5的检测器的比较, 在引用误差为0.05的条件下, 有0.8%的精度提升. 消融实验表明: 本文方法能够在不同背景、不同量程识别出仪表的准确读数, 具有较强的实用性.
3.4 对比实验为了证明本文所提方法的真实有效性, 将本文方法与模板匹配、SegNet、PSPNet、Deeplabv3+、YOLOv5+U-Net等经典的语义分割模型进行了比较. 具体结果见表4.
由表4的对比数据可知: 本文方法的识别精度与传统方法模板匹配在多个阈值区间都有较大的提升; 与语义分割网络SegNet、PSPNet的对比效果也是非常明显, 在小阈值区间内的精度都遥遥领先; 与Deeplabv3+作比较, 在阈值为0.005时, 两者差距为3.4%, 当提升阈值的范围, 本文方法的效果开始更加明显, 在0.01范围内, 比Deeplabv3+高了6.8个百分点; 对比最新的YOLOv5+U-Net的深度学习方法, 本文方法表现也较好. 由于YOLOv7在检测精度上高于YOLOv5, 为模型输入了更高精度的图像和改进U2-Net的像素级分割下, 致使模型在阈值为0.02的条件下, 精度比U-Net高了12.5个百分点. 综上所述, 本文所提出的模型方法在指针式仪表识别精度上和平均引用误差上都有较大的优势.
4 结论针对指针式仪表不同环境定位困难和读数识别率不高等问题, 本文提出一种基于YOLOv7+U2-Net的指针式仪表识别方法, 能够适用于多量程仪表识别. 为了提高对仪表盘的检测精度, 通过引入最新的YOLOv7目标检测器提取仪表盘区域, 并使用了矫正技术, 使模型能够适用更多旋转角度的图像, 将U2-Net的普通卷积更换为可分离卷积并引入了Attention机制, 减少了卷积参数的计算量的同时提高了识别精度和速度, 本文还提出了误差多区间的评定策略, 将本文方法应用到更多的使用场景. 本文方法在读数计算阶段使用的还是传统的距离法, 依靠识别刻度来计算读数, 对反光和异物遮挡的图像处理效果不佳, 后续将在仪表读数计算方法上进行深入研究, 开拓新的读数方法.
[1] |
李金红, 熊继平, 陈泽辉, 等. 基于卷积神经网络的指针式仪表识别. 计算机系统应用, 2021, 30(9): 85-91. DOI:10.15888/j.cnki.csa.008090 |
[2] |
陈阳. 基于深度学习的指针式仪表图像的实例分割研究设计[硕士学位论文]. 西安: 西安电子科技大学, 2022.
|
[3] |
熊国良, 肖文明, 王小明. 基于视觉的指针式仪表检测与识别方法综述. 传感器与微系统, 2020, 39(12): 1-3, 9. |
[4] |
王延华, 李腾, 张沛, 等. 结合HSV与局部Hough变换的指针式仪表识别算法. 电子设计工程, 2017, 25(2): 110-113. DOI:10.14022/j.cnki.dzsjgc.2017.02.026 |
[5] |
李娜, 王军, 董兴法, 等. 基于改进Hough变换的指针式仪表识别方法. 液晶与显示, 2021, 36(8): 1196-1203. |
[6] |
张斌, 毛顺丹, 杨铁梅. 基于Mask-RCNN的指针式仪表自动识别研究. 科学技术创新, 2020(20): 57-58. |
[7] |
金爱萍, 袁亮, 周德勤, 等. 基于YOLOv5和U-Net的指针式仪表读数识别方法. 仪表技术与传感器, 2022(11): 29-33. |
[8] |
Qin XB, Zhang ZC, Huang CY, et al. U2-Net: Going deeper with nested U-structure for salient object detection. Pattern Recognition, 2020, 106: 107404. DOI:10.1016/j.patcog.2020.107404 |
[9] |
陈令刚. 基于模板匹配的多圆识别算法. 电脑知识与技术, 2017, 13(24): 173-174, 177. |
[10] |
沈云青, 熊卫华, 黄为民, 等. 基于模板匹配与Hough圆检测的仪表识别. 计算机技术与发展, 2021.
|
[11] |
黄旭, 张世义, 李军. 图像分割技术研究综述. 装备机械, 2021(2): 6-9. |
[12] |
唐标, 沈映泉, 黄绪勇, 等. 基于角度-距离的仪表读数识别技术研究. 电气时代, 2022(2): 68-70. |
[13] |
张增光. 基于深度学习的指针式仪表读数识别的方法研究[硕士学位论文]. 哈尔滨: 哈尔滨工程大学, 2020.
|
[14] |
Oktay O, Schlemper J, Le Folgoc L, et al. Attention U-Net: Learning where to look for the pancreas. arXiv:1804.03999, 2018.
|
[15] |
王成龙, 赵倩, 赵琰, 等. 基于深度可分离卷积的实时遥感目标检测算法. 电光与控制, 2022, 29(8): 45-49. |
[16] |
汪睿卿, 王慧琴, 王可. 融合细节特征与混合注意力机制的火灾烟雾检测. 液晶与显示, 2022, 37(7): 900-912. |