基于深度学习的指针式压力表读数方法研究

2024-04-02 03:42林鸿正赵成龙
现代电子技术 2024年7期
关键词:指针式极坐标压力表

林鸿正,张 斌,赵成龙,戴 杰,湛 敏

(1.中国计量大学计量测试工程学院,浙江杭州 310018;2.杭州莱霆科技有限公司,浙江杭州 310018)

0 引 言

指针式压力表是一种常用的压力测量设备。然而,读取指针式压力表的数值需要一定的技能和经验,且容易受到视觉误差、心理因素等方面的影响。因此,研究准确、高效的指针式压力表读数方法具有重要意义[1]。

传统的方法主要基于图像处理技术,通过摄像头获取压力表的图像,再利用图像处理算法识别指针位置和读数[2]。然而,这些方法普遍存在对光照、镜头角度、背景等环境因素的要求较高,以及处理速度较慢等问题。近年来,深度学习技术的快速发展为指针式压力表读数研究提供了新的解决方案。深度学习技术可以通过训练大量的压力表图像数据来学习读数规律,从而实现更加准确、高效的读数。常用的模型包括卷积神经网络(CNN)、循环神经网络(RNN)等[3]。 文献[4]使用PrRoiPolling 代替现有的Mask-CRNN 中的RoiAlign,对于自然环境有更高的鲁棒性,通过训练这些模型可以使得模型具备对指针位置的检测和读数的识别能力。此外,研究者们还提出了一些新的技术,如小目标检测、文字识别等,来提高识别准确率和处理速度。文献[5]提出了一种基于YOLOX卷积网络和语义分割技术的新方法,取得了较高的准确率。文献[6]提出了一种基于Fast-CRNN 的方法,用于无人机巡检中自动识别电表,能有效识别各种亮度等级和拍摄角度的电表。本文通过了解国内外深度学习技术的研究现状,以指针式压力表为对象,提出了一种结合文字识别与图像处理的指针式压力表自动读数方法。所提出的方法兼顾精确度和识别速度,能很好地适应指针式仪表自动校验仪的运用场景。

1 刻度值的定位与识别

为更准确地定位和识别刻度值的位置和内容,本文采用两个深度学习的模型,分别进行刻度值的定位与识别[7]。在刻度定位部分,以DBNet 网络为基础,对压力表的各个刻度值进行定位,画出定位框;在内容识别部分,将定位完成的图像按照定位框进行分割,并将分割后的图像传入以CRNN 为基础的文本识别网络。

1.1 刻度值的定位

如前文所述,相机采集到的指针式压力表的图像易呈现背景杂乱、光线等级和拍摄角度各异、表盘模糊等特点。在文本检测网络的选择方面需要尽可能考虑这些干扰因素,且保证检测的速度和准确性。

1.1.1 改进的DBNet 网络结构

本文选择DBNet网络为研究对象。DBNet是一种基于像素点分割的文本检测算法,采用了ResNet-18[8]作为骨干网络进行特征提取,以FPN[9]作为特征金字塔网络,用于在多个尺度和多个空间位置上捕捉文本特征,在预测部分采用分割和二值化策略来优化文本区域候选生成,以获得更好的识别和定位效果[10]。其网络结构如图1 所示。

图1 DBNet 网络模型

本文改进的DBNet网络结构可分为三部分:

1)具有提取特征功能的主干网络ResNet-18 在DBNet 网络的基础上进行了改进,将第一个卷积层的通道数设置为128,使其在后面所有的卷积层中通道数都是原来模型的2 倍,牺牲少量运算速度来换取更多的文本检测目标特征,以提高文本检测准确度。

2)以FPN 结构通过加入侧向连接和上采样,来以极小的附加计算量构建不同尺度的具有高级语义信息的特征金字塔网络结构。

3)基于提取到的图像特征预测出概率图和阈值图,并利用可微分二值化得到近似二值图,最后通过后处理得到文本包围四点标注框,通过可微分二值化优化训练过程从而简化后处理,大幅提高文本检测效率。

1.1.2 损失函数

本文的损失函数由三个部分构成,分别为概率图损失Ls、阈值图损失Lt以及二值图损失Lb。其计算公式如下:

式中:α和β是权重参数,可以根据模型实际使用情况自行定义,本文根据经验设置为5 和10。DBNet 网络提出Ls和Lb都应用了二进制交叉熵(BCE)损失,为了克服正负样本的不平衡,通过对硬样本进行采样,在BCE 损失中使用硬负样本挖掘,公式如下:

式中:Si表示数据集;yi表示样本标签,1 代表正类,0 代表负类;xi表示样本预测为正类的概率。交叉熵Loss 可以用在大多数语义分割场景中,但它有一个明显的缺点,那就是对于只用分割前景和背景时,当前景像素的数量远远小于背景像素的数量时,即背景元素的数量远大于前景元素的数量,背景元素损失函数中的成分就会占据主导,使得模型严重偏向背景,导致模型训练预测效果不好。

因此本文提出使用Dice 函数的变体[11]作为Ls和Lb的损失函数。集合相似度度量函数通常用于计算两个样本的相似度,属于metric learning。X为真实目标mask,Y为预测目标mask,希望X和Y交集尽可能大,占比尽可能大,但是Loss 需要逐渐变小,所以在比值前面添加负号,可以缓解样本中前景背景(面积)不平衡带来的消极影响,前景背景不平衡也就是说图像中大部分区域是不包含目标的,只有一小部分区域包含目标。DiceLoss 训练更关注对前景区域的挖掘,即保证有较低的FN,公式如下:

式中:α为预测目标系数,可以通过调整α的大小来影响损失函数对预测目标的关注程度;Smooth 为平滑系数。上述两个变量可以根据模型的具体使用情况来定义,本文根据经验设置为α=2.5,Smooth=0.5。

Lt计算为扩展文本多边形Gd内的预测和标签之间的距离之和:

式中:Rd是扩张多边形Gd内像素的一组索引;yi是阈值映射的标签。

文本区域检测效果如图2 所示。

图2 文本区域检测效果图

1.2 刻度值的识别

对于指针式仪表刻度值的识别,值得注意的是DBNet 检测模块提取到的文本字符长度有所不同,因此无法使用传统的文本识别网络。CRNN 作为目前主流的文本识别模型,具有可以处理任意长度文本的优势,满足刻度值识别需求。

1.2.1 CRNN 网络结构

通过改进的DBNet 文本检测网络后,得到各个刻度值的四点标注框。本文通过CRNN 对其进行文字识别[12],CRNN 主要包含三个部分,如图3 所示。

图3 CRNN 网络结构

图3 中:卷积层是采用了去除全连接层的CNN 作为特征提取方法,从输入图像中提取特征序列;循环层由基于RNN 改进的双向长短期记忆(Bi-LSTM)网络构成,用于预测特征序列中的每一个特征向量的标签分布;转录层采用连接时间分类(Connectionist Temporal Classification, CTC)模型,将循环层产生的标签分布通过去重整合等操作,得到与输入序列长度相同的识别结果序列。

1.2.2 损失函数

CRNN 的损失函数是CTC 损失函数,它是一种无监督的损失函数,用于解决输入数据与给定标签的对齐问题,特别适合于序列数据的预测。通过卷积层和循环层后,每一个特征向量都输出一个预测值y=y1,y2,…,yT,其中T是序列长度。这里,每个yT∈R||L′是集合L′=L∪上的概率分布,其中L 包含任务中的所有标签(例如所有阿拉伯数字字符),以及“空白”标签。序列映射函数ℬ定义为序列到序列,其中T为长度。ℬ 将π映射到ℓ 上,首先删除重复的标签,然后删除“空白”。

例如刻度值“100”可能输出的字符串包括“11000”“1100”“111100”等一系列情况,此时无法通过删除重复字符得到最终结果。因此引入了空白符(blank)机制,以“-”表示。RNN 输出序列时,在文本标签中重复的字符之间插入一个“-”,如上述的刻度值“100”,可能的输出字符串就改为“11-00-000”“1-00-0”“1-0-000”等,最后映射为标签文本ℓ 的总概率为:

式中:ℬ-1(ℓ)代表从序列到序列的映射函数ℬ 变换后是文本ℓ 的所有路径集合;而π则是其中的一条路径。每条路径的概率为各个时间步中对应字符的分数的乘积。

用X={ℓi,li}i表示训练数据集,其中ℓi为训练图像,li为真值标签序列。目的是最小化真实值的条件概率的负对数似然:

2 指针式仪表的读数

在得到指针式仪表刻度值的文本及其坐标后,还需进行以下三个步骤才能得到仪表的最终示数[13]:

1)寻找仪表的圆心坐标。

2)以圆心坐标为极坐标变换中心,将图像转换到极坐标中。

3)通过距离法计算出仪表示数。

2.1 确定圆心与极坐标展开

据上文所述,经过DBNet 网络提取得到刻度值文本定位框后,本文采用最小二乘法拟合圆,得到的圆心坐标作为极坐标变换的刻度值。文本拟合圆及其中心坐标如图4 所示,并以该坐标为中心,将图像从笛卡尔坐标系转换到极坐标系,如图5 所示。

图4 刻度值文本拟合圆

图5 极坐标变换结果

其具体过程如下:

1)圆的方程可以表示为:

式中:(A,B)为圆心坐标;R为圆的半径。式(7)可以转换为:

式中:a=-2A;b=-2B;c=A2+B2-R2。只要通过式(8)求得a、b、c后,就可以计算得到圆心的坐标和圆的半径。最小二乘法通过求解方差平方和的最小值来求解a、b、c这三个参数。样本点(xk,yk)与圆心距离的平方与圆半径的平方之差为:

所有样本点的误差平方和为:

用式(10)对a、b、c求偏导,令偏导等于0,即可解得使函数值最小的a、b、c值,从而计算出圆心坐标和圆半径。

2)极坐标变换的实质是以图像中的某个点为中心,把图像从笛卡尔坐标系转换到极坐标系。其转换公式如下:

式中:x0、y0是点在原坐标系中的横坐标和纵坐标;ρ和θ是极坐标系下的极径和极角;Cx和Cy为极坐标变换的中心,已经由步骤1)所述基于刻度值文本的极坐标中心提取方法得到。算法算得原图每个像素点在极坐标系下的极径和极角后,以极径和极角为横纵坐标,将图像在直角坐标系下展开,展开后,原本呈圆弧状分布的刻度呈现直线形形状分布。

2.2 仪表示数计算

观察极坐标展开后的指针和刻度线图像可知,指针在图像中呈垂直分布,由此,将整张图像二值化后做垂直投影,统计每一列的像素点数量,找到累加黑色像素点个数最多的那一列,作为指针所在的水平位置。同理,找到刻度值对应的主刻度线的位置,在得到所有主刻度线与指针位置之后,筛选出距离指针左右两侧各自最近的主刻度线,结合上文所述的刻度值文本识别得到指针处于的刻度区间,再通过距离法计算得出具体示数,公式如下:

式中:V为最后的读数;Vr为指针右边刻度线对应的刻度值;Vl为指针左边刻度线对应的刻度值;Xpointer为已经得到指针直线所在水平坐标;Xl-scale为指针左边距离指针最近的主刻度线的水平坐标;Xr-scale为指针右边距离指针最近的主刻度线的水平坐标。

3 实验结果与分析

3.1 实验环境

实验是在Windows 10 专业版系统安装Anaconda 3,使用Intel Core i5-9300 CPU 以及GTX 1660TI 显卡加速,完成实验训练。

3.2 实验设计与结果分析

本次实验采用400张人工拍摄的指针式仪表真实样本作为数据集,经过图像增强扩充至800 张,采用json 数据格式进行人工标注,随机选取700张图像作为训练集,100 张图像作为测试集。设置学习率为0.001,最大迭代次数为120,批输入大小为16,实验参数设计如表1所示。

表1 实验主要参数表

本文从最大误差、平均误差和检测时间三个指标对Hough 直线检测方法、DBNet+CRNN 检测方法与本文方法进行对比,如表2 所示。

表2 仪表读数算法性能评价

从表2 的测试结果可以看出,本文检测精度最大误差为1.05%,检测时间为0.8 s,满足常规工业需求,并在检测精度方面较传统的检测方法有较大的提升。对误差较大的图像样本进行分析,发现该类数据多为拍摄角度过大或遮挡刻度值关键部位,使部分特征丢失造成算法无法拟合出一个较完美的圆,最终导致检测结果误差较大。

4 结 论

本文采用改进的DBNet 实现了指针式仪表刻度值的定位,采用CRNN 实现了指针式仪表刻度值的识别,基于神经网络和机器视觉设计了一种基于刻度值的指针式仪表读数算法,实现了指针式仪表的读数。具体内容包括:

1)针对刻度值检测问题,在DBNet 的基础上做出了适应性改进,增加了主干网络ResNet-18 各个卷积层的通道数,重新设计了损失函数,加强了其对指针式仪表刻度值的检测能力,通过实验表明该方法有更好的准确性与鲁棒性。

2)针对指针式仪表读数问题,采用了极坐标展开的方法,将弧形的刻度值展开成一条直线,提高了读数的准确率。

本文提出的方法为指针式仪表读数领域提供了新思路,但本文方法仍有不足,对拍摄角度过大以及遮挡刻度值部位的样本无法提取足够的特征导致检测结果误差较大,后续将对该类样本进一步分析和处理,克服遮挡和角度过大的问题。

猜你喜欢
指针式极坐标压力表
不同搂草方式对苜蓿草品质的影响
基于MobileNetV2的圆形指针式仪表识别系统
巧用极坐标解决圆锥曲线的一类定值问题
压力表在炼化装置上的应用
极坐标视角下的圆锥曲线
压力表半自动化检定系统的组建及应用
自来水电子压力表的设计
浅谈指针式万用表的测量方法与使用要点
基于PIC18F65K90的低功耗数字压力表设计
基于提升小波变换的指针式仪表图像边缘检测