当前位置: 首页 > news >正文

【物联网】智慧农业病虫害精准辨识竞赛思路及代码分享

来源:投稿 作者:LSC
编辑:学姐

比赛官网:

https://www.dataglobal.cn/cmpt/signUpInfo200.html

任务描述

请参赛者设计智慧农业病虫害检测系统,给出一体化问题解决方案,鼓励参赛选手结合某一果园/农作物实际情况建立自身方案。

基于主办方(或公开数据集)提供的农作物叶子图像数据,构建病虫害辨识模型,准确辨识农作物及病虫害种类,为农户积极防御病虫害提供合理化建议,解决智慧果园病虫害辨识问题。

任务目标

  • (1)智慧农业病虫害精准辨识方法(必要);

  • (2)智慧农业病虫害检测系统(必要);

  • (3)模型测试验证结果(加分项);

  • (4)配套代码注释与必要的文档说明(加分项)。 赛题是一个图像分类问题,数据集分布类似下图(原数据集找不到了,赛后没有保存,官网也没有了):

每个文件夹里面包含每个类别的图像

总体方案

针对智慧农业病虫害精准辨识方案,一般通过数据挖掘、计算机视觉等技术,采用特定的算法和数据模型,对农业病虫害的图像进行广泛挖掘和深度匹配,以获得准确有效的数据特征。因此,我们主要选择先进的深度学习图像分类模型框架,共计三种分类模型实现病虫害辨识,分别为Paddle的专门图像分类套件Paddlex和Paddleclas实现和人工智能深度学习框架Pytorch图像分类套件MMClassification。

方案流程主要包括图片数据预处理、模型选择、模型训练及测试、指标评估等流程,反复观察实验结果,经过多次调参及预训练,最终模型分类精度可以达到100%,本次方案流程图如下。为了使得图片智能识别更精准,我们需要大量的农作物虫害病症的图片样本采集。

图片数据预处理

(1)针对本次智慧农业病虫害数据集,图片总共分为3类,对应命名分类标签,经观察发现,每种类别数量均衡,且都是400多张。另外,本次图片数据集分辨率高,像素清晰,容易辨别。因此,无需更多数据增强操作,应用大部分经典模型都能取得不错的效果。

(2)由于在服务器上跑模型的时候,是基于ubuntu系统,所以解压题目数据后用zip压缩文件并重新命名agri_pest.zip。

(3)数据操作: 统一随机打乱数据集,并且按照按9:1划分训练集和验证集。

模型选择

使用Paddlex (官网链接: https://github.com/PaddlePaddle/PaddleX)

Paddlex是一个集成图像分类、目标检测、实例分割、语义分割的套件,使用简便,封装了很多训练方法和会自动加载经典的预训练模型权重。

首先,对图片进行预处理操作并随机打乱数据。

其次,考虑实验精度及速度,本次模型选择带有知识蒸馏的ResNet101_vd_ssld模型,结合使用标签平滑、早停等训练技巧。

最后,经过多次实验尝试,对原始的学习率进行修改及调整学习率衰减策略,实验以准确率为评价指标,最终准确率达到100%。

每张图片文件对应分类结果,其中0为Healthy、1为Powdery、 2为Rust,将结果导出result.txt,下同。

第一轮验证集,准确率就达到98%,第二轮训练集的准确率达到100%,如下图所示:

第三轮验证集准确率达100%,如下图所示:

本次实验将最好的模型权重已经保存在百度网盘上,代码文件及说明见main.ipynb、数据文件、结果文件result.txt见附件Paddlex文件夹。

使用Paddleclas

PaddleClas图像分类套件,包括模型开发、训练、压缩、部署全流程,助力开发者更好的开发和应用图像分类模型。PaddleClas同时提供服务器端模型与端侧轻量化模型来支撑不同的应用场景,为确保最终识别精度,选择PaddleClas提供的SWinTransformer模型。

(1)官网下载套件: https://github.com/PaddlePaddle/PaddleClas 根据文档 https://github.com/PaddlePaddle/PaddleClas/blob/release/2.5/docs/zh_CN/models/ImageNet1k/model_list.md#ViT&DeiT

选择在imagenet上精确度最高的CSWinTransformer_large_384网络。

(2)修改配置文件CSWinTransformer_large_384.yaml修改相关参数,数据集路径、训练轮数、预训练模型权重等,参数与结果如附件所示。

(3)由于数据量比较少,模型强大,为了节约时间、算力和避免过拟合,提前终止训练流程。训练3个epoch后,验证集准确率高达100%,如下图所示:

部分测试集推理结果如下:

全部测试集推理结果如result.txt所示。代码main.ipynb、数据处理文件、配置文件见附件PaddleClas文件夹。

使用MMClassification

第三种方案使用MMClassification,它是一款基于 PyTorch 的开源图像分类工具箱, 集成了常用的图像分类网络,将数据加载,模型骨架,训练调参,流程等封装为模块调用,便于在模型间进行转换和比较,高效简洁的实现了参数调整。

同上述两种方案,本方案最新最强大的中的swin_transformer模型,由于模型权重大及环境限制,保存结果占据空间比较多,本次实验只训练20轮,其中模型效果最好的是第19轮,最终在验证集效果达到87.2%,如下图所示,

由于训练时间及服务器环境限制,本模型没有进一步调优,后续如果有幸能进入决赛会进一步优化。

代码train.ipynb、测试集结果result.json等在附件MMClassification中。

代码都保存在code.zip文件中。

模型总结和后期优化

本系统基于提供的农作物叶子图像数据集,构建病虫害辨识模型,最终通过三种深度学习分类模型实现,最终验证集准确度达到100%,以下是模型总结和优化方向。

(1) 本次数据集都是按9:1划分训练集和验证集,结合交叉验证的方法训练,也可以用全部的数据进行训练模型,但是容易过拟合,可以使用focal loss、label smooth等策略尽力避免。

(2) 可以使用模型融合、模型投票的策略,但是会加大模型权重,考虑部署起来不方便。

(3) 在保证数据质量的前提下,采集更多的数据集,对数据进行增广。增强模型泛化能力。

(4) 针对后期移动端部署,可以选择轻量化模型mobilenet等进行训练,由于数据量比较少,用权重大的模型效果不一定很好,网络可能得不到充分的训练。

后续可以对模型进行部署,做成一个专门的图像分类检测系统。

本文模型权重数据资料🚀🚀🚀

关注下方卡片《学姐带你玩AI》

回复“模型权重”即可领取

码字不易,欢迎大家点赞评论收藏!

相关文章:

【物联网】智慧农业病虫害精准辨识竞赛思路及代码分享

来源:投稿 作者:LSC 编辑:学姐 比赛官网: https://www.dataglobal.cn/cmpt/signUpInfo200.html 任务描述 请参赛者设计智慧农业病虫害检测系统,给出一体化问题解决方案,鼓励参赛选手结合某一果园/农作物实际情况建立…...

Properties类读取配置文件

文章目录前言一、Properties类的使用 :1、创建sk.properties文件2、编写读取 properties 属性文件,并输出属性值。3、运行结果总结前言 Properties类的介绍 : 在Java中提供了 java.util.Properties 类,来读取 .properties 属性文件。在程序调用 Propert…...

知其然更要知其所以然,聊聊SQLite软件架构

SQLite是一个非常受欢迎的数据库,在数据库排行榜中已经进入前十的行列。这主要是因为该数据库非常小巧,而且可以支持Linux、Windows、iOS和Andriod的主流的操作系统。 SQLite非常简单,是一个进程内的动态库数据库。其最大的特点是可以支持不同…...

微服务架构的演变

文章目录1.1 系统架构的演变过程1.1.1 单体应用架构1.1.2 垂直应用架构1.1.3 分布式架构1.1.4 SOA架构1.1.5 微服务架构1.2 微服务架构设计原则1.2.1 AKF拆分原则1.2.1.1 X轴扩展(水平复制)1.2.1.2 Y轴扩展(模块拆分)1.2.1.3 Z轴扩…...

使用html-to-image代替html2canvas,结合jspdf实现下载pdf(下载截图下载前端dom元素)

一、问题 一开始的时候,准备使用html2canvasjspdf来实现的,但是遇到了一个麻烦的问题,在其他项目中使用html2canvas没有任何问题,但是在要开发的项目中使用,就给我报错,是真滴烦。 html2canvas报错 Uncau…...

云环境渗透测试的重要性

🌕写在前面 🎉欢迎关注🔎点赞👍收藏⭐️留言📝 ✉️今日分享: “在这个世上,除了极稀少的例外,我们其实只有两种选择:要么是孤独,要么就是庸俗。” 随着云计…...

ROS2 入门应用 请求和应答(Python)

ROS2 入门应用 请求和应答(Python)1. 创建功能包1. 创建功能包2. 创建源文件2.1. 服务端2.2. 客户端3. 添加依赖关系4. 添加入口点5. 编译和运行1. 创建功能包 1. 创建功能包 在《ROS2 入门应用 工作空间》中已创建和加载了ros2_ws工作空间 在《ROS2 入…...

是德Keysight E4991A/e4991B射频阻抗/材料分析仪

Keysight E4991A 射频阻抗/材料分析仪提供终极阻抗测量性能和强大的内置分析功能。它将为评估 3 GHz 范围内组件的组件和电路设计人员的研发提供创新。E4991A 使用 RF-IV 技术,而不是反射测量技术,可在宽阻抗范围内进行更精确的阻抗测量。基本阻抗精度为…...

这才是计算机科学_人工智能

人工智能一、前言二、ML2.1 分类2.1.1 决策树2.2.2 支持向量机2.2.3 人工神经网络三、计算机视觉3.1 Prewitt算子3.2 Viola-Jones 人脸检测算法3.3 卷积神经网络四、自然语言处理4.1 知识图谱4.2 语音识别一、前言 之前讲了计算机从发展到现在的过程,计算机很适合做…...

DFS深度优先搜索—Java版

递归三要素 递归的定义 递归的拆解 递归的出口 什么时候使用DFS? 深度回溯问题(DFS与回溯区别不大) 二叉树问题 组合、排列问题 找方案问题(解空间是一棵树或者图,需要自行构造图/树) 图的搜索问题…...

RAY - 小记

文章目录关于 RAYRAY 结构关于 RAY Ray is a unified framework for scaling AI and Python applications. Ray consists of a core distributed runtime and a toolkit of libraries (Ray AIR) for accelerating ML workloads. RAY 是一个简单、通用的分布式计算框架。 RAY 解…...

金三银四软件测试工程师面试题(含答案)

前言:此文专门记载本人平时面试以及收藏的面试题目,如果有错误之处请及时指正,谢谢! 1、python的数据类型有哪些 答:Python基本数据类型一般分为:数字、字符串、列表、元组、字典、集合这六种基本数据类…...

Python 连接数据源与邮件功能(九)

文章目录一、概述二、Python 连接数据源1)Python MySQL 基础操作1、部署MySQL2、MySQL Connector 库【1】安装 mysql-connector-python 库【2】连接 MySQL【3】增加数据【4】查询数据【5】更新数据【6】删除数据2、PyMySQL 库【1】安装 PyMySQL 库【2】连接 MySQL【…...

网站如何锁定用户,超级浏览器有办法解决吗?

随着全球开放,跨境电商人纷纷开启了2023年的搞钱之旅,很多期待着在新的一年大干一场。但前事不忘后事之师,2022年跨境生意全面沦陷,其实除了大环境的因素之外,还有一个很重要的原因是,各个平台都开始实行非…...

Ubuntu下使用Wine运行HBuilderX

安装完wine后,在HbuilderX的目录中打开终端,直接输入wine HBuilderX.exe命令,启动过程中会提示安装wine-mono组件,点击安装按钮下载安装该组件,该组件下载速度慢,需要等待特别长时间。   安装完毕后&…...

如何高效远程维护分布在海外的中大型智能设备?

一、行业需求 随着越来越多的企业进行全球化经营,设备制造商和系统集成商的设备分布到全球各地,数量多而且分散,传统的设备运维方式,面临着出差成本高,工作效率低,服务不及时等问题,客户常常因…...

【双指针问题】LeetCode 925. 长按键入

Halo,这里是Ppeua。平时主要更新C语言,C,数据结构算法......感兴趣就关注我吧!你定不会失望。 🌈个人主页:主页链接 🌈算法专栏:专栏链接 我会一直往里填充内容哒! &…...

APP测试中IOS和Android的区别,有哪些注意点?

01、常识性区别 02、导航方式 iOS:Tab放在页面底部,不能通过滑动来切换,只能点击。也有放在上面的,也不能滑动,但有些Tab本身可以滑动,比如天猫的。还有新闻类的应用。 Android:一般放在页面…...

2019蓝桥杯真题平方序列(填空题) C语言/C++

题目描述 本题为填空题&#xff0c;只需要算出结果后&#xff0c;在代码中使用输出语句将所填结果输出即可。 小明想找到两个正整数 X 和 Y&#xff0c;满足2019<X<Y;2019^2, X^2, Y^2组成等差数列。 请你求出在所有可能的解中&#xff0c;XY 的最小值是多少&#xff1f…...

vue中,给一个URL地址,利用FileSaver.js插件下载文件到本地

①首先下载 FileSaver.js 插件 npm install file-saver --save ②在需要的.vue页面引入 import { saveAs } from file-saver 在HTML中引入 <script src"https://cdn.bootcdn.net/ajax/libs/FileSaver.js/2.0.5/FileSaver.min.js"></script> //Fil…...

vscode里如何用git

打开vs终端执行如下&#xff1a; 1 初始化 Git 仓库&#xff08;如果尚未初始化&#xff09; git init 2 添加文件到 Git 仓库 git add . 3 使用 git commit 命令来提交你的更改。确保在提交时加上一个有用的消息。 git commit -m "备注信息" 4 …...

【解密LSTM、GRU如何解决传统RNN梯度消失问题】

解密LSTM与GRU&#xff1a;如何让RNN变得更聪明&#xff1f; 在深度学习的世界里&#xff0c;循环神经网络&#xff08;RNN&#xff09;以其卓越的序列数据处理能力广泛应用于自然语言处理、时间序列预测等领域。然而&#xff0c;传统RNN存在的一个严重问题——梯度消失&#…...

Golang dig框架与GraphQL的完美结合

将 Go 的 Dig 依赖注入框架与 GraphQL 结合使用&#xff0c;可以显著提升应用程序的可维护性、可测试性以及灵活性。 Dig 是一个强大的依赖注入容器&#xff0c;能够帮助开发者更好地管理复杂的依赖关系&#xff0c;而 GraphQL 则是一种用于 API 的查询语言&#xff0c;能够提…...

Java-41 深入浅出 Spring - 声明式事务的支持 事务配置 XML模式 XML+注解模式

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; &#x1f680; AI篇持续更新中&#xff01;&#xff08;长期更新&#xff09; 目前2025年06月05日更新到&#xff1a; AI炼丹日志-28 - Aud…...

土地利用/土地覆盖遥感解译与基于CLUE模型未来变化情景预测;从基础到高级,涵盖ArcGIS数据处理、ENVI遥感解译与CLUE模型情景模拟等

&#x1f50d; 土地利用/土地覆盖数据是生态、环境和气象等诸多领域模型的关键输入参数。通过遥感影像解译技术&#xff0c;可以精准获取历史或当前任何一个区域的土地利用/土地覆盖情况。这些数据不仅能够用于评估区域生态环境的变化趋势&#xff0c;还能有效评价重大生态工程…...

企业如何增强终端安全?

在数字化转型加速的今天&#xff0c;企业的业务运行越来越依赖于终端设备。从员工的笔记本电脑、智能手机&#xff0c;到工厂里的物联网设备、智能传感器&#xff0c;这些终端构成了企业与外部世界连接的 “神经末梢”。然而&#xff0c;随着远程办公的常态化和设备接入的爆炸式…...

今日学习:Spring线程池|并发修改异常|链路丢失|登录续期|VIP过期策略|数值类缓存

文章目录 优雅版线程池ThreadPoolTaskExecutor和ThreadPoolTaskExecutor的装饰器并发修改异常并发修改异常简介实现机制设计原因及意义 使用线程池造成的链路丢失问题线程池导致的链路丢失问题发生原因 常见解决方法更好的解决方法设计精妙之处 登录续期登录续期常见实现方式特…...

计算机基础知识解析:从应用到架构的全面拆解

目录 前言 1、 计算机的应用领域&#xff1a;无处不在的数字助手 2、 计算机的进化史&#xff1a;从算盘到量子计算 3、计算机的分类&#xff1a;不止 “台式机和笔记本” 4、计算机的组件&#xff1a;硬件与软件的协同 4.1 硬件&#xff1a;五大核心部件 4.2 软件&#…...

HubSpot推出与ChatGPT的深度集成引发兴奋与担忧

上周三&#xff0c;HubSpot宣布已构建与ChatGPT的深度集成&#xff0c;这一消息在HubSpot用户和营销技术观察者中引发了极大的兴奋&#xff0c;但同时也存在一些关于数据安全的担忧。 许多网络声音声称&#xff0c;这对SaaS应用程序和人工智能而言是一场范式转变。 但向任何技…...

DBLP数据库是什么?

DBLP&#xff08;Digital Bibliography & Library Project&#xff09;Computer Science Bibliography是全球著名的计算机科学出版物的开放书目数据库。DBLP所收录的期刊和会议论文质量较高&#xff0c;数据库文献更新速度很快&#xff0c;很好地反映了国际计算机科学学术研…...