基于Tensorflow框架的手写数字识别
2022-03-03鹤壁职业技术学院电子信息工程学院张玉娇
◇鹤壁职业技术学院电子信息工程学院 张玉娇
手写体数字0-9的识别在原始数据集的获取上较为容易,拥有MNIST的这种成熟的大型标准数据集,已经被视为是人工智能图像识别领域研究的入门问题,对其进行研究具有重要的现实意义。在众多的识别算法中,卷积神经网络在识别精度上的表现较为突出,而深度学习框架的出现在一定程度上降低了神经网络模型构建的难度和入学门槛。本文基于Tensorflow深度学习框架,详细讨论了如何构建LeNet-5卷积神经网络模型实现手写体数字识别的方法,使用MNIST数据集进行模型的训练与评估。
随着技术的发展,人工智能技术的实现方法逐渐由机器学习算法向深度学习算法发展,以解决更复杂的问题,不断扩充人工智能的应用领域。深度学习即深度神经网络学习,它在诸多领域都发挥了巨大的作用,如图像处理、语音识别、自然语言处理和视频处理领域等,其中图像识别是人工智能应用领域的一个重要分支。手写体数字识别作为图像识别领域的一个经典问题,对其进行研究具有重要的现实意义。
手写体数字识别可采用 K-邻近算法、支持向量机、贝叶斯分类器的进化策略和梯度下降方法、神经网络、卷积神经网络等识别方式。传统识别算法对手写数字进行识别时,其识别率低、识别速度慢。近年来,卷积神经网络由于良好的推广能力、记忆力、非线性和自学习能力以及高速运算能力被广泛用于手写数字识别[1]。比如李斯凡等人[2]研究了卷积神经网络,将改进的模型应用在MNIS字符库上,与传统识别方法进行对比分析,具有较高识别率;汪雅琴等人[3]提出基于LeNet-5模型的手写数字识别优化方法,通过优化卷积层的样本训练方式,减少预处理工作量,加快识别速度;茹晓青等人[4]用形变卷积模块来增强网络对数字
几何变换的建模能力,提出了一种改进的手写体数字识别框架,具有较高的识别精度并减少了训练的参数量。
卷积神经网络在手写体数字识别精度方面的表现较为突出,但这种深度神经网络的实现往往较为困难,增加了初学者的难度,同时研究人员在实现不同网络模型的时候通常需重复编写代码,增加了无用的工作量。而深度学习框架的出现则有效解决了上述问题,它可更加便捷的实现深度神经网络模型,具有通用性和可移植性。在众多深度学习框架中Tensorflow的使用人数最多、社区活跃度最高,具有开源性、灵活性、高效性和较强的可扩展性和可移植性,被广泛应用于手字体数字识别、图像分类、人脸识别等应用领域。本文将基于Tensorflow深度学习框架,构建LeNet-5卷积神经网络模型,探讨实现手写数字的识别的方法。
1 Tensorflow深度学习框架
Tensorflow是由Google公司开发的人工智能深度学习框架,于2015年11月正式向公众开源。它可运行在任何尺寸和形式的主机上,小到智能手机大到大型计算集群。Tensorflow设计的核心思想是将计算过程表示为一个有向图,这个有向图即神经网络的算法实现图。计算图由节点和边组成,节点表示具体的运算操作,边代表权重,数据以张量的形式在计算图中按照特定方向流动。
2 采用LeNet-5实现手写体数字识别
2.1 MNIST数据集
MNIST数据集是深度学习领域的一个入门级的计算机视觉数据集。该数据集来自美国国家标准与技术研究所(National institute of standards and technology,NIST)。它包含60000个训练示例图片和10000个测试图片,每张图片分别代表了0-9当中的任意一个数字,是大小为28px*28px的灰度图片。数据集中的数据采集自250个不同人的手写数字,其中一半由高中生书写,一半由人口普查局的工作人员书写。
图1 MNIST数据集示例图
2.2 LeNet-5卷积神经网络模型
LeNet-5是由Yann LeCun(杨立昆)提出的一种经典的卷积网络结构,Yann LeCu被誉为卷积神经网络之父,LeNet-5模型对后续卷积神经网络的发展起到了良好的推动作用。该网络模型一共由8层网络构成,分别为输入层、卷积层1、池化层1、卷积层2、池化层2、全连接层1、全连接层2和输出层,如图2所示给出了网络模型的结构图。下面介绍下各层结构。
图2 LeNet-5卷积神经网络结构
(1)输入层:输入图片是大小为32*32的灰度图像,颜色通道为1。
(2)卷积层1:该层尺寸为6个高度和宽度均为5的卷积核,卷积方式采用valid模式,卷积后的输出结果为高度、宽度皆为28,深度为6的矩阵。
(3)池化层1:该层采用6个大小为2*2的矩阵对卷积层1的输出结果进行valid最大值池化处理,输出结果为14*14*6的矩阵。
(4)卷积层2:该层为16个大小为5*5*6的卷积核,仍然与三层输出结果进行valid卷积,卷积结果为10*10*16的矩阵。
(5)池化层2:与池化层1处理方式一样,仍然采用大小为2*2的矩阵对上层输入进行valid最大值池化,输出结果为5*5*16。
(6)全连接层(1和2):全连接层处理前先拉直第五层的输出结果使其成为一维向量,其大小为400(由5*5*16算出),再经过2层的全连接神经网络进行处理,其中输入为400个神经元,第1个全连接层含120个神经元,第2含含84个神经元。通过两层的全连接层处理后最终输出结果为长度为84的一维向量。
(7)输出层:该层包含10个神经元,对应于10个基本数字,用于进行手写体数字的分类。输出层相当于在全连接层之后添加一层 Softmax 层,通过 Softmax 回归函数识别图像所属类别的概率,并选择概率最大的类别对应的数字作为输出结果。
2.3 Softmax回归函数
当二分类问题扩展为多分类问题时,如手写体数字的十分类问题,逻辑回归就成为了Softmax 回归。Softmax 回归函数的表达式为:。
在此例中,输出层的神经元为10个,分别代表10个基本数字,Softmax函数将逐一计算每个神经元对应类别的概率值,最终选取概率值最大的神经元对应的数字作为识别结果输出。例如:对于某次输入,识别为2的概率为87%,识别为5的概率为9%,识别为其他数字的概率更低,则最终的识别结果就数字2。
2.4 手写体数字识别
在Tensorflow框架下使用LeNet-5卷积神经网络模型来实现手写体数字识别的方法如下所示。
(1)加载MNIST数据集。MNIST数据集包含在Tensorflow框架的example模块中,可直接读入,并将数据集划分为训练集(X0,Y0)和测试集(X1,Y1)两个集合用于后续数据处理。
(2)数据预处理。对读入数据进行处理,使其满足Tensorflow框架的数据规范。主要进行三个方面的处理:第一,X为60000*28*28的立体矩阵,不满足Tensorflow的数据格式,需增加一个通道数的维度,使其从三维变为四维张量,因为数据集的图片是灰度图片,因此通道数即为1。第二,Y也不符合Tensorflow的数据格式,需将其转变成长度为10的向量,转换成one-hot的编码形式。第三,压缩X使其变为0-1之间的数,以使后续的优化算法更容易收敛。
(3)构建LeNet-5网络模型。因为LeNet-5网络模型要求的输入大小为32*32,而MINSET数据集中的图片大小则为28*28,因此需将第二层的卷积层1的卷积方式设置为same卷积,以保持输出结果大小为28*28*6。
(4)模型训练。选择相应的优化算法,确定Batch和Batch的大小,即可使用训练集数据对模型进行训练。
(5)模型评估。使用测试集数据对模型识别的准确性进行验证。当优化算法选择Adam算法,Batch size的大小选为200,进行10个Batch循环训练后得到的模型参数,在测试集上的识别精度可达99%以上。
3 结语
本文介绍了Tensorflow深度学习框架的特点和优势,并且详细介绍了LeNet-5卷积神经网络模型的结构。Tensorflow深度学习框架作为深度学习的基础框架,可大大简化深度神经网络模型的构建难度,降低学习门槛,缩短学习过程,提高学习效率。对于深度学习的经典入门问题手写体数字识别,采用卷积神经网络方法进行识别,在准确性、效率和鲁棒性方面都明显优于传统算法。文中以手写体数字识别为例探讨了在Tensorflow框架中如何构建LeNet-5卷积神经网络模型、模型训练及模型评估的方法。