1. 引言
我国是全球主要的农业生产国之一,在农业发展过程中始终面临着病害的严峻挑战[1]。在农业发展过程中进行高效精准的病害预测工作十分重要,而精准地识别病害图像无疑是这一工作的关键前提。传统的病害识别主要依靠人力来进行,虽然在特定条件下有一定实用性,但往往存在着效率有限、误判率高的问题,并且对人员的专业知识能力依赖强,无法满足现代农业智能化需求[2]。近年来信息技术进步发展,研究人员也开始探索更加自动化智能化的识别方法。在技术发展的初期阶段,图像识别主要依赖于传统机器学习算法,依靠人工提取如颜色、纹理或几何轮廓等的图像特征来完成识别,相较于传统的人工识别方法效率有明显提升。不过由于田间环境复杂多样,这些传统机器学习的模型在实际应用中效果有限,难以保证识别的准确性与普适性[3]。
近年来深度学习技术的引入革新了图像识别的模式,不同于传统人工构造特征的识别方法,深度神经网络能够从原始图像中捕捉更抽象的特征,就算在图像质量较差或背景条件复杂的场景下也能保持较为良好的识别水平[4]。除此之外,残差连接、注意力机制、轻量级网络等方法的应用,也都进一步增强了深度学习模型在大规模图像数据集上的表现能力,在训练时间、识别速度与分类精度等多方面都取得了实质性的进展[5]。借助着深度学习的方法,农业领域病害图像的识别不仅更自动化,也更接近我国智慧农业的发展目标。
本研究因此深入探索基于深度学习算法的作物病害识别方法,提出结合迁移学习微调ResNet34的改进方法。通过特征层参数冻结、优化全连接层、调整动态学习率等策略,有效提高识别精度,可精准识别38类经典病害图像。同时进行消融实验,并与其他神经网络比较分析性能差异。最后保存经过迭代训练后最优的权重,将改进的ResNet34模型整合到基于Django框架开发的在线识别系统中,实现从图像上传、模型推理到生成识别结果与防治建议的可视化界面呈现。
2. 数据集与图像增强
本研究使用的图像数据来自Kaggle平台开源的New Plant Diseases Dataset病害数据集,该数据集包含来自14种常见作物共计87,867张叶片图像,涵盖了健康样本及不同类型的病害形态共计38类,如图1所示。
Figure 1. Dataset visualization of plant disease and pest images
图1. 数据集病害图像展示
为让模型在训练时收敛更快,并且有更好的泛化能力,本研究对训练集、验证集和测试集图像分别采用了不同的预处理方法,包括几何变换、空间变换、颜色扰动与标准化等,如表1所示。对训练集采用动态增强方法,以增强模型对复杂环境的适应能力;验证集和测试集则在图像处理流程上保持一致,从而保证模型评估结果的稳定性。所有图像处理操作都是借助PyTorch框架中的torchvision.transforms模块完成,防止因重复存储增强图像而产生的存储负担。
Table 1. Image preprocessing and augmentation methods
表1. 图像预处理与增强方式
处理内容 |
训练集处理方式 |
验证集/测试集处理方式 |
几何变换 |
以0.5概率进行水平与垂直翻转,随机旋转角度[−5˚, 5˚] |
不进行任何几何变换 |
空间变换 |
选取80%~100%区域随机缩放裁剪至224 × 2024像素 |
将图像短边缩放至256像素后,进行中心裁剪至224 × 224像素 |
颜色扰动 |
亮度、对比度、饱与度进行±20%的线性扰动 |
不引入颜色扰动 |
标准化与张量化 |
采用ImageNet统计均值与标准差,张量转换并归一化至[0, 1],每轮训练中随机打乱样本顺序 |
标准化与张量参数保持一致;样本顺序保持固定 |
(1) 几何变换
几何增强主要应用于训练阶段,通过概率翻转与旋转来实现,图像增强前后分别如图2中图(a)、图(b)所示。图像以0.5的概率分别做水平翻转与垂直翻转,来模拟叶片在拍摄过程中由于角度或正反面差异而产生的外观变化。图像在[−5˚, 5˚]范围内随机旋转,增强模型对病斑在不同方向下特征表达的识别能力。
Figure 2. Comparison of geometric transformations
图2. 几何变换对比图
(2) 空间变换
在空间变换方面,训练集使用随机缩放裁剪策略,图像从原图中随机选取80%至100%的区域后统一缩放至224 × 224分辨率,来模拟拍摄视角变化与目标尺度波动,如图3中图(a)、图(b)所示分别为增强前后图像。该操作能够增强模型对不同病斑尺寸和图像局部构图的识别能力。验证集与测试集图像则先将短边缩放至256像素,再进行中心裁剪,生成224 × 224输入图像,保持图像处理的一致性,降低随机性对评估结果的干扰。
Figure 3. Comparison of spatial transformations
图3. 空间变换对比图
(3) 颜色扰动
颜色扰动用于提高模型对成像环境变化下图像颜色差异的适应能力。训练阶段在亮度、对比度与饱与度三个通道上分别施加±20%的线性扰动,来模拟光照强弱、拍摄设备和时间变化引起的图像色彩偏差,如图4中图(a)、图(b)所示分别为增强前后图像。模型在此基础上学习不同光照条件或设备成像差异下的病斑特征,提升对于颜色变化和纹理细节的识别能力。
(1)
其中
与
分别表示通道间独立设置的对比度与亮度调节系数,
代表原始图像的像素值,
为经过扰动后的图像像素值。
Figure4. Comparison before and after color disturbance
图4. 颜色扰动前后对比图
(4) 标准化与张量转换
原始图像的像素值处于0到255的整数区间,直接输入模型会导致数值尺度过大,不利于梯度在网络中的传播。因此将所有图像在输入模型前做标准化与张量化处理,先把像素值归一化到[0, 1]区间,然后根据ImageNet数据集的通道均值[0.485, 0.456, 0.406]与标准差[0.229, 0.224, 0.225]进行逐通道z-score标准化。
在训练阶段通过每轮迭代打乱样本顺序来降低模型对样本排列的依赖,验证与测试阶段则保持样本顺序不变,来保障评估结果的可重复性和一致性。
3. 实验方法
3.1. ResNet34模型与总体架构
在植物病害图像识别工作中,常遇到背景干扰大、类别分布不均以及特征差异微小等困难。特征差异主要在纹理、局部颜色和边缘结构这些中低层特征方面有所体现。这就需要模型具备较强的中低层特征提取能力。研究选用ResNet34作为基础模型,其残差结构在保持较深网络深度的同时,可有效缓解梯度消失与性能退化问题,使特征学习更平稳,泛化能力更佳[6]。适合处理病害图像中纹理、边缘与颜色等复杂细节,能够满足研究对于识别精度与模型扩展性方面的需求。
Figure 5. Schematic diagram of the ResNet architecture
图5. ResNet结构示意图
如图5所示,ResNet34以一个大尺寸的7 × 7卷积核作为起始层,结合步长为2的下采样操作,在网络初期建立较大的感受野,能够帮助获取病害区域的整体形状特征。紧接的最大池化层进一步压缩特征图空间尺寸,来提升模型对目标位置变化的鲁棒性。
网络主体由四个阶段的残差模块堆叠而成,共包含16个残差块。每个残差块由两个3 × 3的卷积层和一个跨层连接组成,如图6所示。若输入与输出通道数一致,则跨层连接直接采用恒等映射;若不一致,则通过下采样调整。每个残差块的内部流程包括卷积、批量归一化、ReLU激活和跨层结果的相加,再经过非线性激活完成特征融合。
Figure 6. Residual block diagram
图6. 残差结构图
在网络输出阶段,特征图经过许多残差块处理后进入全局平均池化层,将7 × 7 × 512的特征图压缩为1 × 512的特征向量。这种设计减少了模型参数数量,降低了过拟合的风险,同时保持了空间信息的完整性。最后展平后的特征向量传入全连接层,通过softmax激活函数生成各类别的概率分布,完成最终的分类。softmax函数数学表达式如下:
(2)
其中,
表示输入样本x被预测为第i类的概率,
表示输入样本x经过全连接层后对应第i类的得分,C是分类任务中的类别总数。
3.2. 结合迁移学习和改进ResNet34的识别方法
迁移学习是一种将源任务中学到的知识迁移至目标任务的学习策略[7],如图7所示。在图像识别领域,数据获取困难和类别分布不均等问题会导致从零训练深度神经网络容易出现过拟合和收敛困难。本研究采用ImageNet [8]预训练权重作为训练基础,利用其已学习的通用视觉特征来提升模型性能,通过结构微调适配目标任务。
ImageNet数据集包含超过1400万张自然图像和1000个类别,预训练模型在底层已掌握边缘、纹理、形状等基础视觉特征,这些特征与植物病害图像中的叶片纹理、病斑边界等特征具有相似性。通过迁移学习模型无需从零开始学习这些通用特征,而是在已有特征基础上进行特定调整,能够缩短训练时间并提高收敛稳定性。
Figure 7. Transfer learning
图7. 迁移学习
本研究采用的迁移学习策略主要有三个核心组成部分:参数冻结策略、分层学习率设置以及动态学习率调度。在参数冻结方面,冻结了前三个残差模块的27层卷积8.53 M参数(初始卷积层与Layer1-3),而模型的总参数数量为21.8 M,仅微调Layer4的6层卷积及后续分类层,这种参数的减少不仅降低了计算成本,还提高了模型的训练效率,在保留底层通用特征提取能力的同时减少约38%训练参数量。
如图8所示是本研究的ResNet34结构示意图,图中灰色部分(前三个残差模块)指在训练中参数被冻结的模块,绿色部分(最后一个残差模块及全连接层)指参与训练更新参数的部分。为适应植物病害分类任务的需求,本文对ResNet34原有的分类结构进行了适配调整,原始分类层针对ImageNet的1000类设计,在本实验中移除了原全连接层并新增输出维度为38的线性分类层。
Figure 8. A network structure diagram of ResNet34 based on transfer learning
图8. 基于迁移学习的ResNet34网络结构图
为了有效调控不同网络层次,训练过程采用分层学习率策略。特征提取层Layer4设置较小的初始学习率,以较多保留其在ImageNet大数据集上学到的底层通用特征;新建的全连接分类层则设置较高的学习率,使其能够在当前小数据集上学得更精细的特征,加快对当前任务类别分布的学习速度,提升模型判别能力。
同时使用基于StepLR的动态学习率调度机制来进一步提升模型收敛效率和训练稳定性。StepLR是一种每隔固定轮数按衰减因子降低学习率的动态学习率调度策略,其数学表达式如下所示:
(3)
其中lr表示当前学习率,initial_lr是初始学习率,γ为衰减因子,step_size是学习率下降间隔的轮数,epoch是当前训练轮数。
StepLR的核心是实现“先快后慢”的优化节奏,训练初期采用较大学习率快速收敛至最优权重附近,随着训练进行逐步减小学习率避免在最优解附近产生震荡现象,从而获得更精细的参数调整和更稳定的收敛结果。这种动态调整机制适用于迁移学习场景,能够在保持预训练特征稳定性的基础上实现对目标任务的适配和精确优化。
训练过程中每隔5个训练周期将当前学习率按0.1的比例进行衰减。在训练过程中学习率变化趋势如图9所示,可以观察到学习率按预设策略逐步衰减,实现了从快速收敛到精细调优的训练过程转换。
Figure 9. Learning rate decay curve
图9. 学习率衰减趋势变化图
网络内部使用ReLU激活函数,其非线性的特性使神经网络能够有效处理复杂图像数据,防止梯度消失并加快训练收敛速度,其数学表达式如下。
(4)
损失函数方面,选择在分类任务中表现良好的交叉熵损失函数(Cross Entropy Loss)用于衡量预测结果与真实标签之间的差异,通过该损失函数的最小化,模型能够不断调整参数以提高分类准确性,从而提升整体识别性能,其数学表达式如下。
(5)
其中,
为样本总数,
为类别总数,
表示第
个样本在类别
上的真实标签,
表示模型对第
个样本属于类别
的预测概率。
4. 实验结果
4.1. 实验环境与参数设置
本实验所用显卡信息、处理器信息等实验环境与参数配置如表2所示。
Table 2. Experimental environment configuration
表2. 实验环境配置
配置名称 |
配置型号 |
操作系统 |
Windows11 |
显卡 |
NVIDIA GeForce RTX 4060 Laptop GPU |
处理器 |
Intel(R)Core(TM)i9-14900HX |
CUDA版本 |
11.8 |
开发环境 |
Python3.9, torch2.2.0 |
本研究采用Adam优化器,训练共进行40个轮次,每个批次大小为64。根据4.3节所述的迁移学习策略,采用分层学习率设置:对特征提取层Layer4设置较小的初始学习率1 × 10−5,对新建的全连接分类层设置较高的学习率1 × 10−4。
具体超参数设置详见表3。
Table 3. Experimental hyperparameter configuration
表3. 实验超参数配置
参数名称 |
设置值 |
训练轮数 |
40 |
批次大小 |
64 |
优化器类型 |
Adam |
Layer4初始学习率 |
1 × 10−5 |
fc层初始学习率 |
1 × 10−4 |
学习率调度策略 |
StepLR |
学习率衰减周期 |
5 |
学习率衰减因子 |
0.1 |
4.2. 实验结果与分析
图10中(a)和(b)分别是模型训练的损失函数图和准确率变化图,其中蓝色的曲线表示训练集,橙色曲线表示验证集。通过训练过程曲线可以明显发现,模型在前期收敛速度较快,在第10轮后趋于稳定,验证集准确率达98%,训练集与验证集损失曲线基本表现一致,未出现明显过拟合现象。这一结果证明了本研究所采用的迁移学习策略和动态学习率调度机制的有效性。
Figure 10. Loss and accuracy curves over iterations
图10. 损失值与准确率随迭代次数变化图
该模型在植物病害测试集上实现98.70%总体准确率。从宏平均指标来看,Precision、Recall与F1-score分别为0.9871、0.9869与0.9869。如图11所示,绿色表示预测正确的样本,随机抽取的16张病害预测样例图中未出现误判。
Figure 11. Example of leaf prediction
图11. 叶片预测示例图
为进一步分析模型对各类别的识别效果,本文计算了38个类别的分类准确率,各类病害的识别效果如图12所示。大多数类别表现较好,尤其在如蓝莓健康类型、樱桃白粉病、南瓜白粉病等类别上表现趋近完美。
Figure 12. Recognition accuracy of 38 categories of plant diseases and pests
图12. 38类病害识别准确率
4.3. 消融实验与对比实验
为进一步验证各项改进策略对模型性能的具体贡献,本节设计并实施了多组消融实验,逐一剔除所提出方法中的关键组成部分,并在其他超参数设置保持一致的条件下进行对比分析,实验分组设置如下:
A1:使用ResNet34从初始进行训练,不加载预训练权重。
A2:在A1基础上引入迁移学习,加载ImageNet预训练权重,所有层都参与重新训练。
A3:在A2基础上冻结早期层,只训练layer4和fc层。
A4 (最终模型):在A3基础上加入动态学习率策略。
Table 4. Ablation experiment results
表4. 消融实验结果
实验编号 |
精确率 |
召回率 |
F1分数 |
平均每轮推理时间/S |
A1 |
0.934 |
0.927 |
0.927 |
361.39 |
A2 |
0.985 |
0.984 |
0.985 |
358.86 |
A3 |
0.985 |
0.983 |
0.983 |
216.37 |
A4 |
0.987 |
0.987 |
0.987 |
179.18 |
消融实验如表4所示,从各子实验结果来看,迁移学习对性能提升有比较关键的作用。完整模型在准确率、精确率、召回率和F1-score等多个指标上均表现最优,说明了各项策略在提升模型整体性能方面具有协同的增强效应。尤其是在时间效率方面,完整模型的训练效率相较于去除任一模块的版本都得到了明显提升,表现出本研究方法在植物病害图像识别任务中的有效性。
Table 5. Comparative experiment results
表5. 对比实验结果
|
学习方式 |
准确率 |
精确率 |
召回率 |
F1得分 |
ResNet34 |
迁移学习–微调 |
98.70% |
0.9871 |
0.9869 |
0.9869 |
CNN |
全新学习 |
93.27% |
0.9331 |
0.9326 |
0.9323 |
EfficientNet-B0 |
迁移学习 |
90.25% |
0.9045 |
0.9020 |
0.9014 |
表5展示了三种深度神经网络在相同数据集上的性能对比。ResNet34使用迁移学习方法获得98.70%的准确率和0.9869的F1得分,CNN采用从头训练方式取得93.27%的准确率,EfficientNet-B0在微调基础上达到90.25%的准确率。使用迁移学习的ResNet34在准确率和稳定性方面表现最优。
5. 基于Django的病害在线识别系统
本章在第四章研究基础上,设计并构建了一套能够识别38类常见农作物病害的在线系统。该系统基于深度学习算法,选用经迁移学习优化的ResNet34网络作为核心识别模型,加载前文训练后的最优权重,借助Django框架搭建前端用户可视化操作界面,该平台集图像识别、病害信息展示与用户交互功能为一体[9]。部署完成后,系统具备稳定快速的在线识别能力,实测在38类作物病害上准确率超过98%,单张图像处理时间保持在0.5秒以内。系统设计遵循简洁高效的原则,围绕图像上传、识别反馈、结果展示这三个核心流程,系统架构如图13所示。
Figure 13. System diagram
图13. 系统示意图
5.1. 功能模块
前端包含图像上传页面、识别结果页面与病害详情展示页面三个主要模块。图像上传页面是重要入口,用户可通过本地选择按钮上传作物病害图像。系统支持常见图片格式,还会对图像尺寸等进行预处理,确保输入与模型推理匹配。系统分析后给出病害识别结果,以及相应的病害简介、成因和防治建议。
系统操作流程简单,用户上传图像并点击“提交识别”按钮,系统就能调用模型完成识别任务,随后自动跳转到识别结果页面。
Figure 14. System interface demonstration
图14. 系统界面展示
系统图像上传界面采用直观的表单提交方式,借助HTML5的文件API实现,如图14所示。界面具备即时文件类型验证功能,仅允许上传JPEG、PNG、BMP等常见图像格式,防止因无效文件类型导致处理错误。界面还设置了文件大小限制和分辨率建议,引导用户提供适宜识别的高质量图像。如图15所示,上传界面清晰展示了操作指引和注意事项。
Figure 15. Image upload interface
图15. 图像上传界面
信息展示模块的农业知识数据主要来源于百度百科,通过整理后存为Excel表格,构建完整的知识检索框架。用户在前端页面上传图像并触发识别后,可在结果页查看对应诊断信息。病害名称部分同时显示学名和中文名,确保学术准确性;特征描述用简洁的语言概括典型症状,还阐释病理机制,增加信息专业深度;从产量影响、品质下降和传播风险等方面评估病害危害程度,形成清晰有序的建议体系。
用户在前端页面上传图像并触发识别后,能在结果页查看对应诊断信息。如图16所示。
Figure 16. Recognition results interface
图16. 识别结果界面
5.2. 系统测试与评估
系统测试是正式部署前的重要阶段,每个系统都必须经过严格测试来防止后期开发和运行过程中出现错误。
为检验本系统在实际应用中的识别效果与响应效率,在部署完成后进行系统测试,评估响应时间与预测准确率两项关键性能指标。所有测试均在Django服务正常运行状态下,通过终端脚本模拟用户请求完成,确保测试数据贴近实际使用场景。
研究随机选取10张不同植物病害图像,记录每张图像从提交到返回识别结果的时间。数据显示平均响应时间为0.0336秒,说明系统具有良好的实时性,能够满足快速识别需求。同样使用上述图像进行测试,系统在这10张图像上的预测准确率达到了100%,说明部署后的模型仍保持良好识别能力。表6汇总了这十张图像的测试结果,进一步证明了系统的可靠性。
Table 6. Image test results
表6. 图像测试结果
真实标签 |
预测标签 |
是否正确 |
时间/S |
Apple___Apple_scab |
Apple___Apple_scab |
True |
0.0430 |
Apple___Black_rot |
Apple___Black_rot |
True |
0.0342 |
Apple___Cedar_apple_rust |
Apple___Cedar_apple_rust |
True |
0.0323 |
Grape___Black_rot |
Grape___Black_rot |
True |
0.0326 |
Peach___Bacterial_spot |
Peach___Bacterial_spot |
True |
0.0313 |
Potato___Early_blight |
Potato___Early_blight |
True |
0.0327 |
Potato___Late_blight |
Potato___Late_blight |
True |
0.0323 |
Squash___Powdery_mildew Strawberry___Leaf_scorch |
Squash___Powdery_mildew |
True |
0.0328 |
Strawberry___Leaf_scorch |
True |
0.0324 |
Tomato___Bacterial_spot |
Tomato___Bacterial_spot |
True |
0.0319 |
测试结果反映出系统在图像识别速度和预测准确率方面都表现不错,能够提供稳定的技术支持。
6. 总结与展望
本研究针对农作物病害检测问题,提出基于迁移学习的ResNet34改进模型,结合图像增强、预训练权重加载、特征层冻结、全连接层优化与分层动态学习率调节等方法,有效提升了识别精度。最终精确率、召回率与F1值分别为0.9871、0.9869与0.9869,并通过消融实验及与CNN等深度神经网络的对比证明了改进措施的有效性。设计实现了基于Django框架的病害在线识别系统,结合优化后的ResNet34算法完成从图像上传、模型推理到生成识别结果与防治建议的完整应用流程,系统测试证明该系统具有可行性。通过上述步骤的开展,使用改进后的算法实现了精确高效的病害图像识别,并完成系统端的部署与应用,验证了改进方法的有效性。
本研究仍存在一些不足。当叶片病害处于早期阶段且病斑特征较弱时,模型易将其误判为健康样本。此外,研究所用图像主要来自实验室环境,未充分涵盖田间复杂的光照和遮挡等自然条件,限制了模型在实际应用中的适应性。未来的研究可从以下几个方面进一步优化:结合LSTM或Transformer等时序建模技术实现动态视频识别;扩展数据集种类和样本数量,实现病害分期诊断;开发移动端APP或微信小程序,提升田间实际应用的便捷性。