本文涉及的全部源码、训练好的模型权重、数据集、配套文档已整理打包,文末附下载链接,方便读者一键复现与二次开发。

开发目的
在全球智慧农业加速推进的行业大势下,精准农业与作物健康管理已成为保障粮食安全与农业可持续发展的核心议题。随着物联网、计算机视觉与深度学习技术的深度融合,农业生产正从传统经验驱动向数据智能驱动转型。玉米作为全球最重要的粮食作物之一,其产量与品质直接关系到国家粮食安全与农民收入。然而,玉米生长过程中极易遭受多种病害与虫害的侵袭,包括枯萎病、玉米灰斑病、玉米锈叶病、秋粘虫、玉米条纹病、黄茎螟成虫及黄茎螟幼虫等七类主要病虫害。据联合国粮农组织统计,全球每年因玉米病害导致的产量损失高达10%至30%,仅在中国,玉米病虫害年均造成的经济损失就超过百亿元。例如,在黄淮海玉米主产区,灰斑病爆发时可导致减产20%以上,而秋粘虫的入侵更能在短短数天内啃食整片玉米叶片,造成绝收风险。这些病害不仅降低玉米籽粒的饱满度与淀粉含量,还会诱发次生真菌毒素污染,进一步威胁人畜健康。传统的人工识别方式主要依赖农业技术人员田间巡查或农户经验判断,其痛点十分突出:一是效率极低,面对大面积种植的玉米田,人工逐株检查耗时费力,往往错过最佳防治窗口期;二是主观误差大,不同人员对早期症状的辨识能力参差不齐,容易混淆相似病斑(如灰斑病与锈叶病初期表现),导致误判误治;三是成本高昂,需投入大量人力与专家资源,且难以实现全天候持续监测;四是响应滞后,从发现异常到确诊再到施药,传统流程往往需要数天,而病虫害扩散速度极快,一旦延误便难以控制。针对上述问题,本系统基于YOLO11目标检测算法与Flask轻量级Web框架,构建了一套玉米病害检测数据集检测系统。该系统以3407张涵盖七类病虫害的标注图像为训练基础,能够实现自动化、实时、高精度的田间病害识别,支持用户通过浏览器上传图片或视频流即可快速获得检测结果,有效替代人工巡检,将识别响应时间缩短至毫秒级,显著提升防治决策的科学性与及时性,为智慧农业的落地应用提供了切实可行的技术支撑。
YOLO11 介绍
YOLO11是Ultralytics团队最新推出的高效目标检测网络,在保持实时推理速度的同时,进一步提升了检测精度与模型轻量化水平。其骨干网络(Backbone)经历了从C3模块到C2f模块的关键演进。C3模块最初在YOLOv5中被广泛采用,通过三个卷积层与一个跨阶段局部连接(CSP)结构实现特征提取,但梯度流动路径相对单一。C2f模块则借鉴了YOLOv7中提出的ELAN(Efficient Layer Aggregation Network)思想,将输入特征图分为多个分支,每个分支经过不同数量的卷积层后,再通过拼接操作进行多层级聚合。这种设计使得梯度在反向传播时能够沿着多条路径流动,形成更丰富的梯度流,从而有效缓解深层网络中的梯度消失问题。同时,C2f模块通过减少冗余卷积层并优化通道分配,在参数量更少的情况下,反而获得了更高的特征表达能力,在多个公开数据集上均表现出优于C3模块的精度。这一改进为后续的特征融合与检测提供了更高质量的基础特征。
在特征融合层(Neck)部分,YOLO11延续了PAN-FPN(Path Aggregation Feature Pyramid Network)结构,采用自顶向下与自底向上的双路径融合策略。自顶向下路径将高层语义信息通过上采样传递到低层,增强小目标的语义理解;自底向上路径则将低层细节信息通过下采样传递到高层,弥补高层特征的空间分辨率不足。这种双向融合使得不同尺度的特征图能够充分交换信息,对于玉米病害检测数据集而言尤为重要------该数据集包含枯萎病、玉米灰斑病、玉米锈叶病、秋粘虫、玉米条纹病、黄茎螟成虫及幼虫共七类目标,其中秋粘虫、黄茎螟幼虫等目标尺寸较小,而玉米锈叶病斑块可能呈现不规则的大面积分布。PAN-FPN的多尺度特征融合能力能够同时兼顾小目标的定位精度与大目标的整体轮廓,显著提升模型对复杂田间场景的适应能力。
检测头部分采用了解耦检测头(Decoupled Head)设计,将分类与回归任务分离到两个独立的子网络中。传统耦合检测头共享同一组卷积层同时预测类别和边界框,容易导致任务冲突,即分类任务更关注特征语义,而回归任务更关注空间位置。解耦检测头通过为每个任务分配独立的卷积分支,分别优化各自的损失函数,从而避免了特征干扰,提升了分类准确率与边界框回归精度。这一设计在保持计算量基本不变的前提下,使模型在玉米病害检测中能够更准确地识别不同病害的细微差异,并精确定位病斑或虫体的边缘。
相较于YOLOv5和YOLOv7,YOLO11在三个关键方面实现了显著改进。首先,骨干网络从C3升级为C2f,利用ELAN思想增强了梯度流动,同时通过更高效的卷积组合降低了参数量,使得模型在同等计算资源下获得更高的特征质量。其次,Neck部分引入了更精细的注意力机制(如可选的CBAM或SimAM),进一步强化了关键特征的响应,抑制背景噪声,这在玉米叶片纹理复杂、光照不均的田间图像中尤为重要。最后,检测头从耦合结构改为解耦结构,并引入了任务对齐学习(Task-Aligned Learning)策略,在训练过程中动态调整分类与回归的权重,使得模型更专注于难以区分的病害类别(如灰斑病与锈叶病在早期症状上的相似性)。这些改进共同推动了YOLO11在精度与速度上的平衡。
在玉米病害检测数据集的实际应用场景中,YOLO11展现出极强的适用性。其轻量化骨干网络使得模型能够在边缘设备(如无人机、田间摄像头)上实时运行,满足农业监测的时效性需求。多尺度特征融合与解耦检测头的组合,有效应对了病害斑块大小不一、虫体姿态多变以及叶片重叠遮挡等挑战。此外,YOLO11支持灵活的模型缩放(如n/s/m/l/x版本),可根据算力资源选择合适规模,为不同规模的玉米种植区提供定制化病害预警方案,助力精准农业的落地实施。
系统设计
数据集
本项目使用的数据集为真实场景下采集的玉米病害检测数据集图像,专用于玉米病害检测数据集检测任务。数据图像来自实际现场拍摄,覆盖了多种典型场景,确保了数据的真实性与多样性。
数据集共包含 3407 张 已标注图像,具体划分为:
- 训练集:2812 张图像
- 验证集:595 张图像
数据集共包含 7 个检测类别:'Corn Blight', 'Corn Gray leaf spot', 'Corn rust leaf', 'fall armyworm', 'maize streak disease', 'yellow stem borer', 'yellow stem borer larva'
部分图像及标注如下图所示:

YOLO 在进行模型训练时,会读取 data.yaml 文件中的训练集、验证集路径以及检测类别信息。本文数据集的 data.yaml 内容如下:
yaml
train: E:/datasets/det_corn_disease/train/images
val: E:/datasets/det_corn_disease/val/images
nc: 7
names: 'Corn Blight', 'Corn Gray leaf spot', 'Corn rust leaf', 'fall armyworm', 'maize streak disease', 'yellow stem borer', 'yellow stem borer larva'
#枯萎病、玉米灰斑病、玉米锈叶病、秋粘虫、玉米条纹病、黄茎螟成虫、黄茎螟幼虫
模型训练
本文基于YOLO11进行模型训练。首先安装 Ultralytics:
bash
pip install ultralytics
训练脚本基于 YOLO 类封装,核心代码如下:
python
from ultralytics import YOLO
if __name__=='__main__':
model=YOLO('last.pt')
model.train(data='./data.yaml',imgsz=(640,640),workers=1,batch=16,epochs=120,resume=True)
模型常用训练超参数说明:
- epochs :训练轮数,本文设置为
120 - batch :批次大小,本文设置为
16 - imgsz :输入图像尺寸,本文设置为
[640, 640] - optimizer :优化器,本文使用
auto
训练后评估
模型训练完成后,必须对其性能进行科学评估,以判断其在实际应用中的可靠性。常用的评估指标包括 精确率-召回率曲线(PR曲线) 和 平均精度(mAP)。
本文训练过程的 loss/metrics 曲线如下图所示:

PR 曲线 描述了在不同置信度阈值下,模型的精确率(Precision)与召回率(Recall)之间的关系。
- 精确率(Precision):预测为正类的样本中,实际为正类的比例
Precision = \\frac{TP}{TP + FP}
- 召回率(Recall):实际为正类的样本中,被正确预测为正类的比例
Recall = \\frac{TP}{TP + FN}
- mAP(mean Average Precision):所有类别 Average Precision 的平均值,是衡量模型综合性能的核心指标。
- mAP@0.5:IoU 阈值为 0.5 时的 mAP,反映较宽松匹配下的检测精度。
- mAP@0.5:0.95:IoU 阈值从 0.5 到 0.95 步进 0.05 的平均 mAP,更严格,反映高精度匹配下的整体表现。
本文模型目标检测的 mAP@0.5 = 0.62043 ,mAP@0.5:0.95 = 0.36515 ,Precision = 0.67309 ,Recall = 0.61941。
PR 曲线如下图所示:

模型推理
使用训练好的 best.pt 进行推理,支持图片、视频和摄像头三种检测模式。以下是三种模式的核心代码:
(1)图片推理
python
from ultralytics import YOLO
加载训练好的模型
model = YOLO('weights/best.pt')
对图片进行推理
results = model('test.jpg')
可视化检测结果并保存
res_plotted = results0.plot()
import cv2
cv2.imwrite('result.jpg', res_plotted)
(2)视频推理
python
import cv2
from ultralytics import YOLO
model = YOLO('weights/best.pt')
cap = cv2.VideoCapture('test.mp4')
while cap.isOpened():
ret, frame = cap.read()
if not ret:
break
results = model(frame)
annotated = results0.plot()
cv2.imshow('YOLO Detection', annotated)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
cap.release()
cv2.destroyAllWindows()
(3)摄像头实时检测
python
import cv2
from ultralytics import YOLO
model = YOLO('weights/best.pt')
cap = cv2.VideoCapture(0) # 0 表示默认摄像头
while cap.isOpened():
ret, frame = cap.read()
if not ret:
break
results = model(frame)
annotated = results0.plot()
cv2.imshow('Live Detection', annotated)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
cap.release()
cv2.destroyAllWindows()
系统 UI 设计
本系统的用户界面设计充分结合了后端Flask框架与前端Layui框架的各自优势,构建出一套高效、易用且视觉统一的玉米病害检测管理平台。Flask作为Python生态中广受欢迎的轻量级Web框架,其核心设计理念是简洁与灵活,开发者能够以极少的代码快速搭建RESTful API服务,同时依托Python在数据科学和深度学习领域的丰富库支持(如PyTorch、OpenCV等),使得模型加载、图像预处理与推理逻辑能够无缝集成到后端服务中。Flask的模块化扩展机制(如Flask-SQLAlchemy、Flask-Login)进一步降低了用户管理、数据库操作等功能的实现门槛,让系统开发周期大幅缩短,非常适合本类需要快速迭代的科研或农业应用场景。在前端方面,Layui作为一款经典模块化前端框架,提供了开箱即用的UI组件库,其内置的表格、表单、弹层、导航等模块均经过精心封装,开发者无需编写大量JavaScript即可构建出风格统一、交互流畅的后台管理界面。特别是Layui的表格组件支持分页、排序、搜索、工具栏自定义等丰富功能,完美适配本系统中检测记录展示、用户列表管理、模型配置参数调整等数据密集型页面。Layui的模块化加载机制也使得页面按需加载,减少了首屏渲染时间,同时其响应式栅格系统能够自适应不同屏幕尺寸,为后续移动端或平板访问预留了扩展空间。
在界面设计上,系统整体采用左右分栏布局,左侧为固定导航菜单,涵盖图片检测、批量检测、视频检测、摄像头实时检测、检测结果管理、用户管理及模型配置等核心功能入口,右侧主内容区则根据所选功能动态切换。每个检测页面均采用卡片式布局,将上传区域、参数调节面板与结果显示区域清晰分隔,用户可直观地调整检测置信度阈值、交并比阈值等关键参数,并实时查看检测进度与结果缩略图。对于实时检测场景(摄像头与视频流),系统通过WebSocket或轮询机制将后端推理结果以JSON格式推送至前端,前端利用Layui的进度条、图标与动态表格组件即时更新检测帧数、病害类别、置信度及位置坐标,同时支持一键保存检测快照至数据库。响应式布局确保了在1920×1080乃至1366×768分辨率下均能获得良好的浏览体验,而Layui的暗色主题与自定义配色方案则进一步提升了长时间使用的视觉舒适度。
各功能模块之间的协作遵循前后端分离的设计模式:前端通过AJAX异步请求调用后端Flask提供的RESTful接口,例如图片检测时,前端将用户选择的图像文件以FormData形式POST至/api/detect/image,后端接收后调用预训练的玉米病害检测模型(如YOLOv5)进行推理,推理结果(包括病害类别、置信度、边界框坐标)以JSON格式返回,前端再通过Layui的模板引擎或直接操作DOM将结果渲染至检测结果卡片与统计图表中。批量检测与视频检测类似,后端采用队列或流式处理,前端通过轮询或WebSocket获取进度。用户管理、模型配置等操作则对应CRUD接口,前端表单提交后后端验证并更新SQLite数据库,返回操作状态供Layui的弹层或提示组件展示。这种清晰的接口分工使得系统易于维护和扩展,也便于后续将模型推理服务独立部署为微服务。
系统主界面如下图所示:

系统功能
基于训练好的目标检测模型,本系统具备以下核心功能:
1. 多模式检测支持
-
图片上传检测(单张/批量)
-
视频文件上传检测
-
本地摄像头实时检测
2. 可调节推理参数
-
用户可动态调整置信度阈值(conf)
-
用户可动态调整 IoU 阈值
3. 可视化检测结果
-
在图像/视频上绘制边界框和类别标签
-
实时显示目标位置、目标总数、置信度、用时等信息
4. 结构化结果输出
-
表格展示每个检测目标的序号、类别、置信度和坐标
-
统计每类目标的检测总数
-
支持将检测结果保存为 CSV 文件
5. 跨设备兼容
-
自动判断是否支持 GPU,优先使用 GPU 加速
-
支持主流浏览器访问(Chrome / Edge / Firefox)
总结
本系统围绕玉米病害检测的实际需求,完成了从数据准备到Web部署的全流程开发。首先,针对玉米病害检测数据集中的七类目标(玉米大斑病、玉米灰斑病、玉米锈病、草地贪夜蛾、玉米条纹病、水稻二化螟及二化螟幼虫),对3407张图像进行了人工标注与格式统一,并转换为YOLO所需的标注格式。随后,基于YOLO11模型进行训练与调优,通过数据增强、学习率调度等策略提升模型泛化能力,最终在验证集上取得了mAP@0.5为0.62043的检测精度。在性能评估阶段,系统不仅关注平均精度,还通过混淆矩阵、PR曲线等工具分析了各类别的识别差异。最后,利用Flask框架搭建了轻量级Web可视化系统,实现了图像上传、实时推理、结果展示与置信度筛选等功能,使得非专业用户也能便捷地使用该检测工具。
该系统在玉米病害检测数据集识别场景中具有显著的应用价值。尽管mAP@0.5为0.62,但考虑到病害目标尺度小、背景复杂、类别间相似度高等挑战,该精度已具备较强的实用参考意义。YOLO11模型保证了实时推理能力,在CPU环境下单张图像处理时间可控制在毫秒级,满足田间快速诊断的需求。Web界面设计简洁直观,用户无需配置深度学习环境即可上传图片并获取检测结果,大幅降低了使用门槛。系统可辅助农业技术人员或种植户快速识别玉米常见病害与虫害,为精准施药、早期防控提供决策支持,从而减少产量损失并提升管理效率。
为方便读者复现与二次开发,本项目的完整源码、标注后的数据集、训练好的YOLO11模型权重以及详细的使用文档均已整理并开放获取。读者只需按照文档指引配置Python环境、安装依赖并运行Flask应用,即可在本地或服务器上部署完整的检测系统。无论是学术研究中的算法对比,还是实际农业场景中的快速落地,本资源均能提供可靠的基础。欢迎访问项目主页下载相关文件,并参考文档中的训练与部署说明,快速复现本文成果。
随项目附带的源码文件结构说明:

随项目附带的设计说明书(docx)缩略图:
