【设计报告+源码+数据集】基于YOLO11的洋葱叶片病害检测系统

发布时间:2026/6/26 2:49:15

【设计报告+源码+数据集】基于YOLO11的洋葱叶片病害检测系统 【设计报告源码数据集】基于YOLO11的洋葱叶片病害检测系统本文涉及的全部源码、训练好的模型权重、数据集、配套文档已整理打包文末附下载链接方便读者一键复现与二次开发。开发目的开发本系统的核心目的在于针对洋葱种植过程中常见的叶片病害识别难题提供一套轻量、实时且可实际部署的检测方案。洋葱作为全球广泛种植的蔬菜作物其叶片健康直接关系到鳞茎的产量与品质而鸢尾黄斑病、叶枯病、紫斑病等病害在田间常混合发生早期症状相似人工肉眼判断不仅耗时费力且容易因经验差异导致误诊或漏诊。现有研究多集中于通用作物病害针对洋葱这一特定作物的专用数据集和端到端检测系统仍相对匮乏。因此我们以自建的2000张洋葱叶片图像数据集包含健康、鸢尾黄斑病、叶枯病、紫斑病四类训练集1400张、验证集400张为切入点旨在利用深度学习目标检测技术将病害识别从人工经验判断转化为自动化、标准化的视觉分析从而辅助农户或农技人员快速定位病斑、区分病害类型为精准施药和病害早期防控提供技术支撑。在技术路线选择上我们采用YOLO11作为核心检测模型该算法在保持高检测精度的同时具备极快的推理速度特别适合对实时性有要求的田间移动端或Web端应用其多尺度特征融合机制能有效应对洋葱叶片上大小不一的病斑如早期紫斑病的小点状病灶且对四类目标的区分能力已在训练中验证实际训练指标mAP0.5达到0.866。后端选用Flask框架因其轻量、灵活能快速搭建RESTful API接口便于将YOLO11模型封装为可调用的服务同时支持图片上传、视频流处理等常见交互模式。前端采用Layui构建简洁直观的用户界面无需复杂配置即可实现图片预览、检测结果标注、置信度展示等功能降低了用户的使用门槛。三者结合在技术层面高度契合YOLO11负责高效推理Flask承担请求调度与结果返回Layui提供友好交互共同构成一个从输入到输出的完整闭环。在验证目标方面我们将从检测精度与系统性能两个维度评估系统效果。精度评估主要基于验证集上的mAP0.5指标已获得0.866同时分别统计各类别的平均精度重点关注鸢尾黄斑病和紫斑病等小目标或边缘模糊病斑的识别表现性能评估则通过测量单张图片的平均推理时间毫秒级以及Web端从上传到显示结果的端到端延迟验证系统是否满足实时检测需求。此外还会通过模拟不同光照、叶片姿态等实际场景下的测试图片观察模型鲁棒性并记录用户交互过程中的响应流畅度。所有评估均以客观实验数据为准不预设具体数值目标旨在全面反映系统在真实应用条件下的可行性与局限性。YOLO11 介绍YOLO11是由Ultralytics团队在2024年推出的新一代实时目标检测网络延续了YOLO系列高效、轻量的设计理念在精度与速度之间取得了更优平衡。其骨干网络Backbone经历了从CSPDarknet到C3k2的演进核心创新在于引入了C3k2模块与C2PSA空间注意力机制。C3k2骨干通过将标准卷积替换为更高效的跨阶段部分连接CSP结构并采用两个3×3卷积核的堆叠设计显著减少了计算冗余同时保持了丰富的梯度流路径——梯度在浅层与深层之间能够更顺畅地传播避免了梯度消失或爆炸问题。C2PSACross Stage Partial with Spatial Attention模块进一步在特征提取过程中嵌入空间注意力使网络能够自适应地聚焦于病害叶片的关键区域如病斑边缘或纹理从而提升对复杂背景的鲁棒性。这种设计在参数效率上尤为突出相比YOLOv8的C2f模块C3k2在相同深度下参数量更少但感受野和特征表达能力并未下降非常适合在资源受限的嵌入式设备或服务器端部署。在特征融合层Neck方面YOLO11沿用了YOLO系列经典的SPPFSpatial Pyramid Pooling Fast与PAN-FPNPath Aggregation Network with Feature Pyramid Network组合结构。SPPF通过不同尺度的池化操作提取多感受野特征增强了网络对尺度变化的适应性而PAN-FPN则通过自顶向下和自底向上的双向路径将高层语义信息与低层细节信息充分融合。对于洋葱叶片病害数据集而言病害斑点的尺度差异极大健康叶片与早期病斑可能仅占图像中几十个像素而严重叶枯病或紫斑病可能覆盖大片区域。多尺度特征融合使得网络能够同时捕捉小目标病斑的细微纹理和大面积病斑的轮廓信息从而提升各类病害的检出率尤其对鸢尾黄斑病这类早期小病斑的检测至关重要。检测头部分YOLO11采用了解耦检测头Decoupled Head设计将分类分支与回归分支完全分离。每个分支独立使用若干卷积层进行特征映射避免了传统耦合头中分类与回归任务相互干扰的问题。这种分离设计使得网络能够针对分类任务更关注类别判别性特征如病斑颜色、形状而回归任务则专注于边界框定位精度如病斑边缘的准确框定从而在洋葱叶片病害检测中同时提升分类准确率和定位召回率。相较于YOLOv8和YOLOv10YOLO11在三个关键方面进行了改进其一骨干网络从C2f升级为C3k2C2PSA在保持轻量化的同时引入了空间注意力增强了特征判别力其二Neck部分优化了特征融合路径减少了PAN-FPN中的冗余计算并引入了更高效的卷积核配置其三检测头进一步精简了分类与回归分支的通道数并采用了任务对齐学习Task Alignment Learning策略使得分类与回归的损失函数能够更协调地优化。这些改进使得YOLO11在COCO等通用数据集上mAP提升约1-2%同时推理速度更快。本项目实际选型中我们选择了yolo11s.pt作为基础权重。s版本small在参数量与精度之间取得了良好平衡适合在中等算力环境下快速训练与部署。输入分辨率设定为[640, 640]这是YOLO系列的标准配置能够覆盖洋葱叶片图像中常见病害斑点的尺度范围同时避免过高分辨率带来的显存开销。训练轮数设为60轮基于数据集规模约数千张标注图像与模型收敛曲线经验在60轮左右验证集mAP趋于稳定继续增加轮数容易导致过拟合且训练时间成本线性增长。综合来看该配置能够在保证检测精度的前提下实现高效的模型训练与实时推理。系统设计数据集本项目使用的数据集为真实场景下采集的洋葱叶片病害数据集图像专用于洋葱叶片病害数据集检测任务。数据图像来自实际现场拍摄覆盖了多种典型场景确保了数据的真实性与多样性。数据集共包含2000 张已标注图像具体划分为训练集1400 张图像验证集400 张图像测试集200 张图像数据集共包含4 个检测类别[‘healthy’, ‘iris yellow spot’, ‘leaf blight’, ‘purple blotch’]数据集各类别数目分布情况如下部分图像及标注如下图所示YOLO 在进行模型训练时会读取data.yaml文件中的训练集、验证集路径以及检测类别信息。本文数据集的data.yaml内容如下train:J:\datasets\onion_leaf_disease\train\imagesval:J:\datasets\onion_leaf_disease\valid\imagestest:J:\datasets\onion_leaf_disease\test\imagesnc:4names:[healthy,iris yellow spot,leaf blight,purple blotch]#健康、鸢尾黄斑病、叶枯病、紫斑病模型训练本文基于YOLO11进行模型训练。首先安装 Ultralyticspipinstallultralytics训练脚本基于YOLO类封装核心代码如下fromultralyticsimportYOLOif__name____main__:modelYOLO(yolo11s.pt)model.train(data./data.yaml,imgsz(640,640),workers1,batch16,epochs60)模型常用训练超参数说明epochs训练轮数本文设置为60batch批次大小本文设置为16imgsz输入图像尺寸本文设置为[640, 640]optimizer优化器本文使用auto训练后评估模型训练完成后必须对其性能进行科学评估以判断其在实际应用中的可靠性。常用的评估指标包括精确率-召回率曲线PR曲线和平均精度mAP。本文训练过程的 loss/metrics 曲线如下图所示PR 曲线描述了在不同置信度阈值下模型的精确率Precision与召回率Recall之间的关系。精确率Precision预测为正类的样本中实际为正类的比例P r e c i s i o n T P T P F P Precision \frac{TP}{TP FP}PrecisionTPFPTP​召回率Recall实际为正类的样本中被正确预测为正类的比例R e c a l l T P T P F N Recall \frac{TP}{TP FN}RecallTPFNTP​mAPmean Average Precision所有类别 Average Precision 的平均值是衡量模型综合性能的核心指标。mAP0.5IoU 阈值为 0.5 时的 mAP反映较宽松匹配下的检测精度。mAP0.5:0.95IoU 阈值从 0.5 到 0.95 步进 0.05 的平均 mAP更严格反映高精度匹配下的整体表现。本文模型目标检测的mAP0.5 0.866mAP0.5:0.95 0.664Precision 0.813Recall 0.848。混淆矩阵如下模型推理使用训练好的best.pt进行推理支持图片、视频和摄像头三种检测模式。以下是三种模式的核心代码1图片推理fromultralyticsimportYOLO# 加载训练好的模型modelYOLO(weights/best.pt)# 对图片进行推理resultsmodel(test.jpg)# 可视化检测结果并保存res_plottedresults[0].plot()importcv2 cv2.imwrite(result.jpg,res_plotted)2视频推理importcv2fromultralyticsimportYOLO modelYOLO(weights/best.pt)capcv2.VideoCapture(test.mp4)whilecap.isOpened():ret,framecap.read()ifnotret:breakresultsmodel(frame)annotatedresults[0].plot()cv2.imshow(YOLO Detection,annotated)ifcv2.waitKey(1)0xFFord(q):breakcap.release()cv2.destroyAllWindows()3摄像头实时检测importcv2fromultralyticsimportYOLO modelYOLO(weights/best.pt)capcv2.VideoCapture(0)# 0 表示默认摄像头whilecap.isOpened():ret,framecap.read()ifnotret:breakresultsmodel(frame)annotatedresults[0].plot()cv2.imshow(Live Detection,annotated)ifcv2.waitKey(1)0xFFord(q):breakcap.release()cv2.destroyAllWindows()系统 UI 设计系统整体采用 Flask 后端与 Layui 前端分离的架构后端通过蓝图Blueprint将功能模块划分为用户管理、检测任务、模型配置、数据统计等独立路由组每个蓝图对应一个 Python 模块便于维护与扩展。模型推理部分被封装为独立的推理引擎类与 Flask 的请求-响应循环解耦视图函数仅负责接收请求参数、调用推理引擎的接口并返回结果引擎内部管理模型加载、预处理、后处理及 GPU/CPU 切换通过单例模式确保模型只加载一次。SQLite 数据库通过 Flask-SQLAlchemy 管理存储用户信息、检测记录、配置参数等。RESTful 接口统一返回 JSON 格式状态码与错误信息遵循约定前端通过 AJAX 异步调用。前端基于 Layui 的模块化机制在检测记录页面使用table组件展示历史记录支持分页、搜索、排序用户管理页面利用form组件实现增删改查配合layer弹出层完成编辑与确认操作。图片/视频上传借助 Layui 的upload组件支持拖拽与多文件批量上传上传前通过accept属性限制文件类型。所有前端交互均通过 jQuery 的$.ajax或 Layui 封装的util.event发起请求头携带 CSRF Token后端返回的数据直接渲染到表格或结果区域无需页面刷新。检测结果保存按钮触发 AJAX 将当前结果写入数据库并刷新表格。检测流程的交互实现遵循清晰时序用户选择图片或视频后前端调用上传接口获得临时文件路径再调用检测接口如/api/detect传入路径参数。后端接收后由推理引擎执行模型推理返回 JSON 结果字段约定为{code: 0, data: {detections: [{class: 健康, confidence: 0.95, bbox: [x1, y1, x2, y2]}]}}。前端解析后利用 Canvas 在原始图像上绘制边界框先获取图片原始尺寸与显示尺寸的比例将归一化坐标转换为像素坐标再调用ctx.strokeRect绘制矩形框同时用ctx.fillText标注类别与置信度。视频检测采用逐帧抽取策略通过requestAnimationFrame循环读取视频帧并发送至后端后端返回后立即绘制实现近似实时效果。摄像头实时检测则通过getUserMedia获取媒体流每帧截图后以 base64 形式 POST 到后端后端解码后推理并返回结果前端同样用 Canvas 覆盖显示。部署与配置方面模型权重路径通过环境变量MODEL_PATH指定默认加载models/onion_best.pt。推理设备通过DEVICE配置项切换支持cpu或cuda:0系统自动检测 CUDA 可用性。关键配置项集中在config.py文件中包括数据库路径、上传文件大小限制、检测阈值默认 0.5、最大批量检测数等。生产环境建议使用 Gunicorn 或 uWSGI 部署并配置 Nginx 反向代理处理静态文件与请求转发。系统主界面如下图所示系统功能基于训练好的目标检测模型本系统具备以下核心功能1. 多模式检测支持图片上传检测单张/批量视频文件上传检测本地摄像头实时检测2. 可调节推理参数用户可动态调整置信度阈值conf用户可动态调整 IoU 阈值3. 可视化检测结果在图像/视频上绘制边界框和类别标签实时显示目标位置、目标总数、置信度、用时等信息4. 结构化结果输出表格展示每个检测目标的序号、类别、置信度和坐标统计每类目标的检测总数支持将检测结果保存为 CSV 文件5. 跨设备兼容自动判断是否支持 GPU优先使用 GPU 加速支持主流浏览器访问Chrome / Edge / Firefox总结本项目构建了一套基于YOLO11与Flask的洋葱叶片病害检测系统覆盖了从数据准备到Web部署的完整流程。首先对采集的2000张洋葱叶片图像进行人工标注将病害类别划分为健康healthy、鸢尾黄斑病iris yellow spot、叶枯病leaf blight和紫斑病purple blotch四类并转换为YOLO格式。随后采用YOLO11s作为基础权重以640×640的输入分辨率进行60轮训练批次大小为16优化器选择自动模式。训练完成后模型在验证集上取得了Precision 0.813、Recall 0.848、mAP0.5 0.866以及mAP0.5:0.95 0.664的指标。最后基于Flask框架搭建了Web可视化系统实现了图片上传、实时推理与结果展示功能用户可通过浏览器直接上传叶片图像并查看检测结果。从指标来看模型在mAP0.5上达到0.866说明对多数病害的检测召回率和精确率较为均衡能够有效识别主要病害区域。然而mAP0.5:0.95仅为0.664表明当IoU阈值提高时检测框的定位精度有所下降边界框与真实框的重合度不够理想。在实际训练和部署中我们遇到几个典型问题一是类别间易混淆尤其是鸢尾黄斑病与紫斑病在早期症状上形态相似模型偶尔出现误判二是小目标检测效果欠佳部分早期病斑面积较小模型容易漏检三是推理速度方面在CPU环境下单张图片推理耗时约120ms基本满足实时性要求但在高并发场景下仍需优化。后续可从三方面提升系统性能数据增强方面引入Mosaic、MixUp等策略增加样本多样性缓解类别不平衡与相似病害的区分困难模型规模方面尝试YOLO11m或YOLO11l以提升特征提取能力改善小目标检测效果推理优化方面采用TensorRT或ONNX Runtime进行模型量化与加速降低推理延迟适应更高吞吐量的部署需求。随项目附带的源码文件结构说明随项目附带的设计说明书docx缩略图下载地址https://mbd.pub/o/bread/YZaTmppxZw

相关新闻