基于OpenCV+CNN+IOT+微信小程序智能果实采摘指导系统——深度学习算法应用(含python、JS工程源码)+数据集+模型(五)

目录

  • 前言
  • 总体设计
    • 系统整体结构图
    • 系统流程图
  • 运行环境
    • Python环境
    • TensorFlow 环境
    • Jupyter Notebook环境
    • Pycharm 环境
    • 微信开发者工具
    • OneNET云平台
  • 模块实现
    • 1. 数据预处理
    • 2. 创建模型并编译
    • 3. 模型训练及保存
    • 4. 上传结果
    • 5. 小程序开发
      • 1)查询图片
      • 2)查询识别结果
  • 系统测试
    • 1. 训练准确率
    • 2. 测试效果
    • 3. 外部访问效果
  • 相关其它博客
  • 工程源代码下载
  • 其它资料下载


在这里插入图片描述

前言

本项目基于Keras框架,引入CNN进行模型训练,采用Dropout梯度下降算法,按比例丢弃部分神经元,同时利用IOT及微信小程序实现自动化远程监测果实成熟度以及移动端实时监测的功能,为果农提供采摘指导,有利于节约劳动力,提高生产效率,提升经济效益。

本项目基于Keras框架,采用卷积神经网络(CNN)进行模型训练。通过引入Dropout梯度下降算法,实现了对神经元的按比例丢弃,以提高模型的鲁棒性和泛化性能。同时,利用物联网(IoT)技术和微信小程序,项目实现了自动化远程监测果实成熟度,并在移动端实时监测果园状态的功能。这为果农提供了采摘的实时指导,有助于节约劳动力、提高生产效率,从而提升果园经济效益。

首先,项目采用Keras框架构建了一个卷积神经网络,利用深度学习技术对果实成熟度进行准确的识别和预测。

其次,引入Dropout梯度下降算法,通过随机丢弃神经元的方式,防止模型过拟合,提高了对新数据的泛化能力。

接着,项目整合了物联网技术,通过传感器等设备对果园中的果实进行远程监测。这样,果农可以在不同地点远程了解果实的成熟度状况。

同时,通过微信小程序,果农可以实时监测果园状态,了解果实成熟度、采摘时机等信息,从而更加科学地安排采摘工作。

总体来说,该项目不仅在模型训练上引入了先进的深度学习技术,还通过物联网和微信小程序实现了智能化的果园管理系统,为果农提供了更加便捷、高效的农业生产解决方案。

总体设计

本部分包括系统整体结构图和系统流程图。

系统整体结构图

系统整体结构如图所示。

在这里插入图片描述

系统流程图

模型训练流程如图所示。
在这里插入图片描述

数据上传流程如图所示。

在这里插入图片描述

小程序流程如图所示。
在这里插入图片描述

运行环境

本部分包括Python环境、TensorFlow环境、JupyterNotebook环境、PyCharm环境、微信开发者工具和OneNET云平台。

Python环境

详见博客。

TensorFlow 环境

详见博客。

Jupyter Notebook环境

详见博客。

Pycharm 环境

详见博客。

微信开发者工具

详见博客。

OneNET云平台

详见博客。

模块实现

本项目包括本项目包括5个模块:数据预处理、创建模型与编译、模型训练及保存、上传结果、小程序开发。下面分别给出各模块的功能介绍及相关代码。

1. 数据预处理

以红枣为实验对象,在互联网上爬取1000张图片作为数据集。

详见博客。

2. 创建模型并编译

数据加载进模型之后,需要定义模型结构并优化损失函数。

详见博客。

3. 模型训练及保存

定义模型架构和编译之后,通过训练集训练,使模型可以识别红枣的成熟程度。这里将使用训练集和测试集来拟合并保存模型。

详见博客。

4. 上传结果

上传结果有两种方法:一是调用计算机摄像头拍摄图片,将图片信息转换为二进制数据流后上传至OneNET云平台;二是将数字图片输入Keras模型中,获取输出后将识别结果上传至OneNET云平台。

详见博客。

5. 小程序开发

微信小程序用于查看果实图片、获取采摘建议和查询识别结果。

1)查询图片

查询图片功能采用两重嵌套回调:第一层通过访问图片数据流获取图片的索引目录,传递给第二层;第二层使用图片索引目录访问图片数据流信息,得到图片的二进制数据流。为使图片能够在界面中显示,将二进制数据转换为Base64格式,用that.setData()函数将值传递给wxm文件,并在该函数中修改按钮上的keyword为"单击查看采收建议",实现按钮功能的切换。

//回调图片
send: function () {var that = thisif (that.data.keyword=='单击查看你的果园'){//多重回调,两次const requestPicIndex = wx.request({url: 'https://api.heclouds.com/devices/586488389/datapoints?datastream_id=pic',header: {'content-type': 'application/json','api-key': '93IlIl2tfXddMN8sgQIInc7qbXs='},success: function (res) {var picIndex=res.data.data.datastreams[0].datapoints[0].value.indexconsole.log(res.data.data.datastreams[0].datapoints[0].value.index)
//打印图片索引目录;OneNet上图片的索引//嵌套的第二次回调const requestTask = wx.request({url: 'http://api.heclouds.com/bindata/' + picIndex,//图片urlheader: {'content-type': 'application/json','api-key': 'RSKlDBtVrZ7qDWvK=b6IAyFi=Ow='
//master-apikey,可操控OneNET上所有东西},responseType: 'arraybuffer',//相应类型success: function (res) {console.log(res.data)      //打印返回中的data,res代表返回数据var data = res.datavar base64 = wx.arrayBufferToBase64(res.data)
//二进制数据流转化成base64base64 = base64.replace(/[\r\n]/g, "") //删去换行符that.setData({imgUrl: 'data:image/PNG;base64,' + base64,
//能够显示图片base64的形式,传值给wxmlkeyword: '单击查看采收建议'//修改button功能为返回采收建议})console.log('http://api.heclouds.com/bindata/'+picIndex)//打印url},fail: function (res) {  //异常处理console.log("fail!!!")},complete: function (res) {console.log("end")}})},//回调失败则打印fail!!!fail: function (res) {console.log("fail!!!")},//回调完成打印图片urlcomplete: function (res) {console.log("end")}})}}

2)查询识别结果

得到识别结果后进行一次数值判断:"0"代表未成熟,不适合采收;"1"代表半熟,为最佳采收时机;"2"代表完全成熟,需要尽快采收。通过that.setDataM()函数赋值给reM,显示采收建议。

//回调识别结果
else if (that.data.keyword=='单击查看采收建议'){const requestTask = wx.request({url: 'https://api.heclouds.com/devices/586488389/datapoints?datastream_id=rslt',  //识别结果的urlheader: {'content-type': 'application/json','api-key': '93IlIl2tfXddMN8sgQIInc7qbXs='},success: function (res) {var app = getApp()app.globalData.Zao = res.data.data.datastreams[0]var a = app.globalData.Zao.datapoints[0].valueconsole.log(app.globalData.Zao)//0代表未成熟,不适合采收;1代表半熟,最佳采收时机;2代表完全成熟,尽快采收if (a == 2) {console.log(a)that.setData({reM: '完全成熟,请尽快采收!'})console.log('reM:' + that.data.reM)}else if (a == 1) {console.log(a)that.setData({reM: '半熟,现在是最佳的采收时机'})console.log('reM:' + that.data.reM)}else if (a == 0) {console.log(a)that.setData({reM: '不成熟,还不能采收哦~'})console.log('reM:' + that.data.reM)}},//回调失败则打印fail!!!fail: function (res) {console.log("fail!!!")},//回调完成打印结果complete: function (res) {console.log("end")}})}

系统测试

本部分包括训练准确率、测试效果和外部访问效果。

1. 训练准确率

测试准确率达到88%左右,意味着这个预测模型训练比较成功。随着训练轮次的增多,模型在训练数据、测试数据上的损失和准确率逐渐收敛,最终趋于稳定,如图所示。

在这里插入图片描述

2. 测试效果

将测试集数据代入模型进行测试,并对分类标签与原始数据进行显示和对比,验证了该模型能够实现红枣三类成熟程度的识别。测试结果如图所示。

在这里插入图片描述

3. 外部访问效果

打开小程序,初始界面如图所示。

在这里插入图片描述

单击界面最上方的"登录"按钮可获得用户微信头像和昵称,如图所示。

在这里插入图片描述

单击界面中"单击查看你的果园"按钮,在按钮上方会出现果实图片,同时按钮上的文字变成"单击查看采收建议",如图所示。

在这里插入图片描述

单击"单击查看采收建议"按钮,在按钮下方出现果实成熟度信息和具体采收建议,如图所示。

在这里插入图片描述

移动端测试结果如图所示。

在这里插入图片描述

相关其它博客

基于OpenCV+CNN+IOT+微信小程序智能果实采摘指导系统——深度学习算法应用(含python、JS工程源码)+数据集+模型(一)

基于OpenCV+CNN+IOT+微信小程序智能果实采摘指导系统——深度学习算法应用(含python、JS工程源码)+数据集+模型(二)

基于OpenCV+CNN+IOT+微信小程序智能果实采摘指导系统——深度学习算法应用(含python、JS工程源码)+数据集+模型(三)

基于OpenCV+CNN+IOT+微信小程序智能果实采摘指导系统——深度学习算法应用(含python、JS工程源码)+数据集+模型(四)

工程源代码下载

详见本人博客资源下载页


其它资料下载

如果大家想继续了解人工智能相关学习路线和知识体系,欢迎大家翻阅我的另外一篇博客《重磅 | 完备的人工智能AI 学习——基础知识学习路线,所有资料免关注免套路直接网盘下载》
这篇博客参考了Github知名开源平台,AI技术平台以及相关领域专家:Datawhale,ApacheCN,AI有道和黄海广博士等约有近100G相关资料,希望能帮助到所有小伙伴们。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/215328.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【收获】成长之路

目录 一、前言二、计算机方面三、专业知识方面四、总结 一、前言 四年,对于一个人的成长来说,是一个相当重要的阶段。在这段时间里,我经历了许多挑战、收获了许多成就,也在不断地成长和改变。回首这四年的点点滴滴,我深…

安装LLaMA-Factory微调chatglm3,修改自我认知

安装git clone https://github.com/hiyouga/LLaMA-Factory.git conda create -n llama_factory python3.10 conda activate llama_factory cd LLaMA-Factory pip install -r requirements.txt 之后运行 CUDA_VISIBLE_DEVICES0 python src/train_web.py,按如下配置…

市场全局复盘 20231211

昨日回顾: SELECT TOP 10000 CODE,成交额排名,净流入排名,代码,名称,DDE大单金额,涨幅,所属行业,主力净额,DDE大单净量,CONVERT(DATETIME, 最后涨停时间, 120) AS 最后涨停时间 FROM dbo.全部A股20231208_ALL WHERE 连板天 > 1AND DDE大单净量 > …

什么是零拷贝

什么是零拷贝? 快速理解 快速理解 要想理解零拷贝,首先要了解操作系统的IO流程,因为有内核态和用户态的区别,为了保证安全性和缓存,普通的读写流程如下: (对于Java程序而言,还会多了一个堆外内…

java的long类型超过9位报错:the literal 987654321000 of type int is out of range

java的long类型超过9位报错 1、报错提示2、报错截图3、解决办法4、参考文章 1、报错提示 the literal 987654321000 of type int is out of range 2、报错截图 3、解决办法 long类型是一种用于表示较大整数的数据类型,范围比int类型更广泛。然而,即使…

用PHP和HTML做登录注册操作数据库Mysql

用PHP和HTML做登录注册操作数据库Mysql 两个HTML页面&#xff0c;两个PHP,两个css,两张图片&#xff0c;源码资源在上方。 目录 HTML页面 login.html <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta nam…

IDEA卡顿,进行性能优化设置(亲测有效)——情况二

问题背景与现象 IDEA今天突然显示到期&#xff0c;于是从同事那边搞到一个很好用的破解方式&#xff0c;说实话&#xff0c;非常方便&#xff08;后续在安前码后中分享&#xff09; 破解之后呢&#xff0c;香了一阵子&#xff0c;但是突然显示开始卡顿&#xff0c;界面几乎是…

Word插件-好用的插件-PPT 素材该怎么积累-大珩助手

PPT 素材该怎么积累&#xff1f; 使用大珩助手中的素材库功能&#xff0c;将Word中的&#xff0c;或系统中的文本文件、图片、其他word文档、pdf&#xff0c;所有见到的好素材&#xff0c;一键收纳。 步骤&#xff1a;选中文件&#xff0c;按住鼠标左键拖到素材库界面中&…

【软考】信息系统项目管理师论文方向猜想

报喜不报忧&#xff0c;每天都在为鸡零狗碎推诿扯皮&#xff0c;属实是有辱师门。 通过软考&#xff0c;目前算是真正有意义的事情。 虽然都说高项的论文是个玄学&#xff0c;但是道听途说了一些通关感想还是蛮有启发的。 文件要求 参考了一份广西省高级工程师评审的文件&am…

Leetcode704二分查找、折半查找(Java实现)

好久没有更新算法题&#xff0c;今天来写一道二分查找的题目。题目要求如下&#xff0c; 那么这道题的解题思路如下&#xff0c;我们寻找的过程是首先去访问数组的中间位置mid&#xff0c;如果nums[mid]大于了targe那么说明&#xff0c;我们要找的数在mid的左半边&#xff0c;…

Linux实用操作篇-下篇

Linux实用操作篇-上篇&#xff1a;Linux实用操作-上篇-CSDN博客 一、网络传输 1.1 ping命令 网络是否可联通 可以通过ping命令&#xff0c;检查指定的网络服务器是否是可联通状态 语法: ping [-c num] ip或主机名 选项&#xff1a;-c&#xff0c;检查的次数&#xff0c;…

Dockerfile创建镜像介绍

1.介绍 Docker 提供了一种更便捷的方式&#xff0c;叫作 Dockerfile&#xff0c;docker build命令用于根据给定的Dockerfile构建Docker镜像。 docker build语法&#xff1a; # docker build [OPTIONS] <PATH | URL | -> 常用选项说明 --build-arg&#xff0c;设置构建时的…

上海亚商投顾:沪指探底回升 AI应用方向再度爆发

上海亚商投顾前言&#xff1a;无惧大盘涨跌&#xff0c;解密龙虎榜资金&#xff0c;跟踪一线游资和机构资金动向&#xff0c;识别短期热点和强势个股。 一.市场情绪 三大指数昨日探底回升&#xff0c;早盘一度均跌超1%&#xff0c;午后集体拉升翻红&#xff0c;深成指、创业板…

FFmpeg的AVcodecParser

文章目录 结构体操作函数支持的AVCodecParser 这个模块是AVCodec中的子模块&#xff0c;专门用来提前解析码流的元数据&#xff0c;为后面的解码做准备&#xff0c;这一点对cuda-NVdec非常明显&#xff0c;英伟达解码器的元数据解析是放在CPU上的&#xff0c;所以就非常依赖这个…

远程工作:自由职业者如何成功赚钱

前言 在这个不断进步的数字化时代&#xff0c;远程工作已经从一个可选的边缘工作方式&#xff0c;成长为主流职业趋势的一部分。特别是自从全球疫情改变了我们的生活和工作方式以来&#xff0c;远程工作的概念不再是遥不可及的理想&#xff0c;而是已经成为许多人日常工作的现…

SpringBoot集成swagger2配置权限认证参数

作者简介&#xff1a;大家好&#xff0c;我是撸代码的羊驼&#xff0c;前阿里巴巴架构师&#xff0c;现某互联网公司CTO 联系v&#xff1a;sulny_ann&#xff08;17362204968&#xff09;&#xff0c;加我进群&#xff0c;大家一起学习&#xff0c;一起进步&#xff0c;一起对抗…

【Lidar】基于Python的三维点云数据转二维平面+散点图绘制

最近一直在搞点云相关的操作&#xff0c;有时候在处理点云数据时需要查看处理后的数据是否满足需求&#xff0c;所以就想着写一套展示点云的代码。之前已经分享过如何可视化点云了&#xff0c;感兴趣的可以自己去看下&#xff1a;【Lidar】基于Python的Open3D库可视化点云数据。…

golang https server如何设计方便抓包定位且安全

代码 测试 用go写后端https服务时&#xff0c;需要定位https包中的内容是否符合预期。 有涉猎的朋友应该了解过https有一种keylog技术&#xff0c;它允许在HTTPS连接中捕获和记录SSL或TLS会话密钥&#xff0c;以便于调试和分析加密流量。 本文将的就是通过可控制开启和关闭的…

CPU 混合推理,非常见大模型量化方案:“二三五六” 位量化

本篇文章聊聊网上聊的比较少的具体量化操作&#xff0c;非常见整型位数的量化&#xff0c;来自让各种开源模型能够在 CPU 环境、CPU & GPU 环境混合推理的技术方案&#xff1a;llama.cpp 。 写在前面 接下来&#xff0c;有计划分享一些关于各种开源模型的实践内容。为了能…

安装ThingBox Eclipse Plugin

1. ChatGPT问 The latest version of the ThingBox Eclipse Plugin requires Eclipse IDE 2021-06 or later. 2. PTC官网下载 MED-61378-CD-092_F000_Eclipse-Plugin-9-0-1.zip文件, 和 MED-61098-CD-085_F000_ThingWorx-Extension-SDK-8-5-0&#xff08;需要账号&#xff09…