【物联网】智慧农业病虫害精准辨识竞赛思路及代码分享
来源:投稿 作者: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…...

大数据学习栈记——Neo4j的安装与使用
本文介绍图数据库Neofj的安装与使用,操作系统:Ubuntu24.04,Neofj版本:2025.04.0。 Apt安装 Neofj可以进行官网安装:Neo4j Deployment Center - Graph Database & Analytics 我这里安装是添加软件源的方法 最新版…...
FFmpeg 低延迟同屏方案
引言 在实时互动需求激增的当下,无论是在线教育中的师生同屏演示、远程办公的屏幕共享协作,还是游戏直播的画面实时传输,低延迟同屏已成为保障用户体验的核心指标。FFmpeg 作为一款功能强大的多媒体框架,凭借其灵活的编解码、数据…...

visual studio 2022更改主题为深色
visual studio 2022更改主题为深色 点击visual studio 上方的 工具-> 选项 在选项窗口中,选择 环境 -> 常规 ,将其中的颜色主题改成深色 点击确定,更改完成...
Go 语言接口详解
Go 语言接口详解 核心概念 接口定义 在 Go 语言中,接口是一种抽象类型,它定义了一组方法的集合: // 定义接口 type Shape interface {Area() float64Perimeter() float64 } 接口实现 Go 接口的实现是隐式的: // 矩形结构体…...

定时器任务——若依源码分析
分析util包下面的工具类schedule utils: ScheduleUtils 是若依中用于与 Quartz 框架交互的工具类,封装了定时任务的 创建、更新、暂停、删除等核心逻辑。 createScheduleJob createScheduleJob 用于将任务注册到 Quartz,先构建任务的 JobD…...

ESP32 I2S音频总线学习笔记(四): INMP441采集音频并实时播放
简介 前面两期文章我们介绍了I2S的读取和写入,一个是通过INMP441麦克风模块采集音频,一个是通过PCM5102A模块播放音频,那如果我们将两者结合起来,将麦克风采集到的音频通过PCM5102A播放,是不是就可以做一个扩音器了呢…...

零基础在实践中学习网络安全-皮卡丘靶场(第九期-Unsafe Fileupload模块)(yakit方式)
本期内容并不是很难,相信大家会学的很愉快,当然对于有后端基础的朋友来说,本期内容更加容易了解,当然没有基础的也别担心,本期内容会详细解释有关内容 本期用到的软件:yakit(因为经过之前好多期…...
代码随想录刷题day30
1、零钱兑换II 给你一个整数数组 coins 表示不同面额的硬币,另给一个整数 amount 表示总金额。 请你计算并返回可以凑成总金额的硬币组合数。如果任何硬币组合都无法凑出总金额,返回 0 。 假设每一种面额的硬币有无限个。 题目数据保证结果符合 32 位带…...
IP如何挑?2025年海外专线IP如何购买?
你花了时间和预算买了IP,结果IP质量不佳,项目效率低下不说,还可能带来莫名的网络问题,是不是太闹心了?尤其是在面对海外专线IP时,到底怎么才能买到适合自己的呢?所以,挑IP绝对是个技…...

Linux 内存管理实战精讲:核心原理与面试常考点全解析
Linux 内存管理实战精讲:核心原理与面试常考点全解析 Linux 内核内存管理是系统设计中最复杂但也最核心的模块之一。它不仅支撑着虚拟内存机制、物理内存分配、进程隔离与资源复用,还直接决定系统运行的性能与稳定性。无论你是嵌入式开发者、内核调试工…...