杨美艳 任富顺 顾志东

摘   要:深度学习是机器学习的一种前沿发展,设计主要利用谷歌的tensorflow框架,实现了对十种花卉的分类和识别。通过已有的大量的花卉图片素材,编写卷积神经网络对花卉图片训练集进行训练,并且将训练后所得模型存放在指定文件夹。再编写一个简洁的python图形的用户交互界面,实现图片的选择,根据训练出来的神经网络将识别结果输出。

关键词:深度学习  tensorflow;python  花卉  识别

中图分类号:S68;TP183;TP391                 文献标识码:A                       文章编号:1674-098X(2020)02(c)-0130-03

目前人类在实现人工智能的道路上不断地探索和创新,发明出了很多方法来实现人工智能,机器学习就是其中的一种。机器学习可以说是让机器来模拟人类的学习行为,重组现有的知识结构,通过现有的知识去学习新的知识。深度学习是机器学习的一种前沿发展。

此设计在Ubuntu上进行,编程语言是python,利用tensorflow这个谷歌框架,在Jupyter notebook上进行编写。

1  系统设计思路

系统是一个基于tensorflow这个谷歌深度学习框架的程序,这个 程序可以对指定的十种花卉进行分类和识别。核心思路是先设计一个卷积神经网络,这个神经网络的结构是两个卷积层、两个池化层、三个全连接层。将事先收集好的图片集根据种类打上不同的标签,将标签和图片这两个列表组合为一个输入数据队列,队列在分批次地送入神经网络中训练得到模型后,将模型保存在指定文件夹。再根据已有的模型来识别。

设计的核心就是卷积神经网络的设计,设计所用的卷积神经网络是由两个卷积层,两个池化层,三个全连接层组成。神经网络的结构如图1所示。

要想有一个神经网络来达到输入一张图片就能识别出这张图片的效果,就需要训练这个神经网络,训练神经网络这个过程的实质就是设置神经网络中的参数值,合理有效的神经网络才能实现识别。系统中使用监督学习的方式来训练这个神经网络。使用前向传播算法来获得预测值,再用损失函数表示计算预测值和正确答案之间的差距,使用反向传播算法和梯度下降算法来调整网络中的参数,训练神经网络模型的流程图如图2所示。

2  系统各模块具体实现

在以下的论述中,将依次展现各个功能模块的具体设计及实现。

2.1 图片处理

2.1.1 图片的采集

要事先收集这10种花的大量图片,放在指定文件夹里,作为训练集,图片数量不能太少,因为花卉的图片属于像素较高,比较复杂的图片,如果训练用的图片不够多,训练出来的神经网络模型会因为训练不足而识别准确率较低。

2.1.2 创建标签分类函数

因为本课题中对神经网络的训练方式的监督学习的方式,所以所有训练的图片都是事先知道分类的,那么需要一个函数来给每一种图片打上对应的不同的标签, 以此来表示分类的正确结果。

2.1.3 获取图片批次函数

将图片分批次地传入神经网络里训练,这种方式提高了内存利用率。需要定义一个get_batch( )来一批批地获取数据,在分成一个个batch之前,先要将图片集和标签集都转换成tensorflow可识别的格式。

2.2 卷积神经网络设计

2.2.1 卷积层

卷积核尺寸是3×3的,卷积核的深度是16,而偏差biases的深度也是16,而且被赋初试值为0.1。tf.nn.conv2d这个函数提供了一个十分方便的实现卷积层并且向前传播的方法,这个函数第一个输入是图片解码后的像素矩陣,tf.nn.conv2d的第二个输入是卷积层的权重weights,第三个输入是卷积核在不同维度上的步长,程序里的strides=[1,1,1,1]表示卷积核每次沿着x轴和沿着y轴挪动的时候挪动单位长度为1。在卷积核处理图片的时候,有的时候因为图片大小问题或者步数设置问题导致不可能将每个方向所有的部分都处理完,这时候可以选择是否对图片边缘进行补零处理,padding这个参数的设置就是选择是否进行对图片四周补零,当 padding=valid时不添加零,padding=same时添加零。

2.2.2 池化层

池化层的优点就是可以非常有效的缩小矩阵的尺寸,而且可以保留相对主要的特征,减少下一层要处理的参数。和卷积层有些类似,池化层的向前传播也是通过一个类似于卷积核这样的过滤器的结构完成的。目前实践中使用的最多的池化是最大池化和平均池化。和卷积层一样,池化层过滤器这些参数也要设置,例如是否用零填充、过滤器的尺寸为多少、过滤器步数为多少。

卷积层conv2接着对上一个池化层作处理,卷积核的尺寸为3×3,深度为16,在这一层选择了使用全0补充。池化层2过滤器大小为3×3,深度为16,也选择了全0补充。

2.2.3 全连接层local3和local4

本设计的神经网络中有两个全连接层,全连接层的结点和前一层的所有结点都是相互连接的。

全连接层local3的输入是前一层,即池化层pool2层的输出,池化层向全连接层实现前向传播的方式很简单,就是利用前面所说的矩阵乘法。但是因为池化层的输出是一个矩阵,而全连接的输入格式要求向量,所以通过tf.reshape()将矩阵拉直成为一个向量。

全连接层local4的输入是一个向量,所以不用进行拉直处理,实现全连接层local3向全连接层local4的前向传播和上面一样,用矩阵乘法就可以了。

2.2.4 全连接层softmax_linear

系统以10种花卉为识别对象,卷积神经网络的输出有十种情况,代表10种不同的花卉,所以需要有一层来完成分类任务,即这一层输出数量是10,这层输出可以被tf.nn.softmax_cross_entropy_with_logits函数直接处理。这一层的输出是一个长为n_classes的向量,其中n_classes为分类结果个数,这一层的输出通过softmax函数处理和计算出交叉熵后就能得到最终的结果。

2.3 训练神经网络

2.3.1 获取损失函数(loss)

训练神经网络是本课题的核心环节,一个网络的好坏决定了预测结果的可信度的高低。前面提到了神经网络的训练过程实际就是在迭代地修改网络中参数的过程,而对一个网络的参数的修改离不开损失函数(train_loss),那么在训练网络之前需要先定义损失函数。在原始输出被softmax函数转换成概率分布并且计算出交叉熵后,再对这一批数据的交叉熵用函数tf.reduce_mean方法求取平均值,因为求取平均值可以减小误差,最后将这个平均值作为这一批数据的训练损失返回。

二、优化神经网络

系统使用梯度下降算法來优化网络,所以需要先定义网络优化算法,即定义参数迭代改变的算法。

在定义完一切需要的函数后,可以开始训练神经网络模型了,先定义训练所用图片集的文件夹和保存神经网络的文件夹,通过之前定义的文件处理函数和获取批次函数来获取训练时的图片批次和标签批次。每训练100步,输出当前的训练损失和识别准确率,每隔2000步保存一下网络模型,网络模型保存'/home/huanhuan/SaveNet/' 目录下,保存为.pb格式的文件,名字为model.ckpt。tensorflow有两种方式来实现对训练出来的网络模型的保存,第一种方式是生成检查点文件,该文件的扩展名通常为.ckpt,通过在tf.train.Saver对象上直接用Saver.saver()生成,这种方法不仅仅保存了一些权值,也保存了许多定义的变量。第二种方式就是生成图协议文件(graph proto file),这种文件扩展名一般为.pb,用这种方式生成的文件是图协议文件,也就是只保存图形结构不保存权重,用方法tf.train.write_graph()来保存。

3.4 图片识别功能的实现结果

如上图是成功分类的例子,系统经过训练,能正确地输出了几张图片所属类别,并且通过消息框给出成功识别的提示。

参考文献

[1] 伍锡如,雪刚刚,刘英璇.基于深度学习的水果采摘机器人视觉识别系统设计[J].农机化研究,2020(02):177-182+188.

[2] 王雪, 隋立春, 钟棉卿, 等. 全卷积神经网络用于遥感影像水体提取[J]. 测绘通报, 2018.

[3] Ian G, Yoshua B, Aaron C. 赵申剑, 黎彧君, 符天凡, 等, 译. 深度学习[M]. 北京: 人民邮电出版社, 2017.

[4] Yiqun Dong. Implementing Deep Learning for comprehensive aircraft icing and actuator/sensor fault detection/Identification[J].Engineering Applications of Artificial Intelligence,2019,83.

[5] 李超人.基于机器学习的图像检测分析[J].科学技术创新,2019(16):90-91.

[6] 李昱锋,李建宏,文永明.基于TensorFlow的K-means算法的研究[J].信息技术与网络安全,2019(05):37-41.

[7] 陈銮雄,高远鹏,廖艳娟,黄剑华,程广展,王师克.基于TensorFlow机器学习平台的综合接入机房规划方法研究[J].电信技术,2019(04):12-14.

花卉识别python_基于深度学习的花卉识别系统设计与实现相关推荐

  1. 基于MATLAB花卉识别系统,基于深度学习的花卉识别系统设计与实现

    杨美艳 任富顺 顾志东 摘   要:深度学习是机器学习的一种前沿发展,设计主要利用谷歌的tensorflow框架,实现了对十种花卉的分类和识别.通过已有的大量的花卉图片素材,编写卷积神经网络对花卉图片 ...

  2. 【步态识别】基于深度学习的步态识别系统的MATLAB仿真,包括ALEXNET,改进CNN,GOOGLENET

    1.软件版本 matlab2021a 2.本算法理论知识 图显示了步态识别研究策略的流程图.在整个研究过程中,我们将从实际场景中记录多人的行走视频.利用颜色模型从行走视频中提取人体目标,得到人体目标行 ...

  3. 基于深度学习的人脸识别系统系列(Caffe+OpenCV+Dlib)——【六】设计人脸识别的识别类...

    前言 基于深度学习的人脸识别系统,一共用到了5个开源库:OpenCV(计算机视觉库).Caffe(深度学习库).Dlib(机器学习库).libfacedetection(人脸检测库).cudnn(gp ...

  4. 毕业设计 基于深度学习的动物识别 - 卷积神经网络 机器视觉 图像识别

    文章目录 0 前言 1 背景 2 算法原理 2.1 动物识别方法概况 2.2 常用的网络模型 2.2.1 B-CNN 2.2.2 SSD 3 SSD动物目标检测流程 4 实现效果 5 部分相关代码 5 ...

  5. 基于深度学习的行为识别方法综述

    前言 行为识别是机器理解世界以及人类行为的关键技术,在智慧护理.智能监控.视频检索.智能家居方面有着广泛的应用前景.本文对当前流行的基于深度学习的行为识别技术进行总结. 一.行为识别方法 基于深度学习 ...

  6. 基于深度学习的花卉检测与识别系统(YOLOv5清新界面版,Python代码)

    摘要:基于深度学习的花卉检测与识别系统用于常见花卉识别计数,智能检测花卉种类并记录和保存结果,对各种花卉检测结果可视化,更加方便准确辨认花卉.本文详细介绍花卉检测与识别系统,在介绍算法原理的同时,给出 ...

  7. 水位尺读数识别 python_一种基于深度学习的水尺识别方法与流程

    本发明涉及水位监测 技术领域: :,具体地说,涉及一种基于深度学习的水尺识别方法. 背景技术: ::近些年来,随着图像处理技术的发展,通过计算机获得图像里的详细信息成为了一种非常方便且高效的方式.将图 ...

  8. 基于深度学习的口罩识别与检测PyTorch实现

    基于深度学习的口罩识别与检测PyTorch实现 1. 设计思路 1.1 两阶段检测器:先检测人脸,然后将人脸进行分类,戴口罩与不戴口罩. 1.2 一阶段检测器:直接训练口罩检测器,训练样本为人脸的标注 ...

  9. 每周AI应用方案精选:虹膜识别;基于深度学习人脸识别方案等

    2019-12-12 17:52:41 每周三期,详解人工智能产业解决方案,让AI离你更近一步. 解决方案均选自机器之心Pro行业数据库. 方案1:虹膜识别解决方案 解决方案简介: 虹膜识别技术是基于 ...

最新文章

  1. 小狗扫地机器人与石头_当戴森遇到石头机器人,从容应对 “猫狗拆家”
  2. 使用相对长度单位rem布局网页内容
  3. 添加jQuery方法解析url查询部分
  4. ArrayList list = new ArrayList(20);中的list扩充几次
  5. [deviceone开发]-心形点赞动画示例
  6. linux下tomcat8安装
  7. 是时候该了解一波Protocol Buffers了[Java]
  8. SonicWall 督促客户立即修复NSM 本地版本漏洞
  9. SIR模型和Python实现
  10. 自学python好找工作么-非计算机专业自学Python好找工作吗?
  11. 深入 Composer autoload
  12. 乌班图Linux程序自动启动,通过update-rc.d来管理Ubuntu系统的自动启动程序
  13. 辽宁大连最好的计算机大学排名,2020年大连市最好大学排行榜:20所高校上榜,东北财经大学居第二...
  14. 香港马市、田忌赛马?这款游戏 IP 碉堡了
  15. 行走在前端路上的一些想法
  16. 5月智能投影市场大涨58%,当贝稳居DLP第一阵营
  17. Qt中操作SQLite数据库
  18. 苹果笔记本开不了机的解决措施有哪些
  19. IBM服务器U盘安装CentOS6.8系统
  20. bi平台是如何进行数据的采集呢

热门文章

  1. 惊呆了!Java程序员最常犯的错竟然是这10个
  2. Qt5.9自定义按钮实例(上图片下文字,图片文字间距任意可调)
  3. linux修改mac地址
  4. Ubuntu12.04 64位安装qq
  5. 如何在论文中画出漂亮的插图?
  6. java中日志的级别说明
  7. iphone计算机能算度分秒吗,‎App Store 上的“iFxCalc:最人性化的函数计算器,支持自定义中文函数”...
  8. win10图标变白纸_同是Office365,为什么你的软件图标还是旧版的?
  9. Oculus Rift正式发售,准备好开始迈向VR时代
  10. 数据结构之KH[第五,六章] -->选择题 (二)