基于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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/624515.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

goland2024安装包(亲测可用)

目录 一、软件简介 二、软件下载 一、软件简介 Goland 是一款由 JetBrains 公司开发的集成开发环境(IDE),专门用于 Go 语言的开发。它提供了丰富的功能和工具,帮助开发者更高效地编写、调试和管理 Go 语言项目。 功能特点&#x…

李沐-动手学深度学习-Pytorch神经网络基础总结

注:1. 沐神对应章节视频出处 2.代码使用Jupyter Notebook运行更方便 3.文章笔记出处 一、层和块 层:层(1)接受一组输入, (2)生成相应的输出, (3)由一组可调整…

基于变压器的手持式超声图像中乳腺病变的分类不一致性测量表征

超声成像作为一种替代的低成本、易于获取的非电离成像方式已显示出巨大的前景,可用于乳腺癌筛查。特别是,随着最近便携式设备的出现,超声检查预计将在中低收入国家中越来越普及。然而,超声成像在乳腺癌诊断中的可靠性高度依赖于操…

合并有序表 (顺序存储 和 链式存储 方式实现)

代码详细解析: 合并有序表文章浏览阅读1.4k次,点赞6次,收藏7次。●假设有两个有序表 LA和LB , 将他们合并成一个有序表LC●要求不破坏原有的表 LA和 LB构思:把这两个表, 合成一个有序表 , 不是简简单单吗?就算是把他们先遍历不按顺序插入到表 C里面 , …

高等数学——一文搞定二重积分

文章目录 二重积分的基本概念二重积分的性质累次积分计算二重积分的方法和技巧描点画图法对称性利用函数的奇偶性变量的轮换对称性 积分次序的选择积分区域的确认先看变量和先积变量基本原则穿线法确定先积变量的曲线范围 常见的曲线经典题目 二重积分的基本概念 定义&#xf…

leetcode热题100.爬楼梯(从二进制到快速幂)

Problem: 70. 爬楼梯 文章目录 题目思路Code复杂度 题目 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢? 示例 1: 输入:n 2 输出:2 解释:有两种方…

AI工具导航网站比较分析

介绍 本篇博客将从FutureTools和GPT-3 Demo两个AI工具导航网站出发,进行全面比较分析,为读者提供深入了解和选择适合需求的信息。同时针对需求提供标题和内容。 标题 "AI工具导航网站:FutureTools与GPT-3 Demo的全面比较分析" 内容…

研发岗-统信UOS系统配置npm git等前端常用配置

第一步 获取root权限 配置环境等都需要用到root权限,所以我们先获取到root权限,方便下面的操作 下载软件 在UOS应用商店下载的所需应用 版本都比较低 安装node 官网下载了【arm64】的包,解压到指定文件夹,设置链接&#xff0…

死磕GMSSL通信-java/Netty系列(二)

死磕GMSSL通信-java/Netty系列(二) 在上一篇文章中,我们探讨了如何利用C/C++实现国密通信。而本文将聚焦于Java环境下,特别是基于Netty框架,如何实现与国密系统的安全通信。为了确保新项目遵循最新的国密标准,我们将优先推荐使用GB/T 38636-2020(TLCP)协议。对于Java开…

ORA-00742 ORA-00312 恢复---惜分飞

有客户反馈,断电之后数据库启动报ORA-00742和ORA-00312,无法正常open 我们远程上去尝试open库结果也报同样错误 [oracleoldhis oradata]$ sqlplus / as sysdba SQL*Plus: Release 11.2.0.4.0 Production on Wed Apr 10 09:40:03 2024 Copyright (c) 1982, 2013, Oracle. A…

Yolo-world使用

1、安装 python pip install ultralytics 前往官网下载模型:https://docs.ultralytics.com/models/yolo-world/#key-features 我这里使用yolov8s-world.pt举例 最简单的使用示例 if __name__ __main__:model YOLO(model/yolov8s-world.pt)results model.pre…

Blender2.83 下载地址及安装教程

Blender是一款开源的3D计算机图形软件,广泛应用于动画制作、游戏开发、建模、渲染等领域。它提供了一套强大的工具和功能,让用户能够进行三维建模、动画制作和视觉效果的创作。 Blender支持多种文件格式的导入和导出,使用户能够与其他软件进…