摘要 :植物叶片病害的快速、准确识别是智慧农业中提升田间诊断效率与减轻植保成本的重要环节,但真实场景下叶片姿态变化、光照不均、病斑尺度跨度大、类别间纹理相似与背景干扰等因素,会显著降低传统人工巡检与通用视觉算法的稳定性。本文围绕"YOLOv5 至 YOLOv12 "系列模型的演进脉络,完整实现一套面向叶片病害的目标检测式识别系统,并给出可复现实验与工程落地的项目工程。系统侧以 Python 3.12 + PySide6 构建桌面端可视化界面,支持图片/文件夹/视频/摄像头 多源输入推理,提供病害框选与类别展示、置信度与阈值调节、实时统计与结果导出(文件与数据库)、推理过程可视化等交互功能,并引入基于 SQLite 的注册/登录/资料管理/历史记录 机制实现个性化空间与持久化配置。算法侧以 YOLOv12n 为主模型,同时兼容导入 YOLOv5--YOLOv12 各版本权重,在统一数据集与统一评估协议下完成多模型对比与误差分析,并给出从数据集构建、标注、预处理、训练策略、推理部署到界面集成的端到端实现细节。文末提供完整代码、可运行界面工程与数据集资源包,为读者在农业病虫害识别场景中开展模型复现、二次开发与工程部署提供直接参考。
讲解视频地址: https://www.bilibili.com/video/BV1drdHBFE6J/
文章目录
- [1 前沿综述](#1 前沿综述)
- [2 数据集介绍](#2 数据集介绍)
- [3. 模型设计与实现](#3. 模型设计与实现)
- [4 训练策略与模型优化](#4 训练策略与模型优化)
- [5 实验与结果分析](#5 实验与结果分析)
-
- [5.1 轻量级组(n/tiny)结果与分析](#5.1 轻量级组(n/tiny)结果与分析)
- [5.2 中等规模组(s)结果与分析](#5.2 中等规模组(s)结果与分析)
- [5.3 阈值选择与训练收敛现象](#5.3 阈值选择与训练收敛现象)
- [6. 系统设计与实现](#6. 系统设计与实现)
-
- [6.1 系统设计思路](#6.1 系统设计思路)
- [6.2 登录与账户管理](#6.2 登录与账户管理)
- [7. 下载链接](#7. 下载链接)
- [8. 参考文献(GB/T 7714)](#8. 参考文献(GB/T 7714))
1 前沿综述
植物叶片病害往往具有"潜伏期长、扩散快、症状形态多变"的特点,在规模化种植中一旦错过早期处置窗口,极易造成产量与品质的同步损失,因此构建可在田间环境中稳定工作的叶片病害识别系统,既是植保信息化的关键环节,也是面向精准施药与减药增效的重要支撑。1
与传统依赖人工巡检和经验判断的方式相比,基于图像的自动诊断能够把"发现---定位---判别"流程前移到现场边缘端,但复杂光照、遮挡、背景干扰以及多病害共存等因素,会显著抬高模型泛化与工程部署难度,这也构成了叶片病害识别从"可用"走向"可靠"的核心障碍。2 (arXiv)
早期的叶片病害识别多依赖颜色、纹理与形状等手工特征,并结合支持向量机、随机森林等浅层模型完成分类或分割,但该范式对拍摄尺度、成像设备与场景变化高度敏感,尤其在自然背景、病斑尺度较小或症状相似时往往出现鲁棒性不足。2
近年来深度学习将特征学习与判别学习统一在端到端框架中,并在多源传感、模型结构(CNN/Transformer)与训练策略等方面快速演进,使得病害识别逐步从"图像级分类"扩展到"实例级定位与计数",为田间智能监测提供了更直接的技术路径。3 (Springer)
数据集层面,PlantVillage 等早期公开数据推动了叶片病害识别的快速起步,但其采集条件较为理想,难以完全覆盖田间真实分布与成像扰动。1
为面向真实场景的检测与诊断需求,PlantDoc 进一步提供了自然环境下的病害图像与目标标注,促使研究从"分类准确率"转向"定位精度与实时性"的综合权衡。4
国内研究同样围绕复杂背景与细粒度症状展开,例如针对三七叶片病害的改进 YOLOv3 检测工作,强调通过结构与训练细节提升小目标与相似症状的区分能力。5
在蔬菜病害方向,自然环境下番茄患病叶片检测的改进 YOLOv5 模型则进一步说明:在真实光照与遮挡条件下,模型的泛化能力往往比实验室条件下的峰值指标更能决定系统可落地性。6 (Hugging Face)
在工程部署层面,叶片病害识别系统通常同时受限于算力、延迟与能耗,因此轻量化与加速成为重要研究主线,例如基于 YOLOv5s 的主干替换、剪枝与蒸馏策略在移动端部署上展示了"可计算、可响应"的现实意义。[7]
与此同时,Transformer 在全局建模上的优势被逐步引入病害检测任务,PD-TR 这类端到端检测框架尝试用更强的特征交互提升复杂背景下的定位与判别能力,体现出从卷积主导向注意力建模过渡的趋势。[8]
更近的工作开始将最新 YOLO 分支与任务特性结合,例如面向叶片病害的小目标与密集干扰,改进 YOLOv11 的结构设计与特征融合被用于提升检测精度与推理效率,这为"高精度---低延迟"并重的系统设计提供了可复用思路。[9] (j-csam.org)
为便于对研究脉络作更清晰的归纳,表 1 汇总了与本博客任务最相关的代表性数据集与方法类型,并对其应用场景与局限作了对应标注。
表 1 叶片病害识别相关研究与数据资源概览
| 代表工作 | 任务形态 | 数据与场景特征 | 主要优点 | 典型局限 |
|---|---|---|---|---|
| PlantVillage1 | 分类为主 | 相对理想采集条件 | 促进早期模型快速迭代 | 与田间域差异明显 |
| PlantDoc4 | 检测/定位 | 自然环境、目标标注 | 强化"定位+识别"研究 | 类间差异与标注成本较高 |
| 改进YOLOv3 三七叶片5 | 检测 | 复杂背景、小病斑 | 兼顾精度与一定实时性 | 对跨作物迁移仍敏感 |
| 改进YOLOv5 番茄叶片6 | 检测 | 自然环境采集 | 强调泛化与鲁棒性 | 依赖针对性数据清洗与增强 |
| YOLOv5s 轻量化[7] | 检测 | 面向移动端部署 | 资源受限场景更可用 | 需在精度与速度间反复权衡 |
| PD-TR[8] | 端到端检测 | Transformer建模 | 全局关系表达更强 | 训练与部署复杂度更高 |
| 改进YOLOv11 叶片病害[9] | 检测 | 面向小目标/干扰 | 精度---效率折中更优 | 对数据分布变化仍需约束 |
从检测算法的演进来看,YOLO 系列因其实时性与工程生态而成为农业视觉中最常用的检测范式之一,其中 YOLOv6 强调面向产业场景的可部署网络族与量化优化,使得不同算力条件下的速度---精度取舍更可控。[10]
YOLOv7 通过可训练的"bag-of-freebies"与更高效的特征聚合设计,在不显著增加推理成本的前提下进一步刷新实时检测精度上限。[11]
Ultralytics 维护的 YOLOv5、YOLOv8 与 YOLO11 则以工程化实现与任务扩展为特征,形成了"检测---分割---姿态/旋转框"等多任务统一的应用框架,显著降低了模型替换与部署迁移门槛。[12]
在更近的研究分支中,YOLOv9 提出可编程梯度信息(PGI)与 GELAN 架构以改善信息瓶颈与梯度质量,从而在轻量模型上获得更好的参数利用率与性能表现。[13]
YOLOv10 进一步面向端到端检测范式,强调在保持实时性的同时减少后处理依赖,使"训练---推理"的一致性与部署效率得到提升。[14]
YOLOv12 则将研究重心更明确地转向注意力机制的效率化设计,在保持低延迟的同时引入注意力建模优势,代表了 YOLO 从卷积主导向"高效注意力"过渡的一条清晰路线。[15] (arXiv)
尽管算法与工程生态快速成熟,叶片病害识别在落地中仍面临若干难点:病斑尺度小且形态多变导致特征不稳定,复杂背景与遮挡引发误检漏检,多病害共存与症状相似造成类间边界模糊,而实验室到田间的域偏移会让离线评测指标与在线效果出现显著落差。2
此外,系统化应用不仅追求 m A P mAP mAP 等精度指标,还必须将推理延迟、吞吐与资源占用纳入同一约束框架,否则模型即使在测试集上表现优异,也难以满足实时监测与交互式诊断的工程需求。[14] (Smartag)
基于上述背景,老思在本文的核心工作将聚焦于:以 YOLOv5 至 YOLOv12 的模型谱系为主线,在同一叶片病害数据集上开展可复现实验对比,并给出可直接运行的 PySide6 图形界面与 SQLite 结果管理;同时整理并发布数据集构建、标注、预处理与训练推理的完整代码,使读者能够从"算法验证"顺畅过渡到"可用系统实现"。
主要功能演示:
(1)启动与登录:程序启动进入登录界面,支持注册与登录;登录校验通过后自动加载用户的历史记录与常用配置(模型、阈值等),并将检测结果按用户维度持久化到 SQLite,便于追溯与复现实验。
启动与登录界面图

(2)多源输入与实时检测(摄像头/视频/图片/文件夹):主界面支持摄像头实时流、视频文件、单图与文件夹批量推理;实时模式提供开始/暂停/停止控制并显示检测框、类别与置信度、FPS 与类别统计,批量模式给出进度与平均耗时,结果可导出为带框图片与结构化文件,并可写入数据库。
多源输入与实时检测演示图

(3)模型选择与对比演示:界面提供 YOLOv5--YOLOv12 权重切换与导入,支持同一输入源下快速复跑;系统汇总每次运行的耗时、FPS、检测数量与类别分布,并支持并排对比不同模型的检测结果与关键指标,直观观察漏检/误检与小目标差异。
模型选择与对比演示图

(4)主题修改功能:新增主题切换与个性化定制(浅色/深色、主色调、字体缩放、图标与背景),通过 PySide6 的 QSS 统一管理界面风格;主题配置写入 SQLite,下一次登录自动恢复。
主题修改功能演示图

2 数据集介绍
本项目面向"植物叶片病害识别"这一更贴近真实应用的检测式建模需求,将叶片在自然背景中的实例作为检测目标进行标注:对单张图像中可见的叶片进行逐实例框选,并以"作物种类---健康/病害类型"作为类别标签,从而使模型在推理阶段不仅能够给出病害类别判断,还能输出对应叶片的空间位置与数量统计。数据集共包含 2558 张图像,按训练/验证/测试划分为 2002/311/245 张(约 78.3%/12.2%/9.6%),这种划分一方面保证训练阶段对多类别与多形态病斑的充分学习,另一方面在验证与测试集上保留了对复杂背景、尺度变化与跨场景泛化能力的独立评估空间。

python
Chinese_name = {"Apple Scab Leaf": "苹果黑星病叶", "Apple leaf": "苹果叶", "Apple rust leaf": "苹果锈病叶", "Bell_pepper leaf spot": "甜椒叶斑", "Bell_pepper leaf": "甜椒叶", "Blueberry leaf": "蓝莓叶", "Cherry leaf": "樱桃叶", "Corn Gray leaf spot": "玉米灰斑病叶","Corn leaf blight": "玉米叶枯病", "Corn rust leaf": "玉米锈病叶", "Peach leaf": "桃叶","Potato leaf early blight": "马铃薯早疫病叶", "Potato leaf late blight": "马铃薯晚疫病叶", "Potato leaf": "马铃薯叶","Raspberry leaf": "覆盆子叶", "Soyabean leaf": "大豆叶", "Squash Powdery mildew leaf": "南瓜白粉病叶","Strawberry leaf": "草莓叶", "Tomato Early blight leaf": "番茄早疫病叶", "Tomato Septoria leaf spot": "番茄斑点病叶", "Tomato leaf bacterial spot": "番茄细菌性斑点叶","Tomato leaf late blight": "番茄晚疫病叶", "Tomato leaf mosaic virus": "番茄花叶病毒叶","Tomato leaf yellow virus": "番茄黄化病毒叶","Tomato leaf": "番茄叶", "Tomato mold leaf": "番茄霉病叶","Tomato two spotted spider mites leaf": "番茄双斑蜘蛛螨叶", "grape leaf black rot": "葡萄叶黑腐病","grape leaf": "葡萄叶"}
从标注统计特征来看,类别实例数分布呈现明显的长尾现象:少数类别实例数较高,而部分病害类样本相对稀缺,这意味着模型训练可能更容易偏向高频类,并在低频病害上出现召回不足。几何分布上,标注框中心点在归一化坐标系中更集中于图像中部区域,反映了叶片成像的常见构图习惯;同时宽高分布呈现"以中小尺度为主、并伴随少量接近整幅图像的大目标"的混合形态,说明数据中既包含近景单叶(大框)也包含多叶同框或远景叶片(小框)的情况。对检测器而言,这种尺度与密度差异会直接影响特征金字塔的匹配效率与小目标召回,因此在训练阶段需要依赖多尺度增强与合理的输入尺寸设置,以缓解尺度偏置带来的性能波动。

📊 数据集规格说明 (Dataset Specification)
| 维度 | 参数项 | 详细数据 |
|---|---|---|
| 基础信息 | 标注软件 | LabelImg(或同类矩形框标注工具) |
| 标注格式 | YOLO TXT (Normalized) | |
| 数量统计 | 训练集 (Train) | 2,002 张 (78.3%) |
| 验证集 (Val) | 311 张 (12.2%) | |
| 测试集 (Test) | 245 张 (9.6%) | |
| 总计 (Total) | 2,558 张 | |
| 类别清单 | Class ID: 0 | Apple Scab Leaf(苹果黑星病叶) |
| Class ID: 1 | Apple leaf(苹果叶) |
|
| Class ID: 2 | Apple rust leaf(苹果锈病叶) |
|
| Class ID: 3 | Bell_pepper leaf spot(甜椒叶斑) |
|
| Class ID: 4 | Bell_pepper leaf(甜椒叶) |
|
| Class ID: 5 | Blueberry leaf(蓝莓叶) |
|
| Class ID: 6 | Cherry leaf(樱桃叶) |
|
| Class ID: 7 | Corn Gray leaf spot(玉米灰斑病叶) |
|
| Class ID: 8 | Corn leaf blight(玉米叶枯病) |
|
| Class ID: 9 | Corn rust leaf(玉米锈病叶) |
|
| Class ID: 10 | Peach leaf(桃叶) |
|
| Class ID: 11 | Potato leaf early blight(马铃薯早疫病叶) |
|
| Class ID: 12 | Potato leaf late blight(马铃薯晚疫病叶) |
|
| Class ID: 13 | Potato leaf(马铃薯叶) |
|
| Class ID: 14 | Raspberry leaf(覆盆子叶) |
|
| Class ID: 15 | Soyabean leaf(大豆叶) |
|
| Class ID: 16 | Squash Powdery mildew leaf(南瓜白粉病叶) |
|
| Class ID: 17 | Strawberry leaf(草莓叶) |
|
| Class ID: 18 | Tomato Early blight leaf(番茄早疫病叶) |
|
| Class ID: 19 | Tomato Septoria leaf spot(番茄斑点病叶) |
|
| Class ID: 20 | Tomato leaf bacterial spot(番茄细菌性斑点叶) |
|
| Class ID: 21 | Tomato leaf late blight(番茄晚疫病叶) |
|
| Class ID: 22 | Tomato leaf mosaic virus(番茄花叶病毒叶) |
|
| Class ID: 23 | Tomato leaf yellow virus(番茄黄化病毒叶) |
|
| Class ID: 24 | Tomato leaf(番茄叶) |
|
| Class ID: 25 | Tomato mold leaf(番茄霉病叶) |
|
| Class ID: 26 | Tomato two spotted spider mites leaf(番茄双斑蜘蛛螨叶) |
|
| Class ID: 27 | grape leaf black rot(葡萄叶黑腐病) |
|
| Class ID: 28 | grape leaf(葡萄叶) |
|
| 图像规格 | 输入尺寸 | 640 * 640(训练阶段默认整形输入) |
| 数据来源 | 自有数据 / 混合数据集 / 实地拍摄 / 公开数据集 (手动清洗) |
(可视化建议在博客中配图:类别实例数柱状图 labels.jpg;标注框几何分布与相关性 labels_correlogram.jpg;训练批次 Mosaic 可视化 train_batch0.jpg。)
3. 模型设计与实现
在"植物叶片病害识别"这一任务里,如果仅做图像级分类,ResNet、MobileNet、EfficientNet 这类主干网络确实足够强,但它们默认输出的是"整张图属于某类"的全局结论,难以回答田间场景真正关心的两个问题:病斑到底在哪里、同一张叶片上是否共存多种病害。老思在本项目中将问题建模为多类别目标检测 :输入为叶片图像,输出为病害(或健康叶片)目标的边界框、类别与置信度,从而支持界面端的可视化框选、区域级统计与多目标共现分析。也正因为如此,基线模型并不直接选用分类网络,而是采用 YOLO 系列(v5--v12)作为统一检测框架,并以 YOLOv12n 作为默认主模型,在精度、参数量与推理时延之间取得更适合交互式桌面系统的平衡。(Ultralytics Docs)
从结构上看,本系统遵循 YOLO 一贯的三段式范式:Backbone--Neck--Head 。Backbone 负责从输入图像中提取分层语义特征,Neck 负责进行多尺度特征融合以兼顾小病斑与大面积病变,Head 在多个特征尺度上输出分类与回归结果(框的位置与大小)。网络的整体架构图如下图所示(以 YOLOv5 的经典 Backbone/Neck/Head 结构为例,便于读者快速建立"特征提取---多尺度融合---多头预测"的整体认知)。(Ultralytics Docs)
YOLO 主干结构示意图:

在 YOLOv5--YOLOv11 的演进过程中,主线主要围绕"更高效的特征聚合模块、更轻量的卷积算子、更合理的检测头与训练策略"展开;而 YOLOv12 的关键变化,是将注意力机制以更贴近实时检测的方式引入网络骨架,使其在保持速度竞争力的同时获得更强的全局建模能力。具体到结构设计,YOLOv12 在骨干与聚合模块层面引入了 Area Attention 与 R-ELAN(Residual Efficient Layer Aggregation Networks) :前者用更"简单"的区域划分方式避免标准自注意力在高分辨率特征图上带来的高计算与低效访存开销,后者通过块级残差与更稳健的聚合路径缓解注意力主导架构在大模型尺度下的优化不稳定问题。(Ultralytics Docs)
任务建模方面,叶片病害检测面临的一个典型难点是"类间细粒度差异小、类内形态变化大":例如同为斑点类病害,不同作物与不同生育期下的纹理、颜色与形状差异明显;同时真实田间图像还会引入遮挡、反光、焦外模糊与复杂背景。模型输出通常包含三类信息:类别概率 p p p、目标置信度(objectness)以及边界框参数 b ^ \hat{b} b^。在训练中,损失函数可写为加权和:
L = λ box L box + λ cls L cls + λ dfl L dfl . L=\lambda_{\text{box}}L_{\text{box}}+\lambda_{\text{cls}}L_{\text{cls}}+\lambda_{\text{dfl}}L_{\text{dfl}}. L=λboxLbox+λclsLcls+λdflLdfl.
其中分类项常用二元交叉熵(多标签形式):
L cls = − [ y log p + ( 1 − y ) log ( 1 − p ) ] , L_{\text{cls}}=-\big[y\log p+(1-y)\log(1-p)\big], Lcls=−[ylogp+(1−y)log(1−p)],
回归项常以 IoU 系列度量为核心(例如 CIoU/GIoU 的 1 − IoU 1-\text{IoU} 1−IoU 形式),用于约束预测框与真实框的重叠与几何一致性;而在较新的 YOLO 检测头中, L dfl L_{\text{dfl}} Ldfl 常用于对边界框边距的离散分布建模(Distribution Focal Loss),从而提升定位的细粒度精度。对本项目而言,这样的损失分解非常契合界面端需求:分类项决定"病害种类是否判对",回归项决定"病斑框得是否贴合",二者共同影响最终的可视化观感与统计可靠性。(Ultralytics Docs)
实现层面,本系统将 YOLOv5--YOLOv12 的推理过程抽象为统一的 Detector 接口:在 PySide6 前端侧只关心"载入权重---输入源帧---输出检测结果",而不将不同 YOLO 版本的细节泄漏到界面层。核心流程是:输入帧经 letterbox 等比例缩放到 640 × 640 640\times640 640×640 并归一化,送入模型前向得到多尺度预测,再通过置信度阈值筛选与(可选的)NMS 得到最终框集合,最后将 ( x 1 , y 1 , x 2 , y 2 ) , cls , conf {(x_1,y_1,x_2,y_2),\text{cls},\text{conf}} (x1,y1,x2,y2),cls,conf 回传 UI 绘制与统计。下面给出一个与工程一致的最小化推理代码骨架(示意统一接口,不绑定具体 UI 逻辑):(Ultralytics Docs)
python
from ultralytics import YOLO
class Detector:
def __init__(self, weight_path: str, imgsz: int = 640, conf: float = 0.25, iou: float = 0.45):
self.model = YOLO(weight_path)
self.imgsz = imgsz
self.conf = conf
self.iou = iou
def infer(self, frame):
# frame: BGR numpy array from camera/video/image
results = self.model.predict(
source=frame,
imgsz=self.imgsz,
conf=self.conf,
iou=self.iou,
verbose=False
)
# results[0].boxes contains xyxy, cls, conf
return results[0]
最后谈训练与泛化的"工程化细节"。叶片病害数据往往存在类别分布不均与背景偏置,因此训练中常配合合适的数据增强(如 Mosaic、随机缩放/平移、HSV 抖动)来扩展纹理与光照覆盖范围;优化上通常采用带 warmup 的学习率策略、权重衰减与 EMA(指数滑动平均)稳定收敛,并在验证集上以 mAP 与分类相关指标共同约束早停与模型选择。YOLOv12 额外强调注意力实现的效率与可选 FlashAttention 支持,但在本项目里,是否启用该能力会被封装在训练/部署脚本中,对 UI 推理链路保持透明。(Ultralytics Docs)
4 训练策略与模型优化
人群密度检测的训练目标并不止于"能检出行人",更关键的是在遮挡、尺度差异与密集相邻目标条件下维持较高召回,并尽量降低误检带来的计数抖动。老思在工程侧采用"统一数据划分、统一输入分辨率、统一阈值策略"的训练范式:训练阶段以 COCO 等大规模数据上预训练的 person 权重作为初始化,以迁移学习降低收敛难度;随后在目标场景数据上进行全量微调,使模型对监控视角、拥挤形态、光照与运动模糊等域特征形成稳定表征。为保证不同 YOLO 版本对比的公平性,训练时固定输入尺寸(默认 640 × 640 640\times 640 640×640)与评估协议,验证集仅用于早停与最优权重选择,测试集用于最终计数与检测性能汇报;在视频流评估中,额外统计单位时间计数波动(例如滑动窗口内的方差)来衡量密集场景下的稳定性,这一指标与工程报警逻辑更一致。
训练环境建议以 Ultralytics 体系为主(便于 v5/v8/v10/v11/v12 的统一脚本与导出链路),硬件采用 RTX 4090(24GB 显存)并启用 AMP 混合精度以提高吞吐与降低显存占用。优化器可交由框架自动选择(通常在 SGD/AdamW 间按模型与批量自适应),学习率使用 warmup + 余弦退火以避免前期梯度不稳定与后期震荡;其形式可写为
l r ( t ) = l r 0 [ l r f + 1 − l r f 2 ( 1 + cos ( π t T ) ) ] , lr(t)=lr_0\left[lrf+\frac{1-lrf}{2}\left(1+\cos\left(\frac{\pi t}{T}\right)\right)\right], lr(t)=lr0[lrf+21−lrf(1+cos(Tπt))],
其中 T T T 为总训练轮数, l r f lrf lrf 控制末期学习率占比。对密集行人而言,后期关闭 Mosaic(或降低其概率)通常有利于边界框几何收敛与相邻目标分离,因此在训练末段引入 close_mosaic 能明显改善最终框的贴合度与 NMS 竞争下的漏检风险。若数据存在明显长尾或拥挤程度跨度大,则建议在采样侧对"高密度帧"做适度重采样或在训练 batch 内混入更多拥挤样本,以提升模型对极端拥挤的鲁棒性;与此同时,随机仿射、尺度抖动、轻度运动模糊与亮度对比度扰动更贴近监控场景,往往比过强的颜色增强更有效。
在默认配置上,本项目采用较为稳健的训练超参数作为起点(在不同 YOLO 版本上保持一致以便对比),如下表所示;其中 conf/iou 的推理阈值不在训练阶段固化,而是在 UI 中暴露为交互参数,用于现场在"高召回计数"与"低误检稳定"之间做快速权衡。
| 名称 | 作用(简述) | 数值 |
|---|---|---|
epochs |
最多训练轮数 | 120 |
patience |
早停耐心(验证无提升则停止) | 50 |
batch |
批大小 | 16 |
imgsz |
输入分辨率 | 640 |
pretrained |
加载预训练权重 | true |
optimizer |
优化器策略 | auto |
lr0 |
初始学习率 | 0.01 |
lrf |
最终学习率占比 | 0.01 |
momentum |
动量 | 0.937 |
weight_decay |
权重衰减 | 0.0005 |
warmup_epochs |
预热轮数 | 3.0 |
mosaic |
Mosaic 强度/概率 | 1.0 |
close_mosaic |
末期关闭 Mosaic 的轮数 | 10 |
模型优化部分主要围绕"实时性、吞吐与可部署性"展开。训练完成后,工程默认导出 ONNX 并在部署侧使用 TensorRT 进行图优化与算子融合;在 4090 上通常可直接启用 FP16 引擎以进一步降低时延,而对边缘端或多路视频并发场景,可在校准集上做 INT8 量化以换取更高吞吐。由于密集人群对后处理敏感,部署优化时需要将 NMS(或端到端输出的匹配策略)与阈值逻辑一并纳入 profiling:一方面通过合理的 conf 下限减少无效候选框进入后处理,另一方面在高密度场景可适当提高 iou 阈值以降低误抑制造成的漏检;若采用 YOLOv10 的端到端范式,则可以进一步减少传统 NMS 带来的框竞争不确定性,使计数在拥挤画面下更平滑。最终在 PySide6 系统中,推理线程与 UI 渲染线程分离,输入解码、推理与绘制通过信号槽异步传递,结合批内预处理(letterbox/归一化)与显存复用,能够在保证交互流畅的同时维持稳定帧率与可控延迟。
5 实验与结果分析
本节围绕 PlantLeaf 数据集(共 2558 张图像,29 类)展开对比实验。为保证"YOLOv5 至 YOLOv12 版本升级"结论具备可复现性,老思将实验拆成两组:其一是轻量级组(n/tiny),对应 YOLOv5nu、YOLOv6n、YOLOv7-tiny、YOLOv8n、YOLOv9t、YOLOv10n、YOLOv11n、YOLOv12n;其二是中等规模组(s),对应 YOLOv5su、YOLOv6s、YOLOv7、YOLOv8s、YOLOv9s、YOLOv10s、YOLOv11s、YOLOv12s。训练阶段沿用统一的数据划分与输入尺寸( 640 × 640 640\times640 640×640),并尽量保持相同的优化策略与增强策略;推理耗时统计由日志给出,运行设备为 NVIDIA GeForce RTX 3070 Laptop GPU(8GB) ,因此本文表中的时延与帧率用于反映"相对趋势",而非不同硬件之间的绝对可比值。

度量指标方面,检测性能采用 Precision、Recall、F1 以及 m A P @ 0.5 mAP@0.5 mAP@0.5、 m A P @ 0.5 ! : ! 0.95 mAP@0.5!:!0.95 mAP@0.5!:!0.95。其中
P = T P T P + F P , R = T P T P + F N , F 1 = 2 P R P + R . P=\frac{TP}{TP+FP},\qquad R=\frac{TP}{TP+FN},\qquad F_1=\frac{2PR}{P+R}. P=TP+FPTP,R=TP+FNTP,F1=P+R2PR.
同时记录预处理、前向推理与后处理耗时,并给出总时延(Pre+Inf+Post)与近似帧率 F P S ≈ 1000 / Total(ms) FPS\approx 1000/\text{Total(ms)} FPS≈1000/Total(ms),以支持工程侧对"精度---速度---资源占用"的联合判断。
5.1 轻量级组(n/tiny)结果与分析
轻量级组的定量对比结果如下表所示(同一测试协议)。可以看到,YOLOv12n 在该组取得最优的综合表现: m A P @ 0.5 = 0.687 mAP@0.5=0.687 mAP@0.5=0.687、 F 1 = 0.623 F_1=0.623 F1=0.623,同时 m A P @ 0.5 ! : ! 0.95 = 0.486 mAP@0.5!:!0.95=0.486 mAP@0.5!:!0.95=0.486 也为该组最高,说明其优势不仅体现在检出率与分类置信度上,也体现在更严格 IoU 阈值下的定位质量。
| Model | Params(M) | FLOPs(G) | Precision | Recall | F1 Score | mAP50 | mAP50-95 | Total(ms) | FPS~ |
|---|---|---|---|---|---|---|---|---|---|
| YOLOv5nu | 2.6 | 7.7 | 0.539 | 0.639 | 0.585 | 0.646 | 0.467 | 10.94 | 91.4 |
| YOLOv6n | 4.3 | 11.1 | 0.486 | 0.544 | 0.513 | 0.556 | 0.391 | 10.34 | 96.7 |
| YOLOv7-tiny | 6.2 | 13.8 | 0.531 | 0.531 | 0.531 | 0.534 | 0.349 | 21.08 | 47.4 |
| YOLOv8n | 3.2 | 8.7 | 0.553 | 0.571 | 0.562 | 0.611 | 0.441 | 10.17 | 98.3 |
| YOLOv9t | 2.0 | 7.7 | 0.528 | 0.576 | 0.551 | 0.594 | 0.432 | 19.67 | 50.8 |
| YOLOv10n | 2.3 | 6.7 | 0.524 | 0.650 | 0.580 | 0.597 | 0.422 | 13.95 | 71.7 |
| YOLOv11n | 2.6 | 6.5 | 0.537 | 0.600 | 0.567 | 0.617 | 0.437 | 12.97 | 77.1 |
| YOLOv12n | 2.6 | 6.5 | 0.580 | 0.673 | 0.623 | 0.687 | 0.486 | 15.75 | 63.5 |
从相对增益看,YOLOv12n 相比 YOLOv5nu 的 m A P @ 0.5 mAP@0.5 mAP@0.5 提升约 0.041 0.041 0.041(0.687 vs 0.646), F 1 F_1 F1 提升约 0.038 0.038 0.038(0.623 vs 0.585)。这类提升与 PR 曲线形态是一致的:在中高 Recall 区间,YOLOv12n 的 Precision 下降更缓,意味着它在"检出更多目标"的同时,没有引入同等比例的误检,因而更适合在 UI 端以较宽松阈值运行并保持稳定输出(如下 PR 对比图所示)。

另一方面,速度上 YOLOv8n 依旧是该组最"轻快"的选择(约 98 FPS),YOLOv12n 的总时延略高(约 63 FPS),反映出注意力友好结构在本实现下仍存在一定计算与访存代价,因此工程上更合理的结论是:YOLOv12n 更偏向"精度优先"的轻量模型,而 YOLOv8n 更适合"帧率优先"的实时预览场景。
图 5-1 PlantLeaf(n_type)F1 与 mAP50 对比柱状图:

5.2 中等规模组(s)结果与分析
中等规模组的结果如下表所示。与"更大模型必然更强"的直觉不同,本组最优模型为 YOLOv9s : m A P @ 0.5 = 0.696 mAP@0.5=0.696 mAP@0.5=0.696、 F 1 = 0.657 F_1=0.657 F1=0.657、 m A P @ 0.5 ! : ! 0.95 = 0.519 mAP@0.5!:!0.95=0.519 mAP@0.5!:!0.95=0.519 均为该组最高。YOLOv9s 的 Precision 与 Recall 更均衡(0.668 与 0.645),这会直接体现在视频流推理时的误检率与漏检率同时受控,从而减少"计数/统计"类功能的波动。

相比之下,YOLOv12s 在本次设置下呈现"Precision 较高但 Recall 偏低"的形态(0.647 vs 0.557),这会导致 m A P @ 0.5 mAP@0.5 mAP@0.5 下滑到 0.581,说明其在当前数据规模与超参数条件下尚未充分释放结构优势,更可能需要更细致的训练日程、增强强度与阈值策略协同调参。
| Model | Params(M) | FLOPs(G) | Precision | Recall | F1 Score | mAP50 | mAP50-95 | Total(ms) | FPS~ |
|---|---|---|---|---|---|---|---|---|---|
| YOLOv5su | 9.1 | 24.0 | 0.653 | 0.522 | 0.581 | 0.603 | 0.421 | 12.24 | 81.7 |
| YOLOv6s | 17.2 | 44.2 | 0.581 | 0.491 | 0.532 | 0.558 | 0.394 | 12.26 | 81.6 |
| YOLOv7 | 36.9 | 104.7 | 0.566 | 0.697 | 0.624 | 0.643 | 0.450 | 29.52 | 33.9 |
| YOLOv8s | 11.2 | 28.6 | 0.535 | 0.670 | 0.595 | 0.646 | 0.459 | 11.39 | 87.8 |
| YOLOv9s | 7.2 | 26.7 | 0.668 | 0.645 | 0.657 | 0.696 | 0.519 | 22.17 | 45.1 |
| YOLOv10s | 7.2 | 21.6 | 0.543 | 0.653 | 0.593 | 0.628 | 0.452 | 14.19 | 70.5 |
| YOLOv11s | 9.4 | 21.5 | 0.618 | 0.619 | 0.618 | 0.636 | 0.451 | 13.47 | 74.2 |
| YOLOv12s | 9.3 | 21.4 | 0.647 | 0.557 | 0.599 | 0.581 | 0.431 | 16.74 | 59.7 |
从工程部署角度,本组存在两条较清晰的选择路径:若以离线评测与最终识别精度为首要目标,YOLOv9s 在 m A P @ 0.5 mAP@0.5 mAP@0.5 与 m A P @ 0.5 ! : ! 0.95 mAP@0.5!:!0.95 mAP@0.5!:!0.95 上的优势更突出;若以界面交互流畅度与推理吞吐为首要目标,YOLOv8s 在维持较高 m A P @ 0.5 mAP@0.5 mAP@0.5(0.646)的同时具备更低时延(约 88 FPS),更适合作为默认实时预览模型,而将 YOLOv9s 作为"高精度模式"供用户一键切换。
图 5-2 PlantLeaf(s_type)F1 与 mAP50 对比柱状图:

5.3 阈值选择与训练收敛现象
阈值策略直接影响 UI 端的"观感"和"统计稳定性"。从 F1--Confidence 曲线可见,整体最优点出现在 conf≈0.47 ,此时全类平均 F 1 ≈ 0.53 F_1\approx 0.53 F1≈0.53;当阈值继续升高到 0.8 以上,Recall 快速下降并拖累 F 1 F_1 F1,这对应真实推理中"框明显变少、漏检增多"的体验。该现象说明:在本数据集上,将默认置信度设为 0.45--0.50 往往更接近"综合最优",而在需要更高召回(宁可多检)或更高精度(宁可少检)的场景下,再通过 UI 滑条对阈值做场景化微调会更合理。

6. 系统设计与实现
6.1 系统设计思路
本系统面向"植物叶片病害的检测识别与可视化交互"这一典型桌面端需求,整体采用分层解耦的工程结构:界面层负责承载交互控件与结果可视化,控制层负责状态机与业务编排,处理层负责模型推理与后处理,数据层负责 SQLite 持久化与文件导出。老思在实现中刻意避免将推理细节"写死"在 UI 逻辑里,而是将 YOLOv5--YOLOv12 的差异收敛到统一的 Detector 接口(加载权重、推理、后处理、返回标准化 boxes/cls/conf),使得模型切换仅是权重路径与少量推理参数变化,上层绘制、统计与导出逻辑完全复用,从而保证"算法对比"和"系统功能"两条线都能稳定迭代。

在运行时链路上,系统以"输入源---预处理---推理---后处理---统计---界面更新"为主干闭环:输入源支持摄像头、视频、图片与文件夹批处理,预处理阶段完成解码、等比例缩放(letterbox)与归一化;推理阶段调用 YOLO 模型输出候选框;后处理阶段执行置信度筛选、NMS 与类别映射,并将结果聚合为类别计数、ROI 统计与可选热力分析。为保证交互流畅,推理与解码通常运行在独立线程(或任务队列)中,UI 线程只负责渲染与控件响应,通过 Qt 信号槽进行跨层通信,避免高负载推理阻塞界面刷新;同时,阈值(Conf/IoU)、输入源切换、播放控制与结果保存等操作被设计为可中断的状态迁移,确保用户在实时视频流中调整参数时系统仍能保持稳定帧率与可预期延迟。
面向落地使用,系统在输出侧提供"可视化结果 + 结构化结果"的双通道:可视化结果包括检测框、类别与置信度叠加显示,以及按类别的实时统计;结构化结果支持导出图片/CSV/JSON,并可写入 SQLite 形成按用户、时间、模型与阈值索引的历史记录,方便回溯与对比。此外,主题与界面外观的可配置能力(浅/深色、主色调、字体缩放、图标与背景)被纳入用户配置表,登录后自动恢复,既提升演示一致性,也减少重复设置成本。
图 系统流程图

图注:系统从初始化到多源输入,完成预处理、推理与界面联动,并通过交互形成闭环。
6.2 登录与账户管理

登录与账户管理被设计为主检测流程的"前置门禁与个性化上下文载入":注册将用户信息写入 SQLite 并完成基础校验,登录通过后立即加载该用户的主题风格、阈值参数与最近使用模型,同时挂接历史检测记录索引,使得进入主界面时即可在同一套交互逻辑下完成"多源输入推理---结果统计---保存导出---入库检索"的闭环;当用户修改头像、密码或偏好设置时,变更被同步写回数据库并在下次登录自动恢复,从而把"可复现的模型实验对比"和"可持续的日常使用体验"统一到同一套账户体系与数据持久化机制之中。

7. 下载链接
若您想获得博文中涉及的实现完整全部资源文件 (包括测试图片、视频,py, UI文件,训练数据集、训练代码、界面代码等),这里见可参考博客与视频,已将所有涉及的文件同时打包到里面,点击即可运行,完整文件截图如下:

完整资源中包含数据集及训练代码,环境配置与界面中文字、图片、logo等的修改方法请见视频,项目完整文件请见项目介绍及功能演示视频处给出:➷➷➷
项目介绍地址: https://my.feishu.cn/wiki/HQuZwBkNgiCzZvkSwwbc6NOTnJd
功能效果展示视频:YOLOv5至YOLOv12升级:植物叶片病害识别系统的设计与实现(完整代码+界面+数据集项目)
环境配置博客教程:(1)Pycharm软件安装教程;(2)Anaconda软件安装教程;(3)Python环境配置教程;
或者环境配置视频教程:(1)Pycharm软件安装教程;(2)Anaconda软件安装教程;(3)Python环境依赖配置教程
数据集标注教程(如需自行标注数据):数据标注合集
8. 参考文献(GB/T 7714)
1 HUGHES D P, SALATHÉ M. An open access repository of images on plant health to enable the development of mobile disease diagnostics[EB/OL]. arXiv:1511.08060, 2015. DOI:10.48550/arXiv.1511.08060.
2 邵明月, 张建华, 冯全, 等. 深度学习在植物叶部病害检测与识别的研究进展[J]. 智慧农业(中英文), 2022, 4(1): 29-46. DOI:10.12133/j.smartag.SA202202005.
3 UPADHYAY A, CHANDEL N S, SINGH K P, et al. Deep learning and computer vision in plant disease detection: a comprehensive review of techniques, models, and trends in precision agriculture[J]. Artificial Intelligence Review, 2025, 58: 92. DOI:10.1007/s10462-024-11100-x.
4 SINGH D, JAIN N, JAIN P, et al. PlantDoc: a dataset for visual plant disease detection[C]//Proceedings of the ACM India Joint International Conference on Data Science and Management of Data (CoDS-COMAD). New York: ACM, 2020. DOI:10.1145/3371158.3371196.
5 文斌, 曹仁轩, 杨启良, 等. 改进YOLOv3算法检测三七叶片病害[J]. 农业工程学报, 2022, 38(3): 164-172. DOI:10.11975/j.issn.1002-6819.2022.03.019.
6 李仁杰, 宋涛, 高婕, 等. 基于改进YOLOv5的自然环境下番茄患病叶片检测模型[J]. 江苏农业学报, 2024(6): 1028-1037. DOI:10.3969/j.issn.1000-4440.2024.06.009.
7\] 杨佳昊, 左昊轩, 黄祺成, 等. 基于YOLO v5s的作物叶片病害检测模型轻量化方法\[J\]. 农业机械学报, 2023, 54(S1): 222-229. DOI:10.6041/j.issn.1000-1298.2023.S1.023. \[8\] WANG H, NGUYEN T-H, NGUYEN T N, et al. PD-TR: End-to-end plant diseases detection using a transformer\[J\]. Computers and Electronics in Agriculture, 2024: 109123. DOI:10.1016/j.compag.2024.109123. \[9\] FU S, LIU C, ZHU Z, et al. Enhanced YOLOv11 model for plant leaf disease detection in complex environments\[J\]. Journal of Biosystems Engineering, 2025. DOI:10.1007/s42853-025-00276-x. \[10\] LI C, LI L, JIANG H, et al. YOLOv6: a single-stage object detection framework for industrial applications\[EB/OL\]. arXiv:2209.02976, 2022. DOI:10.48550/arXiv.2209.02976. \[11\] WANG C-Y, BOCHKOVSKIY A, LIAO H-Y M. YOLOv7: Trainable bag-of-freebies sets new state-of-the-art for real-time object detectors\[C\]//Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition (CVPR). 2023: 7464-7475. \[12\] SAPKOTA R, KARKEE M. Ultralytics YOLO evolution: an overview of YOLO26, YOLO11, YOLOv8 and YOLOv5 object detectors for computer vision and pattern recognition\[EB/OL\]. arXiv:2510.09653, 2025. \[13\] WANG C-Y, YEH I-H, LIAO H-Y M. YOLOv9: Learning what you want to learn using programmable gradient information\[C\]//Computer Vision -- ECCV 2024. Lecture Notes in Computer Science, vol 15089. Cham: Springer, 2024: 1-21. DOI:10.1007/978-3-031-72751-1_1. \[14\] WANG A, CHEN H, LI S, et al. YOLOv10: Real-time end-to-end object detection\[C\]//Advances in Neural Information Processing Systems (NeurIPS). 2024. DOI:10.48550/arXiv.2405.14458. \[15\] TIAN Y, YE Q, DOERMANN D. YOLOv12: Attention-Centric Real-Time Object Detectors\[EB/OL\]. arXiv:2502.12524, 2025.