基于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+FFmpeg实现视频自动化处理的完整指南

《Python+FFmpeg实现视频自动化处理的完整指南》本文总结了一套在Python中使用subprocess.run调用FFmpeg进行视频自动化处理的解决方案,涵盖了跨平台硬件加速、中间素材处理... 目录一、 跨平台硬件加速:统一接口设计1. 核心映射逻辑2. python 实现代码二、 中间素材处

python中的flask_sqlalchemy的使用及示例详解

《python中的flask_sqlalchemy的使用及示例详解》文章主要介绍了在使用SQLAlchemy创建模型实例时,通过元类动态创建实例的方式,并说明了如何在实例化时执行__init__方法,... 目录@orm.reconstructorSQLAlchemy的回滚关联其他模型数据库基本操作将数据添

JAVA项目swing转javafx语法规则以及示例代码

《JAVA项目swing转javafx语法规则以及示例代码》:本文主要介绍JAVA项目swing转javafx语法规则以及示例代码的相关资料,文中详细讲解了主类继承、窗口创建、布局管理、控件替换、... 目录最常用的“一行换一行”速查表(直接全局替换)实际转换示例(JFramejs → JavaFX)迁移建

Python实现快速扫描目标主机的开放端口和服务

《Python实现快速扫描目标主机的开放端口和服务》这篇文章主要为大家详细介绍了如何使用Python编写一个功能强大的端口扫描器脚本,实现快速扫描目标主机的开放端口和服务,感兴趣的小伙伴可以了解下... 目录功能介绍场景应用1. 网络安全审计2. 系统管理维护3. 网络故障排查4. 合规性检查报错处理1.

Go异常处理、泛型和文件操作实例代码

《Go异常处理、泛型和文件操作实例代码》Go语言的异常处理机制与传统的面向对象语言(如Java、C#)所使用的try-catch结构有所不同,它采用了自己独特的设计理念和方法,:本文主要介绍Go异... 目录一:异常处理常见的异常处理向上抛中断程序恢复程序二:泛型泛型函数泛型结构体泛型切片泛型 map三:文

Python轻松实现Word到Markdown的转换

《Python轻松实现Word到Markdown的转换》在文档管理、内容发布等场景中,将Word转换为Markdown格式是常见需求,本文将介绍如何使用FreeSpire.DocforPython实现... 目录一、工具简介二、核心转换实现1. 基础单文件转换2. 批量转换Word文件三、工具特性分析优点局

Python中4大日志记录库比较的终极PK

《Python中4大日志记录库比较的终极PK》日志记录框架是一种工具,可帮助您标准化应用程序中的日志记录过程,:本文主要介绍Python中4大日志记录库比较的相关资料,文中通过代码介绍的非常详细,... 目录一、logging库1、优点2、缺点二、LogAid库三、Loguru库四、Structlogphp

Java使用Spire.Barcode for Java实现条形码生成与识别

《Java使用Spire.BarcodeforJava实现条形码生成与识别》在现代商业和技术领域,条形码无处不在,本教程将引导您深入了解如何在您的Java项目中利用Spire.Barcodefor... 目录1. Spire.Barcode for Java 简介与环境配置2. 使用 Spire.Barco

SQL Server中行转列方法详细讲解

《SQLServer中行转列方法详细讲解》SQL行转列、列转行可以帮助我们更方便地处理数据,生成需要的报表和结果集,:本文主要介绍SQLServer中行转列方法的相关资料,需要的朋友可以参考下... 目录前言一、为什么需要行转列二、行转列的基本概念三、使用PIVOT运算符进行行转列1.创建示例数据表并插入数

C++,C#,Rust,Go,Java,Python,JavaScript的性能对比全面讲解

《C++,C#,Rust,Go,Java,Python,JavaScript的性能对比全面讲解》:本文主要介绍C++,C#,Rust,Go,Java,Python,JavaScript性能对比全面... 目录编程语言性能对比、核心优势与最佳使用场景性能对比表格C++C#RustGoJavapythonjav