【物联网】智慧农业病虫害精准辨识竞赛思路及代码分享
来源:投稿 作者: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…...
从0开始学python -34
Python3 输入和输出-2 读和写文件 open() 将会返回一个 file 对象,基本语法格式如下: open(filename, mode)filename:包含了你要访问的文件名称的字符串值。mode:决定了打开文件的模式:只读,写入,追加等。…...
瑞典军事研究:从认知心理学的视角探讨军事创新进程
来源:Military Innovation as the Result of Mental Models of Technology 《摘要》 政治紧张局势的加剧和技术发展的进步促使Scandinavian 国家(斯堪的纳维亚半岛,欧洲最大的半岛,有挪威、瑞典两国以及芬兰北端的一小部分。&am…...
【MySQL进阶-08】深入理解innodb存储格式,双写机制,buffer pool底层结构和淘汰策略
MySql系列整体栏目 内容链接地址【一】深入理解mysql索引本质https://blog.csdn.net/zhenghuishengq/article/details/121027025【二】深入理解mysql索引优化以及explain关键字https://blog.csdn.net/zhenghuishengq/article/details/124552080【三】深入理解mysql的索引分类&a…...
5. AOP
一、如何定义一个MethodHandler? 1.Controller注解修饰的类 1.注册成Spring Bean 2.表示它是一个SpringMVC下的Controller 2.在这个类下的方法中,只要被RequestMapping修饰&&方法的形参符合规定(需要看文档) 方法的返回值符合规定…...
ubuntu上尝试libpqxx库链接人大金仓
ubuntu上尝试libpqxx库链接人大金仓 C的项目让使用国产数据库 运维给架了一个人大金仓数据库, Kingbase 8 是基于 PostgreSQL 9.6 做的, 尝试直接使用libpqxx链接数据库。 文章目录ubuntu上尝试libpqxx库链接人大金仓第一步 搭建libpqxx开发环境搜索lib…...
【Python入门第十二天】Python 列表
Python 集合(数组) Python 编程语言中有四种集合数据类型: 列表(List)是一种有序和可更改的集合。允许重复的成员。元组(Tuple)是一种有序且不可更改的集合。允许重复的成员。集合(…...
Android 异步操作库 RxJava
RxJava概述 RxJava 是一种响应式编程,来创建基于事件的异步操作库。基于事件流的链式调用、逻辑清晰简洁。 RxJava 我的理解是将事件从起点(上游)流向终点(下游),中间有很多卡片对数据进操作并传递&#x…...
2021-12-05青少年软件编程(C语言)等级考试试卷(六级)解析
2021-12-05青少年软件编程(C语言)等级考试试卷(六级)解析T1. 电话号码 给你一些电话号码,请判断它们是否是一致的,即是否有某个电话是另一个电话的前缀。比如: Emergency 911 Alice 97 625 999 Bob 91 12 54 26 在这个例子中,我们不可能拨通Bob的电话,因为Emergency的…...
github 使用
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录一、git与github二、出错的地方1.GitHub没有css样式2、git clone出现错误3、明明创建了responsibility 但git 不显示一、git与github 这个博客写的很好!…...
Kubernetes集群维护—备份恢复与升级
Etcd数据库备份与恢复 需要先安装etcd备份工具yum install etcd -y按不同安装方式执行不同备份与恢复kubeadm部署方式: 备份:ETCDCTL_API3 etcdctl snapshot save snap.db --endpointshttps://127.0.0.1:2379 --cacert/etc/kubernetes/pki/etcd/ca.cr…...
厦门网站建设外包/中国国家人事人才培训网证书查询
某些查询条件确定范围between and,not between and确定集合in,not in字符匹配like,not like空值is null,is not null多重条件and,or,not1。确定范围 查询年龄在(不在)21到24之间的学…...
wordpress 慢 优化/网址域名注册信息查询
Handler的基本概念 当有一段处理耗时比较漫长的时候,我们就需要用线程来处理。Android中是用Handler类来处理线程的。 与Handler绑定的有两个队列,一个为消息队列,另一个为线程队列。Handler可以通过这两个队列来分别: 【消息队…...
厦门外贸网站建设哪家公司大/网络推广和运营的区别
java-访问限制:由于对所需库.. \ jre \ lib \ rt.j的限制而无法访问我正在尝试修改一些旧代码,而又得到以下错误:访问限制:由于必需的库.. \ jre \ lib \ rt.jar的限制,无法访问标头类型的方法create(JAXBRIContext&am…...
wordpress怎么制作订单号管理/seo描述是什么意思
转:/********************** * 课题:将窗体中鼠标所在控件名显示在窗体标题上 * 作者:ZAXX * QQ : 94027486 * 本课题可简单扩展:获取屏幕上鼠标所在位置的窗口句柄与类名 **********************/using System;using System.Draw…...
怎么做线上营销/seo网站优化培训找哪些
2019独角兽企业重金招聘Python工程师标准>>> 1. 提前准备:mac电脑(or虚拟机),空U盘(最低8GB的)、sierra.app(app store上下载的) 2. 前往-实用工具,运行里面的“磁盘工具…...
一 网站建设的目的和目标/软文范例大全1000字
转:http://www.myexception.cn/javascript/871757.html 什么是 JavaScript?你该如何执行它 什么是 JavaScript?你该如何执行它? JavaScript 是一种基于文本的程序设计语言,在被执行之前不需要进行任何转换。其它程…...