使用MobileNetV3模型识别农作物病虫害(通过叶子)
项目地址:MobileNetV3-for-leaf
项目背景:
早期曾在嵌入式设备 RV1106 上实现过植物病害识别模型,但由于设备性能与数据集限制,识别效果一般。本项目基于更完善的数据与资源,重新使用 MobileNetV3 小型结构从头训练,识别三类病害,20 个 epoch 后模型验证准确率达 96.67%。实验中发现模型在 第 10 个 epoch 左右就已表现出较好的识别能力。
本项目使用轻量级模型 MobileNetV3 从头训练实现 农作物叶子健康状况识别,识别类别为:
healthypowdery(白粉病)rust(锈病)
数据集来自 Kaggle: Plant disease recognition dataset
训练模型
python train.py
支持配置:
- 所有训练超参数(学习率、批大小、epoch 数量等)均可在
train.py中修改。
输出示例:
测试单张图像
python test_single_image.py
输出示例:
模型结构说明
模型采用自定义实现的 MobileNetV3-Small,总参数量约 1.5M,非常适合部署于计算资源受限的设备上:
模型结构:
输入图像与预处理
- 原图尺寸约为 4000x2672
- 模型输入统一调整为 224x224
- 图像预处理方式:
transforms.Resize(256),
transforms.CenterCrop(224),
transforms.RandomHorizontalFlip(),
transforms.ToTensor(),
transforms.Normalize([0.4717, 0.5892, 0.3972],
[0.1704, 0.1531, 0.1755])
其中 Normalize 的均值与标准差由 calculator_mean_std.py 脚本统计所得,确保模型在颜色分布上的泛化能力。
已实现功能
- MobileNetV3 小型结构从头训练
- 自定义数据均值与标准差统计
- 支持单张图像推理测试
- 验证集准确率自动保存最优模型
项目作者
李中政
GitHub: @lizhongzheng13
使用MobileNetV3模型识别农作物病虫害(通过叶子)的更多相关文章
- 结巴分词3--基于汉字成词能力的HMM模型识别未登录词
作者:zhbzz2007 出处:http://www.cnblogs.com/zhbzz2007 欢迎转载,也请保留这段声明.谢谢! 1 算法简介 在 结巴分词2--基于前缀词典及动态规划实现分词 博 ...
- Java 用自带dom解析器遍历叶子节点内容
一.XML文件config.xml,内容如下: <?xml version="1.0" encoding="UTF-8" standalone=" ...
- BZOJ 1304: [CQOI2009]叶子的染色
1304: [CQOI2009]叶子的染色 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 566 Solved: 358[Submit][Statu ...
- CF735C 数论\平衡树叶子节点的最大深度\贪心\斐波那契\条件归一化
http://codeforces.com/problemset/problem/735/C 题意..采用淘汰赛制..只要打输就退出比赛..而且只有两个选手打过的场数 相差不超过1才能比赛..最后问你 ...
- ztree树 叶子节点路径的集合
1.Question Description: ztree树各个节点都带有路径,如“/根节点”,"/根节点/一级节点",“根节点/一级节点/二级节点‘; 现在想获取所选的最末级节点 ...
- TokuDB介绍——本质是分形树(一个叶子4MB)+缓存减少写操作
其性能特点见:http://www.cnblogs.com/billyxp/p/3567421.html TokuDB 是一个高性能.支持事务处理的 MySQL 和 MariaDB 的存储引擎.Tok ...
- SDUT 3346 数据结构实验之二叉树七:叶子问题
数据结构实验之二叉树七:叶子问题 Time Limit: 1000MS Memory Limit: 65536KB Submit Statistic Problem Description 已知一个按 ...
- jquery zTree 查找所有的叶子节点
jquery zTree 查找所有的叶子节点 // 保存所有叶子节点 10 为初始化大小,并非数组上限 var arrayObj = new Array([10]); /* treeNode: 根节点 ...
- 1304: [CQOI2009]叶子的染色 - BZOJ
Description给一棵m个结点的无根树,你可以选择一个度数大于1的结点作为根,然后给一些结点(根.内部结点和叶子均可)着以黑色或白色.你的着色方案应该保证根结点到每个叶子的简单路径上都至少包含一 ...
- POJ 3277 City Horizon(叶子节点为[a,a+1)的线段树+离散化)
网上还有用unique函数和lowerbound函数离散的方法,可以百度搜下题解就有. 这里给出介绍unique函数的链接:http://www.cnblogs.com/zhangshu/archiv ...
随机推荐
- 实现高质量视频通话的javascript技巧与方法
@charset "UTF-8"; .markdown-body { line-height: 1.75; font-weight: 400; font-size: 15px; o ...
- STL vector容器存储键值对
在阅读tvm源码时,发现了一个挺有意思的代码: std::vector<std::pair<std::string, ObjectRef>> update; vector容器里 ...
- MongoDB创建数据库文件的存放位置
为什么要写这篇呢,故事还得从MongoDB如下所示的罢工说起 怎么就拒绝访问了呢???? 在执行mongod命令可发现如下问题: 于是,在蜘蛛网上到处扒拉,以解它这不解之症,也解我燃眉之急 终于... ...
- 一文速通 Python 并行计算:12 Python 多进程编程-进程池 Pool
一文速通 Python 并行计算:12 Python 多进程编程-进程池 Pool 摘要: 在Python多进程编程中,Pool类用于创建进程池,可并行执行多个任务.通过map.apply等方法,将函 ...
- Django中的文件操作
一.静态文件的加载 1.使用步骤 ①.在工程目录下创建static目录,创建css/js/images等目录,并添加相关资源 ②.在settings.py中配置STATICFILES_DIRS STA ...
- 分布式事务TCC
大家好,今天想和大家一起聊聊分布式事务. 今天主要说主要内容如下: * 分布式事务TCC 我们知道布式式事物TCC代表Try.Confirm.Cancel,就是尝试.确认.取消.这个是互联网上比较常见 ...
- .Net Web API 003 添加Controller实现用户登录
1.Get和Post WEB API 中HTTP 请求方式的四个主要方法 (GET, PUT, POST, DELETE).Get一般用于查询.Put一般用于更新,Post用户创建,delete用户删 ...
- 安装程序无法创建新的系统分区,也无法定位现有系统分区_安装win7在固态硬盘解决
在安装Windows7时,想必有很多人都安碰到这样的情况吧!在安装界面里选择安装时,却出现"安装程序无法创建新的系统分区,也无法定位现有系统分区" 如下图: 方法/步骤 进入win ...
- Alovoa - 开源隐私优先的约会平台
项目标题与描述 Alovoa是一个旨在成为首个广泛使用的免费开源约会网络平台.与其他平台不同,Alovoa具有以下核心价值: 无广告 不出售用户数据 无付费功能(无"付费超级喜欢" ...
- Xamarin.Android 获取屏幕分辨率
var metrics = Resources.DisplayMetrics; Log.Debug("屏幕分辨率", $"宽={metrics.Wi ...


