基于CNN的棉花不同病害叶识别(Python代码,pytorch框架,代码有详细中文注释,准确率在90%以上)

本文主要是介绍基于CNN的棉花不同病害叶识别(Python代码,pytorch框架,代码有详细中文注释,准确率在90%以上),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1.效果视频(训练过程:基于CNN模型的棉花不同病害叶识别(Python代码,pytorch框架)_哔哩哔哩_bilibili(为减小视频时长,epoch为30,准确率在85%左右,epoch为60后,稳定在90%以上),

GUI识别过程:棉花也病害识别GUI运行界面_哔哩哔哩_bilibili)

CNN模型介绍( CNN模型代码,可以替换为MobileNetV3Small, VGG16,AlexNet,ResNet18,GoogLeNet,很容易):

表 3-1 CNN完整网络参数

网络

名称

层类型

核尺寸/

步长

核数量

激活

函数

CNN

模块

卷积块1

卷积层

3*3/1

16

ReLU

BN层

卷积块2

卷积层

3*3/1

32

ReLU

BN层

池化层1

最大池化层

2/2

卷积块3

卷积层

3*3/1

64

ReLU

BN层

卷积块4

卷积层

3*3/1

128

ReLU

BN层

池化层2

自适应最大池化层

分类器

全连接层1

256

ReLU

全连接层2

128

ReLU

输出层

4

Softmax

代码实现(这里把注释去掉了)

from torch import nn
import warnings
import torch
# ----------------------------inputsize >=28*28-------------------------------------------------------------------------
class CNN(nn.Module):def __init__(self, pretrained=False, in_channel=3, num_classes=4):super(CNN, self).__init__()if pretrained == True:warnings.warn("Pretrained model is not available")self.layer1 = nn.Sequential(nn.Conv2d(in_channel, 16, kernel_size=3),  nn.BatchNorm2d(16),nn.ReLU(inplace=True))self.layer2 = nn.Sequential(nn.Conv2d(16, 32, kernel_size=3),  nn.BatchNorm2d(32),nn.ReLU(inplace=True),nn.MaxPool2d(kernel_size=2, stride=2))  self.layer3 = nn.Sequential(nn.Conv2d(32, 64, kernel_size=3),nn.BatchNorm2d(64),nn.ReLU(inplace=True))self.layer4 = nn.Sequential(nn.Conv2d(64, 128, kernel_size=3), nn.BatchNorm2d(128),nn.ReLU(inplace=True),nn.AdaptiveMaxPool2d((4,4)))  self.layer5 = nn.Sequential(nn.Linear(128 * 4 * 4, 1024),nn.ReLU(inplace=True),nn.Linear(1024, 128),nn.ReLU(inplace=True))self.fc = nn.Linear(128, num_classes)def forward(self, x):x = self.layer1(x)x = self.layer2(x)x = self.layer3(x)x = self.layer4(x)x = x.view(x.size(0), -1)x = self.layer5(x)x = self.fc(x)return x

2.数据集介绍

 

 如果想识别的时候呈现中文名称:

文件夹改为中文名字即可

  1. Bacterial Blight(细菌性枯萎病):细菌性枯萎病是由细菌引起的棉花疾病,主要受害部位是棉花的叶子和茎。这种病害可以导致叶片枯萎、变色和腐烂,对棉花产量产生不利影响。

  2. Curl Virus(卷叶病毒):卷叶病毒是一种病毒性病害,影响棉花植株。感染后,棉花叶片会卷曲并显示异常的颜色,这可能导致棉花生长不良和减产。

  3. Fusarium Wilt(枯萎病):枯萎病是由一种真菌引起的棉花疾病。这种病害会导致棉花植株的叶子和茎部出现枯萎、变色和凋落的症状。枯萎病对棉花的生长和产量也造成了负面影响。

  4. Healthy(健康):"Healthy" 表示没有任何上述病害或问题,棉花植株处于正常健康状态。

1.Bacterial Blight(细菌性枯萎病)文件夹(448张照片) 

2. Curl Virus(卷叶病毒)文件夹(417张照片)

3. Fusarium Wilt(枯萎病)文件夹(419张照片)

4.健康文件夹(426张照片)

 只对数据集感兴趣额的,可以关注棉花叶病害数据集_cotton insect pests 数据集-CSDN博客

整个文件夹的截图

背景照片是GUI程呈现的背景,可以替换

train.py是训练主程序,调用model.py里面写的CNN模型

model.py就是CNN模型

hf.py是对data文件夹里的原始数据进行分割训练集和测试集,生成的训练集和测试集保存在了piture文件夹(如果运行hf.py,需要重新删除piture文件夹) 

CNN.pth就是train.py训练结束保存的模型参数。

class_indices.join可以被pycharm或者Spyder等Python语言编译器打开,里面是标签和对应的类别名称

对项目感兴趣的额,可以关注最后一行

import threading
import os
import json
import torch
import cv2
from PIL import Image
from torchvision import transforms
import tkinter as tk
from tkinter import filedialog
from model import CNN
from PIL import ImageTk
#代码和数据集压缩包:https://mbd.pub/o/bread/mbd-ZZ6alZ9p

这篇关于基于CNN的棉花不同病害叶识别(Python代码,pytorch框架,代码有详细中文注释,准确率在90%以上)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/910625

相关文章

中文分词jieba库的使用与实景应用(一)

知识星球:https://articles.zsxq.com/id_fxvgc803qmr2.html 目录 一.定义: 精确模式(默认模式): 全模式: 搜索引擎模式: paddle 模式(基于深度学习的分词模式): 二 自定义词典 三.文本解析   调整词出现的频率 四. 关键词提取 A. 基于TF-IDF算法的关键词提取 B. 基于TextRank算法的关键词提取

python: 多模块(.py)中全局变量的导入

文章目录 global关键字可变类型和不可变类型数据的内存地址单模块(单个py文件)的全局变量示例总结 多模块(多个py文件)的全局变量from x import x导入全局变量示例 import x导入全局变量示例 总结 global关键字 global 的作用范围是模块(.py)级别: 当你在一个模块(文件)中使用 global 声明变量时,这个变量只在该模块的全局命名空

2. c#从不同cs的文件调用函数

1.文件目录如下: 2. Program.cs文件的主函数如下 using System;using System.Collections.Generic;using System.Linq;using System.Threading.Tasks;using System.Windows.Forms;namespace datasAnalysis{internal static

阿里开源语音识别SenseVoiceWindows环境部署

SenseVoice介绍 SenseVoice 专注于高精度多语言语音识别、情感辨识和音频事件检测多语言识别: 采用超过 40 万小时数据训练,支持超过 50 种语言,识别效果上优于 Whisper 模型。富文本识别:具备优秀的情感识别,能够在测试数据上达到和超过目前最佳情感识别模型的效果。支持声音事件检测能力,支持音乐、掌声、笑声、哭声、咳嗽、喷嚏等多种常见人机交互事件进行检测。高效推

【Prometheus】PromQL向量匹配实现不同标签的向量数据进行运算

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN全栈领域优质创作者,掘金优秀博主,51CTO博客专家等。 🏆《博客》:Python全栈,前后端开发,小程序开发,人工智能,js逆向,App逆向,网络系统安全,数据分析,Django,fastapi

活用c4d官方开发文档查询代码

当你问AI助手比如豆包,如何用python禁止掉xpresso标签时候,它会提示到 这时候要用到两个东西。https://developers.maxon.net/论坛搜索和开发文档 比如这里我就在官方找到正确的id描述 然后我就把参数标签换过来

【Python编程】Linux创建虚拟环境并配置与notebook相连接

1.创建 使用 venv 创建虚拟环境。例如,在当前目录下创建一个名为 myenv 的虚拟环境: python3 -m venv myenv 2.激活 激活虚拟环境使其成为当前终端会话的活动环境。运行: source myenv/bin/activate 3.与notebook连接 在虚拟环境中,使用 pip 安装 Jupyter 和 ipykernel: pip instal

poj 1258 Agri-Net(最小生成树模板代码)

感觉用这题来当模板更适合。 题意就是给你邻接矩阵求最小生成树啦。~ prim代码:效率很高。172k...0ms。 #include<stdio.h>#include<algorithm>using namespace std;const int MaxN = 101;const int INF = 0x3f3f3f3f;int g[MaxN][MaxN];int n

【机器学习】高斯过程的基本概念和应用领域以及在python中的实例

引言 高斯过程(Gaussian Process,简称GP)是一种概率模型,用于描述一组随机变量的联合概率分布,其中任何一个有限维度的子集都具有高斯分布 文章目录 引言一、高斯过程1.1 基本定义1.1.1 随机过程1.1.2 高斯分布 1.2 高斯过程的特性1.2.1 联合高斯性1.2.2 均值函数1.2.3 协方差函数(或核函数) 1.3 核函数1.4 高斯过程回归(Gauss

uva 10061 How many zero's and how many digits ?(不同进制阶乘末尾几个0)+poj 1401

题意是求在base进制下的 n!的结果有几位数,末尾有几个0。 想起刚开始的时候做的一道10进制下的n阶乘末尾有几个零,以及之前有做过的一道n阶乘的位数。 当时都是在10进制下的。 10进制下的做法是: 1. n阶位数:直接 lg(n!)就是得数的位数。 2. n阶末尾0的个数:由于2 * 5 将会在得数中以0的形式存在,所以计算2或者计算5,由于因子中出现5必然出现2,所以直接一