针对字符识别算法中常规的BP神经网络算法在训练识别多种类字符时易造成过拟合而导致训练失败,字符识别率不高,传统的模板匹配法对字符识别的效果也不好的问题,提出一种基于PSO改进的BP神经网络字符识别算法。采用粒子群优化算法(PSO)计算BP神经网络的初始权值和偏置,提高了网络的收敛速度和训练过程的稳定性;在常规BP神经网络的基础上加入正则化算法,防止网络训练的过拟合。在选择网络层节点参数的细节上,简化输出层节点数,减少网络的训练参数。最后通过对印刷体字符样本进行识别实验,识别准确率达到98.97%,证明该方法可有效地提高字符的识别率。 In order to solve the problem that the conventional BP neural network algorithm in character recognition algorithm is easy to cause over-fitting and leads to training failure, the character recognition rate is not high, and the effect of traditional template matching method on character recognition is not good, an improved BP neural network character recognition algorithm based on PSO is proposed. Particle swarm optimization algorithm (PSO) is used to calculate the initial weight and offset of BP neural network, which improves the convergence speed of network and the stability of training process. Regularization algorithm is added based on conventional BP neural network to prevent over-fitting of network training. In the details of selecting the node parameters of the network layer, the number of nodes in the output layer is simplified and the training parameters of the network are reduced. Finally, through the recognition experiment on the printed character samples, the recognition accuracy reaches 98.97%, which proves that this method can effectively improve the character recognition rate.
针对字符识别算法中常规的BP神经网络算法在训练识别多种类字符时易造成过拟合而导致训练失败,字符识别率不高,传统的模板匹配法对字符识别的效果也不好的问题,提出一种基于PSO改进的BP神经网络字符识别算法。采用粒子群优化算法(PSO)计算BP神经网络的初始权值和偏置,提高了网络的收敛速度和训练过程的稳定性;在常规BP神经网络的基础上加入正则化算法,防止网络训练的过拟合。在选择网络层节点参数的细节上,简化输出层节点数,减少网络的训练参数。最后通过对印刷体字符样本进行识别实验,识别准确率达到98.97%,证明该方法可有效地提高字符的识别率。
字符识别,PSO算法,BP神经网络,正则化
Cheng Guo1, Xiaoping Hu2, Xiangqian Peng1, Lifeng Chen1
1School of Mechanical Engineering, Hunan University of Science and Technology, Xiangtan Hunan
2Hunan Provincial Key Laboratory of Mechanical Equipment Health Maintenance, Hunan University of Science and Technology, Xiangtan Hunan
Received: Jul. 4th, 2022; accepted: Jul. 28th, 2022; published: Aug. 5th, 2022
In order to solve the problem that the conventional BP neural network algorithm in character recognition algorithm is easy to cause over-fitting and leads to training failure, the character recognition rate is not high, and the effect of traditional template matching method on character recognition is not good, an improved BP neural network character recognition algorithm based on PSO is proposed. Particle swarm optimization algorithm (PSO) is used to calculate the initial weight and offset of BP neural network, which improves the convergence speed of network and the stability of training process. Regularization algorithm is added based on conventional BP neural network to prevent over-fitting of network training. In the details of selecting the node parameters of the network layer, the number of nodes in the output layer is simplified and the training parameters of the network are reduced. Finally, through the recognition experiment on the printed character samples, the recognition accuracy reaches 98.97%, which proves that this method can effectively improve the character recognition rate.
Keywords:Character Recognition, PSO Algorithm, BP Neural Network, Regularization
Copyright © 2022 by author(s) and Hans Publishers Inc.
This work is licensed under the Creative Commons Attribution International License (CC BY 4.0).
http://creativecommons.org/licenses/by/4.0/
光学字符识别(Optical Character Recognition,简称OCR),是一项将光学设备和软件系统相结合的自动检测技术,其中主要包含字符定位、字符分割和字符识别等模块,通过信息采集设备对产品进行拍摄或扫描,将产品的字符信息转换成机器间传输的通讯信号 [
近年来,光学字符识别最常用的方法是模板匹配法和神经网络法。模板匹配法对相似字符的区分能力较差,且匹配的速度慢,识别率不高,因此针对工业字符识别一般采用神经网络法,其中BP神经网络的应用最为广泛。王逸铭等 [
结合现有的研究基础,针对常规BP神经网络存在的问题,提出一种基于PSO算法改进的BP神经网络,并在网络内部加入正则项,优化目标函数,减少输出层节点数,从而减少网络的训练参数量,避免类别过多对网络复杂度的影响。改进后的神经网络模型不但提高了网络训练速度,减少了训练过程中的过拟合现象,还提高了网络的泛化能力,提高了字符识别的速度和准确率。最后结合C++和MFC设计了一个字符识别系统,使在进行字符检测时可以在界面中灵活调节分割阈值和字符极性以适应不同背景下的字符识别。实验测试了不同背景、不同极性的字符图片,结果表明,该字符识别系统能够有效地适应不同背景下的字符识别。
算法主要由字符特征提取和网络模型构建两部分构成。由于使用的输入图像是不同背景下的字符串图像,故需要先对图像进行预处理,主要包括图像增强和滤波 [
图1. 字符识别算法流程
为实现不同背景下不同工业产品的字符识别,字符识别系统主要包括四个功能:图像显示功能,预处理参数设置功能,字符提取及创建字符库功能,字符训练和字符识别功能。图像显示功能包括显示输入图像及每一步骤的处理结果图像;预处理参数设置功能主要调节分割阈值和字符极性,保证不同背景下字符分割的准确性,字符提取及创建字符库功能是将单个字符设置分类标签并保存到字符库;字符训练和字符识别功能主要是用改进的BP神经网络算法训练和识别字符。系统界面如图2所示。
图2. 系统界面
在工业检测过程中采集的图像都会存在一定的噪声或模糊,因此需要对图像进行一定的预处理,得到便于字符分割的高质量图片。Gamma变换图像增强能够有效地提高图像对比度,但传统的伽马校正通常会改变输入图像的亮度且难以在过暗和过亮区域同时取得良好的增强效果。为解决此类问题,采用了一种基于双边伽马校正的保亮度图像增强方法 [
图3. 玻璃表面字符图像增强对比图:(a) 原图;(b) 增强效果图
经过增强后的图像可以通过选取合适的二值化阈值将字符与图像背景分割,利用形态学方法消除分割后产生的孤立点和杂色,利用Opencv中的轮廓查找算法提取图像中的轮廓信息,根据轮廓面积筛选出字符轮廓,筛选后的字符轮廓分别计算出最小外接矩形,根据最小外接矩形的角度和位置信息精准定位字符,并将字符经过仿射变换矫正,然后单独分割保存到相应的字符库中。图4所示为字符分割结果。
图4. 字符提取结果
字符特征提取就是对经字符分割得到的字符图像数据进行变换,将原始图像数据模式变为变换空间中的数据模式,并且变换后的数据模式的本质特征对模式类别具有良好的区分度 [
BP神经网络是根据误差反向传播算法训练的多层前馈神经网络,通常由一个输入层、几个隐藏层和一个输出层组成 [
图5. BP神经网络基本结构
本文提出的BP神经网络模型的训练过程包括五个步骤,相比于传统的BP神经网络模型,本文模型优化了网络初始化方式,以及神经网络的目标函数,具体的训练识别过程如下:
(1) 网络初始化。根据系统的实际输入和输出,确定网络输入层,隐藏层和输出层的节点数。初始化输入层,隐藏层和输出层神经元之间的连接权值和偏差阈值,确定学习速率和神经元激活函数。
根据提取到的字符特征个数,确定模型的输入层个数为186;现有的基于BP神经网络的字符识别方法在选择输出神经元个数时都是选择识别的字符类别数作为输出神经元的个数,此处为了减少模型的计算参数,从而降低模型的复杂度,用字符的二进制ASCLL值作为字符的标签,每个字符的二进制ASCLL值有7位,因此设定网络的输出神经元个数为7,结合经验公式:
n h = n o + n i + a (1)
并通过试验得出网络的隐藏层神经元个数为48时网络的收敛效果最佳。( n h , n o 和 n i 分别为隐藏层神经元个数、输出层神经元个数和输入神经元个数, a 为1~10的常数)。
国内外现有的基于BP神经网络的字符识别算法选择的输出节点数为字符类别数,对于26个大小写字母及10个数字,在训练过程中需要计算更新的参数量为:
N = n i ∗ n h + n h ∗ n o + n h + n o (2)
由式(2)可知,在输入层和隐藏层节点数不变的情况下,减少输出层节点数可以一定程度上提升了网络的训练速度。
确定各层神经元个数后,需要初始化各层神经元之间的权值和偏置。传统的BP神经网络一般采用随机初始化的方式生成(−1, 1)的高斯分布作为网络各层的初始权值和偏置。这种初始化方法容易造成每次的训练效果有较大的差异,且可能造成梯度的消失或梯度爆炸,使最终字符识别的效果不稳定。为提高字符识别效果的稳定性,本文运用PSO算法得出最适于网络收敛的初始权值和偏置。
PSO算法的优势在于容易实现并且没有许多参数的调节。目前已被广泛应用于函数优化、神经网络训练、模糊系统控制以及其他遗传算法的应用领域 [
尽管BP神经网络在误差反向传播及更新权重和偏差方面具有显著的机制,但初始权重和偏差仍将决定网络的收敛方向 [
1、首先建立粒子群与网络的权值和偏差的对应关系,即一个粒子代表一个权值和偏差,计算每个粒子的维数。
2、初始化网络的其他参数:粒子群大小、最大迭代步数、学习因子、粒子初始位置和速度、网络学习率和目标精度。
3、通过PSO算法获得最优的权值和偏差集,并将优化结果作为网络的初始权值和偏置输入BP神经网络进行训练。
(2) 计算网络各层的输入输出。其中第P层的第j个神经元的输入:
Z j ( p ) = ∑ i = 1 k w j i ∗ O i + b j ( p ) (3)
其中 w j i 表示连接前一层的第i个节点与P层第j个节点之间的权值,k为前一层网络的节点数, O i 表示前一层网络第i个节点的输出, b j ( p ) 表示P层第j个节点的偏差阈值。
假设激活函数为f(…),则神经元的输出为:
y j ( p ) = f ( Z j ( p ) ) (4)
本模型选用的激活函数为:
f ( x ) = 1 1 + e − x (5)
(3) 确定目标函数,计算输出误差和均方误差。传统的BP神经网络用均方误差来度量神经网络在数据上的损失函数,也就是待优化的目标函数。根据上述公式,计算输出层节点j的输出值 y j ,结合期望输出值 Y j ,计算输出误差:
e j = Y j − y j (6)
和均方误差:
E j = 1 2 ∑ j = 1 l e j 2 (7)
标准的BP神经网络的训练准则是要求所有样本的期望值与输出值的误差平方和小于给定的足够小的允许误差e。但实际应用中随着拟合误差的减小,开始预测误差也随着减小,但随着拟合误差减小到某个值之后,预测误差反而增大,说明泛化能力降低。这就是BP神经网络建模过程中遇到的“过拟合”现象 [
本文中通过在目标函数基础上增加一个L2正则项来减小方差,从而减轻“过拟合”现象。改进后的目标函数如式(8)所示:
E j = 1 2 ∑ j = 1 l e j 2 + λ 2 ∑ i N ω j i 2 (8)
其中 λ 为正则化系数。
(4) 更新权值和偏置。根据改进的网络预测误差更新网络连接权重:
w j i = w j i + η y j ( p ) ( 1 − y j ( p ) ) O i ∑ k = 1 m ( w j k e j k + λ w j k ) (9)
更新网络节点阈值:
b j ( p ) = b j ( p ) + η y j ( p ) ( 1 − y j ( p ) ) ∑ k = 1 m ( w j k e j k + λ w j k ) (10)
其中 η 为学习率。
(5) 比较误差精度或迭代次数,看是否满足设定目标,若不满足,返回到(2)。
PSO-BP神经网络模型的训练流程如图6所示。
图6. BP神经网络训练流程图
为验证所提出的改进的有效性,采用工业相机采集了大量字符图片,通过字符分割得到2480张单个字符的图像,每种字符仅有40张图片,充分体现了小样本训练,并对20张含有多个字符的图片进行识别测试。对几种BP网络模型与所提出的网络模型进行实验结果的对比分析。从模型训练时间,训练误差和字符识别准确率(所有字符的平均识别率)三个方面对模型的性能进行了评估。
为得到最优的网络模型,需要通过实验确定模型的主要参数:网络输出节点数、PSO算法迭代次数、BP网络学习率和正则化系数。
(1) 网络输出节点
改进的网络模型创新性提出以字符的二进制ASCLL值作为字符的类别标签,以其二进制位数作为输出节点数,对比现有算法中以字符类别数作为输出节点数,对两种模型进行实验对比,实验结果如表1所示。
输出节点数 | 训练时间(s) | 训练误差 | 准确率 |
---|---|---|---|
7 | 11.2 | 0.0002 | 98.58% |
62 | 15.45 | 0.00015 | 98.64% |
表1. 网络输出节点数对模型的影响
实验结果表明。输出节点的简化能够加快网络的训练速度,并且对网络的精度影响不大。
(2) PSO算法迭代次数
PSO算法进行一次完整的迭代后就会使粒子更靠近最优解,迭代次数过少则达不到优化效果,迭代次数过多则会影响训练速度。为选择合适的迭代次数,采用几种不同的迭代次数对模型进行训练,实验结果如表2所示。
迭代次数 | 训练时间(s) | 训练误差 | 准确率 |
---|---|---|---|
50 | 11.43 | 0.0025 | 91.58% |
100 | 13.45 | 0.00015 | 98.20% |
150 | 15.65 | 0.00012 | 96.77% |
200 | 20.78 | 0.0001 | 95.90% |
表2. PSO算法迭代次数对模型的影响
通过实验,在保证检测精度的前提下选用100次迭代的方案能使模型更快的收敛。
(3) 学习率
学习速率(learning rate)的调整是神经网络参数非常重要的一部分。学习速率代表了神经网络中随时间推移,信息累积的速度。为寻求最优的学习率,设置了几种不同的学习率对模型进行训练,实验结果如表3所示。通过对实验结果进行比较,最终选择网络的学习率为0.4。
学习率 | 训练时间(s) | 训练误差 | 准确率 |
---|---|---|---|
0.7 | 14.36 | 0.024 | 92.97% |
0.6 | 15.06 | 0.018 | 95.16% |
0.5 | 15.26 | 0.0018 | 96.55% |
0.4 | 15.34 | 0.00012 | 98.39% |
0.3 | 17.26 | 0.0001 | 97.18% |
表3. 学习率对模型的影响
(4) 正则化系数
为选择合适的正则化系数,设置了几种正则化系数进行模型的训练,结果如表4所示。当正则化系数为0.0001时,网络模型的识别率最高,达到了98.97%。
正则化系数 | 训练时间(s) | 训练误差 | 准确率 |
---|---|---|---|
0.01 | 11.4 | 0.05 | 88.71% |
0.005 | 11.56 | 0.01 | 90.32% |
0.001 | 11.85 | 0.002 | 93.55% |
0.0005 | 12.14 | 0.0008 | 97.06% |
0.0001 | 12.47 | 0.0001 | 98.97% |
5×10^(-5) | 13.69 | 0.00001 | 96.13% |
表4. 正则化系数对模型的影响
通过字符训练和识别的实验,对改进前后和现有的几种字符识别模型对比,其结果如表5所示。
网络模型 | 训练时间(s) | 训练误差 | 准确率 |
---|---|---|---|
BP | 16.56 | 0.001 | 83.87% |
PSO-BP | 13.45 | 0.0005 | 94.82% |
BP + 正则化 | 12.15 | 0.0001 | 95.11% |
本文模型 | 10.26 | 0.0001 | 98.97% |
LSSM + BP [ | 16.49 | 0.0001 | 97.40% |
PCA-SVM [ | 19.68 | 0.0001 | 96.55% |
表5. 改进实验结果对比
从实验的结果可知,在常规BP神经网络字符识别模型的基础上,减少网络输出节点数,加入PSO算法优化初始权值,在BP网络的目标函数中加入正则化项,都能使原有模型在时效的提高和字符识别的准确率上有明显的改善。
为实现工业字符识别的精度,速度和稳定性,着重探讨了对BP神经网络字符识别算法模型进行优化。结合PSO算法,在传统BP神经网络的基础上加入正则化项,在设置网络输出节点数时改变常规的类别标签,减少网络的输出节点数,在简化模型结构的同时,仅运用少量字符样本进行模型训练,保证了字符识别的准确率,并运用MFC搭建了一个简单的字符识别系统,在工业字符识别的运用上具有一定的可行性。
国家自然科学基金资助项目(61572185);汽车玻璃外观缺陷检测关键算法研究(E57110);湖南省教育厅科研项目重点项目资助(19A170)。
郭 成,胡小平,彭向前,陈立锋. 基于PSO改进的BP神经网络字符识别算法研究Research on Improved BP Neural Network Character Recognition Algorithm Based on PSO[J]. 人工智能与机器人研究, 2022, 11(03): 248-257. https://doi.org/10.12677/AIRR.2022.113026