向本华,王 徽
(辽宁工程技术大学,辽宁 葫芦岛 125105)
卷积神经网络(Convolutional Neural Networks,CNN)是一类包含卷积计算且具有深度结构的前馈神经网络,是深度学习的重要算法之一,在深度学习中起着重要作用。CNN 模型主要包括输入层、卷积层、池化层、全连接层和输出层。为了提取的特征更加丰富,网络模型通常由一个或多个卷积层、池化层以及全连接层构成。经典的卷积神经网络模型 有LeNet-5、AlexNet、VGG、GoogleNet、ResNet以及DenseNet 等,但每个模型都有独特的优点与缺点[1]。随着卷积神经网络的不断发展,基于卷积神经网络的图像分类问题比基于传统的“预处理+特征提取+分类器”的方法识别效果更加良好,得到了广泛应用[2]。在计算机视觉、自然语言处理、医疗图像处理、人脸识别、物体检测以及手写体文字识别等领域,卷积神经网络取得了突破性进展[3],并在手写体识别应用中更为突出,主要应用于手写体数字识别[4-6]、手写体汉字识别[7-9]以及手写体字母识别[10],同时在识别少数民族语言中获得了良好的应用。周毛克等人提出的基于卷积神经网络的藏文手写数字和字母识别研究[11],取得了良好的识别效果。闫茹等人提出的基于CNN 与有限状态自动机的手写体大写金额识别[12],解决了手写票据的识别问题;柳霄羽等人提出的基于CNN 手写识别技术的智能作业批阅软件的设计与开发[13],将卷积神经网络技术应用于作业的批阅,解决了智能化作业批阅的问题。在这些方面,卷积神经网络都取得了良好的应用效果,而在手写希腊字母识别方面还未发现相关的应用研究。在手写体识别中,由于数据采集方式不同,可分为脱机手写体希腊字母识别和联机手写体希腊字母识别。因识别对象不同,所采用的识别方法也不相同。一般来说,脱机手写体识别比联机手写体识别更加困难。本文主要研究脱机手写体识别。
希腊字母被广泛用于数学、物理、科学、工程学和其他方面,通常被用为数学公式中的变量。希腊字母手写体可分为数学体与希腊体。数学体指用于数学等学科中的希腊字母。希腊体指在希腊语中书写的字母形式。该两种手写体形式通常都不一样。由于数学等学科中的希腊字母一般是单独存在的,而在希腊语中书写的希腊字母是多个相连,且两种手写体中希腊字母的字形也有很大区别。因此,为了解决实际问题,本文主要研究识别数学等学科中的手写希腊字母。
本文组织结构如下:第1 章节说明数据采集的过程及其预处理;第2 章节介绍AlexNet 模型;第3 章节进行实验和结果分析;第4 章节总结全文,并对未来研究进行展望。
在数据集采集和制作过程中,为了保证采集到的样本有效,采用白纸来分别书写大写和小写希腊字母。为了保证数据的多样性,收集由60 余名学生书写的样本数据共170 余例,经筛选后得150 余例有效数据,并将其裁剪后进行数据标注,分别得到24 个大写希腊字母和24 个小写希腊字母。部分数据样本示例如图1 所示。由于希腊字母中有一些大写和小写希腊字母的手写体相似度极高,如Θ和θ、Κ 和κ、P 和ρ等,为了获得更好的识别效果,将其分为两个24 类分别进行训练和测试。
图1 数据样本示例
由于卷积神经网络涉及大量参数,需要大量的数据来训练网络模型。为了防止训练的模型发生过拟合,能够更好地提取特征,提高模型的泛化能力和鲁棒性,得到最佳模型,需要更加丰富的数据集。所以,采取数据增强的方法来扩充数据集。数据增强的方法包括对图像进行几何变换(平移、翻转、旋转、缩放)、调整亮度、调整对比度以及调整锐度等。考虑到手写体希腊字母的特点,本文采取亮度增强、对比度增强、增加锐度以及调整色度4 种方法来扩充数据集,将大小写希腊字母每一类数据都扩充到625 例,再将其按8:2 随机划分为训练集和测试集。大写和小写数据集数量信息都相同,详见表1。
针对希腊字母的手写形式多变且较为复杂的情况,本文采用AlexNet 来对手写希腊字母进行识别研究。AlexNet 模型在2012 年被提出,是卷积神经网络经典模型之一,也是LeNet 的一种更深更宽的改进模型。网络结构共分为8 层,前5 层是卷积层,后3 层是全连接层,如图2 所示,具体层结构如图3 所示。AlexNet 的提出对卷积神经网络有着重大意义,具有以下优点。首先,它使用了ReLU 函数作为CNN 的非线性激活函数,代替了Sigmoid 和tanh 函数,不仅加快了梯度下降,也减小了梯度消失和梯度爆炸的问题。其次,在全连接层中增加了Dropout 层,避免了模型的过拟合,提高了模型的泛化能力。再次,使用重叠最大池化,使得池化层单元网格之间有重叠区域,提高了特征精度,一定程度上也避免了过拟合问题。最后,使用局部响应归一化层,使得神经元之间产生竞争关系并产生正反馈,从而响应值较大的变得更大,响应值较小的变得更小,同时增强了模型的泛化能力。
表1 大小写希腊字母数据集
图2 AlexNet 模型网络结构
图3 层结构示意
卷积层的主要作用是进行特征提取。卷积层内每个神经元都与前一层中邻近区域的几个神经元相连,将该区域与过滤器进行卷积运算,然后按步长移动到下一个区域继续卷积运算。重复此过程,最后得到卷积后的结果。区域的大小由卷积核的大小决定。该模型各卷积核的大小如图3 所示。
由卷积核的相关运算可知,随着卷积操作增多,特征图的尺寸会逐步减小。为了避免图像变得很小,在卷积操作之前可以使用填充,并因此将卷积分为valid 卷积(即无填充)和same 卷积(即填充后输出的图像大小和输入的大小一样)。AlexNet 模型第一层卷积层使用valid 卷积,后4 层卷积层都使用same 卷积。单层卷积具体特征映射[4]如下:
式中:ajL表示L层卷积后第j个神经元的输出;ωijL表示卷积核;bjL表示偏置。f(·)为神经元激活函数,这里采用ReLU 函数,即:
池化层的主要作用是减小模型的尺寸,提高计算速度,同时提高模型的鲁棒性。池化层可分为最大池化层和平均池化层。该模型采用最大池化,即取区域中值最大的像素点代表整个区域。池化层通常跟随在卷积层之后,将卷积后的输出作为输入,根据池化的大小和步长,对区域里的像素点进行最大池化,最后得到输出结果传给下一层。池化层选取区域的方式与卷积层一样,由池化大小和步长共同决定。该模型池化层大小和步长如图3 所示。
全连接层起到了分类器的作用。它的每个神经元都与前一层中的全部神经元完全相连,因此通常参数最多。全连接层可以将卷积层或池化层的局部信息整合起来,避免因特征所在位置的不同而导致对分类结果产生影响。
基于AlexNet 的手写希腊字母识别过程的主要步骤如下。
步骤1:将采集到的数据样本进行数据增强;
步骤2:将数据集按8:2 随机分别划分为训练集和测试集;
步骤3:将训练集图片进行归一化处理后送入AlexNet 进行特征提取;
步骤4:模型训练完成后,将测试集传入训练好的模型进行预测,得到识别准确率。
将学习率设置为0.000 1,迭代次数初始值设置为200,然后将大小写手写希腊字母分别进行模型训练。在模型训练中,当损失函数收敛后,停止模型训练过程。此时,迭代次数为20,得到训练准确率和损失值与迭代次数的关系曲线分别如图4 和图5 所示。由图4 和图5 可知,两个网络模型收敛速度几乎相同且较快,训练出的模型良好。
图4 大写字母训练准确率和损失值曲线
图5 小写字母训练准确率和损失值曲线
将大小写希腊字母的测试集分别对训练好的两个模型进行测试,总的测试效果如表2 所示。实验结果显示,针对大写希腊字母和小写希腊字母的识别准确率分别达到98.27%和96.07%,说明将AlexNet 应用于手写希腊字母的识别效果显著,能够非常有效地提取到手写希腊字母的特征,证明了卷积神经网络在文字识别中的重要地位,具有一定的现实意义。
表2 手写希腊字母识别测试结果统计表
由于希腊字母的书写复杂程度不同,识别的准确率也有所区别。为了更加详细地说明识别的准确率,分别对24 个大写字母和小写字母的每一类进行测试和分析,测试结果分别如图6 和图7 所示。
图6 大写希腊字母识别准确率
图7 小写希腊字母识别准确率
根据结果显示,各类希腊字母的识别效果有好有差。在大写希腊字母中,类别9、21(Ι、Φ)的识别准确率偏低,分别为0.872、0.912,其对应错误识别字母(占比)集合分别为{Γ(12.5%)、Κ(12.5%)、Ε(75%)}和{Ζ(45.45%)、Ο(54.55%)}。在小写希腊字母识别中,类别6、13、23(ζ、ν、ψ)的准确率较低,分别为0.872、0.792、0.800,其对应错误识别字母(占比)集合分别为{λ(6.25%)、ξ(6.25%)、χ(25%)、τ(62.5%)}和{θ(3.85%)、υ(96.15%)}和{φ(4%)、υ(4%)、ν(12%)、χ(80%)}。错误识别信息见表3。由结果显示得,有些希腊字母的手写体极为相似(如ψ和χ、ν和υ),或因书写难度较大(如ζ、ξ)而导致书写不准确,或因书写不当而导致某些希腊字母识别效果较低。相似度大或书写较难的数据样本,如图8 所示。因本文采用的数据集来源于自己采集,所以样本数据的噪声较少,样本的多样性还有待提高,需进一步改进数据集来训练更好的网络模型。
表3 错误识别信息
图8 相似度大或书写难数据样本
本文提出使用AlexNet 来对手写希腊字母进行识别,结果显示识别准确率较高,在研究领域具有深入研究的潜在价值。卷积神经网络在文字识别领域中已经越来越重要,并取得了很好的成果。为了达到更好的识别效果,在后续研究中可以采集更加多样化的数据来训练更优的模型,或者对模型进行优化和改进对数据的预处理方式来提升识别效果。为了解决卷积神经网络训练和测试的时间消耗较长的问题,可以与其他方法结合,进一步提高识别的性能。