基于卷积神经网络的图像分类(源码+万字报告+讲解)

目 录
第1章 绪论 1
1.1 课题研究背景与意义 1
1.1.1 手写数字图像分类研究的理论价值 1
1.1.2 手写数字图像分类的原理 2
1.2 国内外研究现状 3
1.3 论文主要研究内容及章节安排 5
第2章 相关技术理论基础 6
2.1 背景知识介绍 6
2.2 深度学习技术 6
2.3 卷积神经网络 7
2.4 支持TensorFlow机器学习算法 8
2.5 本章小结 11
第3章 手写数字图像分类算法研究 12
3.1 基于改进Vgg16的手写数字图像分类算法 12
3.1.1 数据集预处理 12
3.1.2 Vgg16模型 12
3.1.3 残差连接 13
3.1.4 算法流程 14
3.2 本章小结 16
第4章 图像分类模型 17
4.1 数据集介绍 17
4.2 算法流程介绍 18
4.3 支持向量机算法 20
4.4 卷积神经网络 20
4.4.1 BP 20
4.4.2 LeNet 21
4.4.3 CNN 22
4.5 评价指标 23
4.5.1 准确率(Accuracy ACC) 23
4.5.2 F1测度 (F1-measure) 23
第5章 图像分类仿真分析 23
5.1 支持向量机算法表现 24
5.2 BP神经网络实现流程 25
5.3 RLeNet设计优化 31
第6章 系统测试 33
6.1 测试环境 33
6.2 最终效果 34
6.3 图像分类效果对比 36
6.4 测试的概念和意义 37
第7章 总结与展望 38
7.1 总结 38
7.2 展望 39
参考文献 40
致 谢 42
附录 43

第1章 绪论
1.1 课题研究背景与意义
图像分类是计算机视觉的主要研究任务之一,当下随着人工智能技术的快速发展,基于深度学习的图像分类技术已在人脸识别、宠物分类、手写数字图像识别等领域取得重大成功。
手写数字识别是图像分类的常见应用方向,可广泛应用于快递编码识别、简历电话号码识别、电脑自动判卷等方面。手写数字识别正在研究如何使用计算机自动识别手写的阿拉伯数字。在整个OCR领域中,离线手写文字的识别是最困难的。到目前为止,离线手写的英语和汉字识别研究虽然取得了很多成果,但离实用化还很远。在识别手写数字的方向上,研究者们经过多年的研究,已经开始应用于各种实际应用[1~3]。
1.1.1 手写数字图像分类研究的理论价值
对于字符识别处理的数据可以被划归为两个大类别:其一是文本信息,其中包含了各个国家和种族的书写用字,当前在打印字体及在线手写字迹方面的技术已经相对完善,并且开发出许多实际运用系统;另一个则是数据信息。对手写的数字图像进行分类属于模式识别领域的核心议题,也具有深远的理论意义[4-6].

  1. 阿拉伯数字是惟一的被世界各国通用的符号,对手写数字图像分类的研究基本上与文化背景无关,这样就为各国、各地区的研究工作者提供了一个施展才智的大舞台。在这一领域大家可以探讨,比较各种研究方法。
  2. 由于数字图像分类的类别数较少,有助于做深入分析及验证一些新的理论。最明显的例子是人工神经网络(ANN)中相当一部分的ANN模型和算法都以手写数字图像分类作为具体的实验平台,验证理论的有效性,评价各种方法的优缺点。
  3. 尽管人们对手写数字的识别已进行了长时间的研究,也取得了很多成果,但到目前为止机器识别还无法与人的认知能力相比,这仍是一个有难度的开放问题(Open problem)。
  4. 手写数字图像分类的方法可以方便地应用到其他相关问题上,其中一个直接的应用就是识别英文拼音文字。实际上,许多学者将数字和英文字母的识别作为一个研究课题。
    尽管数字仅有10个种类且笔画简易,然而实际应用中,它们的识别效果并未达到预期。根据实验数据,数字的识别能力低于打印体的汉字和在线的手写字母,也略逊色于离线的手写字母。造成这种现象的主要因素包括:首先,由于数字之间的差异较小,辨认起来较为复杂;其次,尽管数字数量有限且笔画简洁,但是每个数字都有多种不同的写法,全球各地的人群都会使用这些数字,并且它们具有显著的地域特征,这就给数字图像分类带来了挑战。所以,对于用户来说,他们需要的不仅仅是高的识别精度,而是尽可能小的错误识别概率,比如百万分之一或千万分之一。
    另外,大规模的数据处理对系统的速度有着严格的需求,许多在理论上看似完美但速度过慢的方法是无法实施的。因此,探索高效率的手写数字图像分类算法是一项极具挑战性的任务。
    1.1.2 手写数字图像分类的原理
    正如之前提到的,书写数字的方式具有显著的地域和族群特征,这使得构建一个用于机器学习和评估的手写数字数据集成为手写数字识别领域的关键步骤,并对识别系统的效能产生重要作用。学者们通常会从两个方向来选取这个数据集:一种方式是由他们自行创建符合需求的数据集;另一种则是采用其他组织已经完成并提供的现有数据集。第一种方法的优势在于其更接近实际应用场景,但劣势也同样明显:耗时较长并且难以确保其代表性,无法与其余的研究成果相比较。所以现在普遍采取的是利用那些由知名机构发布的通用的数据集。当前最常被引用的大型手写数字数据集包括[8-9]等:对于第一种方法来说,其优势在于能够满足个人需求,但同时也存在一些显著的问题:需要投入大量的时间和精力,并且难以确保数据的一致性和准确性,这使得它无法和其他研究者的工作相提并论。所以,当前的研究倾向于选择具有公认权威的数据集作为参考。其中,最常用的是以下两个大型的手写数字数据库[8~9]:
  5. NIST数据集,由美国国家标准与技术局收集﹔
  6. 日本邮电通信政策研究所收集了itpt数据集。
  7. MNIST数据集,由美国国家标准与技术研究所收集。
    作为一个识别系统,需要通过某些参数来评估其性能的优劣,手写数字识别也是如此。评价的标准不仅要参考常规文字识别的指标,还需要根据数字识别的特性进行调整和增补。
    对于一个手写数字识别系统,可以通过以下三个方面的标准来衡量其性能,例如公式(1-1)所描述的。
    (1-1)
    式中,N表示样本数量,a,b,c分别表示正确识别、误识别和拒识别的样本数量。
    定义识别精度如下:
    (1-2)
    对于理想的手写数字识别系统来说,期望其能实现最小的拒绝识别®与最大化的接受识别(A),同时保持较低的错误识别率(S)及较高的准确识别率§和识别精确度®。然而,在一个现实应用场景下,这些参数之间存在着互相影响的关系:当提升了系统的拒绝识别能力,通常会伴随降低它的正确识别率;反之亦然。所以,在评估这类系统性能的时候,需要全面权衡各个因素的影响。从技术角度来看,手写数字识别被归类于模式识别和人工智能领域[10]。
    综上所述,本文开展了基于CNN的图像分类研究,以手写数字图像为研究对象,旨在于提高手写数字图像的分类效率,具有一定的理论和现实研究价值。
    1.2 国内外研究现状
    人工智能的关键组成部分之一是手写数字识别,其应用前景和发展潜力巨大。在国际上,阿拉伯数字被广泛接受为全球通行的数字符号,与各个国家、民族和地区的文化背景无关联,它是世界统一使用的标志[11 ~ 12]。
    在过去四十年的时间里,学者们提出了多种策略以捕捉手写文字的主要特性。主要可分为两大部分:全面解析和构造解析。对于第一种方式,通常采用模板配准、像素密度的计算、矩阵操作、特征点的识别、数理转换等方式,并经常结合统计分类的方法一起运用。而第二种方式则更倾向于通过字符的外形或者框架来抽取其基本形态特征,例如圆环、顶点、节点的定位、曲线段、凸出部分、凹陷区域,常用的搭配方法则是语法分类的方式。
    经过长时间的研究实验证实,没有任何简单的方法能够实现对无约束手写数字的高识别准确性和高识别能力。为了提升这一性能,研究者们不断尝试应用新颖的技术来改进预处理、特征抽取及分类过程,例如:神经网络、数学形态学等等。所以,结合神经网络技术和其他多项技术的综合使用是一个有待关注的重点领域[13]。
    虽然我国的手写数字辨识领域的研究起始时间稍显滞后,但随着不断的进步和扩展,目前其研究范畴已经相当全面。中国科学院的自动化实验室利用了有限状态自动机的相关技术来处理手写的数字,实验数据包含1100例,准确率达到了95.2%。而清华大学的团队则使用支持向量机的方式去鉴别金融单据上的手写数字,共有20000例的数据用于验证,最终的结果是准确度达到92%。
    此外,文献[14]提出了一种基于脉冲神经网络(SNN)的手写数字识别算法,其将前馈的SNN和CNN种的卷积特征提取相结合得到了CSNN模型,并对CSNN模型在MNIST数据集上的静态和动态识别效果进行了分析。文献[15]对LeNet-5模型进行改进,通过加深网络层数和使用更小的卷积核来提高模型的非线性拟合效果,结果表明改进后的LeNet-5模型在MNIST数据集上的识别准确率到达了99.48%。文献[16]提出了一种EfficientDet-D4模型用于手写数字图像分类,结果表明即使在不同的书写风格的条件下(如噪声、模糊、色度、位置和数字的大小变化),EfficientDet-D4模型仍能够达到97%的识别正确率。文献[17]提出了基于最小临近法KNN的手写数字识别方法,其基于Python语言实现了算法编程,并通过对图片灰度化和二值化实现输入图片规格的统一。
    1.3 论文主要研究内容及章节安排
    本文利用深度学习中的CNN算法,开展了基于CNN的图像分类算法研究。主要章节安排如下:
    第1章 绪论
    本章首先阐述了课题研究背景及意义,然后对手写数字图像分类算法的国内外研究现状进行了分析。
    第2章 相关技术理论基础
    本章首先简要介绍了MNIST数据集,然后对经典的手写数字图像分类模型的基本原理进行了阐述,最后简要概述了深度学习。
    第3章 基于卷积神经网络的手写数字图像分类算法研究
    本章首先研究了CNN的基本原理,然后研究了一种基于改进Vgg16的手写数字图像分类算法,并给出了详细的算法流程,最后进行了实验和结果分析。
    第4章 总结与展望
    本章对全文工作内容进行总结,并展望了后续研究内容和方向。

第2章 相关技术理论基础
2.1 背景知识介绍
随着信息技术的快速发展,图像数据在各个领域的应用越来越广泛,如医疗诊断、安全监控、自动驾驶等。因此,如何高效、准确地对图像进行分类成为了研究的热点。卷积神经网络(Convolutional Neural Network,CNN)作为深度学习的一种重要模型,近年来在图像分类领域取得了显著成果。卷积神经网络通过模拟人脑视觉系统的层级结构,对图像进行特征提取和分类。其特有的卷积层能够捕获图像的局部特征,并通过池化层实现特征降维,减少计算复杂度。此外,全连接层能够将特征映射到具体的类别标签,实现分类任务。经过大量标注数据的训练,卷积神经网络能够学习到图像中的深层特征表示,从而提高分类的准确性和鲁棒性。目前,基于卷积神经网络的图像分类技术已广泛应用于各种实际场景中。例如,在医疗领域,卷积神经网络可以帮助医生快速识别病变区域;在安防领域,它可以实现人脸识别、目标跟踪等功能;在自动驾驶领域,它可以用于车辆检测、交通标志识别等任务。因此,对基于卷积神经网络的图像分类技术进行研究,不仅具有重要的理论价值,还具有广泛的应用前景。
2.2 深度学习技术
由人工神经网络发展而来的深度学习技术是现代人工智能技术的重要组成部分。早在1960年代,感知机模型就已经成功地完成了对于基本信息单元的识别任务,这展示出了神经网络所具备的"智慧能力"。然而,直至2006年,由Hinton等人引入并阐述的深度信念网络(DBN,即深层贝叶斯网络)方才正式提出了深度学习这一理念。
与传统机器学习算法的不同之处在于,深度学习算法能够进行多层复杂特征自主提取,避免了人工特征提取的主观性。深度神经网络主要是模拟人体神经系统的结构,一般来说深度神经网络与BP神经网络的区别在于隐藏层的“深度”,多层隐藏层能够使深度神经网络对输入特征进行更抽象和更深层次的学习。如图2-1 为一个多隐藏层的深度学习网络模型。

图2-1 多隐藏层深度神经网络的拓扑结构
近年来,深度学习算法在医药研发、人体基因组计划和医学图像处理等方面取得了突破性进展。通常,深度学习算法的表现取决于其设计和训练集。隐藏层数越多,网络模型的非线性拟合能力就越强。然而,随意增加隐藏层的数量无疑会导致算法的总体运行时间延长,从而降低了算法的效率。因此,深度学习算法的网络结构必须要结合具体需求进行调整。
2.3 卷积神经网络
卷积神经网络作为深度学习模型的主要模型之一,被广泛应用于图像处理技术,其基本原理如下:

  1. 输入层。根据应用任务的不同,需要配置不同的输入层。当使用CNN处理图像时,通常会将归一化后的图像像素矩阵作为输入层,其中包括图片的长宽和通道数。CNN会从输入层开始对像素数据进行处理,最终传递到输出层。
  2. 卷积层。卷积层是CNN中最核心的网络层,其主要是对输入数据进行特征提取,具有局部感知和权值共享的特点,有效降低了网络训练参数。假定输入卷积层的数据大小为 ,利用 大小的卷积核对其进行特征提取,输出结果如下:
    (3-1)
    式中,I表示输入数据,W表示权重矩阵,B为偏置。
    对图像进行二维卷积时,可能会造成图像信息缺失的问题,因此可以利用Padding操作来对缺失的边缘数据进行处理。如Valid Padding操作可以直接舍弃部分边缘数据来简化后续计算;Same Padding操作能够根据卷积核的大小对图像边缘部分进行零填充,调整输出的特征图尺寸。
  3. 池化层。经卷积层提取后的特征维度虽然得到大幅降低,但仍存在参数量过多的问题,因此需要利用池化层进一步选择与训练任务相关的特征图和信息。池化层计算表达式如下:
    (3-2)
    在公式里,down代表池化函数,这些常见的池化函数包括最大值池化、平均值池化和全局平均池化等,也就是说,用相应区域的最大值、平均值和全局平均值来描绘特征图的信息。
  4. 全连接层。全连接层即Dense层,通常位于CNN隐藏层的最后部分。Dense层前一般需要添加Flatten层,即对输入Dense层的数据进行“拉平”操作,然后由Dense层对提取后的特征数据进行非线性组合。
  5. 输出层。Dense层的输出一般连接至输出层,根据不同应用任务添加不同激活函数以实现不同功能。如“二分类”任务的输出层激活函数一般为SoftMax,而“拟合”任务的输出层激活函数一般为Linear。
    2.4 支持TensorFlow机器学习算法
    TensorFlow是一个开源的机器学习平台,是由google公司推出的人工智能系统。它通过将深度卷积神经网络与传统机器学习相结合来实现对图像数据的自动处理。Tensorflow是一种可以在多种平台上部署的工具,特别适合在大规模的分布式环境中使用。与Tensorflow类似的工具集,它具备高度的灵活性、跨多个平台的兼容性、快速的操作速度、易于上手、可移植性和高效性。研究者们利用这个工具集来培训和实施各种机器学习模型,这包括但不限于构建自动化的智能图片分析、语音识别和机器翻译等功能。它还能处理一些特殊领域的问题,如文本分类、图像分割、人脸识别等等。Tensorflow为用户提供了一个平台,使其能够在大规模的异构系统中工作,这不仅适用于生产任务,还可以帮助他们探索新的方法。google的许多应用程序,如Gmail、google play、搜索、翻译、地图、Android、YouTube等,都可以通过Tensorflow来实现。
    Tensorflow是一个基于数据流图的编程系统[23],在Tensorflow中,通过将计算问题转化为计算图,可以使用这个框架,它不仅适用于深度学习,还可以应用于机器学习。它是一种将大数据量转换成小数据量的工具。Tensorflow是基于其固有的工作原理来命名的,而Tensor(张量)是数据的表示方式,Flow代表流动,Tensor则用于展示数据或列表等内容。它是一种通用的数据处理方法。在Tensorflow软件中,数据是以流的方式进入到数据运算的各个节点中的。由于计算过程和结果都是用矩阵进行表达的,所以将整个计算过程分解成几个独立的模块。接下来,将探讨Tensorflow编程模型。与传统的参数服务器相比,Tensorflow具有更高的灵活性。例如,在图2.10:Session(会话)中,可以启动多个Graph(图),每一个图都代表一个计算任务。在Tensorflow中,执行计算图Graph需要在Session中启动,而Graph中可以存储Operation(op),一个op是由多个Tensor运算组成的。

图2-2 Session示意图
在TensorFlow软件中,无需使用反向传播来计算梯度,并且支持自动导数计算。该方法可以避免陷入局部极小值点或收敛于全局最优点。在机器学习的算法应用中,梯度下降算法经常被用来寻找目标函数的最佳答案。本文研究了梯度下降算法的改进方法。梯度下降算法存在三种主要的形式:标准梯度下降法是基于所有样本的误差来更新权重的,而随机梯度下降法则是基于随机选择样本的误差来进行权重的更新。标准梯度下降和随机梯度下降都存在局部极小问题。在样本量较大的情况下,标准梯度的降低需要进行大量的更新,这会消耗更多的时间。相反,随机梯度的下降速度更快,但单一样本的权值更新可能导致权值更新的方向出现错误或偏离。因此,对于大型问题或者大规模数据集,可以选择使用批量梯度下降算法。批量梯度下降算法作为前两种梯度下降算法的中间解决方案,是基于一个批次(batch)的误差来进行权值更新的。例如,在总共1000个样本的情况下,每一次都会随机选择其中的100个样本作为一个批次进行权值更新,这种方式不仅缩短了更新时间,还确保了更新方向的准确性。当使用梯度下降算法来更新权重时,由于学习率过于直观,如果学习率太低,那么收敛的速度会很慢,需要更多的时间,而如果学习率太高,可能会在局部最优解附近徘徊或者发散。
在Tensorflow软件中,可以找到各种常见梯度下降的变体优化方法[24]。它们是基于梯度信息来进行计算和选择,而不是根据每个个体对全局最优解的贡献大小来决定是否使用这种方法,这一点很重要。接下来,我要为大家介绍Tensorflow中经常使用的优化工具[27]:GradientDescentOptimizer。当函数存在多个局部最小值时,其中一个维度的表面弯曲会比另一个维度更为陡峭。在这些局部最优解中,山谷斜坡的振动很难跳出局部最小值。通过增加一些变量来改变这个方向,从而达到更好的效果。在权值更新过程中,MomentumOptimizer加快了随机梯度的下降速度。当权值更新时,它会增加一个动力因子。下一次权值的更新会受到上一次权值的影响,如小球下降时的惯性效应,这会使其下降得更快。但是,如果小球盲目地跟随下坡的梯度,可能会导致错误。本文主要针对不同类型数据集做实验比较了两种算法。在AdagradOptimizer中,学习速率的适应参数是这样的:对于常见的数据集,使用较低的学习率来调整参数;而对于不常见的数据集,使用较高的学习率来调整参数。本文通过对不同样本进行仿真实验,比较了两种算法的收敛性能和稳定性,并分析了这两个因素与算法收敛速度之间的关系。AdagradOptimizer是一个特别适合处理稀疏数据集的工具,比如在一个图片数据集中,猫的照片数量为10000张,而狗的照片数量为100张。由于猫的数据量较大,其学习率相对较低,而狗的数据量较小,但学习率却相对较高。在本文实验中,选择了两种不同类型的图像作为测试样本。AdagradOptimize的学习速率并不需要进行调整,但随着训练次数的逐渐增多,学习速率会持续下降,最终趋近于0。当出现过拟合现象时,通过多次迭代来达到最优解。AdamOptimizer能够保存之前更新过的梯度数据,因此不会因为梯度过大而导致参数更新过快。它能够自动调整学习率,参数更新相对稳定,并且在处理噪声方面被普遍认为是一个优秀的优化工具。
2.5 本章小结
本章通过对背景知识、深度学习技术、卷积神经网络和TensorFlow机器学习算法的详细介绍,为后续章节的研究提供了坚实的理论基础和技术支撑。在接下来的章节中,将基于这些理论和技术,构建基于卷积神经网络的图像分类模型,并进行实验验证和性能分析。
第3章 手写数字图像分类算法研究
3.1 基于改进Vgg16的手写数字图像分类算法
3.1.1 数据集预处理
本研究使用了公开的mnist手写数字图片资料集来进行深度学习模型的训练。在考虑到计算机的内存和运行速度后,选择了10000个样本并按照8 : 2的比例

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值