APP下载

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

2020-06-11杨美艳任富顺顾志东

科技创新导报 2020年6期
关键词:识别花卉深度学习

杨美艳 任富顺 顾志东

摘   要:深度学习是机器学习的一种前沿发展,设计主要利用谷歌的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.

猜你喜欢

识别花卉深度学习
李鱓·花卉十二开
三招搞定花卉病虫害
《花卉之二》
水晶泥花卉栽培技术
MOOC与翻转课堂融合的深度学习场域建构
大数据技术在反恐怖主义中的应用展望
青岛市中山公园园林树木易混淆品种识别