毕业设计-基于卷积神经网络的手写数字识别

目录

前言

课题背景和意义

实现技术思路

一、卷积神经网络

二、算法实现

三、实验结果与分析

四、总结

实现效果图样例

最后


前言


    大四是整个大学期间最忙碌的时光,一边要忙着备考或实习为毕业后面临的就业升学做准备,一边要为毕业设计耗费大量精力。近几年各个学校要求的毕设项目越来越难,有不少课题是研究生级别难度的,对本科同学来说是充满挑战。为帮助大家顺利通过和节省时间与精力投入到更重要的就业和考试中去,学长分享优质的选题经验和毕设项目与技术思路。

对毕设有任何疑问都可以问学长哦!

选题指导: https://blog.csdn.net/qq_37340229/article/details/128243277

大家好,这里是海浪学长毕设专题,本次分享的课题是

毕业设计-基于卷积神经网络的手写数字识别

课题背景和意义

近年来,机器学习相关理论得到了长足发展,其研 究成果可广泛应用于计算机视觉等多个方面,手写数 字识别作为计算机视觉的重要分支,可广泛应用于数 据统计、财务金融以及成绩判定等领域。人们日常的 书写习惯以及不同的书写速度都会导致书写形式出现 多种变化,这成为手写数字识别需要克服的一大难点。 当前,国内外出现了较多手写数字识别的研究 成果,主流的方法主要是根据图像中数字的结构特 征进行特征提取和聚类分析,其代表算法有卷积神 经网络、KNN 最邻近算法、决策树算法、向量机算法 以及多种人工神经网络算法,其中卷积神经网络 (Convolutional Neural Network,CNN)作为一种典型的 神经网络,被广泛应用于图像识别和分类等领域,它 能够较好地识别人脸、物体和交通标志,是机器学 习的重要工具。通过Tensorflow 搭建 CNN 结构,采用 Minist数据集对 CNN 的典型模 型 LeNet-5 进行训练,在对图像进行预处理和数字 分割的基础上,实现了准确率较高的手写数字识别,方法对手写 数字识别的模型搭建和实现具有参考意义。

实现技术思路

一、卷积神经网络

卷积神经网络是一类典型的深度神经网络,该网络最早于 1984年由日本学者 K. Fukushima 发现并 验证,它具有局部感知、权值共享等特性该网络在 计算机视觉研究领域发挥了重要作用。 1998 年,Y. Lecun 等人将卷积层与降采样层相 结合,建立了卷积神经网络的现代原型 LeNet,该模 型后来被广泛应用于手写字符的识别。

卷积神经网络结构

卷积神经网络是一种前馈神经网络,它由一 个输入层、一个输出层以及多个处在输入层、输出层 之间的隐藏层组成。网络的隐藏层主要包括卷积 层、池化层和全连接层,其中卷积层和池化层相结 合,主要起到提取图像特征的作用。在获得图像典 型特征图的同时,减少输入层到全连接层中的数据 量,全连接层则根据输入的特征图,利用多层感知元 模型对特征图进行分类识别。

图所示为卷积神经 网络的典型结构,图中省略号表示卷积层和池化层 可根据建模需要多次交替出现。

毕业设计-基于卷积神经网络的手写数字识别_第1张图片

卷积神经网络关键层功能

卷积神经网络的训练通常涉及到模型中各个层 级,每一层在网络中发挥不同的作用,下面对各层的 功能和原理进行进一步阐释。

1)卷积层:作为 CNN 的核心,卷积层主要用于 从输入图像中提取相关特征。它主要由卷积核实现 卷积功能,这些卷积核本质上是小尺寸的二维矩阵, 它以一定的步长沿原图像自左向右、从上至下“滑 动”,每滑动一次即做一次卷积运算,通过上述过程 最终得到图像对应的特征图。图所示为图像某像 素块与卷积核进行卷积的示意图。

毕业设计-基于卷积神经网络的手写数字识别_第2张图片

 卷积的本质为两个矩阵对应位置上的数据相乘 之后再将所有结果相加求和的过程。每一个卷积核 与原图像进行卷积后得到相应的卷积结果,即对应 的特征图,根据不同的卷积核元素可以获得图像不 同方面的特征。

在模型训练开始前,通常需要指定 卷积核的数量、尺寸、滑动步长以及卷积层的数量等 参数。卷积核数量越多,提取的图像特征就越多,神 经网络识别能力通常也越强。 整个卷积层的数学表达式如式所示:

 引入非线性特性的函数通常包 括 tanh或 sigmoid,对于手写数字识别,用的更多方法的是 ReLU,其操作较为简单,且效果较好,实现的思 路是将特征图中所有负值调整为 0,而正值保持不 变,对应的公式如式所示:

 2)池化层:空间池化也称为子采样或降采样,池 化层主要用于减小每个特征图的尺寸,并保留最重 要的特征信息。其实现思路:将卷积层输出的特征 图划分为多个小块区域,每个区域中用一个值代表 该区域内的多个值,获得各个区域代表值的方法可 以有多种,如选取区域的最大值、计算区域平均值、 计算区域所有值的总和等,计算区域平均值的降采 样过程可表示为:

 3)全连接层:全连接层是一个传统的多层神经 元感知器,该层中的每一个神经元都与上一层的所 有神经元相连,并且每个神经元都有一组对应的权 重与上一层神经元的输出结果结合,可计算得到当 前层神经元的输出,其计算表达式为:

 为了保证全连接层面向输出层的所有分类结果 概率之和为 1,可使用 Softmax 作为全连接层、输出 层的激活函数,该函数能接受任意实值分数,并将其 压缩为 0 到 1 之间的值。Softmax 函数得到的结果即 为每个样本的分类概率,模型将按照概率值的大小来预测其所属类别。

卷积神经网络模型训练

在卷积神经网络模型训练之初,其分类误差较 大,为了降低误差,通常使用反向传播算法向调 整卷积层中所有卷积核的值以及全连接层中各神经 元的权重值,调整的比例与权重值对误差的贡献大 小正相关,经过反向调整后的值可使下一次前向传 播的分类误差变得更小。

二、算法实现

模型训练

采用 LeNet-5 模型进行训练,它是一种典 型的卷积神经网络模型,主要用于手写体汉字和印 刷体汉字的识别。该模型共有 7 层(不包含输入 层),其中包含 2 个卷积层、2 个池化层以及 3 个全连 接层,每层都包含有不同数量的参数。模型输入层 图片大小为 32 × 32 像素。

采用 Minist 数据集对模型进行训练,该数据集 包含 55 000 个训练集样本、5 000 个验证集样本以及 10 000个测试集样本,每个样本都为二值化图像数据, 像素为 28 × 28 ,而 LeNet-5 网络输入图像的像素为 32 × 32 ,因此训练前需要将 Minist数据集中的各个实 例填充为 32 × 32 。数据集中的样本实例如图所示。

毕业设计-基于卷积神经网络的手写数字识别_第3张图片

为防止训练过程中出现过拟 合,还需要设置 dropout 概率为 0.25,用 Softmax 作为 分类器,以交叉熵函数作为误差函数训练网络模型, 训练的同时通过验证集数据对模型进行验证,得到 对应的训练集与验证集的误差对比曲线和识别率对 比曲线,分别如图所示。

训练集与测试集的误差曲线:

毕业设计-基于卷积神经网络的手写数字识别_第4张图片

 训练集与测试集的识别率曲线:

毕业设计-基于卷积神经网络的手写数字识别_第5张图片

由两组曲线图可以看出,整个模型训练过程收 敛速度较快,虽然测试集的识别率曲线略低于训练 集,但最终识别率均在 98%以上,达到了预期的训练 效果。

字符分割

在对手写字体进行识别前,还需要将一幅图中 所有手写数字进行阈值和字符分割,使图像中的文 字与背景具有足够的区分度,以便后期对每个数字 进行独立识别。文中采用自适应二值化方法实现阈 值分割,分割前后图像对比如图所示。

毕业设计-基于卷积神经网络的手写数字识别_第6张图片

阈值分割完成后,还需要对单个字符进行提取, 文中采用基于方向投影的改进算法对单个字符进行 分割,分割后用框线标记出每个字符所在区域。分 割结果及样例如图所示。

由于前期采用 LeNet-5 网络模型进行训练,因 此还要使分割得到的图像与模型训练输入的图像格式保持一致,把每个分割出的数字图像像素调整为 32 × 32 ,同时使手写数字处于图像中间位置,对应的 结果示例如图所示。 

数字识别

在模型训练和字符分割完成后,可将分割好的 字符输入到网络模型中进行分类处理,并根据模型 输出层各分类项的概率大小确定最终的识别结果。 在实验中将识别结果输出在手写字符的左上方,最 终的识别结果如图所示。从该图中可以看出,虽 然 3、4、6 等手写数字有不同的书写风格,但是训练 后的模型依然实现了图中数字的正确识别,达到较 好的识别效果。 

毕业设计-基于卷积神经网络的手写数字识别_第7张图片

三、实验结果与分析

实验环境操作系统为 Windows10,CPU 为 intel (R)Core(TM)i7-10750H,内存为 16 GB,配置 NVIDA RTX 2080ti GPU,在 Pycharm 编译器上完成模型训 练。

对于连写数字,由于在预处理过程中,文中方法无法将其分割开,因此相关 识别结果都出现了错误。对于该类情况,下一步要 重点研究连写数字的分割方法,并扩大连写数字的 训练数据集,以此提升模型的适用范围和多种情况 下的识别率。相关识别结果统计如表所示。

毕业设计-基于卷积神经网络的手写数字识别_第8张图片

四、总结

基于卷积神经网络基本原理,通过Tensorflow 搭建手写数字识别训练模型,较好地实现了单幅图 像多个数字的正确识别,为理解 CNN 的相关原理和 实现过程提供了参考。

通过多个实验测试发现,对 于单幅图内多个手写数字的识别,除了搭建稳定的 训练模型外,还需要对输入图像进行较好的预处理 和预分割,在此基础上进一步扩大 CNN 模型训练集 的范围,采集不同行业以及不同年龄段的手写数字 样本对模型进行训练,以使训练模型具备更高的识 别率和实用性。

实现效果图样例

手写数字识别:

毕业设计-基于卷积神经网络的手写数字识别_第9张图片

我是海浪学长,创作不易,欢迎点赞、关注、收藏、留言。

毕设帮助,疑难解答,欢迎打扰!

最后

你可能感兴趣的:(机器视觉毕业设计,毕设选题教程,深度学习,课程设计,神经网络,算法,机器学习,java)