基于Python深度学习的果蔬识别系统实现

简介: 果蔬识别系统,主要开发语言为Python,基于TensorFlow搭建ResNet卷积神经网络算法模型,通过对12种常见的果蔬('土豆', '圣女果', '大白菜', '大葱', '梨', '胡萝卜', '芒果', '苹果', '西红柿', '韭菜', '香蕉', '黄瓜')图像数据集进行训练,最后得到一个识别精度较高的模型文件。再基于Django框架搭建Web网页端可视化操作界面,以下为项目实现介绍。

一、简介

果蔬识别系统,主要开发语言为Python,基于TensorFlow搭建ResNet卷积神经网络算法模型,通过对12种常见的果蔬('土豆', '圣女果', '大白菜', '大葱', '梨', '胡萝卜', '芒果', '苹果', '西红柿', '韭菜', '香蕉', '黄瓜')图像数据集进行训练,最后得到一个识别精度较高的模型文件。再基于Django框架搭建Web网页端可视化操作界面,以下为项目实现介绍。

二、选题目的

随着人工智能技术的飞速发展,计算机视觉在许多领域中得到了广泛应用,尤其是在图像识别方面。图像分类技术作为计算机视觉的重要研究方向,近年来取得了显著进展。卷积神经网络(Convolutional Neural Networks, CNN)作为深度学习的一种有效模型,已广泛应用于图像处理任务,包括图像分类、物体检测、面部识别等领域。特别是在图像分类任务中,CNN凭借其良好的特征提取能力和高效的训练过程,成为解决实际问题的首选方法。

在此背景下,本课题《基于Python下深度学习的的果蔬识别系统的设计与实现》应运而生。果蔬识别作为农业科技中的一个重要应用领域,不仅有助于提高农业生产效率,还可以广泛应用于食品安全、智能农业、自动化分拣等场景。传统的果蔬识别方法主要依赖人工检测或者简单的图像处理技术,效率低且准确性不足。因此,基于深度学习的自动化果蔬识别技术具有巨大的应用潜力。

本课题的主要目的是设计并实现一个基于卷积神经网络的果蔬识别系统,通过训练深度学习模型,使系统能够自动识别不同类型的果蔬。具体而言,本系统将利用收集到的12种常见果蔬的图片数据集,构建并训练一个卷积神经网络模型,最终实现较高的识别准确率。通过该系统,用户可以通过上传果蔬图片,系统将自动识别出图片中的果蔬种类,并返回结果。

选择卷积神经网络作为模型框架是因为CNN在图像分类任务中表现出色,能够有效提取图像的局部特征并进行学习。本系统将利用TensorFlow深度学习框架进行模型的构建与训练,该框架拥有丰富的工具和优化算法,能够帮助我们快速搭建和优化深度学习模型。数据集方面,系统将收集12种常见的果蔬图片数据,包括土豆、圣女果、大白菜、大葱、梨、胡萝卜、芒果、苹果、西红柿、韭菜、香蕉、黄瓜等。这些数据将用于训练卷积神经网络模型,并通过反向传播算法不断优化模型的参数。

三、环境配置

  • Python解释器
  • Pycharm
  • TensorFlow等依赖包

四、算法搭建与训练

model = keras.applications.ResNet50(weights='imagenet', include_top=False, input_shape=(img_width,img_height,3))

keras.applications.ResNet50

  • 这里使用的是 Keras 提供的一个高层API中的 ResNet50 模型。
  • ResNet50 是一个深度卷积神经网络(CNN),由50层构成,广泛用于图像分类任务。它基于残差学习的概念,能够有效地训练非常深的网络。
  • Keras的 applications 模块提供了许多预训练的深度学习模型,包括 ResNet50、VGG16、Inception等,用户可以直接加载这些模型用于迁移学习。

然后通过model.summary()打印模型结构如下:

image-20241204155300518

在完成模型搭建后,准备开始训练模型,在本项目中,指定了20轮迭代训练,其训练过程输出信息如下:

Epoch 1/20
62/62 [==============================] - 13s 88ms/step - loss: 1.4565 - accuracy: 0.6870 - val_loss: 2.5458 - val_accuracy: 0.0854
Epoch 2/20
62/62 [==============================] - 4s 63ms/step - loss: 1.0147 - accuracy: 0.9482 - val_loss: 2.4804 - val_accuracy: 0.1260
Epoch 3/20
62/62 [==============================] - 4s 62ms/step - loss: 0.8887 - accuracy: 0.9817 - val_loss: 2.4915 - val_accuracy: 0.0610
Epoch 4/20
62/62 [==============================] - 4s 66ms/step - loss: 0.8212 - accuracy: 0.9919 - val_loss: 2.4764 - val_accuracy: 0.0935
Epoch 5/20
62/62 [==============================] - 4s 63ms/step - loss: 0.7761 - accuracy: 0.9919 - val_loss: 2.4558 - val_accuracy: 0.0976
Epoch 6/20
62/62 [==============================] - 4s 64ms/step - loss: 0.7408 - accuracy: 0.9949 - val_loss: 2.3973 - val_accuracy: 0.1585
Epoch 7/20
62/62 [==============================] - 4s 62ms/step - loss: 0.7103 - accuracy: 0.9959 - val_loss: 2.2823 - val_accuracy: 0.2886
Epoch 8/20
62/62 [==============================] - 4s 62ms/step - loss: 0.6822 - accuracy: 0.9949 - val_loss: 2.1412 - val_accuracy: 0.4065
Epoch 9/20
62/62 [==============================] - 4s 63ms/step - loss: 0.6569 - accuracy: 0.9970 - val_loss: 1.9389 - val_accuracy: 0.5447
Epoch 10/20
62/62 [==============================] - 4s 63ms/step - loss: 0.6301 - accuracy: 0.9959 - val_loss: 1.7184 - val_accuracy: 0.6789
Epoch 11/20
62/62 [==============================] - 4s 63ms/step - loss: 0.6051 - accuracy: 0.9980 - val_loss: 1.5291 - val_accuracy: 0.7642
Epoch 12/20
62/62 [==============================] - 4s 64ms/step - loss: 0.5793 - accuracy: 0.9959 - val_loss: 1.2364 - val_accuracy: 0.8577
Epoch 13/20
62/62 [==============================] - 4s 63ms/step - loss: 0.5535 - accuracy: 0.9980 - val_loss: 1.0483 - val_accuracy: 0.9065
Epoch 14/20
62/62 [==============================] - 4s 63ms/step - loss: 0.5300 - accuracy: 0.9980 - val_loss: 0.9035 - val_accuracy: 0.9228
Epoch 15/20
62/62 [==============================] - 4s 62ms/step - loss: 0.5072 - accuracy: 0.9980 - val_loss: 0.7945 - val_accuracy: 0.9390
Epoch 16/20
62/62 [==============================] - 4s 62ms/step - loss: 0.4857 - accuracy: 0.9980 - val_loss: 0.7137 - val_accuracy: 0.9268
Epoch 17/20
62/62 [==============================] - 4s 64ms/step - loss: 0.4654 - accuracy: 0.9980 - val_loss: 0.6685 - val_accuracy: 0.9431
Epoch 18/20
62/62 [==============================] - 4s 63ms/step - loss: 0.4459 - accuracy: 0.9980 - val_loss: 0.6325 - val_accuracy: 0.9472
Epoch 19/20
62/62 [==============================] - 4s 63ms/step - loss: 0.4284 - accuracy: 0.9980 - val_loss: 0.6004 - val_accuracy: 0.9553
Epoch 20/20
62/62 [==============================] - 4s 62ms/step - loss: 0.4102 - accuracy: 0.9990 - val_loss: 0.5743 - val_accuracy: 0.9431

如上所示,从提供的训练输出信息中可以看到模型在训练过程中的变化趋势。每个epoch(轮次)的输出包含以下几个重要信息:训练损失(loss)训练准确率(accuracy)验证损失(val_loss),和验证准确率(val_accuracy)

  1. 训练损失(loss)和训练准确率(accuracy):

训练损失逐渐下降,从 1.4565 减少到 0.4102,这表明模型在不断优化,学会了如何更好地拟合训练数据。

训练准确率逐渐提高,从 68.70% 提高到 99.90%,显示出模型的性能正在不断提升,已经接近完美地拟合训练集。

  1. 验证损失(val_loss)和验证准确率(val_accuracy)

验证损失(val_loss)虽然在前几轮(比如第一轮的 2.5458)较高,但随着训练的进行,逐渐下降(最终为 0.5743)。这意味着模型在验证集上的表现也在不断提高,过拟合的情况得到了控制。

验证准确率(val_accuracy)同样在逐步提升,从 8.54% 开始,到 94.31% 结束,表明模型在验证集上的预测准确率持续增长。

下面是ACC曲线图和LOSS曲线图

image-20241204155811237

image-20241204155833346

四、Web可视化操作界面搭建

前端基于HTML,CSS,BootStrap等技术搭建前端界面。后端基于Django处理用户请求。其效果如下图所示。

img_06_06_17_44_58

img_06_06_17_45_26

五、完整代码和安装

地址:https://www.yuque.com/ziwu/yygu3z/pnrng41h0sg5f5tf

目录
相关文章
|
7天前
|
人工智能 自动驾驶 大数据
预告 | 阿里云邀您参加2024中国生成式AI大会上海站,马上报名
大会以“智能跃进 创造无限”为主题,设置主会场峰会、分会场研讨会及展览区,聚焦大模型、AI Infra等热点议题。阿里云智算集群产品解决方案负责人丛培岩将出席并发表《高性能智算集群设计思考与实践》主题演讲。观众报名现已开放。
|
23天前
|
存储 人工智能 弹性计算
阿里云弹性计算_加速计算专场精华概览 | 2024云栖大会回顾
2024年9月19-21日,2024云栖大会在杭州云栖小镇举行,阿里云智能集团资深技术专家、异构计算产品技术负责人王超等多位产品、技术专家,共同带来了题为《AI Infra的前沿技术与应用实践》的专场session。本次专场重点介绍了阿里云AI Infra 产品架构与技术能力,及用户如何使用阿里云灵骏产品进行AI大模型开发、训练和应用。围绕当下大模型训练和推理的技术难点,专家们分享了如何在阿里云上实现稳定、高效、经济的大模型训练,并通过多个客户案例展示了云上大模型训练的显著优势。
|
27天前
|
存储 人工智能 调度
阿里云吴结生:高性能计算持续创新,响应数据+AI时代的多元化负载需求
在数字化转型的大潮中,每家公司都在积极探索如何利用数据驱动业务增长,而AI技术的快速发展更是加速了这一进程。
|
18天前
|
并行计算 前端开发 物联网
全网首发!真·从0到1!万字长文带你入门Qwen2.5-Coder——介绍、体验、本地部署及简单微调
2024年11月12日,阿里云通义大模型团队正式开源通义千问代码模型全系列,包括6款Qwen2.5-Coder模型,每个规模包含Base和Instruct两个版本。其中32B尺寸的旗舰代码模型在多项基准评测中取得开源最佳成绩,成为全球最强开源代码模型,多项关键能力超越GPT-4o。Qwen2.5-Coder具备强大、多样和实用等优点,通过持续训练,结合源代码、文本代码混合数据及合成数据,显著提升了代码生成、推理和修复等核心任务的性能。此外,该模型还支持多种编程语言,并在人类偏好对齐方面表现出色。本文为周周的奇妙编程原创,阿里云社区首发,未经同意不得转载。
11735 12
|
12天前
|
人工智能 自然语言处理 前端开发
100个降噪蓝牙耳机免费领,用通义灵码从 0 开始打造一个完整APP
打开手机,录制下你完成的代码效果,发布到你的社交媒体,前 100 个@玺哥超Carry、@通义灵码的粉丝,可以免费获得一个降噪蓝牙耳机。
5397 14
|
19天前
|
人工智能 自然语言处理 前端开发
用通义灵码,从 0 开始打造一个完整APP,无需编程经验就可以完成
通义灵码携手科技博主@玺哥超carry 打造全网第一个完整的、面向普通人的自然语言编程教程。完全使用 AI,再配合简单易懂的方法,只要你会打字,就能真正做出一个完整的应用。本教程完全免费,而且为大家准备了 100 个降噪蓝牙耳机,送给前 100 个完成的粉丝。获奖的方式非常简单,只要你跟着教程完成第一课的内容就能获得。
9611 15
|
1月前
|
缓存 监控 Linux
Python 实时获取Linux服务器信息
Python 实时获取Linux服务器信息
|
17天前
|
人工智能 自然语言处理 前端开发
什么?!通义千问也可以在线开发应用了?!
阿里巴巴推出的通义千问,是一个超大规模语言模型,旨在高效处理信息和生成创意内容。它不仅能在创意文案、办公助理、学习助手等领域提供丰富交互体验,还支持定制化解决方案。近日,通义千问推出代码模式,基于Qwen2.5-Coder模型,用户即使不懂编程也能用自然语言生成应用,如个人简历、2048小游戏等。该模式通过预置模板和灵活的自定义选项,极大简化了应用开发过程,助力用户快速实现创意。
|
5天前
|
机器学习/深度学习 人工智能 安全
通义千问开源的QwQ模型,一个会思考的AI,百炼邀您第一时间体验
Qwen团队推出新成员QwQ-32B-Preview,专注于增强AI推理能力。通过深入探索和试验,该模型在数学和编程领域展现了卓越的理解力,但仍在学习和完善中。目前,QwQ-32B-Preview已上线阿里云百炼平台,提供免费体验。
|
13天前
|
人工智能 C++ iOS开发
ollama + qwen2.5-coder + VS Code + Continue 实现本地AI 辅助写代码
本文介绍在Apple M4 MacOS环境下搭建Ollama和qwen2.5-coder模型的过程。首先通过官网或Brew安装Ollama,然后下载qwen2.5-coder模型,可通过终端命令`ollama run qwen2.5-coder`启动模型进行测试。最后,在VS Code中安装Continue插件,并配置qwen2.5-coder模型用于代码开发辅助。
917 5