基于人工智能的苹果成熟度检测

这篇具有很好参考价值的文章主要介绍了基于人工智能的苹果成熟度检测。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、选题的背景

苹果在采摘期被采摘后,需要工人进行手工对苹果的成熟度进行分类,这耗费了大量的人力与物力,而且相近成熟度难以区分,存在分类颗粒度过粗,分类过程存在较为强烈的主观因素等问题。

在这里,我们提出了基于深度学习的苹果成熟度识别方案,这是一种用于帮助农民和采摘工人判断苹果成熟度的人工智能系统。它能够从图像中快速、准确地判断苹果的成熟度,判断苹果是否已经成熟,从而为农民和采摘工人提供帮助。

二、数据集的来源

数据一共有A -F一共六种不同成熟度的苹果,一共包括6161张照片。

机器学习做水果农产品分类和成熟度研究,人工智能,机器学习,ai,AI编程,生活

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上预训练的模型,有很强的泛化能力。

五、数据的预处理

机器学习做水果农产品分类和成熟度研究,人工智能,机器学习,ai,AI编程,生活

为了利用在ResNet在ImageNet上预训练的权重,因此我们要使用与预训练相同的数据预处理方式,使数据保证在同一份分布上。

网络输入尺寸设置为224 * 224 * 3的RGB全彩图像,为了迎合各种尺寸的实际图像,需要把数据集中的图像按比例缩放,保证图像不会走形,影响模型的性能。将图片进行居中对齐,然后对每个维度缺失部分填0补充,反映到图像上,及为图像增加黑边。

在这里我们采用图片放大然后随机裁剪的方式对数据集进行扩充。

在实际中,我们缩放后的图片并非为实际网络输入尺寸,而是输入尺寸的1.4倍,然后再随机裁剪出需要尺寸。

最后对图片进行随机镜像,随机旋转进行数据增强,提高模型性能。

六、模型选择:

模型采用ResNet50,并加载imageNet数据集上训练的权重,降低训练压力,提高训练效果。

七、训练参数:

优化器: 采用Adam优化器学习率设置为2*1e-4,并训练10个epoch

损失函数: 采用SparseCategoryEntropy,及交叉熵作为分类损失。

衡量指标: 采用正确率和计算损失作为衡量指标

机器学习做水果农产品分类和成熟度研究,人工智能,机器学习,ai,AI编程,生活

八、开始训练:

机器学习做水果农产品分类和成熟度研究,人工智能,机器学习,ai,AI编程,生活

这里我训练了6个epoch,但是由图可知只有前3个epoch是有效训练。

训练集和测试集按照6:4比例划分,分类模型在测试集上实现了99.4%的分类精度。

九、模型测试:

我们加载一张图片对苹果进行分类演示:

机器学习做水果农产品分类和成熟度研究,人工智能,机器学习,ai,AI编程,生活

机器学习做水果农产品分类和成熟度研究,人工智能,机器学习,ai,AI编程,生活

机器学习做水果农产品分类和成熟度研究,人工智能,机器学习,ai,AI编程,生活

模型预测苹果为D类,实现了正确分类。

十、总结

通过这次的实验,我学会更好的使用python,利用python做好更多的事情,只要一些简单的代码,就能让电脑学会分辨苹果的成熟度,很是方便,自己也可以利用这个程序检验生活中苹果的成熟度。

十一、代码

import tensorflow as tf

from keras.applications import resnet

from keras.losses import SparseCategoricalCrossentropy

from keras.layers import *

from keras.applications.resnet import preprocess_input

from keras import Model

from keras.optimizers import Adam

import matplotlib.pyplot as plt

from sklearn.model_selection import train_test_split

from keras.callbacks import ModelCheckpoint

import os

pretained = True

image_size = 224

expand_rate = 1.1

expand_size = int(expand_rate * image_size)

batch_size = 32

learning_rate = 1*1e-5

#classes = [‘Apple’,‘Carambola’,‘Kiwi’,‘Orange’,‘Pear’,‘Pitaya’,‘Pomegranate’,‘muskmelon’,

‘Banana’,‘Guava’,‘Mango’,‘Peach’,‘Persimmon’,‘Plum’,‘Tomatoes’]

#data_dir = r"D:\datasets\水果分类"

classes = [‘Apple A’, ‘Apple B’, ‘Apple C’, ‘Apple D’, ‘Apple E’, ‘Apple F’]

data_dir = r"D:/苹果成熟度分类\Apple"

weights_file = “苹果分类ResNet50.h5”

def build_resnet50_model(input_size,num_classes,is_pretrained):

_input = Input((input_size,input_size,3))

_body = resnet.ResNet50(include_top=False,weights= 'imagenet' if is_pretrained else None,pooling='avg')(_input)

_output = Dense(num_classes,activation='softmax')(_body)

model = Model(inputs=_input,outputs=_output)

model.compile(optimizer=Adam(learning_rate= learning_rate),loss=SparseCategoricalCrossentropy(from_logits=False),metrics='accuracy')

return model

model = build_resnet50_model(image_size,len(classes),True)

model.summary()

def process_image(filepath,label_idx,show_image=False):

binary = tf.io.read_file(filepath)

image = tf.image.decode_image(binary,expand_animations=False,dtype=tf.float32)

image_height,image_width = tf.shape(image)[0],tf.shape(image)[1]#获取图片的高,获取图片的宽

#接下来对图片进行等比例缩放.

#宽与高较大的者的缩放后的尺寸会直接设置为目标图片大小

#通过上述确定的先后图片边的尺寸,进而确定比例尺

#通过确定的比例尺对图片另一条边进行缩放

if image_height > image_width:

    new_height = expand_size

    new_ratio = tf.cast(expand_size,tf.float32) / tf.cast(image_height,tf.float32)

    new_width = tf.clip_by_value(tf.cast(tf.cast(image_width,tf.float32)* new_ratio,tf.int32),0,expand_size)

else:

    new_width = expand_size

    new_ratio = tf.cast(expand_size,tf.float32) / tf.cast(image_width,tf.float32)

    new_height = tf.clip_by_value(tf.cast(tf.cast(image_height,tf.float32)* new_ratio,tf.int32),0,expand_size)

image_big = tf.image.resize(image,[new_height,new_width])#对图片按照计算出的高于宽进行调整

image_expand = tf.pad(image_big,[[(expand_size - new_height)//2,expand_size-(new_height+(expand_size - new_height)//2)],

                             [(expand_size - new_width)//2,expand_size-(new_width+(expand_size - new_width)//2)],[0,0]])

image_crop = tf.image.random_crop(image_expand,[image_size,image_size,3])

image_flip = tf.image.random_flip_left_right(image_crop)

image_output = tf.image.random_flip_up_down(image_flip)

#image_output = tf.image.transpose(image_flip,tf.gather([0,90,270],tf.random.uniform((),minval=0,maxval=3,dtype=tf.int32)))

if not show_image:

    image_output = preprocess_input(image_output * 255.)

return image_output,label_idx

test_image,_ = process_image(r"D:/苹果成熟度分类\Apple\Apple03.jpg",‘’,show_image=True)

print(tf.reduce_mean(test_image))

print(tf.reduce_max(test_image))

import matplotlib.pyplot as plt

plt.imshow(test_image)

def load_dataset(data_dir):

filepaths = []

label_idices = []

for label_idx,current_dir in enumerate(classes):

    for filename in os.listdir(os.path.join(data_dir,current_dir)):

        filepath = os.path.join(data_dir,current_dir,filename)

        filepaths.append(filepath)

        label_idices.append(label_idx)

return filepaths,label_idices

x_train,x_test,y_train,y_test = train_test_split(*load_dataset(data_dir),shuffle=True,random_state=1234)

train_dataset = tf.data.Dataset.from_tensor_slices((x_train,y_train)).shuffle(2048,seed=1234).map(process_image,num_parallel_calls=32).prefetch(tf.data.AUTOTUNE).batch(batch_size)

test_dataset = tf.data.Dataset.from_tensor_slices((x_test,y_test)).shuffle(2048,seed=1234).map(process_image,num_parallel_calls=32).prefetch(tf.data.AUTOTUNE).batch(batch_size)

model.compile(optimizer=Adam(learning_rate=2*1e-4),loss=SparseCategoricalCrossentropy(from_logits=False),metrics=‘accuracy’)

if os.path.exists(weights_file):

model.load_weights(weights_file)

else:

model.fit(train_dataset,validation_data=test_dataset,epochs=10)

def predict_image(imagepath):

input_image = tf.expand_dims(process_image(imagepath,'')[0],axis=0)

output_probs = model(input_image)

image_label_idx = tf.argmax(output_probs,axis=-1)[0]

image_label = tf.gather(classes,image_label_idx).numpy()

image_label = image_label.decode("UTF-8")

return image_label

label = predict_image(r"D:/苹果成熟度分类\Apple\Apple03.jpg")

print("预测的分类为: ",label)

如何学习大模型 AI ?

由于新岗位的生产效率,要优于被取代岗位的生产效率,所以实际上整个社会的生产效率是提升的。

但是具体到个人,只能说是:

“最先掌握AI的人,将会比较晚掌握AI的人有竞争优势”。

这句话,放在计算机、互联网、移动互联网的开局时期,都是一样的道理。

我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。

我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。

😝有需要的小伙伴,可以点击下方链接免费领取或者V扫描下方二维码免费领取🆓
机器学习做水果农产品分类和成熟度研究,人工智能,机器学习,ai,AI编程,生活
机器学习做水果农产品分类和成熟度研究,人工智能,机器学习,ai,AI编程,生活

第一阶段(10天):初阶应用

该阶段让大家对大模型 AI有一个最前沿的认识,对大模型 AI 的理解超过 95% 的人,可以在相关讨论时发表高级、不跟风、又接地气的见解,别人只会和 AI 聊天,而你能调教 AI,并能用代码将大模型和业务衔接。

  • 大模型 AI 能干什么?
  • 大模型是怎样获得「智能」的?
  • 用好 AI 的核心心法
  • 大模型应用业务架构
  • 大模型应用技术架构
  • 代码示例:向 GPT-3.5 灌入新知识
  • 提示工程的意义和核心思想
  • Prompt 典型构成
  • 指令调优方法论
  • 思维链和思维树
  • Prompt 攻击和防范

第二阶段(30天):高阶应用

该阶段我们正式进入大模型 AI 进阶实战学习,学会构造私有知识库,扩展 AI 的能力。快速开发一个完整的基于 agent 对话机器人。掌握功能最强的大模型开发框架,抓住最新的技术进展,适合 Python 和 JavaScript 程序员。

  • 为什么要做 RAG
  • 搭建一个简单的 ChatPDF
  • 检索的基础概念
  • 什么是向量表示(Embeddings)
  • 向量数据库与向量检索
  • 基于向量检索的 RAG
  • 搭建 RAG 系统的扩展知识
  • 混合检索与 RAG-Fusion 简介
  • 向量模型本地部署

第三阶段(30天):模型训练

恭喜你,如果学到这里,你基本可以找到一份大模型 AI相关的工作,自己也能训练 GPT 了!通过微调,训练自己的垂直大模型,能独立训练开源多模态大模型,掌握更多技术方案。

到此为止,大概2个月的时间。你已经成为了一名“AI小子”。那么你还想往下探索吗?

  • 为什么要做 RAG
  • 什么是模型
  • 什么是模型训练
  • 求解器 & 损失函数简介
  • 小实验2:手写一个简单的神经网络并训练它
  • 什么是训练/预训练/微调/轻量化微调
  • Transformer结构简介
  • 轻量化微调
  • 实验数据集的构建

第四阶段(20天):商业闭环

对全球大模型从性能、吞吐量、成本等方面有一定的认知,可以在云端和本地等多种环境下部署大模型,找到适合自己的项目/创业方向,做一名被 AI 武装的产品经理。

  • 硬件选型
  • 带你了解全球大模型
  • 使用国产大模型服务
  • 搭建 OpenAI 代理
  • 热身:基于阿里云 PAI 部署 Stable Diffusion
  • 在本地计算机运行大模型
  • 大模型的私有化部署
  • 基于 vLLM 部署大模型
  • 案例:如何优雅地在阿里云私有部署开源大模型
  • 部署一套开源 LLM 项目
  • 内容安全
  • 互联网信息服务算法备案

学习是一个过程,只要学习就会有挑战。天道酬勤,你越努力,就会成为越优秀的自己。

如果你能在15天内完成所有的任务,那你堪称天才。然而,如果你能完成 60-70% 的内容,你就已经开始具备成为一名大模型 AI 的正确特征了。

这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

😝有需要的小伙伴,可以点击下方链接免费领取或者V扫描下方二维码免费领取🆓
机器学习做水果农产品分类和成熟度研究,人工智能,机器学习,ai,AI编程,生活文章来源地址https://www.toymoban.com/news/detail-849586.html

到了这里,关于基于人工智能的苹果成熟度检测的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • CMM(软件能力成熟度模型)

    目录 CMM简介 CMM的提出过程 CMM族 CMM的主要用途 1、软件过程评估SPA 2、软件过程改进SPI 3、软件能力评估SCE CMM的等级结构  初始级 可重复性 已定义级 已管理级 优化级 “CMM,全称为Capability Maturity Model for Software,即“软件能力成熟度模型”,是对组织软件过程的描述,核心内

    2023年04月09日
    浏览(46)
  • 武汉CMMI能力成熟度评估认证

    CMMI能力成熟度评估认证 CMMI(全称为“能力成熟度模型集成”)是一种评估和改进组织的软件开发和服务过程的方法。通过使用CMMI能力成熟度评估认证,组织可以评估其在软件开发和服务过程方面的成熟度,并找到改进的方向。 CMMI能力成熟度评估认证的好处 1、提升组织的

    2024年02月07日
    浏览(57)
  • SAP集成技术(八)成熟度模型

    成熟度模型的目的在于使用模型和标准来评估当前的集成能力,并确定必须建立哪些能力,以达到期望的成熟度级别。 成熟度级别描述了一个特定主题复杂性对于某种方法或模型的成熟度。基于定义的需求和标准的分类,得出不同的成熟度级别。要达到某个成熟度级别,必须

    2024年02月05日
    浏览(56)
  • 网络安全能力成熟度模型介绍

    经过多年网络安全工作,一直缺乏网络安全的整体视角,网络安全的全貌到底是什么,一直挺迷惑的。目前网络安全的分类和厂家非常多,而且每年还会冒出来不少新的产品。但这些产品感觉还是像盲人摸象,只看到网络安全的一个点,而不是一个整体。最近无意看到了网络

    2024年02月11日
    浏览(79)
  • 金融数字化能力成熟度指引

    1    范围 本文件提出了金融数字化能力成熟度模型、 成熟度计算方法,明确了不同维度金融数字化转型能力   相应的分档要求。 本文件适用于金融机构衡量金融科技应用和数字化转型发展水平,检视自身数字化发展优势与短板,   加快数字化转型,提升数字化经营能力和

    2024年04月23日
    浏览(44)
  • JAVA软件测试(贝泽成熟度模型)

    贝泽成熟度模型Beizer’s Maturity Model 级别0:测试与调试相同 测试的基本、最不成熟的观点是级别0的观点——测试与调试相同。 在0级思维中,程序员让他们的程序进行编译,用一些任意的输入调试程序。 此视图无法区分程序的错误行为和程序中的错误。它对开发可靠或安全

    2024年02月06日
    浏览(47)
  • 互联互通-标准化成熟度指标分析(更新中)

    这一章节需要医院,自己提供相应的医疗结构名称,门诊量,医院平台和电子病历基本情况,不在赘述 此节需要依次检查医院是否含有以下58数据集,54个共享文档(四级甲等只需要53个,如果没有中医住院病案首页,只需要52个): 2.1.1电子病历基本数据集 第1部分:病历概要

    2023年04月22日
    浏览(44)
  • 阿里云顺利通过云原生中间件成熟度评估

    前言: 2023 年 6 月 6 日,由中国信息通信研究院(以下简称“中国信通院”)承办的“ICT中国·2023 高层论坛-云原生产业发展论坛”在北京召开,会上正式发布了一系列云原生领域评估结果。 阿里云计算有限公司(以下简称“阿里云”)消息队列 RocketMQ 通过了“云原生中间件

    2024年02月12日
    浏览(71)
  • 技术风向标 | 云原生技术架构成熟度模型解读

    从“上云”到“云上”原生,云原生提供了最优用云路径,云原生的技术价值已被广泛认可。当前行业用户全面转型云原生已是大势所趋,用户侧云原生平台建设和应用云原生化改造进程正在加速。 云原生复杂的技术栈和传统IT的历史包袱给用户带来了巨大挑战,针对平台建

    2024年02月02日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包