多干扰环境下段码液晶显示仪表读数的鲁棒识别方法
2022-07-06徐宏强徐望明伍世虔
徐宏强,徐望明,3,王 望,伍世虔
(1.武汉科技大学信息科学与工程学院,湖北 武汉,430081;2.武汉科技大学机器人与智能系统研究院,湖北 武汉,430081;3.武汉科技大学冶金自动化与检测技术教育部工程研究中心,湖北 武汉,430081)
七段码式液晶显示(liquid crystal display,LCD)数字仪表被广泛应用于日常生活和工业生产中,如电表、水表、气表、温度表、压力表等,为了能及时记录能耗情况及其他监测量,远程自动抄表技术应运而生,其中常用的方式是采集仪表图像并运用图像处理技术对表盘上显示的读数进行识别[1]。然而,为节约运营成本,采集仪表图像时一般通过廉价的普通摄像头,其图像分辨率不高,还容易受到拍摄视角、光照条件以及灰尘、油污和划痕等多种因素的影响,出现读数字符倾斜、模糊、部分缺失等现象,再加上不同类型LCD仪表的表盘样式、字体显示风格和背景复杂多样,这些都对仪表读数的准确检测和识别带来了挑战[2]。
对于段码液晶数字仪表读数识别问题的研究成果有不少。陈刚等[3]将表盘图像进行预处理后,先定位数显屏,再通过列切法分割出单个数码字符,最后结合七段特征检测法和五线相交检测法实现对正体和斜体数码的快速识别。邓清男等[4]建立了七段码数字0~9的标准模板库,采用最大类间方差法(OTSU)分割出目标数字区域并使用模板匹配法完成数显仪表读数识别。Kanagarathinam等[5]使用MSER算法检测出LCD仪表图像的七段码字符区域,通过图像预处理、二值化等操作将字符进行分割,最后使用训练好的OCR(optical character recognition)模型对单个七段码字符进行识别。上述传统字符识别方法简单易实现,但通常依赖于前期图像预处理效果,还依赖于模板文件或手工设计的图像特征,且参数难以调整,因而算法的鲁棒性较差。朱立倩[6]针对传统方法适应性差、准确度低的不足,提出一种基于深度学习的数显仪表字符自动识别方法,其由基于改进Faster R-CNN的字符区域定位网络和嵌入了注意力机制的字符识别网络构成,在一定程度上提高了识别准确率,但图像模糊以及反光造成的字符漏检和定位不准现象仍然无法避免。
深度学习一般依赖于训练样本的多样性,实际应用中往往存在样本不足的情况,这时单一的深度学习方法就难以应对多种环境因素对字符识别造成的干扰。为此,本文将深度学习和传统方法相结合,提出一种针对多干扰环境下段码LCD仪表读数的自动识别方法,并通过构建包含视角倾斜、光照不均、码字尺度变化、表盘外观变化、读数区数量变化等多种情况的仪表图像数据集进行实验研究,以验证该方法的有效性。
1 仪表读数识别流程
仪表读数识别一般按照“先检测、后识别”的两步式流程进行,考虑到多干扰环境下图像质量不佳,且实际应用中多样性的训练样本通常难以获得,即便采用深度学习方法,直接将读数区域检测结果输入识别模型也并不总能得到理想的效果,因此根据段码LCD仪表的特点,本文有针对性地增加了读数区域的后处理环节,作为基于深度学习的读数检测模型和识别模型之间的桥梁,以改善识别效果。
如图1所示,本文提出的段码LCD仪表读数识别方法的工作流程分为3个阶段,即读数检测阶段、读数区域后处理阶段和读数识别阶段。
图1 本文提出的段码LCD仪表读数识别方法流程
(1)读数检测阶段:自动检测所输入仪表图像上七段码读数字符的位置信息,包括单个数字的字符位置和整体读数中相邻字符的连接关系,这可用于确定数字字符和读数区域边界位置。本文借鉴经典CRAFT模型[7]的设计思想,改进了其主干网络和字符连接关系,新模型用M-CRAFT(modified CRAFT)表示,其输出是高斯热力图形式的可表征七段码字符位置的数字中心概率图以及连通域形式的可表征仪表读数区域位置信息的字符连接关系图。
(2)读数区域后处理阶段:考虑到前述各种成像条件和干扰因素可能造成读数识别困难,为确保读数识别效果,有针对性地对检测到的仪表读数区域进行后处理操作,主要包括:将检测阶段与识别阶段关联,利用透视变换对检测到的读数区域子图和相应数字中心概率图的方向和尺度进行同时校正;通过分析光照影响进行图像对比度增强。
(3)读数识别阶段:无需字符分割,以序列识别方式直接整体识别仪表读数[8]。但不同于直接将读数区域子图像送入CRNN模型[9]识别的方法,本文采用基于注意力机制引导的方式来改善CRNN识别效果,故称之为AG-CRNN(attention guided CRNN)模型。具体做法是:将后处理得到的仪表读数区域子图像和对应数字中心概率图进行通道融合后输入专门训练的AG-CRNN模型,得到读数数字序列识别结果,同时针对不同仪表小数点显示差异性较大的问题,再次基于传统图像处理方法识别出小数点,从而得到最终识别结果。
2 仪表读数识别方法
2.1 读数字符检测
根据段码LCD仪表图像的特点,本文基于CRAFT模型进行改进,提出了M-CRAFT模型,如图2所示。M-CRAFT以Resnet34[10]替换原VGG-16作为骨干网络,以轻量级FPN[11]作为不同尺度特征的融合网络,最终输出尺寸为原图一半的2通道特征图,即数字中心概率图和字符连接关系图。Resnet34主干网络中1/n(n=2,4,8,16,32)表示该层特征图与原图相比的尺寸缩放比例,轻量级FPN网络中Dwise表示深度可分离卷积,up×n(n=2,4,8)表示特征图上采样倍数。由于M-CRAFT模型专门针对七段码数字字符进行训练,数字中心概率图表示仪表图像中每个像素位置为七段码字符中心的概率,用于确定仪表读数中每个七段码字符的位置,而字符连接关系图则表示同一读数区域中七段码字符的连接关系,用于确定读数区域的边界位置。
图2 M-CARFT模型的网络结构
在对仪表图像进行标注时,M-CRAFT与CRAFT一样使用高斯热力图的形式定义数字中心概率图,不同之处在于前者改变了字符连接关系图的定义方式。由于仪表同一读数区域里的七段码字符呈直线布局,M-CRAFT用同一读数区域相邻七段码字符之间中心线附近的四边形连接起来的二值图作为字符连接关系图。如图3所示,包含两个读数区域的图3(a)的数字中心概率标签图为图3(b),字符连接关系标签图为图3(d),它按图3(c)所示的方法生成,先初始化一个和原图同尺寸的全0值图,然后对于任意两个相邻七段码字符,在前一字符最小外接矩形框左侧和后一字符最小外接矩形框右侧的1/3和2/3高度处各取一个点连接成四边形,并将四边形以内像素值置1即可。
M-CRAFT模型训练采用的数字中心概率损失函数、字符连接关系损失函数及总损失函数分别为:
(1)
(2)
Ldet=Lcenter+Llink
(3)
(a)原图 (b)数字中心概率标签图
2.2 仪表读数区域后处理
对读数字符检测模型的输出进行后处理,其目的是为了给仪表读数识别模型提供更合适的输入,提高数字识别准确率。由于成像视角的原因,非正对拍摄情况下仪表图像中读数区域可能是倾斜的,同一读数区域中七段码字符尺度也可能不一致,一般表现为向一边逐渐变大或逐渐变小的趋势。实际应用场景下这种干扰几乎不可避免,如果直接裁剪这样的读数区域子图进行识别则效果较差,因此本文根据前述读数字符检测网络得到的结果,采用传统图像处理方法,一方面进行读数区域的边界拟合并求解透视变换矩阵,来实现读数区域的方向和尺度校正,另一方面针对特殊情况下的小尺度数字字符进行判定和拉伸,同时针对光照不均造成的图像质量问题进行对比度增强。
对二维平面图像的透视变换一般可表示为:
(4)
令a33=1,可将式(4)展开得:
(5)
由上式可见,根据8个方程便可求解透视变换矩阵中的8个未知数,因此在变换前、后的图像中找出4组对应像素点坐标即可。在本文方法中,将包含读数区域边界的紧凑四边形4个顶点与后续数字字符序列识别模型需要输入的矩形子图像的4个顶点建立对应关系求解透视变换矩阵,可一步实现读数区域子图像及其对应的数字中心概率图的方向和尺度的校正。
因LCD仪表读数区域不存在弯曲现象,可使用分水岭算法对数字中心概率图二值化,再使用最小二乘法分别对读数区域数字字符的上、下边界点进行直线拟合,并结合字符连接关系图确定的读数区域起止位置信息,即可确定包含读数数字字符的紧凑四边形。
设识别模型输入图像尺寸为W×H,坐标(0,0)、(W-1,0)、(0,H-1)和(W-1,H-1)分别与上述紧凑四边形4个顶点坐标(xi,yi) (i=1,2,3,4)对应。代入式(5),得:
(6)
解式(6)即得透视变换矩阵,将其应用于紧凑四边形包围的读数区域和对应的数字中心概率图即可实现方向和尺度的同时校正。
另外,借助传统图像处理方法的优势,针对某些LCD仪表读数可能存在小数最后一位高度明显偏小的情况进行特殊处理,先通过连通域分析判断最后一位是否为小尺度数字,若是则按归一化高度与自身高度的比值进行扩展。
同时,为减少光照不均的影响,按下式进一步计算校正后读数区域灰度图像的平均梯度:
(7)
式中:(i,j)为像素点坐标;Gx为水平方向梯度;Gy为垂直方向梯度。对于G低于指定阈值的图像,使用CLAHE算法[12]进行对比度增强。
对图1中输入图像进行后处理的结果如图4所示,后处理得到的灰度化读数区域子图(图4(f))和相应的数字中心概率子图(图4(e))将参与后续读数识别过程。
图4 输入图像的后处理结果
2.3 读数识别
传统读数识别方法和一些基于CNN的读数识别方法需要将读数区域子图分割成单个数字字符进行识别[13],其效果易受成像干扰因素和分割算法性能的影响。本文方法在读数识别阶段将读数区域子图作为整体进行序列识别。一般来说,直接输入读数区域子图到CRNN模型即可,但为了有效利用数字中心概率图,这里将其视为注意力引导图用于辅助训练CRNN,即AG-CRNN模型。在数字中心概率图中,数字字符中心处的数值最大,远离中心时数值逐渐减小。将数字中心概率图与读数区域子图进行信息融合,使得模型在提取特征时更关注数字区域。具体实现时,本文将后处理阶段最终得到的读数区域子图和数字中心概率子图进行通道融合后输入AG-CRNN模型。在结构设计上,AG-CRNN只需改变原CRNN的输入通道数,之后同样使用“CNN+RNN+CTC”的网络结构得到识别结果。
AG-CRNN模型训练采用CTC损失函数[14]。由于识别模型训练效果对检测模型的最终结果影响较大,因此AG-CRNN模型采取先独立训练再协同训练的方式进行。在独立训练阶段,不依赖M-CRAFT模型的预测结果,直接根据训练样本真实标签裁剪得到读数区域子图和对应数字中心概率子图进行训练,直到模型收敛;在协同训练阶段,采用已收敛的M-CRAFT模型预测的读数区域来裁剪图像,并过滤掉检测误差较大的样本,继续训练得到最终的AG-CRNN模型。
需要说明的是,小数点是段码液晶仪表读数中的特殊字符,实际应用中不同仪表显示的小数点差异较大,本文通过实验发现使用CRNN模型识别小数点效果不佳,因此AG-CRNN模型只用于识别数字序列,小数点识别仍然采用传统图像处理方法。由数字中心概率图可得单个字符的位置信息,若小数点存在,则其必定位于相邻数字字符中左边字符的右下方,且其灰度与字符笔划灰度接近,因此通过对去噪并二值化后的读数区域子图进行连通域分析即可准确检测小数点位置。将数字序列识别结果与小数点识别结果相结合就得到最终的仪表读数结果。
3 实验与结果分析
3.1 参数设置
本文采用文献[5]中以及自主采集的共913幅不同类型段码LCD仪表图像组成数据集,包含了视角倾斜、光照不均、码字尺度变化、表盘外观变化、读数区域数量变化等多种情况,其中730幅作为训练集,183幅作为测试集。训练M-CRAFT模型时,网络输入图像像素缩放成320×320,训练AG-CRNN模型时,网络输入图像像素缩放为128×32。为提升模型鲁棒性,采用随机裁剪、随机旋转、对比度增强等操作进行数据增强。实验采用Pytorch框架,NVIDIA Quadro GP100 GPU,CUDA版本11.1,cuDNN版本7.5,检测网络使用Adam梯度下降法,识别网络采用Adadelta梯度下降法,初始学习率为0.01,动量为0.9,批大小为16,独立训练阶段迭代150次,协同训练阶段迭代100次。
3.2 结果及分析
对于读数检测模型,使用精确率(Precision)、召回率(Recall)和F1值作为评价指标:
(8)
(9)
(10)
式中:TP为七段码数字被正确检测的数量;FP为仪表背景被错误预测为七段码数字的数量;FN为七段码数字被错误预测为仪表背景的数量。本文采用交并比(intersection-over-union,IoU)判断是否检测到七段码数字,根据设置的IoU阈值(本文取0.5)计算Precision和Recall值。
对于读数识别模型,采用读数识别准确率作为评价指标,即正确识别样本数与总样本数之比。
为了检验本文的注意力引导策略和协同训练策略对识别效果的影响,首先进行了消融实验研究,结果如表1所示,可以看到,两种策略对提高识别准确率均有明显作用。
表1 识别模型的消融实验结果
为了进一步验证本文方法的综合性能,将其与几种典型的深度学习方法进行对比,实验结果如表2所示。表2中,FOTS[15]是一种端到端的区域级文本检测与识别方法,“DB+CRNN”是区域级字符检测网络DBNet[16]与CRNN相结合的识别方法,这两种方法不能进行单字符定位,故其单数字字符检测指标为空;“CRAFT+CRNN”是字符级检测网络CRAFT与CRNN相结合的识别方法,可进行单字符定位及读数区域定位。
由表2可见:在单数字字符检测方面,本文方法的Recall指标与CRAFT+CRNN方法接近,且Precision和F1指标较后者对应指标有所提升;在读数区域检测方面,本文方法除了Precision指标稍低于CRAFT+CRNN方法之外,Recall和F1指标在4个方法中都是最高的,表明本文方法截取的读数区域子图更有利于识别;本文方法对于CRAFT+CRNN方法的改进策略取得了较好的效果,显著提升了最终的读数识别准确率,达到98.9%,是对比方法中最高的。
表2 采用不同深度学习方法的实验结果对比
图5展示了部分典型测试图像的读数识别结果,由图可见,本文方法能较好地处理成像时视角倾斜、光照不均、七段码字符尺度变化、仪表表盘外观变化以及存在多个读数区域的情况。
图5 典型测试图像读数识别结果展示
4 结语
本文提出了一种针对多干扰环境下的七段码式液晶显示仪表读数识别方法,其主要特点在于:①针对实际应用中段码液晶仪表图像的特点,将深度学习和传统图像处理方法相结合,设计了改进的仪表读数检测模型和读数序列识别模型,并采用一系列仪表读数区域后处理方法来克服多重干扰的影响,搭建了检测模型和识别模型之间的桥梁,三阶段无缝连接可极大提高仪表读数的识别准确率;②针对段码读数字符检测任务,采用Resnet34主干网络和轻量级FPN模块改进了CRAFT模型,从字符级和区域级两个层面定位仪表读数区域,定位精度更高,有利于后续读数识别;③针对读数识别任务,采用注意力引导策略改进CRNN序列识别模型,并采用先独立训练再协同训练的方式有效提升识别模型的准确率。
在测试数据集上的实验结果显示本文方法的 鲁棒性优于对比方法,取得了高达98.9%的仪表读数识别准确率。本文方法亦可推广用于解决其他数显仪表(如字轮式仪表)的读数识别问题。后续研究可进一步优化模型结构和性能,进行轻量化改造,以期将该方法部署到算能有限的移动式或嵌入式终端设备上运行。