APP下载

基于卷积神经网络CNN的手写数字识别算法研究

2024-01-26张文王意刘天宇

电脑知识与技术 2023年35期
关键词:卷积神经网络

张文 王意 刘天宇

摘要:手写数字识别是图像分类的常见应用方向,可广泛应用于快递编码识别、简历电话号码识别、电脑自动判卷等方面。为了解决BP神经网络在手写数字识别中全连接模型参数过多、网络计算数据量大、识别准确率低等问题,采用卷积神经网络CNN进行手写数字识别。采用PyTorch搭建了网络模型,对MNIST数据集进行训练,手写数字识别;采用交叉熵损失函数和Adam优化算法,并设置学习率为0.001;经过100个Epoch后,识别准确率达到了99%,通过GUI界面可以识别自制的手写数字,具有很强的鲁棒性。

关键词:卷积神经网络;PyQt5;MNIST数据集;手写数字识别

中图分类号:TP391        文献标识码:A

文章编号:1009-3044(2023)35-0027-03

开放科学(资源服务)标识码(OSID)

0 引言

目前在国内外,针对手写体数字识别技术已经比较成熟,相较于传统光学字符识别(OCR)图像识别技术,基于深度学习的卷积神经网络算法可以在复杂场景下快速、准确、有效地获取并识别场景中文字[1-2]。本文引用的文献中关于手写数字识别研究测试时采用的是与MNIST数据集同样类型的黑色背景白色字体图像均没有涉及测试白色背景黑色字体类型的图像,为了解决这个问题,本文基于卷积神经网络CNN对MNIST数据集进行训练,采用PyTorch搭建自制网络模型,使用PyQt5设计GUI界面,并最终实现CNN与GUI界面结合,从而在GUI界面可以测试手写数字,实现识别自制的黑色背景白色字体和白色背景黑色字体的手写数字准确率均达到预期。

1 卷积神经网络

卷积神经网络CNN流程主要是先传入图像,然后进行卷积、池化操作,特征图展平后进行全连接,最后返回类别结果,其中输入层传入的灰色图像则是单通道,如图1所示。

卷积层与池化层涉及的参数如表1所示。

卷积层之后的特征图尺寸边长遵循式(1)计算规则:

[H2=H1-2p+fs+1]      (1)

池化层之后的特征图尺寸边长遵循式(2)计算规则:

[H2=H12]          (2)

2 PyTorch与MNIST

本文的网络模型采用PyTorch框架进行搭建,用到的MNIST数据集可以在PyTorch框架中直接下载,数据集包含55 000个训练集样本、5 000个验证集样本以及10 000个测试集样本,每个样本都为二值化圖像数据,像素为28×28[3-4],MNIST数据集的每张图片都是0~9这10个数字类别的黑色背景白色字体手写数字图像,样本实例如图2所示。

3 PyQt5概述

PyQt5是专门用于开发GUI应用程序的Python第三方库,其特点是信号Signal与槽slot机制,使得用户可以迅速、便捷地实现GUI程序的设计。

Qt设计师(designer.exe) 是PyQt5中的一个非常便捷的控件可视化工具,它可以通过拖拽控件方便地进行GUI界面的设计和布局,同时Qt设计师可以实现预览GUI界面。通过Qt界面生成器(designer.exe) ,可以将所需要的控件进行可视化的拖拽放置,大大提高了界面设计效率[5-6]。PyQt5能够实现界面与逻辑分离,避免因修改算法逻辑而影响到界面的布局,也可以避免界面布局的更改而影响到代码逻辑的运行。

4 算法设计与实现

4.1 算法实现流程

算法总体设计流程如图3所示,先通过卷积神经网络CNN对MNIST数据集进行训练,依次经过输入层、卷积层、池化层、全连接层、输出层,网络模型训练结束后通过torch.save(model.state_dict(),path)保存模型参数;GUI界面启动后先实例化卷积神经网络,再调用并恢复网络模型参数,从而可以选择图像进行识别图像并显示识别结果。

4.2 网络模型

在本文中,使用的自制卷积神经网络模型CNN-Six每一个卷积层采用卷积核尺寸边长[f=3]、滑动窗口步长[s=1]、边缘填充层数[p=0],因此每次卷积之后,新特征图的边长[H2=H1-2],为了弥补卷积操作过程中带来的网络模型参数损失,每次卷积后特征图的通道数值翻倍,开始输入时的通道是1,结束时的通道数是8。

4.2.1 网络流程

CNN-Six是一个6层神经网络,网络执行两次“卷积+卷积+池化”流程;并且每次卷积操作结束都将结果传给了Relu激活函数,从而能够更好地映射特征,增强卷积神经网络的表达能力;最后执行两次全连接对图像进行数字的10分类。

首先,传入图片像素尺寸为28×28的黑白单通道图像,对图像进行归一化操作;卷积操作:特征图边长由[28-2=26]转变为26,通道数变为2;再次卷积操作:特征图边长由[26-2=24]转变为24,通道数变为4;池化操作:特征图边长由[242=12]转变为12,通道数保持不变;卷积操作:特征图边长由[12-2=10]转变为10,通道数变为8;再次卷积操作:特征图边长由[10-2=8]转变为8,通道数变为16;池化操作:特征图边长由[82=4]转变为4,通道数保持不变;展平操作:特征图展平为16×4×4节点;全连接操作:映射成80个节点;全连接操作:80个节点映射成10个节点;输出10分类结果。CNN-Six网络模型流程如4所示。

4.2.2 网络训练

卷积神经网络在PyTorch框架中定义网络模型类时包含了前向传播的阶段,即基础的输入层、输出层以及卷积层、池化层和全连接层,但是没有定义反向传播。

反向传播是计算卷积神经网络中参数梯度的阶段,其可以通过链式法则将损失函数的梯度值即导数值从输出层向输入层进行相反操作的流程,进而可以计算出卷积神经网络模型中每个参数对损失函数的贡献。梯度更新可以根据梯度的方向和大小,通过减去学习率乘以梯度来更新网络模型中对应的参数数值;更新之后的网络模型参数将会被用于下一个迭代epoch。

迭代次数epoch设置为100,CNN-Six网络模型执行epoch。训练结束后,模型的误差值和正确率结果如图5所示。

通过损失值曲线和正确率曲线可以看出,CNN-Six网络模型训练集的识别正确率略优于测试集,同时训练集和测试集的数字识别正确率都可以实现在99%左右,训练效果达到预期。

其中0~9这10个数字类别各自的预测正确率如图6所示。

从各类别的测试正确率来看,CNN-Six网络模型对于MNIST数据集图像的预测较为准确。

4.2.3 底色判定

由于MNIST数据集的每张图像都是黑色背景白色字体类型图像,所以如果测试识别手写数字图像传入的是黑色背景白色字体类型图像可以正确识别,但是如果传入的是白色背景黑色字体类型图像则可能不会正确识别。

为了在传入手写数字图像后,系统可以自动分辨图像是黑色背景白色字体类型图像还是白色背景黑色字体类型图像,在传入图像操作语句后添加一个底色判定语句块。

设[Nw]、[Nb]数值均为0;Pic是待预测的图像,其长度与宽度分别为[TL]、[TW];prediction是预测图像操作,底色判定具体流程如下:

FOR L=0 TO [TL]:

FOR W=0 TO [TW]:

IF Pic[L][W]>=100 THEN [Nw]=[Nw]+1

ELSE [Nb]=[Nb]+1

END IF

IF [Nw<Nb] THEN prediction

ELSE

FOR L=0 TO [TL]:

FOR W=0 TO [TW]:

Pic[L][W]=255-Pic[L][W]

prediction

END IF

4.2.4 模型对比

将CNN-Six网络模型分别与ResNet-18、VGG-16网络测试结果进行对比,结果如表2所示。由表2可知,从识别正确率看,CNN-Six网络模型在手写数字识别正确率相对较高。

以上结果可以表明,CNN-Six网络模型可以快速精确地识别手写数字。

4.3 识别测试

GUI界面显示的同时传入CNN-Six网络模型训练好后保存的网络模型参数文件路径,实例化一个新的CNN-Six网络模型并加载网络参数,选择手写数字图像即可进行识别,GUI界面就会显示识别结果。以数字6为例,打开手写数字6的图像,并进行图像分类识别,加载网络模型参数的GUI界面程序可以正确识别出图像中的数字是6,结果如图7所示:

自制多张手写数字图像,包括黑色背景白色字体样式图像和白色背景黑色字体两种类型图像,实例化CNN-Six网络模型加载训练好的参数进行识别图像,实验证明,CNN-Six网络模型可以正确地识别出图像中的手写数字。选取部分自制0~9这10个类别图像黑色背景白色字体样式和白色背景黑色字体样式如图8所示,对应的识别结果如表3所示。

从表3可以看出,系统识别的手写数字图像大多都识别成功了,但是在测试的20张图像中仍有一张手写数字图像识别错误,数字“2”被识别成了数字“3”,正确率为95%,实现了较理想的识别效果。

5 结束语

本文利用卷积神经网络在图像分类中的优势对MNIST数据集采用了自制的卷积神经网络模型CNN-Six进行手写数字识别,可以实现正确地识别黑色背景白色字体以及白色背景黑色字体2种类型的数字图像,识别正确率达到预期,可以应用于快递编码识别、简历电话号码识别、电脑自动判卷等领域。

参考文献:

[1] 杨之杰,林雪刚,阮杰.基于CNN网络的手写体数字识别系统的实现[J].智能计算机与应用,2023,13(4):158-162.

[2] YOVAN FELIX A,SHRIRAM S,MOHAN KUMAR D.The classification and segmentation of plant disease using convolutional neural network (CNN)[C]//DASH SS,PANIGRAHI BK,DAS S.Sixth International Conference on Intelligent Computing and Applications.Singapore:Springer,2021:475-482.

[3] 唐鑒波,李维军,赵波,等.基于卷积神经网络的手写数字识别方法研究[J].电子设计工程,2022,30(21):189-193.

[4] 祝永志,张彩廷.基于TensorFlow深度学习的Minist手写数字识别技术[J].通信技术,2020,53(1):46-51.

[5] 桑晓丹,郭锐.基于PyQt5的数字图像处理实验平台设计[J].电子技术与软件工程,2021(18):129-130.

[6] 卢玲,漆为民.基于PyQt5的求解线性方程组软件的设计与实现[J].江汉大学学报(自然科学版),2023,51(1):18-27.

【通联编辑:唐一东】

猜你喜欢

卷积神经网络
卷积神经网络语言模型研究
基于卷积神经网络温室智能大棚监控系统的研究
基于深度卷积神经网络的物体识别算法