基于人工智能的苹果成熟度检测
一、选题的背景
苹果在采摘期被采摘后,需要工人进行手工对苹果的成熟度进行分类,这耗费了大量的人力与物力,而且相近成熟度难以区分,存在分类颗粒度过粗,分类过程存在较为强烈的主观因素等问题。
在这里,我们提出了基于深度学习的苹果成熟度识别方案,这是一种用于帮助农民和采摘工人判断苹果成熟度的人工智能系统。它能够从图像中快速、准确地判断苹果的成熟度,判断苹果是否已经成熟,从而为农民和采摘工人提供帮助。
二、数据集的来源
数据一共有A -F一共六种不同成熟度的苹果,一共包括6161张照片。
AppleD文件夹: 拍摄于成熟5个月前,此时苹果还很青涩
AppleF文件夹: 拍摄于成熟4个月前
AppleE文件夹: 拍摄于成熟3个月前
AppleC文件夹: 拍摄于成熟2个月前
AppleA文件夹: 拍摄于成熟1个月前
AppleB文件夹: 拍摄于成熟时,此时苹果成熟度最高
三、采用的机器学习框架描述
采用keras框架搭建分类模型,完成模型训练、预测和分类任务。
采用tensorflow.image API与tensorflow.data API完成图片的增强与数据集的制作。
采用sklearn,完成训练集和测试集的划分,并且固定随机数种子,防止信息泄露。
四、涉及到的技术难点与解决思路
tf.data可以把python写的代码编译到C++后端高效执行,因此也存在较大的限制。对模型张量存在要求,使用上也有限制。
数据集并不算十分充裕,因此引入预训练模型就十分必要了。这里采用的是ResNet50在imageNet上预训练的模型,有很强的泛化能力。
五、数据的预处理
为了利用在ResNet在ImageNet上预训练的权重,因此我们要使用与预训练相同的数据预处理方式,使数据保证在同一份分布上。
网络输入尺寸设置为224 * 224 * 3的RGB全彩图像,为了迎合各种尺寸的实际图像,需要把数据集中的图像按比例缩放,保证图像不会走形,影响模型的性能。将图片进行居中对齐,然后对每个维度缺失部分填0补充,反映到图像上,及为图像增加黑边。
在这里我们采用图片放大然后随机裁剪的方式对数据集进行扩充。
在实际中,我们缩放后的图片并非为实际网络输入尺寸,而是输入尺寸的1.4倍,然后再随机裁剪出需要尺寸。
最后对图片进行随机镜像,随机旋转进行数据增强,提高模型性能。
六、模型选择:
模型采用ResNet50,并加载imageNet数据集上训练的权重,降低训练压力,提高训练效果。
七、训练参数:
优化器: 采用Adam优化器学习率设置为2*1e-4,并训练3个epoch
损失函数: 采用SparseCategoryEntropy,及交叉熵作为分类损失。
衡量指标: 采用正确率和计算损失作为衡量指标
八、开始训练:
这里我训练了6个epoch,但是由图可知只有前3个epoch是有效训练。
训练集和测试集按照6:4比例划分,分类模型在测试集上实现了99.4%的分类精度。
九、模型测试:
我们加载一张图片对苹果进行分类演示:
模型预测苹果为D类,实现了正确分类。
十、总结
通过这次的实验,我学会更好的使用python,利用python做好更多的事情,只要一些简单的代码,就能让电脑学会分辨苹果的成熟度,很是方便,自己也可以利用这个程序检验生活中苹果的成熟度。
标签:训练,成熟度,模型,分类,人工智能,文件夹,苹果 From: https://www.cnblogs.com/51chenweiyang/p/17003054.html