# 番茄叶部病害识别方法 **Repository Path**: gzw1127/tomato-recognition ## Basic Information - **Project Name**: 番茄叶部病害识别方法 - **Description**: 如今判断植植物病型的当下判断全然倚赖人力经验的介入,人力判断的数量局限与易误性并存,大规模种植场景下病虫害的广域判别遂成难以逾越的障碍;本研究即提出一种经改进深度卷积神经网络架构的番茄植株病虫害检测范式,其研究对象锚定于网络公开数据集PlantVillage所涵括的10类番茄叶片图像集合。 - **Primary Language**: Python - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2026-01-05 - **Last Updated**: 2026-03-11 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## 基于改进的残差网络的番茄叶部病害识别方法 **注**:本项目仅为学习记录。 ### 基本介绍 本研究即提出一种经改进深度卷积神经网络架构的番茄植株病虫害检测范式,其研究对象锚定 于网络公开数据集**PlantVillage**所涵括的10类番茄叶片图像集合。针对农业环境中病型易 变性诱发的误判痼疾,基于SE-ResNet50的识别模型得以构建:首先,混合数据增强策略的 施用实现了训练样本的扩充,模型训练的泛化能力由此获得提升;其次,SE(Squeeze-and-Excitation)通 道注意力机制被嵌入ResNet50的残差结构内部,病斑特征通道的权重得以自适应增强,无 效背景噪声则受到抑制;最后,迁移学习策略的引入,借助ImageNet预训练权重完成模型参数的初始化,模 型收敛进程被显著加速。实验数据昭示,改进后的SE-ResNet50模型在测试集上的平均识 别准确率达致99.69%。 ### 环境配置 主要环境配置如下,但一般也不会出现太大的问题。 * scikit-learn 1.3.0 * tqdm 4.66.5 * pytorch 1.12.1 * matplotlib 3.10.8 * numpy 1.23.5 ### 数据集介绍 本文所用的数据集为国际通用的植物病理学公开数据集[PlantVillage](https://www.kaggle.com/datasets/abdallahalidev/plantvillage-dataset)其中的番茄部分, 该数据集由宾夕 法尼亚州立大学发布,包含在受控环境下拍摄的高清植物叶片图像。本研 究选取其中的番茄(Tomato)子集,一共16011张图像。该数据集包含了番茄种植中常见的 10个情况, 即1类健康叶片和9类病害叶片,具体类别及样本数量如下: 细菌性斑点病(2127张)、 早疫病(1000张)、晚疫病(1909张)、叶霉病(952张)、斑枯病(1771张) 、红蜘蛛损伤(1676张)、靶斑病(1404张)、黄化曲叶病毒病(3208张)、 花叶病毒病(373张)及健康叶片(1591张)。数据集可自行点击下载。 ### 实验过程 ### _数据处理_ **尺寸归一化**:利用双线性插值法将所有图像统一缩放至224×224像素大小. **数据增强**:针对数据集中存在的样本不平衡问题,比如说花叶病毒病样本较少,在训练阶段采用在线增强策略。 包括,随机水平翻转(概率0.5)、随机旋转(-30°至+30°)、亮度与对比度随机调整(范围0.8-1.2). **数据集划分**:训练:验证:测试 = 8:1:1。实际可以调整为7:2:1 **程序说明**: * data_spilt.py为数据集划分,要将下载下来十类病害放在一个文件夹里。 * main.py为模型训练,3050大约2小时 * evaluation.py为模型在测试集的各种评估代码 * predict.py 为使用模型进行单图预测。 ### _模型构建_ 在标准的残差网络里引入注意力机制,增加模型对细节的处理能力。如![下图所示](改进模型图片.png) ### 实验结果 以下为大致实验结果,具体自行查看。 **损失曲线** ![损失图片][损失] [损失]: training_result_final.png **分类热图**: ![热图](evaluation_results/classification_report_heatmap.png) 分类报告在**evaluation_resuilts**里查看,最终准确率有99.96%。 **不足**:除原数据集测试外,模型泛化能力不足。