污水处理设备铭牌中字符检测与识别
2022-10-17郭毛琴谢红薇张效良
郭毛琴,谢红薇,张效良
(太原理工大学 软件学院,山西 太原 030024)
0 引 言
我国越来越庞大的工业生产中,设备类型及数量也日趋丰富。设备表面基本都有用于表明设备基本信息的多种类型的字符,在进行设备检修、维护、管理等操作时,采用人工方式统计设备铭牌信息时,需要手动的对信息进行输入整合,这种传统方法效率很低。若采用人工智能技术对设备铭牌中的文本进行检测,依然存在诸多难点:①设备铭牌包括中英文、数字、特殊符号等多种字符,不同的文本类型的文本特征也存在较大的差异,加大了文本检测与识别的难度;②由于图像采集环境和设备参差不齐,使设备铭牌表面的文本出现变形、模糊、光照不均等问题,导致增加了文本区域的噪声,影响文本检测精度;③在自然场景下,采集图像的背景有很大的不确定性,对文本行的检测可能会受到背景的影响,从而增加了检测难度;④在设备铭牌的字符识别过程中,由于文本行长度不一,而且包括多种类型的字符,需要精确识别任意长度的文本序列,存在一定的困难[1]。本文为解决上述问题,分析并改进现有的文本检测与识别算法,提出一种适用于铭牌文本识别的算法模型。
1 相关工作
利用深度学习技术进行文本检测,主流的方法有以下几种。Tian等[2]提出CTPN(connectionist text proposal network)算法,采用FasterRCNN中的RPN(region proposal network)架构,使用VGG16网络作为模型的基础框架。在检测过程中,字符序列的上下文信息十分重要,CTPN算法中借助循环神经网络来获取,使得检测更加有效[3]。Liao等[4]提出TextBoxes检测方法,采用SSD算法结构,支持多尺度训练,是一种端到端的模型结构,检测细长文本行效果较好。Li等[5]提出了PSENet算法,该算法沿用了特征金字塔网络的结构,提出渐进式扩展算法能够实现对弯曲文本的定位,并且能将相邻的文本区域分割开来。Zhou等[6]提出EAST算法,算法中借鉴全卷积网络的架构模式。在像素级层面对图像中的文本信息做出预测,这种方法能实现多方向的检测,与CTPN算法相比,检测中文文本的效果较差。现阶段,利用深度学习技术,对字符进行识别越来越普遍。Shi等[7]提出的CRNN(convolutional recurrent neural network)模型,将卷积神经网络和双向长短期记忆网络连接起来,可以在一个网络中实现特征提取、序列建模和序列分析。而且,该过程中不存在字符分割,可以对不同长度的文本序列进行识别。
由于污水处理设备铭牌的特殊性,需在自然场景下采集的图像中检测并识别多种字符类型。结合实际应用场景,本文提出一种改进的CTPN文本检测算法,该算法在检测网络之前设计图像预处理模块,使用ResNet50网络代替CTPN模型中的VGG16网络,改进了NMS非极大值抑制算法,解决了由于图像倾斜以及复杂背景等影响检测精度的一系列难点。将CRNN文本识别模型整合到检测算法中,可以直接对输入的铭牌图像进行检测与识别,有效提升了检测与识别的效果。
2 算法分析
CTPN算法采用双向的LSTM结构可以实现对多种语言和不同尺度文本行的检测,为解决此算法只能检测水平方向文本行的问题,对传统的CTPN网络模型进行改进。本文提出的AdvancedCTPN文本检测算法由3个模块组成。
2.1 基于铭牌角点的图像校正模块
在采集过程中,由于拍摄角度存在差异,会导致铭牌图像出现倾斜情况,进而导致文本行不是水平的,如图1所示。一般来说,传统的矫正算法可以解决由于拍摄角度而导致的倾斜,比如Radon变换和霍夫变换。采用传统方法进行图像校正时,对噪声比较敏感,而且算法实现比较复杂。在铭牌识别场景中,为同时解决角度倾斜与视角倾斜对文本检测与识别带来的影响,本文提出了一种基于铭牌角点的校正网络。
2.1.1 角点定位网络
在采集的铭牌图像中,由于光照或者拍摄角度的偏差,会导致图像呈现出亮度不均匀状态。为避免由于上述情况导致检测结果不准确,将拍摄的铭牌图片进行处理,原始图像如图2(a)所示,先进行灰度化,结果如图2(b)所示。然后为减少图像中参数个数,使得背景与铭牌更易区分,对灰度图像作局部自适应阈值二值化操作,让图片呈现出黑白效果。由于实际场景中的铭牌图像颜色不完全相同,确定一个固定的阈值来进行二值化,效果并不理想[8]。根据图像的局部像素分布,使得图像中的每一个像素位置都分别对应一个阈值,可以达到较好的处理效果。局部自适应二值化是在计算图像的局部阈值thi时引入一个常量C,公式中像素点i的邻域像素用Ri来表示,在[-20,20]区间中均匀选取10个数值作为常量C的取值,也就是说,通过改变C的值,实现多级的局部自适应二值化,本文实验中将20×20的正方形区域设置为像素点的邻域大小。计算出图像i点的邻域像素的平均值,然后减去常量C得到thi,如式(1)所示。图像灰度化以及二值化的处理效果如图2所示
thi=avg(Ri)-C
(1)
在二值化后的铭牌图像中,根据铭牌形状的先验条件,筛选出符合条件的连通域范围,得到铭牌图像轮廓,如图3(a)所示。将铭牌区域的边界点坐标值记录下来,如图3(b)所示。将边界点坐标进行线性拟合,确定铭牌图像的4条边界线,如图3(c)所示。其中,铭牌图像的4个角点为4条边界线的交点所在位置,如图3(d)中D1、D2、D3、D4所示。在铭牌图像边界的坐标点集合中查找横纵坐标的最值,确定最小外接矩形4个角点的坐标。根据数学运算规则,可以得到:左上点R1的坐标,由图3(d)中直线D1D2上的坐标点确定,横纵坐标的取值分别是D1D2中坐标点的最小值和最大值,即R1的坐标由D1点的横坐标与D2点的纵坐标确定;同理,右上点R2的坐标由D3点的横坐标以及D2点的纵坐标确定;右下点R3的坐标由D3点的横坐标以及D4点的纵坐标确定;左下点R4的坐标由D1的横坐标与D4的纵坐标确定,如图3(e)所示。铭牌角点的确定以及校正过程如图3所示。
2.1.2 图像校正网络
基于上述角点定位网络确定了图像中铭牌的关键点,然后利用透视变换规则,可以将发生形变的区域校正为规则的矩形图像。将倾斜文本校正的同时也一定程度上减少了复杂背景对文本检测的干扰[9]。一般的线性变换是二维坐标之间的变换,也就是说只能实现旋转和缩放。而透视变换的实质是一种非线性变换,其变换过程是将二维坐标转换到三维坐标系中,进行投影运算,得到一个新的二维坐标,即把一个图像平面投影到一个新的平面的过程。由于透视变换过程中涉及到三维变换,所以要引入参数w。假设原始坐标为 (u,v), 由x=x′/w′,y=y′/w′可以得到透视变换后的坐标,两者关系如式(2)所示
(2)
可以推出
x′=a11u+a21v+a31wy′=a12u+a22v+a32ww′=a13u+a23v+a33w
(3)
其中,透视变换矩阵为
(4)
在Transform矩阵中,分块矩阵T1中的a11,a21,a12,a22用于对图像的放大和缩小等操作。T2中a13,a23用于图像产生透视变换。T3中a31,a32表示图像的平移,a33实现全比例变换。全比例变换可以实现图像在二维空间的均匀放大或者缩小,不会发生形变。为实现图像的平移,所以在二维线性变换的基础上增加了一个维度,所以透视变换矩阵为3×3的矩阵。
根据上述规则,可以得到透视变换的表达式为
(5)
其中,以本文的铭牌图像为例,将最小外接矩形的4个坐标点看作是发生透视变换的点,根据上述变换规则,校正效果如图3(f)所示。
2.2 文本检测模块
CTPN算法借鉴了Faster RCNN的anchor回归机制,即用固定大小的滑动窗口实现对尺寸不相同目标的检测[3],在本文中,设置了k个anchor。并且规定每个anchor的宽度为16像素,垂直高度的值在11像素到273像素范围内取10个值,依次除以0.7,所以anchor设置的数量为10个。RPN中的anchor回归机制需要预测4个参数,即 (X,Y,W,H), 其中,候选区域的中心点坐标用X和Y表示,H表示高度,W表示宽度。CTPN算法中W的取值为16像素,anchor的横坐标为X,因此,采用CTPN算法预测文本区域时,只需要学习Y和H两个参数。在铭牌图像中,文字信息具有连续性的特点,使用BLSTM结构可以学习到文本信息的序列特征,以减少信息的丢失。在卷积网络中得到的特征图序列用S表示,将特征序列输入到BLSTM网络中,分别用S与S’代表网络的前向与后向隐含层,经过计算后的特征序列用Q表示,直至在BLSTM网络中将输入序列全部处理完毕后更新输出结果。CTPN算法结构如图4所示。
为更好地适应铭牌图像中文本行的检测,在传统的CTPN算法基础上,做出以下改进。
首先,改进CTPN算法中的特征提取网络。文本能否被准确检测到,会受到特征提取效果的干扰。相比于VGG16,ResNet50卷积神经网络的层数更深,该网络为避免出现梯度消失问题,采用残差跳跃连接的方式[12]。在ResNet50网络中,采用一种不引入额外参数的恒等映射方法,这样不会增加计算的复杂度。由16个残差块叠加组成ResNet50网络,可以训练更深层的网络。残差块的结构如图5所示。文献[12]中的实验数据表明,网络层数更深的ResNet50性能表现要优于VGG16。将ResNet50作为CTPN模型中的特征网络,提取图像中字符特征。ResNet50的参数见表1。
表1 ResNet50网络的参数
在图5中,用k表示输入,WL1和WL2分别表示网络中第一层和第二层的权重,激活函数使用ReLU函数。残差块中第一次输出用F(k)表示,即在第二次使用激活函数之前。在残差块中,最终的输出结果为H(k),在进行二次激活之前加入k,即在一般的两层网络中加入shortcut连接。在没有shortcut路径的VGG16网络中, H(k)=F(k) 是该网络的学习目标。假设将k作为这两层网络的最优输出,对于VGG16网络来说, H(k)=k是它的优化目标。而对于ResNet50网络来说,如果k为最优值,只需学习F(k)=0, 方法就是在初始化每层网络中的参数时偏向0,这样相比于通过更新每层的参数学习H(k)=k要简单,并且收敛速度快。所以,本文中用ResNet50作为特征提取网络。
其次,对NMS算法进行改进。CTPN文本检测算法中,在生成的多个文本候选框中选择效果最好的保留下来,并且去掉多余的,是采用了非极大值抑制算法(non maximum suppression,NMS),如图6所示。NMS算法原理是:检测铭牌图片中的文本行时,即使是同一个文本行,也可能会产生多个存在重叠情况的候选区域,而我们只需要保留效果最佳的。把生成的多个候选框存放在一个初始状态为空的集合中,挑选出集合中得分最高的框,然后与集合中剩余的框计算IOU值,若比给定的IOU阈值大,则删除该候选框[13]。重复迭代以上步骤,直到集合为空。CTPN算法中IOU值表示检测结果X和真实值Y的相交区域与并集区域的比值,计算公式如下
(6)
识别文本候选框中的文字时,如果检测区域过小会造成识别错误,传统的NMS算法会将检测框区域面积较大文字完整的检测框,由于置信分数较低造成误删[10],如图7左边图像中边框①、③、⑤号文本框,就会由于置信分数低而被删除。②、④、⑥号边框置信分数高,但是会丢失边界,即上下左右边界处会有部分文本内容的缺失。为避免将左图中①、③、⑤号文本框误删的情况本文将检测框面积与置信分数两个指标进行综合考虑,检测框最后的得分由面积与置信分数的乘积决定,从而将完整的文本框保留,如图7左边图像中所标注的数据信息,表达式为
score=score×area
(7)
一般的NMS算法中,会设定一个IOU阈值,在执行代码时,使用贪婪算法的思想,直接把大于IOU阈值的候选框删除。由于文本区域的边界难以确定,如果直接删除可能会导致边界丢失,在后续处理中造成识别错误。本文采用区域融合的方法,在对冗余的检测框进行处理时,根据式(6)所示,先将检测框集合中小于置信阈值的检测框删除,将大于IOU阈值的检测框进行融合,即把满足以上条件的检测框进行合并,最大程度上保留具有完整文本信息的文本框。合并之后的结果如图7右边图像中①、②、③号边框所示,而在最终保留文本框的内部区域的检测框都有不同程度上的边界缺失。
2.3 文本识别模块
在进行铭牌字符识别时,由于铭牌图像中字符种类不一,通常情况下是以单词或者文本行的形式存在的,单个字符出现的情况较少。一般来说,对单个字符的识别比较容易,但是会涉及到字符分割。为了避免分割而导致误差的情况, 本文采用卷积循环神经网络(convolutional recurrent network,CRNN),结合时序分类算法(connectionist temporal classification,CTC)搭建网络来识别铭牌图像中的不定长字符序列[7],CRNN将卷积网络与循环网络结合起来。CRNN算法结构如图8所示。
算法处理过程为:将检测到的文本行实例图像作为CRNN模块的输入,首先在卷积神经网络DenseNet[14]中,提取文字的特征信息,并输出高维特征图。然后把特征图输入循环神经网络,采用双向长短期记忆网络对特征序列进行编码,利用上下文信息对文本行的字符序列进行处理会更加有效。最后采用CTC机制进行解码,通过增加空白元素扩展了标签字符集合。在识别算法中,循环神经网络的输出应该和文本图像中的位置一一对应,由于铭牌图像中文本行字符数量、大小等各不相同,若采用手工方式来标记位置,不仅工作量大,而且不能保证输出和字符对应。CTC机制解决了特征序列与文本的对齐问题,能够识别铭牌图像中的不定长文本。
3 总体架构
本文设备铭牌图像中基本信息的采集流程为:首先,使用手机、平板等设备采集图像;其次,对铭牌图像进行预处理,这是为了减少多种因素影响照片成像质量,从而影响文本检测结果的问题;然后,检测与定位铭牌图像中的文本行,并且截取出来;最后,对截取的图像进行字符识别,并保存结果。根据前文中提出的AdvancedCTPN算法,铭牌图像中字符的检测与识别过程如下:
首先,将待检测的铭牌图像输入模型中,进行预处理,目的是输出规则的矩形铭牌图像。
其次,将预处理后的图片输入ResNet50网络,得到深层的特征图,再输入到双向长短期记忆网络中,提取序列特征,生成文本候选区域。
然后,根据文本候选框的得分,采用本文中改进的NMS算法过滤掉效果不够理想的预测区域;将保留候选框的中心点拟合为直线,连接候选区域生成铭牌图像中文本定位结果,并且将定位区域截取下来,输入到文本识别模块中。
最后,识别模块的输入为上一步骤中截取的文本行,根据CRNN算法规则对铭牌中的字符进行识别。图9为铭牌图像中文本行检测与识别的过程。
4 实验与分析
4.1 实验环境与配置
本文提出的算法都是基于深度学习的,硬件的配置对实验结果有一定影响,为保证实验效果,本文在服务器中完成模型训练以及测试。其中,处理器为Intel(R) Core(TM) i7-9750H CPU@2.60 GHz,显卡为GeForce RTX 2080 Ti 10GiB。实验环境Ubuntu 18.04,采用TensorFlow-gpu 1.15深度学习框架,编程语言为Python。
4.2 评价标准
文本检测的评价标准是由精确率(Precision,P)、召回率(Recall,R)和综合评价指标(F-measure,F值)3个指标来确定的。计算方式如下
(8)
(9)
(10)
其中,TP表示正样本预测正确的数量;FP表示将负样本预测错误的数量;FN为正样本预测为负样本的数量。
4.3 模型训练
本文中整个系统由检测模块和识别模块两部分组成,需要分别选取合适的数据集对两个模块进行训练,数据集中样本示例如图10所示。由于在AdvanceCTPN模型中,使用了网络层数较深的ResNet50,而且参数数量较多。使用迁移学习方法对AdvanceCTPN模型进行训练,来提高训练过程中的收敛速度以及泛化能力。使用在ImageNet数据集上预训练的模型对网络参数进行初始化,在ICDAR2003、2011、2013以及COCO-text公开数据集中挑选整合图像,选择与铭牌图像具有相似文本分布特点的广告牌图像,用于提供更多的训练样本, 共选择了3422张广告牌图片,数据集样本如图10(a)中所示。选取AdamOptimizer作为参数优化器,初始学习率为0.001,Batchsize为16,总共迭代20 000次。迭代过程中,每2000次保存一次模型参数,然后选择效果最好的。在识别模块中,用Synthetic Chinese String Dataset中文数据集进行训练,输入图像的分辨率为32×280,包含汉字、数字、标点以及英文等多种类型的字符。Batchsize设置为32,训练过程迭代20 000次。本实验中共采集了724张铭牌图像,为得到检测结果,需将铭牌图像中的文本区域标注出来,标注工具为LableImg。然后进行测试,验证模型是否有效。铭牌数据集中图片样例如图10(b)所示。
4.4 实验分析
按照上述环境配置和设定的参数,完成AdvancedCTPN模型的训练,并在铭牌数据集中测试验证,分析结果。本实验的测试集由724张铭牌图片组成,共计2941个文本行。
实验一:在文本检测模块中,使用VGG16、ResNet50分别对铭牌图像中的文本进行检测,实验结果见表2。分析表2中实验结果,使用ResNet50网络提取铭牌图像中的特征,相比于VGG16网络,文本行检测的精确率P、召回率R以及F值均有提高,由此得出,ResNet50网络在文本检测时提取特征能力更强。
表2 不同特征网络实验结果对比
实验二:对文本检测算法中有无图像校正模块进行对比实验,并且本实验中卷积层网络都使用ResNet50,实验结果见表3。从结果可以看出,增加基于铭牌角点的校正网络,可以将倾斜的图像进行校正,而且很大程度上提升了检测效果,验证了设计校正模块的有效性。
表3 有无校正网络实验结果对比
实验三:使用目前先进的算法对铭牌图像进行文本检测,与本文提出的算法进行比较,从表4中结果得知,改进的检测算法P值为95.8%,F值为93.9%,表现更优。
表4 不同方法文本定位结果对比
实验四:在铭牌字符识别中,用表5的3种模型对文本序列进行识别。实验中,把准确率作为评价指标,实际上就是在铭牌数据集的2491个文本行中,完全识别正确的样本所占的比例,如果出现单个或几个字符错检、漏检都视为识别错误。从实验数据中得出本文的DenseNet+BLSTM+CTC算法识别准确率更高,我们可以根据识别结果对设备参数信息进行采集。改进的NMS算法一定程度上改善了由于边界缺失而影响识别准确率的问题。从结果可以看出,识别算法中使用CTC机制比使用注意力机制的识别准确率要高,增加双向长短期记忆网络也能一定程度上提高识别准确率。
表5 3种算法的识别准确率
5 结束语
本文提出的AdvanceCTPN算法,在采集铭牌图像中的参数信息时,为避免由于文本倾斜而影响文本检测效果的问题,设计了基于铭牌角点的校正网络。为能够更加准确定位图像中的字符序列,将网络层数较深的ResNet50作为骨干网络能够得到更好的效果。为解决由于边界丢失影响识别结果的问题,本文中提出了改进的NMS文本框去重算法。为了能在定位到文本行后直接进行字符识别,在优化的CTPN检测模型中增加DenseNet+BLSTM+CTC识别模型。在铭牌数据集中,AdvancedCTPN模型检测精确率达到95.8%,F值为93.9%,识别准确率为92.6%,效果不错。但是,铭牌图片中存在文本行的分布比较密集的区域,在进行检测时,相邻的检测框可能会重叠,从而影响识别效果。本文中采用的识别算法,当文本行中包含较多字符时,也会出现识别错误的情况,算法还需改进与优化。