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

相关文章

Python进行JSON和Excel文件转换处理指南

《Python进行JSON和Excel文件转换处理指南》在数据交换与系统集成中,JSON与Excel是两种极为常见的数据格式,本文将介绍如何使用Python实现将JSON转换为格式化的Excel文件,... 目录将 jsON 导入为格式化 Excel将 Excel 导出为结构化 JSON处理嵌套 JSON:

Python操作PDF文档的主流库使用指南

《Python操作PDF文档的主流库使用指南》PDF因其跨平台、格式固定的特性成为文档交换的标准,然而,由于其复杂的内部结构,程序化操作PDF一直是个挑战,本文主要为大家整理了Python操作PD... 目录一、 基础操作1.PyPDF2 (及其继任者 pypdf)2.PyMuPDF / fitz3.Fre

python设置环境变量路径实现过程

《python设置环境变量路径实现过程》本文介绍设置Python路径的多种方法:临时设置(Windows用`set`,Linux/macOS用`export`)、永久设置(系统属性或shell配置文件... 目录设置python路径的方法临时设置环境变量(适用于当前会话)永久设置环境变量(Windows系统

python中列表应用和扩展性实用详解

《python中列表应用和扩展性实用详解》文章介绍了Python列表的核心特性:有序数据集合,用[]定义,元素类型可不同,支持迭代、循环、切片,可执行增删改查、排序、推导式及嵌套操作,是常用的数据处理... 目录1、列表定义2、格式3、列表是可迭代对象4、列表的常见操作总结1、列表定义是处理一组有序项目的

python运用requests模拟浏览器发送请求过程

《python运用requests模拟浏览器发送请求过程》模拟浏览器请求可选用requests处理静态内容,selenium应对动态页面,playwright支持高级自动化,设置代理和超时参数,根据需... 目录使用requests库模拟浏览器请求使用selenium自动化浏览器操作使用playwright

python使用try函数详解

《python使用try函数详解》Pythontry语句用于异常处理,支持捕获特定/多种异常、else/final子句确保资源释放,结合with语句自动清理,可自定义异常及嵌套结构,灵活应对错误场景... 目录try 函数的基本语法捕获特定异常捕获多个异常使用 else 子句使用 finally 子句捕获所

Python极速搭建局域网文件共享服务器完整指南

《Python极速搭建局域网文件共享服务器完整指南》在办公室或家庭局域网中快速共享文件时,许多人会选择第三方工具或云存储服务,但这些方案往往存在隐私泄露风险或需要复杂配置,下面我们就来看看如何使用Py... 目录一、android基础版:HTTP文件共享的魔法命令1. 一行代码启动HTTP服务器2. 关键参

Python对接支付宝支付之使用AliPay实现的详细操作指南

《Python对接支付宝支付之使用AliPay实现的详细操作指南》支付宝没有提供PythonSDK,但是强大的github就有提供python-alipay-sdk,封装里很多复杂操作,使用这个我们就... 目录一、引言二、准备工作2.1 支付宝开放平台入驻与应用创建2.2 密钥生成与配置2.3 安装ali

Python获取浏览器Cookies的四种方式小结

《Python获取浏览器Cookies的四种方式小结》在进行Web应用程序测试和开发时,获取浏览器Cookies是一项重要任务,本文我们介绍四种用Python获取浏览器Cookies的方式,具有一定的... 目录什么是 Cookie?1.使用Selenium库获取浏览器Cookies2.使用浏览器开发者工具

SQL Server安装时候没有中文选项的解决方法

《SQLServer安装时候没有中文选项的解决方法》用户安装SQLServer时界面全英文,无中文选项,通过修改安装设置中的国家或地区为中文中国,重启安装程序后界面恢复中文,解决了问题,对SQLSe... 你是不是在安装SQL Server时候发现安装界面和别人不同,并且无论如何都没有中文选项?这个问题也