【基于机器学习的花卉识别系统设计10000字】_第1页
【基于机器学习的花卉识别系统设计10000字】_第2页
【基于机器学习的花卉识别系统设计10000字】_第3页
【基于机器学习的花卉识别系统设计10000字】_第4页
【基于机器学习的花卉识别系统设计10000字】_第5页
已阅读5页,还剩49页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1摘要点,使用Sequential来搭建CNN,搭建了用于识别花卉的CNN模型和轻量级卷 3 3 32 2.2.2卷积层 2.2.3全连接层 2.2.4池化层 6 6 7 73.1.1核心组件 7 8 93.2TensorFlow框架环境配置 3.3本章小结 14.1数据处理 4.1.1数据读取 4.1.2数据划分 4.2配置网络 4.1.2MobileNet模型 4.5模型预测 4.6本章小结 22 24 24 24 27第1章绪论31.1研究背景与意义别花卉的CNN模型和轻量级卷积神经网络MobileNet模型,通过对大量数据进1.2国内外研究现状等研究者提出一种以RGB为基础的图像分割的方法,利用多个特征相互融合的了便于对花卉图像的研究,搜集整理了花卉图像数据集OxfordFlower17和OxfordFlower102。如今,这两个花卉图像数据集已被广泛地应用在了花卉图像机视觉与模式识别会议)、ECCV(欧洲计算机视觉国际会议)等著名国际性学4术会议上,都会有一些关于图像分割、物体识别的研究成果出现。而国内花卉识别的相关研究相对国外起步较晚,虽然研究的时间短,但是也取得了很大的突破。如中科院旗下的植物研究所使用收集到的260万多幅大数据量的图片和弱监督学习方法,开发的拍照识花可以识别上千种花卉,并且有很高的准确度。国内外现有的广泛应用的花卉识别技术大多都是通过聚类、超像素等方式来进行花卉图像的分割,通过提取花卉图像的表层特征如颜色形状信息来识别分类,这种方法虽然简单,但是效果却不尽如人意。最近几年,得益于机器学习快速发展,取得了不错的成绩。使用卷积神经网络模型提取花卉图像更能代表图象特征来识别分类,识别效果比传统特征方法更好,稳定性更高。本文分为五个部分。第1章为绪论,主要介绍了花卉分类的背景知识和国内外研究现状,以及花卉识别的意义。第2章为基础理论,主要介绍了机器学习大概念以及机器学习的算法卷积神经网络(CNN)概述以及基本网络结构。第3章为TensorFlow实验平台的搭建,简要介绍了实现卷积神经网络的TensorFlow框架以及工作原理。第4章为基于机器学习的花卉识别,用的是机器学习的算法卷积神经网络CNN,本章首先对数据进行读取划分,然后使用的Sequential来搭建CNN,搭建了用于识别花卉的CNN模型和轻量级卷积神经网络MobileNet模型,对其进行训练和调用发现MobileNet模型更好。选择MobileNet模型测试准确率。用设计好的UI界面选择一张图片上传然后点击开始预测就会用训练好的模型进行预测,把预测结果输出在界面上。第5章为总结与展望本章主要总结了基于卷积神经网络的花卉识别的工作,并对花卉识别进行了展望。5第2章机器学习概述机器学习是人工智能核心,是使计算机具有智能的根本途径。机器学习是从有限的观测数据中学习出具有一般规律,并可以将总结出来的规律推广应用到没有观测模本上。机器学习可以粗略的分为三个要素:模型、学习准则、优化算法。大部分的机器学习都可以看做这三个基本要素的不同组合。相同的模型也可以有不同的学习算法。机器学习包括有监督学习和无监督学习,分类属于有监督学习。我们可以把一个标记好特征以及标签的东西看做一个样本。一组样本构成的集合成为数据集(DataSet),一般把数据集分为两部分:训练集和测试集。训练集(TrainingSet)中的样本是来训练模型的,也叫训练样本(TrainingSample),而测试集中的样本是用来检验模型好坏的也叫测试样本(TestSample)。机器学习算法中包含了神经网络、线性回归、KNN、SVM和聚类在内的多种算法,这些算法相当于一般普通算法的升级版。2.2卷积神经网络2.21卷积神经网络概述卷积神经网络是用在计算机视觉,这是人工智能的一个分支,计算机视觉就是在告诉你们计算机如何理解图像,比如现在的人脸识别自动驾驶包括美图秀秀还有抖音尬舞机都是用的计算机视觉来开发的。卷积神经网络不光可以来处理图像还可以来处理音频,文本这种消息只要数据可以变成图像格式都可以来处卷积神经网络(ConvolutionalNeuralNetwork,CNN或ConvNet)是一种具有局部连接、权重共享等特性的深层前馈神经网络。目前的卷积神经网络一般是由卷积层、汇聚层和全连接层交叉叠加而成的前馈神经网络。卷积神经网络有三个结构上的特征:局部连接、权重共享以及汇聚。这些特征使得卷积神经网络拥有一定程度上的平移、缩笑和旋转不变性。和前馈神经网络相比,卷积神经网络的参数更少。卷积神经网络与其他神经网络模型最大的区别是卷积神经网络在神经网络6含二层卷积层(这里把真正的卷积层和下采样层统称为卷积层),即卷积层,传播,加权组合得到下一层神经元节点的输入。采用softmax全连接,得到的激卷积神经网络(CNN)目前已经普遍应用在计算机视觉领域,并且已经取得了不错的效果。目前的CNN研究总结来看分为两个方向:一是对训练好的复杂模型进行压缩得到小模型;二是直接设计小模型并进行训练。MobileNet属于后者是Google在2017年提出的一种小巧而高效的CNN模型。2.22卷积层7对应图片部分的像素相连接。这样就减少了权重的数量。同时我们可以设置卷积操作的步长。卷积层会对输入的数据进行特征提取,然后会对数据中隐含的关联性进行抽象,从而抽象出更高层次的特征,这样的作用在花卉识别中可以得到很好的利用,对于卷积层而言,有两个优点,一个是局部连接,局部连接就是每一个神经元都要与需要识别的花卉图片的像素点进行连接,这样的话,如果每一个3×3的卷积核只与图像的3×3区域进行连接的话,最终的结果就是900万个链接,这样我们可以根据卷积层的这个有点来分析花卉的局部特征。卷积层的另一个优点是权值共享,如果像以上所说的,训练一个3×3的卷积核,提取图像中的某一个特征,这样它在图片的其他区域甚至其他地方都有这个能力,这样的话可以提取的特征也就越多池化层和激活函数层等操作是将原始数据映射到隐层特征空间的话,全连接层则起全连接层在整个卷积神经网络中起到“分类器”的作用。如果说卷积层、池到将学到的“分布式特征表示”映射到样本标记空间的作用。当来到了全连接层之后,可以理解为一个简单的多分类神经网络(如:BP神经网络),通过softmax函数得到最终的输出。整个模型训练完毕。两层之间所有神经元都有权重连接,通常全连接层在卷积神经网络尾部。也就是跟传统的神经网络神经元的连接方式是一样的。通俗讲你是一只小蜜蜂,你的任务是找花蜜。你的视野还比较窄,只能看到很小一片区域。当你找到朵花的花蜜之后,你不知道你找到的是不是全部的花蜜,所以你们全部的小蜜蜂开了个会,把所有采到的花蜜都拿出来分享了。全连接层就是这个花蜜大会~全连接层的组成如下:8池化层夹在连续的卷积层中间,用于压缩数据和参数的量,缩小矩阵的尺寸,减小过拟合。简而言之,如果输入是图像的话,那么池化层的最主要作用就是压缩图像。池化层具体操作与卷积层的操作基本相同,只不过池化层的卷积核为只取对应位置的最大值(最大池化)、平均值(平均池化),使用最大值操作的池化层并且不经过反向传播的修改加快计算的速度也可以防止过拟合是使用池化层的优点。本章主要介绍了机器学习相关的理论还有卷积神经网络概述还有卷积神经网络的基本网络结构输入层,卷积层,全连接层和输出层。第3章TensorFlow实验平台的搭建TensorFlow是一个使用数据流图(dataflowgraphs),用于数值计算的开源软件库。3.11核心组件 (devicelayer)/网络层(networkinglayer)。9分发中心从输入的数据流图中裁取子图(subgraph),把子图划分为操作片段并启动执行器。分发中心处置数据流图的时候会进行优化,比如公共子表达式消去(commonsubexpressionelimination)、常量折叠(constantfolding)等等。执行器负责图操作在进程和设备中的运行、收发其它执行器的结果。分布式TensorFlow拥有参数器(parameterserver)来汇总和更新其它执行器返给他的模型参数。负责比较单一的图操作,包括数学计算、数组操作、控制流和状态管理操作的是内核应用。单进程版本的TensorFlow没有分发中心和执行器,而是使用特殊的会话应用(Sessionimplementation)来联系本地装备。3.12低阶api张量(tf.Tensor)在TensorFlow程序中,所有的数据都是通过张量的形式来表示的。张量是TensorFlow的核心数据单位,本质上张量是一个任意维度的数组。可用的张量类型包括常数、变量、张量占位符和稀疏张量。张量的属性值主要有三个:名字(name)、维度(shape)和类型(type)。变量(tf.Variable)是能够通过操作改变所取值的特殊张量。必须先进行初始化后变量才可使用,低阶API中定义的变量必须明确初始化,高阶API例如Keras会自动对变量进行初始化。用户也可以自行定义变量集合。数据流图是用于定义计算结构的。在TensorFlow中,数据流图本质上是一组链接在一起的函数,每个函数都会将其输出传递给0个、1个或多个位于这个级联链上的其他函数。一般地,像Zo⁰)与Z1()这种直接连接,称为直接依赖,而像Zo(⁰与Zo(²)这种称为间接依赖。即Zo(1)直接依赖于Z₀)和Z₁O,而Zo(²)间接依赖依赖于TensorFlow在数据流编程下运行,具体地,使用数据流图(tf.Graph)表示计算指令间的依赖关系,随后依据图创建会话(tf.Session)并运行图的各个部分。tf.Graph包含了图结构与图集合两类相关信息,其中图结构包含图的 (tf.Operation)和边缘(张量)对象,表示各个操作组合在一起的方式,类似于汇编代码但是但不详细规定它们的使用方式;构建数据流图的时候会将节点和边缘对象加入图中不会触发计算按钮,图像构建完成后会将计算部分分流给会话实现计算这一步。会话拥有物理资源,tf.Session.run是运行节点对象和评估张量的主要方式。3.13高阶apiKeras是一个支持TensorFlow、Thenao和Microsoft-CNTK的第三方高阶神经网络API。Keras以TensorFlow的PythonAPI为基础提供了神经网络、尤其是深度网络的构筑模块,并将神经网络开发、训练、测试的各项操作进行封装以提升可扩展性和简化使用难度。在TensorFlow下可以直接导出Keras模块使用。使用TensorFlow.keras可以运行所有兼容Keras的代码并且不会损失速度。平台,其精简版TensorFlowLite甚至可以运行在移动设备平台。本文的神经神TensorFlow的方法很多。TensorFlow框架以Python语言开发为主,所以需要安装Python环境。Python是高效的解释型脚本语言,大多的科学计算和数学模型如numpy等。为了更加方便地管理Python行相关管理。Anaconda是功能丰富,扩展包完备的Python环境管理工具,可以在一个设备上建立多个独立的Python运行环成功搭建了TensorFlow实验平台,简要介绍了实现卷积神经网络的TensorFlow第4章基于机器学习的花卉识别4.11数据读取数据的来源是kaggle的一个花卉分类竞赛,十四张,向日葵七百三十四张,郁金香九百八十四张。读取数据集绘制柱形图运行结果如图4.1所示tuliptulipsunflower734dandeliondaisy4.12数据划分由于本文用到的花卉数据集还没有定义标准分割的形式,首先将利用subsplit函数将数据集分割为三部分,用于训练的占80%,用于验证的0、用于测试占20%。读取源数据集的文件夹,生成划分好的文件夹,分为tri**********************daisy*********************daisy类按照0.8:0.0:0.2的比例划分完成,一共769张图片训练集../data/flower_photos_split\train\da验证集../data/flower_photos_split\val\da测试集../data/flower_photos_split\test\dai***********************dandelion********************dandelion类按照0.8:0.0:0.2的比例划分完成,训练集../data/flower_photos_split\train\dandel验证集../data/flower_photos_split\val\dandel测试集../data/flower_photos_split\test\dandeli************************杠ose*****************rose类按照0.8:0.0:0.2的比例划分完成,一共训练集../data/flower_photos_split\train\r验证集../data/flower_photos_split\val\r测试集../data/flower_photos_split\test\ro******************************sunflower***************************sunflower类按照0.8:0.0:0.2的比例划分完成,一共734张图片训练集../data/flower_photos_split\train\sunflo验证集../data/flower_photos_split\val\sunflo测试集../data/flower_photos_split\test\sunflow******************************tulip****************************tulip类按照0.8:0.0:0.2的比例划分完成,一共984张图片训练集../data/flower_photos_split\train\tu验证集../data/flower_photos_split\val\tu测试集../data/flower_photos_split\test\tul4.2配置网络Keras快速构建神经网络模型Keras中主要有三类模型:Sequentialmodel,SequenctialAPI:顺序模型是从头到尾的线性不分叉的结构。使用方法:单个输入、输出构建简单模型。FunctionAPI:是构建Keras模型最流行的方法。它允许多个输入、多个输出、分支和层共享。Subclassmodel:模型子类化是为需要完全控制模型、层和训练过程的高级开发人员设计的。需要创建一个定义模型的自定义类,而且可能不需要它来执行日常任务。但是,如果你是一个有实验需求的研究人员,那么模型子类化可能是最好的选择,因为它会给你所有你需要的灵活性。4.3构建模型4.31CNN模型ConvolutionPoolingConvolutionPoolingC如图4.4所示,可以看出最左边的船的图像就是输入层,计算机理解为输入若干个矩阵,这点和DNN基本相同。接着是卷积层(ConvolutionLayer),这个是CNN特有的,我们后面专门来讲。卷积层的激活函数使积层后面是池化层(Poolinglayer),这个也是CNN特有的,池化层是没有激活函卷积层+池化层的组合可以在隐藏层出现很多次,图4.4中出现两次。而实际上这个出现的次数是根据模型本身的需要来的。当然也可以灵活使用卷积层+卷积层,或者卷积层+卷积层+池化层的组合,这些组合在构建模型的时候没有在输出层是使用了Softmax激活函数来做图像识别的分类。表4-1MobileNet网络结构MobileNet是一个轻量化的神经网络模型,所谓的轻量化就是可以在一般的separableconvolution,MobileNet不仅可以降低使用模型的计算复杂度,而且可以大大降低使用模型的大小。用.summary()函数可以显示出完整的使用模型架本文是用了两个模型CNN模型和MobileNet模型进行对比学习,CNN模型架构如图4.6所示MobileNet模型架构如图4.7所示,Layer(type)Out0000Non-trainableparamsLayer(type)O004.4模型评估实现花卉识别系统中的数据集包含四千三百二十六朵花卉包含五种花卉雏菊七百六十九张,如图4.8所示蒲公英一千零五十五张,玫瑰七百八十四张,向日葵七百三十四张,郁金香九百八十四张。因为前面没有划分验证集,未提供验证集这种情况,validation_split用于按一定比例从训练集中取出一部分作为验证集。当卷积神经网络网络构建完成后,就可以开始进行训练了。卷积神经网络CNN模型经过训练,花费的时长为24分钟左右经过五次的迭代,最后训练集损失trainloss为0.2854,训练集精确度为0.9239,验证集损失为0.5475,验证集精确度为0.671875。五次迭代的训练和验证精度/损失的学习曲线如图4.9所示;经过10次的迭代的话,最后训练集损失trainloss为0.2014,训练集精确度为0.9700,验证集损失为0.4098,验证集精确度为0.8877。十次迭代的训练和验证精度/损失的学习曲线如图4.10所示根据图4.9图4.10开始训练模型后,训练集和验证集的评估指标随着训练epoch的变化,对比CNN模型中的五次迭代精度略高于十次迭代,损失低于十次迭代的,采用CNN模型五次迭代的准确率更好一点。1.0·TraininTrainingandValidatiMobileNet模型经过训练,花费的时长也为24分钟左右经过十次的迭代,最后训练集损失为0.0455,训练集精确度为0.9912,验证集损失为0.4098,验证集精确度为0.8877。十次迭代的训练和验证精度/损失的学习曲线如图4.12所示;经过五次迭代,最后训练集损失为0.1231,训练集精确度为0.9687,验证集损失为0.3590,验证集精确度为0.8796。五次迭代的训练和验证精度/损失的学习曲线如图4.11所示;经过十次迭代,最后训练集损失为0.0222,训练集精确度为0.9969,验证集损失为0.4747,验证集精确度为0.8808。十五次迭代的训练和验证精度/损失的学习曲线如图4.13所示;根据图4.11、图4.12、图4.13开始训练模型后,训练集和验证集的评估指标随着训练epoch的变化对比MobileNet模型十次迭代的结果优于五次迭代十次迭代的。TrainingAccuracyValidationAccuracy图4.11MobileNet模型迭代五次训练和验证精度/损失的学习曲线00224880开始训练模型后,训练集和验证集的评估指标随着训练epoch的变化。从图中可以看到,验证集的精度高略低于训练集的精度。使用测试集来评估模型可以进一步验证模型的泛化能力。根据两个模型输出训练和验证精度/损失的学习曲线比对MobileNet模型的精度更高一些损失率低。所以测试我进行测试MobileNet模型的识别的准确率。论文里设计的MobileNet模型在训练环节对于花卉的识别分类的验证集准确率大概在88%左右。215/216[---------=------------------>.]-ETA:Os-loss:0.410216/216[===============--======-==-===]-ETA:Os-lo216/216[-=============================]-37s通过界面设计显示出来。界面设计能够使花卉识别的结果直观的表达出来,训练效果可以清晰的通过花卉识别的主页面得到测试与验证,所以界面设计是花卉识别必不可少的一部分。本文设计的花卉识别系统的主界面比较简单。该花卉识别界面,点击加载测试样本界面将访问电脑的文件,从本文用到的数据集中选取任意花卉照片再点击识别花卉。输出界面的主要作用在于反馈识别出来的花卉信息给到用户,将花卉照片输入到后台后,经过模型的测试,从而将获取的花卉信息显示到前端,如图4.14-4.18所示。在识别过程中测试了一百种张花卉图像,只有十一张花卉识别错误。说明本次设计的最终结果较为成功,能够实现预期的目标,实现花卉的分类花卉识别介主页面日关于测试样本待识别加载测试样本测试样本待识别加载测试样本花卉识别测试样本蒲公英测试样本加载测试样本测试样本a郁金香a加载测试样本测试样本加载测试样本主页面曰关于测试样本玫瑰加载测试样本aar测试样本加载测试样本测试样本雏菊本章主要基于机器学习的花卉识别课题进行了研究测试,用的是机器学习的算法卷积神经网络CNN,本章首先对数据进行读取划分,然后使用的Sequential来搭建CNN,搭建了用于识别花卉的CNN模型和轻量级卷积神经网络MobileNet模型,对其进行训练和调用发现MobileNet模型更好。选择MobileNet模型测试准确率。用设计好的UI界面选择一张图片上传然后点击开始预测就会用训练好的模型进行预测,把预测结果输出在界面上能够比较准确地识别出图片属于五种花卉中的哪一种,花卉识别的结果是准确的。说明本次设计的最终结果较为成功,能够实现预期的目标,实现花卉的分类识别。第5章总结与展望花卉识别是利用图像处理技术对花卉进行分割与分类处理的过程。花卉识别在农业生产中具有较重要的意义,它能够减轻花卉从业人员的工作压力工作负担,提高花卉识别效率。自从卷积神经网络被提出以来,机器学习在图像识别与分类、目标检测与定位等方面发展突飞猛进,甚至在人机对局方面发挥了重要作用。标准的卷积神经网络是一种特殊的前馈神经网络模型,通常具有比较深的结构,一般由输入层、卷积层、池化层、全连接层以及输出层组成。(1)简要介绍了花卉识别在国内外各个领域的研究进展及应用成果,研究的背景和意义,国内外现状还有本文的论文结构。(2)分析了机器学习核心基础知识和研究了卷积神经网络结构,为后面的研究提供理论基础。(3)详细描述了TensorFlow框架的基本原理,成功完成TensorFlow实验开发环境的搭建,为后面的研究提供工程基础。(4)成功实现了基于TensorFlow的卷积神经网络模型,通过对比CNN模型和MobileNet模型精度/损失的学习曲线,选择了合适的迭代次数,最后选用了MoblieNet模型在flower数据集上

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论