APP下载

基于深度学习的微观芯片字符识别系统

2022-08-09李晔彬刘娟秀王旭东王兴国

兵器装备工程学报 2022年7期
关键词:字符卷积芯片

李晔彬,刘娟秀,王旭东,王兴国

(1.电子科技大学 光电科学与工程学院, 成都 610054; 2.电子科技大学 智能显微技术联合研究中心, 成都 610054)

1 引言

在工业芯片生产过程中,厂商往往在每一颗生产的芯片表面上加工字符,芯片字符由一串数字和字母组成,作为芯片的唯一标识,以方便芯片整个生命周期的追溯和管控。目前,现有工业芯片上的字符识别方法存在效率低、精度和鲁棒性差等一系列问题,而且流程复杂,需要人工全程在现场勘误并记录结果,无法满足工业现场的字符智能化识别需求。相较于传统方法,深度学习就体现出巨大的优势。深度学习可以让计算机自动学习样本特征,并将特征学习融入到建模的过程中,从而减少人为设计特征的不完整。目前深度学习在OCR领域的主要应用是宏观自然场景下字符识别和文档识别两大方面,而对于微小半导体芯片上的微观字符进行光电成像识别还尚未有大量的应用。

本文中将深度学习应用到微小半导体芯片上的微观字符识别,提出了一种基于深度学习的面向显微光学的智能字符识别系统,显著提高了识别正确率,实现工业芯片字符识别的智能化。

2 检测与识别算法设计研究

本文中提出的OCR系统分为文本检测、方向分类和文本识别3个阶段,3个阶段分别训练深度模型最后进行串联检测。文本检测基于最新的DBNet模型,负责检测图像中的字符区域并将文本框变成水平方向。方向分类基于一个二分类网络,可判断文本是否是颠倒的,如果是则旋转180°再识别。文本识别使用一个基于CNN的字符识别模型,可处理检测到的文本框,识别其中包含的字符。本文中提出的OCR系统结构如图1所示,在识别过程中,首先将训练好的深度学习模型部署在服务器上,然后通过显微镜采集芯片的显微图像并上传到服务器,图片在服务器端经过深度学习模型的识别推理之后得到相应的识别结果并返回给前端界面,在前端界面可以实时查看识别结果,从而能够更好地反馈指导芯片前段的工艺制造过程。

2.1 文本检测模型

本研究中检测的目的在于定位图像中的字符区域。在OCR系统中,使用基于分割的DBNet文本检测算法,可以得到字符区域的包围框,而且DBNet的后处理比较简单,整体推理速度非常快,方便实际应用。为了提升检测速度,将DBNet的特征提取器更换为了MobileNetV3。文本的检测模型结构如图2所示,首先图像后经过特征提取器和特征金字塔(feature pyramid networks,FPN)得到4张大小为原图的1/4、1/8、1/16、1/32的特征图,然后将这些特征图分别上采样至原图的1/4大小,并将它们进行特征融合,得到特征图,由得到概率图(probability map)和阈值图(threshold map),通过和计算可以得到近似二值图B(approximate binary map)。最后根据B计算损失函数,反向传播进行参数优化。

其中分别通过一次卷积操作和两次反卷积操作得到和,其中卷积操作的卷积核大小为3×3,反卷积操作的卷积核大小为2×2,卷积步长为2。具体过程为先经过卷积层,将通道压缩为输入的1/4,然后经过归一化和ReLU激活函数计算得到相应的特征图;然后将得到的特征图进行第一次反卷积操作,得到的特征图大小为原图的1/2大小;再进行第二次反卷积操作,输出的特征图通道为1,其大小与原图大小相同;最后经过sigmoid激活函数,输出概率图和阈值图。

最后和是经过一个可微分二值化公式,计算得到了近似二值图B。由于标准二值化的结果只有0和1两个值,导致训练过程中梯度不可微,无法使用梯度下降法优化网络。为了解决梯度不可微的问题,文本检测引入了可微分二值化

(1)

式中:其为概率图;为阈值图;为放大倍数。

图1 面向显微光学的智能字符识别系统结构示意图

图2 检测模型结构示意图

2.2 方向分类器

由于芯片上的字符序列都是横排的文本行,为了保证后续字符识别阶段的效果和效率,希望检测模型输出的文本框都是水平的且字符是正向的,如图3(a)所示;如果文本行是倾斜或颠倒的则会导致后续识别错误。这里通过检测框矫正和方向分类器来实现。文本检测模型输出的包围框是一个不规则的四边形,由4个顶点的坐标来表示。为了将其变为规则的矩形,通过仿射变换将这个四边形变成水平方向(长边在水平方向)或竖直方向(长边在竖直方向)的矩形,并对于竖直方向的矩形将其旋转90°变为水平方向。经过上述处理后所有输出检测框变为水平方向的检测框。然而矩形框内的文字内容可能是180°颠倒的,如图3(b)所示。经过大量实验验证,字符识别网络对于倒立的字符识别效果不佳。因此,使用一个基于二分类网络的方向分类器判断文本框的旋转角度是0°还是180°,如图4所示,并根据分类结果将旋转后的文本框输入至字符识别网络进行识别。

图3 方向分类数据示例图

图4 方向分类器网络结构示意图

2.3 文本识别模型

文本识别阶段是基于CNN模型和CTC损失来生成每个字符的转录,如图5所示,首先图片经过特征提取器ResNet34得到特征图,将其输入至全卷积网络中得到特征序列以及它的概率分布,最后经过CTC解码得到最终的输出结果。因为芯片字符序列中字符与字符之间无明显上下文关系,所以不需要使用显式的递归模块或者任何注意机制,而是直接生成每个字符的概率。卷积操作可建模字符之间的交互关系,计算效率更高。

图5 识别网络模型结构示意图

该模型使用CTC损失进行训练,它解决了2个问题,一是不需要字符级的标注,只需根据神经网络输出的特征向量和相应的ground-truth(GT)文本输入到CTC损失函数中进行计算。二是对于解决编码重复的字符,通过引入一个伪字符(比如空格),在编码时可以在任意位置插入任意多的空格,在解码时删除空格,但是必须在重复的字符之间插入空格。CTC损失理论上可以预测任意长度的文本。

3 实验过程

3.1 数据来源与数据标注

模型训练所需的芯片图片数据由四川光恒公司提供,芯片型号为DFB半导体芯片。通过光学成像显微镜拍摄芯片字符图片共得到2 026张。原图为1 280×960像素大小的图片,其中字符区域只占了很小一部分,需要对原图进行标注,得到模型训练所需的图片和对应的标签。

首先使用矩形框将字符区域在原图中框出并记录从矩形框的左上角开始顺时针依次得到的4个点坐标即文本检测网络需要的标签。然后将矩形框中的区域从原图中裁剪出来,并将其中的文字内容记录下来得到字符识别网络所需的图片和标签。最后把识别所用标签的文本内容替换为0°和180°,就得到方向分类器所需的标签。

3.2 数据扩充与增强

为了能够获得良好的字符识别性能,数据集应包含较大数量的芯片图像数据,尤其是包含所有可能出现的字符且各个字符的分布是均匀的,否则可能导致部分字符识别错误。然而获取大量数据需要花费较长时间且人工标注较昂贵,此外DFB半导体芯片未进行大批量生产,数量有限。因此所收集数据集中图像数量较少,不足以训练字符识别网络,需要进一步对数据集进行扩充。统计了数据集中各个字母和数字在训练样本中出现的频次,对于出现频次较少的字符进行数据扩充处理。具体的扩充手段是通过传统图像处理的方法,将待扩充的字母或者数字剪切出来,然后将它们与其他字母和数字进行随机组合从而得到一批新的数据。合成图像与其对应的标签如图6所示。

图6 数据合成示例图(左侧为合成数据 右侧为对应标签)

合成前后的数据集如表1所示。合成前后数据集中各个字符的分布情况如图7、图8所示。

表1 合成前后的数据集

图7 数据扩充之前各个字符数量统计直方图

图8 数据扩充之后各个字符数量统计直方图

考虑到实际工业环境的复杂性,显微镜采集到的原始图像存在几何位移和光照不均匀等问题,会对检测识别造成较大影响,所以在网络的每一轮训练过程中使用数据增强提高算法的鲁棒性。数据增强方式包括:随机旋转、随机模糊、随机锐化、随机亮度、随机噪声。

3.3 评价指标

在深度学习中,Precision是检索到的相关实例的比例,Recall是实际检索到的相关实例总数的比例。精度-查全率(PR)曲线是精确值在轴上,查全率值在轴上的图表。是曲线与轴、轴所围成的面积,是目标检测中广泛使用的评价指标。对于检测任务,使用Precision、Recall和Hmean来衡量模型的性能,公式如下:

Recall():可与预测框匹配的真值框占所有真值框的比例。

(2)

Precision():可匹配真值框的预测框占所有预测框的比例。

(3)

Hmean():为和的调和平均数。

(4)

式中:代表正类判定为正类;代表父类判定为正类;代表正类判定为负类;代表负类判定为负类。

对于识别模型,使用正确率和误检率作为衡量指标,正确率是正确识别的图片数占所有图片总数的比例,误检率代表将一张正常图像识别错误的概率。

精度的计算是基于对整个验证集的预测统计量的准确性。为了精确计算,一个预测只有在预测字符和真值完全匹配时才被计算为正,准确率指标提供正确识别单词的百分比信息。

推理时间:检测模型的推理时间表示为检测所花费的时间和计算图像中所有可见文本边界框的时间。识别模型的推理时间表示为运行识别模型识别每个检测文本框所花费的时间。使用单个GPU下检测和识别串联推理运行时间作为系统最终的推理时间,单位为秒(s)。

4 实验结果及分析

在文本检测阶段使用1 826张图片作为训练集,剩余200张作为测试集。在字符识别阶段将扩充后的数据集划分为训练集和测试集,分别为21 549张图片和2 400张图片。方向分类器同样使用扩充后的训练集和测试集。

本文的算法基于paddlepaddle框架,环境:Window 10(64bit)Intel(R)Core(TM)i7-5960xmCPU@3.00GHz,NVIDIA GeTorce GTX 1080 Ti GPU。

同时,在云端完成识别推理之后,用户不需要再去工业现场回收结果,可以直接在云端工作台远程查看、统计并分析识别结果,如图9所示,极大地提高了效率并简化了整个工业流程。

图9 云端可视化识别结果界面

在该OCR系统中,文本检测部分是推理过程中计算量最密集的部分同时也是最耗费时间的部分。考虑到实际的工业现场中的高实时性和易部署的需求,选取了DBNet作为检测网络,因为它可以在分割中执行二值化操作,自适应设置二值化阈值,简化了后处理,使得它相较于其他检测网络更加高效。并且对比了不同backbone下DBNet的性能。backbone这个单词原意指的是人的脊梁骨,后来引申为支柱,核心的意思。在神经网络中,尤其是计算机视觉(CV)领域,一般先对图像进行特征提取(常见的有vggnet,resnet,谷歌的inception),这一部分是整个CV任务的根基,因为后续的下游任务都是基于提取出来的图像特征去做文章(比如分类,生成等等)。所以将这一部分网络结构称为backbone。更换对比了backbone后最终选取了MobileNetV3作为文本检测网络的backbone,如表2所示,在保持较高检测精度的情况下提升了模型的运行速度同时使模型更加轻量,方便在终端部署。

表2 不同Backbone下检测网络性能参数

对于文本识别模型,因为其计算量相较于文本检测要小很多,训练和推理的速度都很快,所以更关注它的正确率指标。同样也对比了不同backbone下识别模型的性能,在考虑了速度和准确率之后选取了ResNet-34作为识别网络的backbone,如表3所示。

表3 不同Backbone下识别网络性能参数

此外,深度学习里面所谓的卷积运算是将图像矩阵中,从左到右,由上到下,取与卷积核同等大小的一部分,卷积核滑动的同时,每一部分中的值与卷积核中的值对应相乘后求和,最后的结果组成一个矩阵。滑动卷积核时,我们会先从输入的左上角开始,每次往左滑动一列或者往下滑动一行逐一计算输出,将每次滑动的行数和列数称为步长。步长的作用就是成倍缩小尺寸,比如步幅为2,输出就是输入的1/2;步幅为3,输出就是输入的1/3。以此类推。

本文中所使用的芯片图像经过检测网络之后会得到一个矩形的文本框切片,然后这个文本框切片作为输入进入到识别网络。由于这个文本框的长宽比相对较大也就是它的宽度本身就比较小,如果在识别网络训练过程中对宽度方向不断进行下采样压缩,那么竖直方向的特征就很不清楚。因此,只对水平方向进行下采样。也就是说,将所使用的骨干网ResNet-34的水平卷积步幅更改为2,垂直卷积步幅更改为1,尽可能保留宽度上的序列信息,以保留更丰富的文字信息。

经过训练测试在测试集上的识别准确率由0.986提高到0.987,识别精度提高了0.001。

最后为了检验该OCR系统的性能,在测试集上对比了现有的几种常见的OCR识别算法,如表4所示。

表4 几种字符识别算法结果

由于图片中待识别的字符区域占整张图像的比例较小,并且是短文字行,所以一些基于回归的目标检测算法如 Faster-RCNN和主流的识别算法如CRNN效果并不理想。端到端的识别算法虽然模型更小、速度更快,但并没有针对颠倒的文本行做特定的处理,所以对颠倒的文本行虽然可以准确检测出字符区域却无法准确的识别。本OCR系统采用了DBNet文本检测网络和基于CNN模型的字符识别网络,并针对颠倒的文本行专门加了方向分类器进行角度判断,在工业芯片字符的识别中实现了准确率高达99%识别效果。综上对比分析,本OCR系统在工业芯片字符识别中具有更高的性能。

表5 测试结果统计

5 结论

2) 通过数据增强、数据扩充和网络优化,有效对背景进行抑制,正确识别工业环境下光照不均匀、芯片脏污等复杂背景下的芯片字符图像。

3) 所设计的OCR系统速度达到平均0.56 s/张,识别结果在云端远程查看,无需人工现场回收结果,有效地节省了人力、提高了效率,对实现工业智能化检测具有重要意义。

猜你喜欢

字符卷积芯片
芯片会议
基于全卷积神经网络的猪背膘厚快速准确测定
基于FPGA的卷积神经网络加速优化方法
基于图像处理与卷积神经网络的零件识别
Python实现图片转字符画
正则表达式快速入门
基于深度卷积网络与空洞卷积融合的人群计数
图片轻松变身ASCⅡ艺术画
装错芯片的机器人
视频监视系统中字符叠加技术的应用