【物联网】智慧农业病虫害精准辨识竞赛思路及代码分享
来源:投稿 作者: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++
题目描述 本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。 小明想找到两个正整数 X 和 Y,满足2019<X<Y;2019^2, X^2, Y^2组成等差数列。 请你求出在所有可能的解中,XY 的最小值是多少?…...
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…...
终端工作空间新选择:从 tmux 到 Zellij 的迁移与实战
1. 为什么需要从 tmux 迁移到 Zellij 作为一个用了五年 tmux 的老用户,我最初对 Zellij 这个"新玩具"是持怀疑态度的。直到有一次在远程服务器上调试时,tmux 的窗格突然卡死,所有工作进度瞬间归零,我才开始认真寻找替代…...
如何快速上手网易游戏NPK文件解包工具:新手3步完整教程
如何快速上手网易游戏NPK文件解包工具:新手3步完整教程 【免费下载链接】unnpk 解包网易游戏NeoX引擎NPK文件,如阴阳师、魔法禁书目录。 项目地址: https://gitcode.com/gh_mirrors/un/unnpk 你是否对网易游戏如《阴阳师》、《魔法禁书目录》中的…...
tcpdive性能评估报告:CPU占用率与QPS影响分析终极指南
tcpdive性能评估报告:CPU占用率与QPS影响分析终极指南 【免费下载链接】tcpdive A TCP performance profiling tool. 项目地址: https://gitcode.com/gh_mirrors/tc/tcpdive tcpdive作为一款专业的TCP性能分析工具,在生产环境中的性能表现至关重要…...
Aseprite插件AseIcoExport:一键生成Windows与macOS应用图标
1. 项目概述:一个被低估的图标导出工具如果你是一个独立开发者,或者在一个小团队里负责UI/UX设计到前端实现的完整链路,那你一定对“图标导出”这个环节又爱又恨。爱的是,一个精心设计的图标集能让产品界面瞬间提升质感࿱…...
3大核心能力解析:Vin象棋如何用深度学习重塑中国象棋AI辅助体验
3大核心能力解析:Vin象棋如何用深度学习重塑中国象棋AI辅助体验 【免费下载链接】VinXiangQi Xiangqi syncing tool based on Yolov5 / 基于Yolov5的中国象棋连线工具 项目地址: https://gitcode.com/gh_mirrors/vi/VinXiangQi Vin象棋是一款基于YOLOv5深度学…...
小微团队如何利用 Taotoken 统一管理多个 AI 模型密钥与用量
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 小微团队如何利用 Taotoken 统一管理多个 AI 模型密钥与用量 对于小型开发或产品团队而言,在项目开发中集成多个大语言…...
Eviews面板数据建模保姆级教程:从Hausman检验到模型选择,一次讲透固定效应与随机效应
Eviews面板数据建模实战指南:从数据导入到模型选择的完整流程 面板数据分析作为计量经济学中的重要工具,能够同时捕捉时间和个体维度的信息。对于刚接触Eviews的研究者来说,如何正确建立面板模型往往令人困惑——从数据准备到模型选择&#x…...
Boss-Key:Windows下一键隐藏窗口的终极隐私保护工具
Boss-Key:Windows下一键隐藏窗口的终极隐私保护工具 【免费下载链接】Boss-Key 老板来了?快用Boss-Key老板键一键隐藏静音当前窗口!上班摸鱼必备神器 项目地址: https://gitcode.com/gh_mirrors/bo/Boss-Key 在数字化办公时代…...
Cadence Allegro自定义快捷键全攻略:从env文件到Skill脚本
1. 项目概述:为什么我们需要自定义快捷键?如果你是一名电子工程师,或者经常使用Cadence Allegro进行PCB设计,那么对软件自带的默认快捷键一定又爱又恨。爱的是,它确实提供了一些基础的操作加速;恨的是&…...
基于BMapGL与MapVGL,实战城市人流热力图可视化
1. 从零开始搭建热力图开发环境 第一次接触百度地图GL版开发时,我也被各种配置搞得晕头转向。现在把完整的环境搭建流程梳理出来,帮你避开我踩过的那些坑。BMapGL作为百度地图的WebGL版本,相比传统API渲染效率提升明显,特别适合数…...
