基于YOLO_v3和Tesseract5.0的高铁摩擦片编码识别算法研究

2020-12-23 12:59李文龙汪日伟
天津理工大学学报 2020年6期
关键词:字符基线矫正

李文龙,汪日伟

(天津理工大学计算机科学与工程学院,天津300384)

光学字符识别(Optical Character Recognition,OCR)概念于1929年由德国科学家Tausheck最先提出.字符识别中的第一步为去背景,其中去背景根据使用技术的不同分为基于特征的根据特定场景设计的算法和基于神经网络的算法.根据特定场景设计的算法应用广泛,如林辉[1]采用局部阈值法根据车牌的形状特征对车牌进行定位进而提取到车牌的图像信息、冯玉田[2]提出了基于颜色和轮廓的定位算法分割燃气表读数区域.采用神经网络直接提取含有字符的包围框是近来的趋势,如户其修[3]在公式识别系统中使用改进的Faster R-CNN[4]模型对公式进行初始检测时的定位和字符图像提取.更多的有通过CRAFT(Character Region Awareness for Text Detection)[5]网络作为文本检测器,结合CRNN(Convolutional Recurrent Neural Network)[6]网络作为文本识别器;或者通过CTPN(Connectionist Text Proposal Network)[7]网 络 检测文本区域,结合Densenet(Densely Connected Convolutional Networks)[8]网络和CTC(Connectionist Temporal Classification)[9]网络识别文本.

在字符识别领域,涉及的关键技术分为基于先验制定的规则和基于深度学习的模型两大类.基于先验制定的规则主要应用在传统的OCR识别系统中,研究人员根据字符特征设计特征提取码来提取特征.这种针对性的特征设计在特定的场景下取得了不错的效果,但在复杂场景下的表现能力较差,如字体变换、背景干扰、图像模糊和扭曲等.基于深度学习的模型集成了字符检测和字符识别的功能,利用了神经网络中的卷积层作为特征提取器和全连接层作为分类器的功能.避免了手动设计特征提取器的同时识别率又高,但对数据集中样本的丰富性和质量提出了较高的要求.

在摩擦片编码的识别过程中,由于工件表面含有金属粉尘,不适用于二维码的编码方式因此采用的是传统的字母组合数字的编码方式.由金属粉末经过挤压而成的初级摩擦片质地较脆,使用夹具将摩擦片固定后,采用读取固定区域识别编码的方式容易造成工件缺边掉角.因此摆脱夹具从任意位置自适应的获取编码字符区域变得很有必要.不同类型工件的表面粗糙程度不同,分为光滑和磨砂两种类型,因此轮廓分析和字符识别中都需要区别对待.Tesseract5.0使用线条查找算法和基线拟合算法识别并矫正倾斜的文本页面[10-11],线条查找算法依靠过滤后的文本框和线路构建将文本框逐个分配到文本行中,基线拟合算法通过二次样条使用分配到行的文本框拟合出基线,然后通过将基线合理的位移,再通过最小二乘法确定最终的基线位置.最后根据基线来矫正倾斜页面.但是在高铁摩擦片的图像中由于背景区域过大而导致文本框无法拟合出来,而后的线条查找和基线拟合更是无从谈起,因此需要新的倾斜纠正算法.

1 编码识别算法流程

本文提出的高铁摩擦片编码识别算法如图1所示,首先利用YOLO_v3网络检测高铁摩擦片编码并去背景,然后将检测到的边界框适当放大尺寸以防止边界框过小导致裁掉字符边缘.再将编码图像进行倾斜矫正、灰度化、阈值化、限制高度、平滑边缘等操作,最后将图像送至Tesseract5.0识别整行文本.结合YOLO_v3和Tesseract5.0实现编码识别的设计具有实时性、易于部署、稳定性高和准确性高的特点.

图1算法总流程Fig.1 The algorithm flow

2 编码的检测和识别

2.1 YOLO_v3截取编码区域图像

YOLO_v3(You Only Look Once)[12]是一个端到端的基于残差网络和多尺度思想的单级网络,不同于需要进行区域候选的两级检测网络,它将目标检测作为空间分离目标框和类别置信度的回归问题[13],单个神经网络可以从整个图像直接预测目标框和类别的置信度.同时,YOLO_v3在前向预测时通过融合高层和底层特征建立不同尺度的三级金字塔模型,能够适应不同尺寸大小的目标检测的需求.YOLO_v3的网络结构如图2所示.

图2 YOLO v3网络结构示意图Fig.2 The YOLO V3 network structure diagram

YOLO_v3网络由改进自darknet-53的特征提取的骨干网络和多尺度的预测网络组成.其中骨干网络由52个卷积层和23个残差层组成,预测网络由20个卷积层、2个上采样层、2个聚合层和3个全连接层组成.其中多尺度表现为3尺度,尺度一即预测一使用的是经过32倍下采样后的尺寸为13x13的特征图;尺度二即预测二使用的是聚合16倍下采样和32倍下采样的特征图,其中32倍下采样需要经过上采样后再聚合;尺度三即预测三使用的是聚合8倍下采样、16倍下采样和32倍下采样后的特征图,其中8倍下采样先与16倍下采样聚合,结果上采样后再与32倍最大池化下采样聚合.YOLO_v3网络的输入为416×416的三通道彩色图像或单通道灰度图像,输出张量尺度为N×N×[3×(4+1+C)],其中3为三个通道各自的预测值,4为包围框的预测偏差值,1为目标预测,C为数据集中的类别数,N在三个尺度中分别为52、26和13.经过YOLO_v3网络的检测与识别后会获得编码的检测框的坐标,置信度等信息.根据检测框的坐标做图像的剪裁即可去背景,剪裁后的图像进行后续的操作.

2.2 单行字符倾斜矫正算法

倾斜矫正的方法多种多样,但归根结底是通过不同的特征来获取方向信息.如霍夫变换法是基于对文档图像中的各水平边缘特征,利用霍夫变换检测直线来确定倾斜方向.戈嘉宇[14]在身份证识别系统中基于人脸和国徽这些局部特征,通过使用深度学习Lenet模型来获得旋转信息.在本文中是基于字符图像的轮廓特征,根据轮廓的宽度和高度特征来筛选编码字符的轮廓.

为了处理单行字符倾斜矫正的问题,本文提出了对灰度化、阈值化后的编码字符图像进行轮廓检测,再对还有字符的轮廓进行最小包围矩形的检测,最后根据最小包围矩形中心的坐标拟合出一条基线.根据基线的方程来确定矫正倾斜字符图像的变换方程,示意图如3所示.

图3字符倾斜矫正示意图Fig.3 The Character skew correction diagram

假设n个最小包围矩形中心的坐标为{(x1,y1),(x2,y2),...,(xn,yn)},由最小二乘法拟合出的基线L方程为{x1,y1,sin(α),cos(α)},其中(x1,y1)为基线上的某一点,α为基线与x轴正向的夹角.则调整图像的角度为β,α与β的关系为

其中,α∈[90°,-90°].

设待旋转调整图像的中心坐标(cx,cy),图像的宽为w,高为h.则变换矩阵T为

为了使旋转中心为图像的中心,为旋转矩阵增加平移量后的变换矩阵为

2.3 调整字符编码区域

2.3.1 放大编码字符区域

经过倾斜调整的字符区域虽然达到了字符水平排版布局的要求,但实验发现倾斜调整后的图像存在边角缺失的问题,原因为YOLO_v3检测带有倾斜角度的字符图像时的检测框过小导致剪切掉字符区域的边角部分.被剪切的字符通常为首尾的两个字符,因此这两个字符的特征会不全经常导致后续Tesseract5.0误识别或无法识别,因此需要通过适当放大检测框的尺寸来解决YOLO_v3检测时的边角缺失问题.

解决方案共有三种,方案一为利用YOLO_v3提取字符区域然后进行倾斜矫正.但缺点在于图像掉角后会去掉部分字符信息.方案二为改进后的倾斜矫正方案.首先提取截取编码区域,然后拟合出倾斜矫正的变换方程,由变换方程对原图像进行调整.最后再次利用YOLO_v3截取编码区域.方案二与方案一的区别为第二步倾斜矫正时调整的图像不同,方案一调整的是编码区域图像,而编码区域源图像会缺失边角,因此倾斜调整后仍会残缺.方案二调整的是原图像,将原图水平化调整然后再次调用YOLO_v3提取字符感兴趣区域,即二次检测.但缺点为相比于方案一多调用了一次YOLO_v3网络,因此耗时相对较多.方案三为直接调整放大YOLO_v3的检测框的尺寸,基于检测框的中心放大检测框的尺寸.研究发现方案三简单直接,耗时较少,综合考虑采用方案三的设计.

2.3.2 限制编码图像的高度

研究发现当含有编码的图像高度大于单倍行距的话会导致初始化为单行检测的Tesseract5.0无法正确识别.为了解决图像高度大于单倍行距的问题,拟对含有字符的图像基于基线加以高度限制H.在经过倾斜矫正的图像中字符排列在一条基线L1上,L1可由基线L经过几何变换得到.以基线L1为y轴中心向上取H/2的高度限制,向下取H/2的高度限制.

(xl,yl)为基线L上一点,则经过几何变换后的基线L1上对应的点为(x2,y2),其中

因此在经过倾斜矫正的图像上的y轴上的取值范围为

2.4 Tesseract5.0识别整行字符

Tesseract5.0识别流程包括页面布局分析、文本区域中的组件轮廓分析、斑点的寻找、文本区域中的字符轮廓分析、文本行和单词的查找、字符轮廓组织成单词、双阶段的识别单词、模糊空间和x高度修正[15].针对单个字符串的识别流程为首先利用字符分割器将字符串分割为单个字符,然后输入静态字符分类器、根据分类结果在字典中查找对应结果,如果字典中的结果置信度较高,则送入自适应字符分类器中为训练做准备.否则进行第二次识别,在第二次识别中侧重将第一次识别效果较差的字符串再次进行分割,如果分割后的分类置信度较高则保留分割结果.其中,针对单个字符的分类是利用多边形近似的方法提取到的轮廓特征实现的.在训练的过程中,一组四维的特征向量(x坐标,y坐标,方向,长度)通过聚类的方法从原始的特征向量中得到.在识别的过程中,从原始图像提取到的轮廓特征被切割成与上述四维特征向量等长度的小块,因此在后续的比较过程中可以从四维特征降为三维特征.字符的分类分为两个阶段,阶段一称为类别剪枝亦即将可能的类别缩小在一个很小的范围,通常这个范围为1到10个,使用的是一种近似于局部敏感哈希表的方法.阶段二为将未知特征与剪枝后的缩小列表中的每个原型特征计算距离,根据计算出的特征利用最优算法得到分类结果.在将预处理的还有编码的图像输入Tesseract5.0后,即可获得编码的识别结果,其中包括单个字符置信度、识别框的坐标,识别结果等信息.

3 实验结果与讨论

3.1 实验平台

本文在实验过程中分为用于训练的实验平台和工厂实地部署的工控机平台.在训练过程中可以使用配置较高的显卡平台来加速训练.用于训练的实验平台的软件环境为Windows 10 Enterprise,Opencv3.2.0,CUDA9.2,Cudnn7.1.0,Python3.7.3,VisualStudio Professional 2015等.同时,YOLO_v3的版本为AlexeyAB基于C语言实现的darknet版,这个版本可以编译成动态库实现在工控机上的快速部署.硬件环境如表1所示.

表1实验硬件配置表Tab.1 Experimental hardware configuration table

3.2 性能评估

3.2.1 总体流程可视化

本文总体实验流程如图4所示,首先为从工业相机采集的到的原图像;其次为采用YOLO_v3识别字符区域并对字符区域进行截取的过程;然后反映的是对字符区域图像进行预处理的过程,包括灰度化、阈值化、倾斜矫正、限制旁白高度.最后反映的是利用Tesseract5.0对预处理后的字符区域图像进行识别并显示出结果的过程.

图4原图Fig.4 Original image

3.2.2 编码区域识别对比

通过选取三种不同工况下的图像来对比不同网络对编码区域的识别情况,如图5所示.从图中可以看到YOLO_v3网络识别带有倾斜角度的编码BA98765774时识别框由于不能自适应的调整角度,会带有比较大的冗余区域,而且对于首尾字符的边界剪切严重.对于编码BA98765666识别良好,而对编码BA98766177的尾部识别时会漏检一部分.CRAFT网络的检测框能随着编码的角度自适应的调整,对编码的边界识别的较为精准.CTPN网络的检测框同样能随着编码的角度自适应的调整,但对于残缺的编码会识别不到,如编码BA98765774中的774.对于工况良好的编码识别的较为良好.通过对比可以发现,CRAFT网络的性能优于YOLO_v3网络,而YOLO_v3网络的性能优于CTPN网络.

图5识别编码区域对比图Fig.5 Comparison chart of identification code area

3.2.3 识别精度与速度对比

为了准确评估算法的准确率,分别采用CRAFT+CRNN和CTPN+Densenet+CTC两种算法对图像数据进行检测,获得结果如表2所示.从表中可以看出本文算法在准确率方向优于CRAFT+CRNN和CTPN+Densenet+CTC.CRAFT+CRNN算法在350050型号工件上表现较差的原因为对于残缺字体不能准确的检测和识别,在250040型号工件上表现较差的原因为工件表面为磨砂表面,图像中字体轮廓凹凸不平导致字体轮廓特征不能被识别.在250040型号工件上表现较差的原因为工件经过灼烧后字体内部和边缘出现缺失,导致轮廓特征不明显和缺失现象CTPN+Densenet+CTC表现较差的原因为检测阶段不能检测到残缺字符,识别阶段不能准确区分英文与汉字,准确的说会误将英文识别成汉字,会误将数字识别成特殊字符.本文算法表现良好的原因一方面为在使用YOLO_v3检测阶段适当放大检测区域保证所有字符能被检测到,另一方面与Tesseract5.0针对性的训练有关.

为了准确评估算法的时间性能,分别对比了三种算法的识别用时和识别速度,如图表3所示.从表中可以看出CTPN+Densenet+CTC的时间性能最优,其次是CRAFT+CRNN,最后是本文算法.

表2识别准确率对比表Tab.2 Identification accuracy comparison table

表3识别时间性能表Tab.3 Recognition time performance table

4 结论

本文设计的高铁闸片编码识别算法,使用YOLO_v3网络自适应的定位含有字符编码的感兴趣区域,不会因为闸片摆放角度、不同工件外形、工件表面粗糙程度等因素的变化而导致定位的失败.针对YOLO_v3网络截取字符编码区域过小的问题,提出使用二次定位的方法即定位、矫正、再定位的方法有效解决了截取字符编码区域过小的问题.针对Tesseract5.0自带的文档页面布局分析和倾斜矫正不适用的情形,利用本文提出的单行字符矫正算法对图像进行矫正,有效解决了工件摆放角度不一带来的字符识别困难的难题.最后,将灰度化、阈值化后的字符图像输入到训练好的Tesseract5.0算法中实现字符识别.通过对804张测试图像测试发现,本文设计的高铁闸片编码识别算法具有实时性、准确率高、容易部署等特点,为高铁闸片编码识别即金属表面编码的字符定位和预处理提供了新的思路.

猜你喜欢
字符基线矫正
高度角对GNSS多系统组合短基线RTK影响
论行为主义视野下幼儿学习行为的矫正
GNSS 静态相对定位精度分析与比较
社区矫正期限短期化趋势探讨
一种优化的手写字符自动分割算法
论高级用字阶段汉字系统选择字符的几个原则
宽带发射机IQ不平衡的矫正方法
字符代表几
图片轻松变身ASCⅡ艺术画
新版GAMIT10.70解算GPS/BDS基线精度对比分析