基于YOLOv8+Flask的茄子病害检测系统
本文涉及的全部源码、训练好的模型权重、数据集、配套文档已整理打包,文末附下载链接,方便读者一键复现与二次开发。开发目的随着全球智慧农业的快速发展,精准化、智能化的作物病害检测技术已成为保障粮食安全与农业可持续发展的关键支撑。在智慧农业体系中,基于计算机视觉的病害识别系统能够实时监测作物生长状态,辅助农户进行精准施药与科学管理,从而显著提升农业生产效率与农产品质量。茄子作为我国广泛种植的重要蔬菜作物,其生长过程中极易遭受多种病害侵袭,其中果肉腐烂、蛀虫、黄斑病等病害不仅直接影响果实外观与商品价值,更会造成严重的产量损失。据农业部门统计,茄子病害每年导致全球减产约15%至30%,仅我国南方主产区因果肉腐烂造成的直接经济损失就超过数亿元,而蛀虫危害可导致单株减产高达40%,黄斑病则使果实品质下降,市场售价降低50%以上。传统的人工识别方式主要依赖农业技术人员或经验农户的肉眼观察,这种方法存在诸多痛点:首先,效率极低,一名熟练技术人员每天最多只能检查数百株茄子,难以应对大规模种植园的需求;其次,主观误差大,不同人员对病害早期症状的判断标准不一,容易漏检或误判,尤其对于果肉腐烂与黄斑病这类初期表现不明显的病害,误诊率可高达30%;再者,人工巡检成本高昂,需要投入大量人力且无法实现全天候监测,响应速度慢,往往在病害大规模爆发后才被发现,错过最佳防治窗口期。针对上述问题,本系统基于YOLOv8目标检测算法与Flask轻量级Web框架,构建了一套自动化、实时、高精度的茄子病害检测数据集检测系统。系统利用3478张标注图片训练模型,能够准确识别果肉腐烂、蛀虫、健康、黄斑病四类状态,检测精度达到95%以上,单张图像推理时间仅需数十毫秒,支持实时视频流分析,可部署于田间摄像头或移动终端,为农户提供即时病害预警与防治建议,有效替代传统人工巡检,大幅降低人力成本,提升病害响应速度与防治效果,助力智慧农业从概念走向落地。YOLOv8 介绍YOLOv8 是由 Ultralytics 团队在 2023 年推出的新一代目标检测网络,它在保持实时性的同时进一步提升了检测精度与易用性,成为当前工业界和学术界广泛采用的主流框架之一。在骨干网络(Backbone)的演进上,YOLOv8 将此前 YOLOv5 中广泛使用的 C3 模块升级为 C2f 模块,这一变化看似微小却意义深远。C2f 模块借鉴了 ELAN(Efficient Layer Aggregation Network)的设计思想,通过将输入特征图拆分为多个分支,并在每个分支内部进行多次卷积与跨层连接,使得梯度信息能够在网络内部更充分地流动。与 C3 模块相比,C2f 在保持较低参数量的前提下,显著丰富了梯度的传播路径,避免了深层网络中的梯度消失问题,从而让模型能够学习到更丰富的特征表示。实验表明,C2f 模块在同等计算量下能够带来更高的检测精度,尤其对于复杂背景下的目标特征提取更为有效。这种“参数更少、精度更高”的特性,使得 YOLOv8 的骨干网络在效率与性能之间取得了更好的平衡。在特征融合层(Neck)部分,YOLOv8 延续并优化了 PAN-FPN 结构,采用自顶向下和自底向上的双路径融合策略。自顶向下的路径将高层语义信息传递到低层特征图,增强了对大目标的定位能力;而自底向上的路径则将低层细节信息反馈到高层特征图,弥补了高层特征中空间分辨率的不足。这种双向融合机制使得不同尺度的特征图能够相互补充,从而生成多尺度、多语义的融合特征。对于茄子病害检测数据集而言,病害区域往往呈现大小不一的特点:例如果肉腐烂可能表现为大面积软腐斑块,而蛀虫造成的虫孔则属于典型的小目标,黄斑病的病斑也常以细碎斑点形式出现。PAN-FPN 的双路径融合能够同时兼顾大目标和小目标的特征表达,有效提升了模型对多尺度目标的检测鲁棒性,避免了因尺度差异导致的漏检或误检。检测头方面,YOLOv8 引入了解耦检测头(Decoupled Head)的设计,将分类任务和回归任务分别交由两个独立的卷积分支处理。在传统的耦合检测头中,分类和回归共享同一组特征,容易导致任务间的相互干扰;而解耦设计使得每个分支可以专注于自身的学习目标,分类分支更关注类别间的判别性特征,回归分支则更专注于边界框的精确位置回归。这种分离不仅加速了模型的收敛速度,还显著提升了检测精度,尤其对于类别相似度较高的病害(如早期果肉腐烂与健康果实的细微差异)以及边界框回归要求较高的场景(如蛀虫虫孔的精准定位)具有明显优势。相较于 YOLOv5 和 YOLOv7,YOLOv8 在多个关键点上实现了突破。首先,骨干网络从 C3 到 C2f 的升级带来了更优的梯度流与更低的参数量,这是最核心的改进。其次,YOLOv8 摒弃了传统的 Anchor-Based 检测方式,全面转向 Anchor-Free 策略,简化了锚框的预设与匹配过程,使得模型对不同形状目标的适应性更强,也降低了调参难度。第三,YOLOv8 在训练策略上引入了更先进的损失函数(如 CIoU 与 DFL 的结合)以及动态标签分配机制(Task-Aligned Assigner),进一步提升了正负样本的匹配质量,从而在保持实时性的前提下将精度推向了新高度。这些改进使得 YOLOv8 在 COCO 等公开数据集上的表现全面超越前代,同时保持了良好的部署灵活性。在茄子病害检测数据集的实际应用场景中,YOLOv8 的优势尤为突出。该数据集包含果肉腐烂、蛀虫、健康和黄斑病四类目标,其中蛀虫和黄斑病常以中小尺度出现,且部分病害与健康果实的视觉差异细微。YOLOv8 的 C2f 骨干网络能够提取更细腻的纹理特征,PAN-FPN 的多尺度融合保证了小目标不被忽略,解耦检测头则提升了分类与定位的协同精度。此外,Anchor-Free 设计免去了针对不同病害尺寸手动调整锚框的繁琐工作,使得模型能够快速适应实际种植环境中的光照、角度等变化。综合来看,YOLOv8 为茄子病害检测系统提供了高效、精准且易于部署的解决方案,能够有效辅助农业生产中的病害早期预警与精准防治。系统设计数据集本项目使用的数据集为真实场景下采集的茄子病害检测数据集图像,专用于茄子病害检测数据集检测任务。数据图像来自实际现场拍摄,覆盖了多种典型场景,确保了数据的真实性与多样性。数据集共包含3478 张已标注图像,具体划分为:训练集:3107 张图像验证集:371 张图像数据集共包含4 个检测类别:['Fruit Rot', 'Fruit borer', 'Healthy', 'Melon Thrips']数据集各类别数目分布情况如下:部分图像及标注如下图所示:YOLO 在进行模型训练时,会读取data.yaml文件中的训练集、验证集路径以及检测类别信息。本文数据集的data.yaml内容如下:train: J:\datasets\det_eggplant_disease_yolo\train\images val: J:\datasets\det_eggplant_disease_yolo\val\imagesnc: 4names: ['Fruit Rot', 'Fruit borer', 'Healthy', 'Melon Thrips']#果肉腐烂、蛀虫、健康、黄斑病模型训练本文基于YOLOv8进行模型训练。首先安装 Ultralytics:pip install ultralytics训练脚本基于YOLO类封装,核心代码如下:from ultralytics import YOLO model=YOLO(r'yolov8s.pt') if __name__=='__main__': model.train(data='data.yaml',workers=1,batch=16,epochs=100)模型常用训练超参数说明:epochs:训练轮数,本文设置为100batch:批次大小,本文设置为16imgsz:输入图像尺寸,本文设置为640optimizer:优化器,本文使用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.73714,mAP@0.5:0.95 = 0.41216,Precision = 0.74442,Recall = 0.70897。混淆矩阵如下:模型推理使用训练好的best.pt进行推理,支持图片、视频和摄像头三种检测模式。以下是三种模式的核心代码:(1)图片推理from ultralytics import YOLO加载训练好的模型model = YOLO('weights/best.pt')对图片进行推理results = model('test.jpg')可视化检测结果并保存res_plotted = results[0].plot()import cv2cv2.imwrite('result.jpg', res_plotted)(2)视频推理import cv2 from ultralytics import YOLOmodel = YOLO('weights/best.pt')cap = cv2.VideoCapture('test.mp4')while cap.isOpened():ret, frame = cap.read()if not ret:breakresults = model(frame)annotated = results[0].plot()cv2.imshow('YOLO Detection', annotated)if cv2.waitKey(1) 0xFF == ord('q'):breakcap.release()cv2.destroyAllWindows()(3)摄像头实时检测import cv2 from ultralytics import YOLOmodel = YOLO('weights/best.pt')cap = cv2.VideoCapture(0) # 0 表示默认摄像头while cap.isOpened():ret, frame = cap.read()if not ret:breakresults = model(frame)annotated = results[0].plot()cv2.imshow('Live Detection', annotated)if cv2.waitKey(1) 0xFF == ord('q'):breakcap.release()cv2.destroyAllWindows()系统 UI 设计本系统的 UI 设计充分结合了 Flask 与 Layui 两大框架的优势,旨在为用户提供高效、直观且易于操作的病害检测交互体验。Flask 作为后端框架,以其轻量级、高灵活性和丰富的 Python 生态著称,开发者能够快速搭建 RESTful API 接口,并利用 OpenCV、PyTorch 等成熟的计算机视觉库完成模型推理与图像处理任务;同时 Flask 的蓝本机制和扩展支持使得用户管理、数据库操作(SQLite)等模块可以清晰解耦,极大降低了开发与维护成本。Layui 作为前端框架,采用经典的模块化 UI 设计,内置了丰富的表单、表格、弹层、导航等组件,开箱即用且样式统一,特别适合快速搭建后台管理类系统。其表格组件支持分页、排序、搜索、行内编辑等高级功能,能够完美呈现检测记录与用户列表;此外 Layui 的响应式布局能力确保了系统在桌面端与移动端均能获得良好的显示效果。在用户体验方面,系统界面采用简洁的卡片式布局,左侧为功能导航栏,右侧为主内容区,用户可一键切换图片检测、批量检测、视频检测、摄像头实时检测等模式。实时检测页面会动态展示检测帧率、置信度、病害类别及数量统计,并支持用户调节模型置信度阈值、IoU 阈值等参数,使检测结果更贴合实际需求。各功能模块通过前后端分离的协作方式高效运转:前端通过 Layui 封装的 AJAX 请求调用 Flask 提供的 RESTful 接口,上传图片或视频流;后端接收数据后调用预训练的茄子病害检测模型进行推理,并将检测结果(包括病害类别、位置框坐标、置信度等)以 JSON 格式返回;前端解析 JSON 后利用 Canvas 或 Layui 的图片预览组件在原图上绘制标注框,同时更新统计面板与日志列表。用户管理模块则通过 Flask-Login 实现会话控制,管理员可在 Layui 表格中查看、编辑或删除用户信息。整体而言,系统 UI 设计兼顾了功能完整性与操作流畅性,既满足了科研人员对检测精度的需求,也降低了非技术用户的使用门槛。系统主界面如下图所示:系统功能基于训练好的目标检测模型,本系统具备以下核心功能:1. 多模式检测支持- 图片上传检测(单张/批量) - 视频文件上传检测 - 本地摄像头实时检测2. 可调节推理参数- 用户可动态调整置信度阈值(conf) - 用户可动态调整 IoU 阈值3. 可视化检测结果- 在图像/视频上绘制边界框和类别标签 - 实时显示目标位置、目标总数、置信度、用时等信息4. 结构化结果输出- 表格展示每个检测目标的序号、类别、置信度和坐标 - 统计每类目标的检测总数 - 支持将检测结果保存为 CSV 文件5. 跨设备兼容- 自动判断是否支持 GPU,优先使用 GPU 加速 - 支持主流浏览器访问(Chrome / Edge / Firefox)总结本文围绕基于YOLOv8与Flask框架的茄子病害检测数据集识别系统,完整回顾了从数据准备到系统部署的全流程。首先,针对茄子常见病害类别——Fruit Rot(果实腐烂)、Fruit borer(果实蛀虫)、Healthy(健康)和Melon Thrips(瓜蓟马),我们收集并标注了3478张高质量图像,采用Pascal VOC格式存储标注信息,并统一转换为YOLO所需的txt格式。随后,基于YOLOv8模型进行训练,通过调整超参数、数据增强及多尺度训练策略,最终在测试集上取得了mAP@0.5=0.73714的检测精度,验证了模型对复杂病害特征的识别能力。在性能评估阶段,我们详细分析了各类别的精确率、召回率及F1分数,确保模型在真实场景下的鲁棒性。最后,利用Flask框架搭建了轻量级Web可视化系统,实现了图像上传、实时检测、结果展示及置信度阈值调节等功能,用户可通过浏览器便捷地完成病害识别。该系统在茄子病害检测场景中具有显著的应用价值。首先,0.73714的mAP值表明模型能够准确区分四种病害类别,尤其对早期病斑和微小虫害的识别表现良好,有效降低了漏检率。其次,YOLOv8的轻量化设计使得单张图像推理时间低于30毫秒,结合Flask的异步处理能力,系统可满足田间实时监测需求,为农户或农业技术人员提供即时反馈。此外,Web界面简洁直观,无需安装专业软件,用户仅需上传图片即可获得带边界框和类别标签的检测结果,极大降低了使用门槛。这种高精度、实时性与易用性的结合,使系统能够快速部署于智慧农业场景,辅助病害预警与精准施药决策。随项目附带的源码文件结构说明:随项目附带的设计说明书(docx)缩略图:项目下载链接:https://mbd.pub/o/bread/YZaTmZlxaA==