基于机器视觉的多种类标签识别方法研究
2023-03-23朱传浩欧阳八生
朱传浩,欧阳八生
(南华大学机械工程学院,湖南衡阳 421001)
0 引言
印刷标签主要用来介绍生产厂家的有关信息,标明产品参数。在产品发生故障的过程中,便于对产品进行追踪。由于现在不同产品所需标签不同,同种标签所需型号不同等,标签类型也变得各式各样。目前针对字符识别研究方法,主要分为人工检测和机器视觉检测[1]。人工在长时间检测过程下容易对标签的识别产生误判,且检测的效率低、成本较高。而机器视觉在光照环境、字符缺陷、标签种类多样的影响下,检测与分类结果也会产生较大误差。因此,针对标签印刷过程中产生的字符缺失、印刷不清、字符连接等原因造成的识别问题,提出了一种基于机器视觉的多种类标签识别的改进方法,可以有效提高标签字符识别的准确性,降低时间成本。
在字符识别的相关研究中,马玲等[2]提出了基于模板匹配和支持向量机的点阵字符识别方法,字符识别率达到96.10%。靳彩园等[3]选用一种自适应调节学习率和动态调整S 型激励函数相结合的改进BP 算法对字符进行精确识别。杨桂华等[4]利用机器视觉,设计了一种基于生成基准图像的电表铭牌视觉检测方法,结果表明该方法对电表铭牌印刷缺陷检测有较好的鲁棒性,能准确检测出电表铭牌的多种印刷缺陷。
传统基于模板匹配和字符分割识别方法虽然识别效率较高,但对于字迹模糊和字符粘连标签的识别准确率有所欠缺。而改进BP算法由于较深的网络结构,识别效率相对较低。针对这个为问题,本文首先对倾斜、弯曲字符进行畸变矫正[5],对图像进行灰度化处理,通过高斯滤波降噪,最后对图像进行Otsu 算法二值化得到预处理结果,再基于一种改进的CRNN+CTC 算法进行识别。
1 图像识别系统
标签字符识别方法由硬件系统和软件系统两部分组成。硬件系统为工业相机、50 mm FA 镜头、120 mm 30°的环形光源和标签识别工件,其采样平台结构如图1所示。
图1 采样平台结构
硬件系统参数配置如图2 所示。相机视野为71 mm×60 mm,分辨率为0.029 mm/pixel。
图2 硬件系统参数配置
软件系统由图像信息采集模块、图像预处理模块、标签字符算法识别模块组成。标签字符识别软件系统的流程如图3所示。
图3 字符识别系统流程
2 标签字符识别过程2.1 字符畸变矫正
由于印刷标签的材质较软,某些标签的表面有弧度,所以需要对图像进行畸变矫正。选取标签字符的最小外接矩形与标准标签模板进行比较,并对最小外接矩形进行稳健回归[6]。然后利用标签字符的最小外接矩形对字符的外边框进行拟合,计算出字符区域的4个顶点坐标;最后,运用透视变换对字符进行畸变矫正。该方法计算复杂度较低,对于解决标签边缘信息缺失、字符粘连等情况,有良好的修复效果。
2.2 图像预处理
2.2.1 图像灰度化
灰度化[7]的过程就是把彩色图像转化为灰度图像,将一般格式的图像转化为灰度图可以减少后续图像的计算量。灰度图像描述反映了整幅图像的整体和局部的色度和亮度等级的分布和特征。不同种类标签灰度化效果如图4所示。
图4 标签灰度图
2.2.2 图像增强
图像增强的主要目的是提高图像的质量和可辨识度,有利于进一步分析和处理图像特征。为了减少在图像边缘和图像轮廓模糊的情况出现,就需要利用二阶微分拉普拉斯算子进行图像锐化。其公式如下:
通过图5的对比可发现,拉普拉斯算子补偿了图像的轮廓,图像的边缘有所增强,字符的对比度变得清晰。
图5 Laplacian算子处理对比
2.2.3 滤波
图像滤波[8]的目的是消除图像中参杂的噪声,为图像的识别抽取图像特征。本文选用高斯滤波,首先图像的逐个像素是由高斯核进行卷积,得出每个像素值。然后利用周围像素的值,将距离作为权重计算卷积核中心位置的像素。N维空间正态分布方程和二维空间正态分布分别为:
式中:(u,v)为点坐标,在图像中为整数;σ为标准差,标准差代表着数据的离散程度,σ越大,高斯函数越平滑,数据的离散程序越大。
构建一个5×5 的卷积层,对电机牵引器字符进行高斯滤波处理,如图6 所示。实验证明,高斯滤波能够较好地去除图像上随机出现的高斯噪声,但是在去除噪声的同时,也会使图像变得模糊。
图6 高斯滤波处理对比
2.2.4 二值化
图像二值化[9]就是对图像上的像素点的灰度值设置为0或255,将整个图像表现出明显的黑白效果。阈值的选取有以下两种方法:固定阈值法和Otsu法。
固定阈值法是将输入图像的所有像素点进行统一,固定使用同一个阈值。其基本思想如下:
式中:T为全局阈值。
Otsu 算法又称为最大类间方差法,该方法主要是通过阈值进行前后背景分割,使类间方差最大,错分概率最小。本文采用Otsu 法求阈值二值化,结果如图7所示。
图7 Otsu法求阈值的二值化结果图
式中:w0为前景点所占比例;w1为背景点所占比例,w1= 1-w0;u0为前景灰度均值;u1为背景灰度均值,u=w0·u0+w1·u1为全局灰度均值。
目标函数g越大,t就是越好的阈值。
2.3 字符识别算法
本文改进的CRNN+CTC 多种类标签识别算法是由一个多层次网络模型构成,主要包含CNN、RNN 和CTC 三个网络模型。使用深度CNN 提取输入图像的特征来得到特征图;再使用双向RNN(BLSTM)对特征序列进行预测,学习序列中的每一个特征向量,最终输出预测标签分布;使用CTC 损失,把从循环层获取的一系列标签分布转换成最终的标签序列。能够有效解决基于字符分割的识别方法在复杂环境下识别准确率不高的问题。
2.3.1 CNN模块
一般的CNN 网络模型是采用VGG-16[10-11],模型是由若干卷积层和池化层堆叠(stack)的方式构成,比较容易形成较深的网络结构,在字符识别过程中会影响算法的效率。本文选择在VGG-16模型的基础上进行改进。
(1)VGG-16 的卷积层是用来设计光学图像的,而本文灰度图的信息量较少,减少了网络的特征提取能力,所以适当删减模型的卷积层数量,提升模型的运算速度。
(2)在VGG-16模型中加入BN 算法[12]和Adam 算法。BP 算法能够提高模型的泛化能力和增强参数的归一化处理;而Adam 算法能帮助加强CNN 模型更新方向的收敛速度。
2.3.2 RNN模块
传统RNN 在进行反向传播的时候,过长的序列导致梯度的计算异常, 发生梯度消失或爆炸。为减低这种影响,本文采用了深层双向BLSTM 网络[13],如图8 所示。双向LSTM 就是在隐层里面分别有一个正向和反向LSTM,来捕捉上文和下文的信息特征,对比于单向LSTM来说,能够获取更多的其他特征信息。
图8 深层双向BLSTM网络结构
处理流程:采用两层各256 单元的双向LSTM 网络,将CNN 模型中得到的40 个特征向量传入LSTM 中,则有40个时间步分别对40个特征向量进行分类。RNN的目标就是根据输入的特征向量预测,获取所有字符的softmax概率分布,这是一个长度为字符类别数的向量,作为CTC 层的输入。将每个时间步输入的特征向量xT进行输出,得到一个所有字符的概率分布yT,后验概率矩阵则是由40个长度为字符类别数的向量构成。
2.3.3 CTC损失函数
输入的各种类标签字符中,由于字符间隔、图像变形、字符模糊等问题,导致同个字符会错误地呈现出其他形式,相邻字符可能会被重复识别。常见的交叉熵函数[14]网络,对这种标签字符长度及数量识别效果不够理想。在CRNN 模型中将一个CTC[15]模型连接在双向LSTM网络层上,完成了端对端字符序列识别。解决了输入数据与给定标签的对齐问题,可用于执行端到端的训练,输出不定长的序列结果。
CTC 模型训练过程中,对于LSTM 给定输入x情况下,输出的l率为:
式中S为训练集。
3 实验和分析
3.1 实验平台搭建
实验选用的软件系统为Windows10,型号为64 位。软件运行环境为64位操作系统下搭建的Halcon 深度学习框架。硬件平台选用Intel(R)Core(TM)i5-9400 型号的计算机,其处理器的主频大小为2.9 GHz。对基于机器视觉的多种类标签识别系统进行设计。
3.2 实验数据
对某公司生产标签进行数据采集,选取2 000张图片进行识别测试。其中1 000张为正常的字符图像,命名为Test1;500张为字符断裂、字符连接缺陷的图像,命名为Test2;500张为光照不同,字迹模糊的图像,命名为Test3。
3.3 实验结果对比分析
3.3.1 实验结果
本文主要从字母数字字符识别率(ACRR)、汉字识别率(CCRR)、标签识别准确度(RA)和字符识别准确度(CRA)4个方面对算法进行评估,如表1所示。其中ACRR 和CCRR 主要是分析模糊字符、字符粘连等识别率低的原因。RA 和CRA 主要是分析改进算法性能,是否能够达到工业要求。
表1 改进CRNN+CTC网络实验结果
由表1可以得出4种评估方法在Test1上都拥有较高的准确率,说明此算法对于完整标签图像能够较好识别。CCRR在3种测试集种识别率为99.2%、95.3%和96.4%,均低于其他评估方法,可得知汉字的识别率是影响标签识别准确度的主要原因。Test2测试集的综合评估指标低于Test3,说明字符断裂和粘连的影响要大于光照和字符模糊的影响。
3.3.2 对比与分析
为比较改进CRNN+CTC算法的识别效果,本文与传统的字符分割法和原CRCC+CTC共3种进行实验效果对比分析。主要分析标签识别准确度、字符识别准确度以及检测速度(T),分析结果如表2所示。由表可以得出,本文改进的CNCC+CTC算法相较于传统分割字符识别算法,在Test2和Test3中RA识别准确率分别提升了6.0%和6.4%,CRA识别准确度上分别提升了11.4%和10.1%,对于模糊字符和字符粘连的情况,满足了工业的需求;原CRNN+CTC算法在3种测试中识别准确率均在96.5%以上,但是在检测速度上消耗时间较长。本文改进算法在Test2和Test3中检测速度上分别提升了19 ms和23 ms,识别效率有大幅度提高。
表2 实验对比结果
4 结束语
通过改进的CRNN+CTC 算法,解决了在各种类印刷字符识别过程中准确率低、分类难的问题。在CRNN 算法中减少模型的卷积层数量,加入BN 算法和Adam 算法,提升了对模型的收敛速度。改进的CRNN+CTC 算法相较于传统字符分割算法解决了识别阶段累计误差的现象,识别的准确率有较大提升;相较于原CRNN+CTC 加强了CNN模型更新方向的收敛速度,使识别速度更快。
目前主要是在印刷标签的字符上进行识别方法的研究,对于标签的识别比较单一,未来可以加入模板匹配的算法来对标签的图画进行识别,不仅可以筛选出符合工业生产的标签进行分类,而且两者的结合能够更有效地提高识别的准确率。