基于OCR的智能电表缺陷检测系统

2023-10-28 01:19吕永庭
仪表技术与传感器 2023年9期
关键词:电表字符像素

吕永庭,张 涛

(东南大学仪器科学与工程学院,江苏南京 210096)

0 引言

随着国内工业化智能化进程不断推进,智能电表检定流水线也在朝着自动化智能化发展。我国每年都需要采购更换大批智能电表,在智能电表更换技术标准时期更替的电表数量更大[1]。因此一套高效的智能电表外观缺陷检测系统在智能电表检定流水线上至关重要。目前对于电表外观的检测大都依靠传统检定算法,其效率低且存在很多漏检和误检现象,难以满足工业上批量化生产的需要。

目前,国内外有大量的学者将计算机视觉技术运用在缺陷检测上。文献[2-6]利用传统图像处理方法对智能电表进行预处理,然后根据模板匹配计算缺陷,但是这类方法计算效率普遍较低,检测精度也不高,难以达到工业上实时性的要求。S.Jain等[7]将数据增强用在缺陷图片上,从而缓解正负样本不均衡的问题。吴先锋[8]使用深度学习方法对电表区域进行划分,根据不同区域使用对应改进版模板匹配方法进行电表缺陷检测。赵卫东等[9]将电表屏幕分为9个区域,利用深度学习算法直接检测出屏幕区域;收集含缺陷的电表图片并进行标注,然后经过深度学习的方法直接检测缺陷。但是大量含缺陷的电表数据集较难获得,该方法适用性有限。陈昕等[10]融合图像特征矩用来描述图像,并与图像模板的特征矩做对比,判断目标字符是否有缺陷。裴宝莹[11]则认为传统模板匹配的方法鲁棒性低、可移植性差、检测效率低,因此使用深度学习方法直接对整张电表图片检测。张纪峰[12]提出了基于CNN的电表显示缺陷的检测方法,在不依赖模板的前提下达到较高的精确度。

现实中很难去收集大量有屏幕缺陷的电表图片,即使使用相关的数据增强的方法,对模型性能的提升也有限。并且智能电表的字符存在字号多样、字符紧密以及电表类型繁多等问题。为解决上述研究存在的问题,本文提出了一个基于OCR(optical character recognition)的智能电表缺陷检测系统,具体做法为先使用文本检测算法对智能电表屏幕字符粗提取,再利用标准模板信息对遗漏的字符区域进行精准提取。然后将待检测字符区域送入文字识别模型检测正确字符。通过设立置信度阈值将识别置信度较低的文字区域过滤出来,最后用本文设计的缺陷检测算法判断是否存在缺陷。实验结果表明:相对于通过传统方法提取屏幕区域再检测,本文提出的方法在检测精度与检测速度上都有显著的提升,鲁棒性和泛化能力也有较大提升。能够满足工业检定流水线中对智能电表的检测效率需求。

1 基本方法

如图1所示,以单相表为例,在电表全显时仅屏幕区域就包含85个字符,其中还包括25个难辨别的电气符号。

在缺陷数据集偏少的情况下直接使用深度学习的方法很难准确对每个字符进行缺陷检测。而实际上,在检定流水线中,外观含有缺陷的电表也占少数。于是本文利用OCR系统检测正常字符,将置信度低于阈值的结果当作疑似错误字符,最后利用模板对疑似缺陷字符做比对,进而判断是否为真缺陷。整个系统分2个部分:第一部分为OCR系统,将整个电表的文字提取出来,得到文本行的位置坐标以及文字内容。由于直接使用OCR检测得到的结果往往存在错误或遗漏,因此本文设计了字符区域精确切分算法,利用先验知识对目标区域精确切分。第二部分为缺陷检测,首先将疑似缺陷文本行切分成单个字符,然后将切分的单字符依次送入缺陷检测算法,判断是否存在缺陷。实验表明:此方法能极大提升缺陷检测的效率,处理图1这样的全显电表图片,本文的方法仅需0.5 s,比文献[11-12]的方法有更高的检测效率。

1.1 OCR检测算法

本文采用二阶段的OCR算法,即将文字检测和文字识别2个算法模型串联,分别得到字符区域和字符结果。其中文字检测模型是基于DBNet[13]模型改进得到,而文字识别模型则是基于CRNN[14]模型改进得到,为了均衡检测精度与检测速度,2个网络模型改进策略如下。

1.1.1 文字检测模型优化策略

1.1.1.1 轻量级主干网络

主干网络的大小很大程度上决定着模型的大小,不同的主干网络对图像特征提取的精度与算法执行效率有较大影响。为了平衡检测检测精度与速度,本文使用MobileNetV3_large--_x0.5[15]作为基础主干网络,并对其进行优化。

1.1.1.2 去除SE模块

SE模块在MobileNetV3中可以用做显式地建模通道之间的相互依赖关系,并自适应地重新校准通道特征响应。当图片尺寸大于640像素×640像素时,SE模块则很难去估计通道级的特征响应。而实际处理智能电表的图片时,电表图片的尺寸在2 380像素×2 948像素左右,因此SE模块带来的性能提升有限,将其去除也不会影响精度。

1.1.1.3 减少特征通道数

如图2所示,在DBNet中采用了FPN[16](feature pyramid networks)特征金字塔结构用于融合各层网络特征,提升融合特征的表达能力。有FPN的存在,特征通道数可以不用那么多,可以通过减小通道数减小模型尺寸,从而提升模型检测速度。

图2 FPN结构

1.1.2 文字识别模型优化策略

1.1.2.1 轻量级主干网络

与文字检测模型不同,在实验中发现,以ResNet系列作为主干网络取得的效果比MobileNet系列好。K.He[17]的研究表明:随着ResNet层数增加,网络能获取的特征更加有效,同时算法耗时也会增加。因此为了均衡识别的精度与速度,本文采用ResNet34作为识别网络的主干网络。

1.1.2.2 轻量级解码结构

在CRNN中用于解码的头部结构将主干网络提取的序列特征解码为文字序列。其中序列特征的维数对模型的大小影响较大。文献[18]的实验结果表明,减小输出的特征序列维度可以提升检测速度、缩小模型尺寸,经过实验发现可将特征维度设置成48以平衡精度与效率。

1.1.2.3 正则化

由于训练数据中包含大量重复的电气符号,为了避免模型过拟合,在损失函数中添加了L2正则化。在L2正则化的约束下,网络的权重倾向于选择一个较小值,从而整个网络中的参数趋向于0,缓解模型过拟合,提升模型泛化性能。

1.2 遗漏文本检索算法

由于电表屏幕中字符较紧密,字号差别较大,因此文字检测模型在检测屏幕区域的字符经常出现漏检误检,这在工业检定流水线上不允许出现。而且在检定流水线上往往有多种电表同时需要检测,在测试集中表现好的模型在处理新电表时也容易出现漏检的现象。基于此,本文利用电表的先验知识获取准确的文本区域,具体实现方法如下。

(1)

将式(1)记作:

dY=A0dX

(2)

利用最小二乘法求出状态微分并迭代求取4个参数。

dX=(ATA)-1ATdY

(3)

X1=X0+dX

(4)

不断迭代执行式(3)、式(4)直到变量dX小于给定阈值0.01或者达到最大迭代次数200。最后求得的X就是所求的4个参数,未被正确切分的字符区域可表示为:

(5)

1.3 缺陷检测算法

由于待检测区域可能是文本行,长文本不利于缺陷的检测与定位,因此还需对得到的字符区域进行切分。具体做法为:对待检测字符图片使用大津法[19]进行二值化处理,然后统计二值化图片水平与竖直方向上的像素值,根据统计的像素和信息求取字符区域。如图3所示,大津法能够自适应选择二值化阈值,从而减少固定阈值及光照对二值化图像的影响。

图3 大津法图像二值化结果图

图4展示图像不同方向像素分布,横坐标表示单轴像素坐标,纵轴表示像素值。本文通过控制阈值实现图像分割。经过多次实验,发现设定阈值为方向像素均值的1/4、区域长度大于10像素,这2个条件能够自适应的对字符进行切分。如图5所示,本文提出的方法能够很好的完成字符切分,经过切分后,很多干扰信息都被切除,更有利于图像匹配算法的检测。切分好的图像与模板图缩放到相同尺寸,再利用缺陷检测算法判断是否存在缺陷。

图4 x、y方向像素值统计图

图5 切分结果图

本文采取的缺陷检测算法是3种计算图像相似度方法的串联,通过各自设定阈值过滤判断缺陷,当3种方法都验证通过后才认定为合格字符。

第1种方法利用图像矩计算相似度[10],即提取图像的Hu矩、Zernike矩、颜色矩以及亮度矩共同作为图像特征。将4类图像矩扩展为图像特征矩,对其进行PCA降维,然后计算欧式距离去衡量相似度。

第2种方法为计算2个图片相似度函数的ORB(oriented fast and rotated brief)算法[20]。首先利用FAST算法计算图像特征点,然后利用BRIEF算法为特征点计算二元描述子,最后利用描述子进行匹配。

第3种方法为计算图片局部敏感的哈希算法[21]。基本思路是计算两图像的哈希值并对哈希值进行相似性计算。

通过3种图像相似度的检测算法串联,可以实现不同维度的图像相似度计算,能够显著提升检测精确度。

2 实验

2.1 实验环境

本文模型训练所用的深度学习开发框架为paddlepaddle,GPU采用RTX3060,CPU版本为Intel(R)Core(TM)i7-12700H。CUDA版本为11.2,cudnn版本为8.2.0。为了加快模型训练进程,每个模型的训练都在GPU环境下进行。

2.1.1 数据集的制作与增强

由于智能电表中包含大量的电气符号,常用的数据集都不包含电气符号这类数据,因此针对电表场景拍摄一组电表照片并利用标注工具对电表图片进行标注。

除了常规的图像标注外,本文还使用数据增强策略,进一步提升样本多样性。针对文字检测算法的特性使用CopyPaste[22]的数据增强策略。该方法将标注的文本行随机复制粘贴到另一张图片上,增加文本行的数量。文字识别数据集的增强策略比较多,如添加噪声、仿射变换、旋转等。此外,本文还采取了C. J. Luo提出的TIA[23]数据增强方法。相关数据增强方法示意图如图6所示。

图6 数据增强示例

本次实验共采集800张左右智能电表图片,并将所有数据按9∶1比例划分训练集和测试集,具体数据规模见表1。

表1 数据集规模

2.1.2 文字识别模型字典制作

由于待识别字符包含大量电气符号,为了识别过程能顺利进行,本文对智能电表中出现的所有电气符号都进行了转义标注,再结合通用中英文字符字典,制作成本次实验测试时使用的字典。由于电气符号的真实含义通常比较冗长,为了结果显示的简洁性,对这些电气符号采用了日文标注,制作成训练用字典。两份字典顺序一致,可以互相转换,电气符号含义标签(部分)如表2所示。

表2 电气符号标注表

2.1.3 模型训练与评价指标

文字检测与文字识别预训练模型均采用预训练模型,使用预训练模型可大幅提升模型收敛速度,提升模型准确率。模型训练过程均使用Adam优化器进行优化,初始学习率设置为0.001、使用cosine衰减学习率策略。一共训练200个批次,每个批次大小设置为8,在训练过程中每隔5个epoch保存一次模型参数,同时更新检测效果最好的模型以及保留当前训练的参数。

文字检测模型的评估指标有精确率(Precision)、召回率(Recall)和F1-score。文字识别模型的评估指标有准确率(Acc)、归一化的编辑距离(Norm_edit_dis)。GPU执行时间是在单块RTX3060上测得的。

2.2 OCR模型消融实验分析

2.2.1 文字检测模型分析

表3比较了3项模型优化策略对文字检测模型表现的消融实验。将头部通道数从256减少到96,模型精确率下降了1.8%,但检测效率提升37%左右。由于检测图片的尺寸较大,MobileNetV3的SE模块对模型精度的提升很小,但其却增加了大约16%的模型检测时间。数据增强策略大约提升1%的模型精确率。综上,3种模型优化策略对模型检测精度和检测速度的提升都有效。

表3 文字检测模型3种优化策略的消融实验

2.2.2 文字识别模型分析

表4展现了文字识别模型优化策略的消融研究,实验结果表明减少CRNN头部用于文字识别的特征通道数对精度的影响很小,但将通道数减少到48可使检测效率提升近36%。数据增强对模型精度的提升明显,提升约3.3%,可见数据增强对深度学习模型的影响很大。由于文中文字识别的数据集比较小、重复字符数量多,容易出现过拟合的现象,为了避免模型过拟合,加入正则化策略。实验结果表明,正则化略微提升了模型的精度。

表4 文字识别模型消融实验

2.3 缺陷检测实验

直接应用OCR检测电表图片会存在漏检的情况。经实验统计,漏检率的范围为0~22%,受图像质量以及电表类型影响,文字检测模型在测试集上表现较好,但检测新电表时则容易出现较高的漏检率。应用遗漏文字检测算法则可以保证所有字符区域均被检出并进行缺陷检测。本文多次实验表明:即便检测图像质量较差的新类型电表,本文提出的漏检算法仍然能达到百分百的文本框提取准确率。本文缺陷检测算法的误检率低于2%,属于合理误差范围,并且能检测出微小缺陷。应用OCR检测正常字符至少可以减少90%的缺陷检测工作量,因此在检测效率上相对其他算法有明显的提升。

由于缺少真实的缺陷电表样本,本文应用图像处理技术、物理破坏、物理遮挡等方法制造了一批测试数据集。其规模为:正常电表288张,含缺陷电表36张。检测结果与其他论文方法的对比如表5所示。可以看出本文所提方法在准确度上与文献[4]的方法很接近,但在检测速度上有很大的提升。

表5 缺陷检测算法比较

3 结论

本文针对智能电表的缺陷检测,提出了一套多重检测的方法。首先利于OCR技术对智能电表的正常字符进行检测,并将OCR检测结果中置信度低于0.9的字符视为疑似缺陷字符,再通过缺陷检测器完成缺陷字符的检测。本文方法具有良好的可移植性,检测内容可控、执行效率高、检测精度高等优点。利用OCR系统可以过滤90%以上的正常字符并获得全部的文本框,设置多重检验降低误检率。本文的缺点在于需要模板才能进行准确检测。实验结果表明,本文设计的漏检字符检索算法能有效检出遗漏字符。缺陷检测算法也从传统的单一模板匹配算法变成3种方法的串联,进一步提升缺陷检测鲁棒性。本文方法在缺陷检测的准确率和检测速度上都达到了较高的水准,能够满足工业检定流水线的需求。

猜你喜欢
电表字符像素
赵运哲作品
巧判电表测量对象
寻找更强的字符映射管理器
像素前线之“幻影”2000
电表“对”与“错”归类巧掌握
字符代表几
一种USB接口字符液晶控制器设计
“像素”仙人掌
消失的殖民村庄和神秘字符
看电表