YOLOv5至YOLOv12升级:田间杂草检测系统的设计与实现(完整代码+界面+数据集项目)

摘要 :田间杂草的快速、稳定检测是精准除草与变量施药的关键环节,直接影响农药减量、作业效率与设备闭环控制的可靠性。围绕"复杂光照、遮挡混杂、尺度变化大与小目标密集"等真实田间场景难题,博主在本项目中构建了一套面向工程落地的田间杂草检测系统 :以 YOLOv5 至 YOLOv12 为主线,统一训练与推理范式,对多代检测器在同一数据集上的精度与速度进行对比评估,并给出可复现实验配置。系统侧基于 Python 3.12 与 PySide6 完成桌面端可视化平台开发,支持图片/视频/摄像头多源输入,提供置信度与 IoU 阈值调节、检测框与类别统计、结果可视化与热力图分析 等功能,同时引入 SQLite 实现注册登录、用户配置持久化与检测记录的查询、导出与管理。为保证可复用性与可扩展性,项目同步整理并开源完整代码、界面工程与田间杂草标注数据集,形成从数据构建、训练评估到部署交互的一体化实现方案,为农业视觉检测与智能除草应用提供可直接复用的工程参考。


文章目录

  • [1. 前言综述](#1. 前言综述)
  • [2. 数据集介绍](#2. 数据集介绍)
  • [3. 模型设计与实现](#3. 模型设计与实现)
  • [4. 训练策略与模型优化](#4. 训练策略与模型优化)
  • [5. 实验与结果分析](#5. 实验与结果分析)
  • [6. 系统设计与实现](#6. 系统设计与实现)
    • [6.1 系统设计思路](#6.1 系统设计思路)
    • [6.2 登录与账户管理](#6.2 登录与账户管理)
  • [7. 下载链接](#7. 下载链接)
  • [8. 参考文献(GB/T 7714)](#8. 参考文献(GB/T 7714))

➷点击跳转至文末所有涉及的完整代码文件下载页☇


1. 前言综述

田间杂草与作物在空间上高度混杂,且生长阶段、品种差异、冠层遮挡与土壤背景共同造成强非平稳视觉分布,使得"检测---定位---定量---处方执行"的闭环能力成为精准农业从理念走向装备落地的关键环节之一1。在开放农田场景中,杂草识别不仅要求模型在多时段、强光照变化与复杂纹理背景下保持稳定,还要求推理链路在移动平台上具备足够低的端到端时延,从而支撑按株或按斑块的变量喷施与机械除草等作业方式2。 (Researchr)

从国内外研究进展看,航空平台(无人机)与地面平台(巡检机器人/喷雾机器人)两条路线正在并行演化:前者强调大范围、快速建图与作业处方生成,通常依赖正射拼接或多尺度航拍影像完成杂草分布估计3;后者强调"边走边识别边执行",需要把相机采集、目标检测、定位与执行机构控制整合为可重复评估的工程流水线,尤其要把推理速度扩展为"全链路循环时间"来审视系统效率4。这种趋势也促使算法研究从单纯追求离线精度,转向兼顾鲁棒性、可部署性与可维护性。 (Bohrium)

国内在面向大田杂草检测的轻量化与鲁棒性方面也积累了较多实践型工作,例如通过改进数据增强、引入注意力机制、调整框回归损失等手段提升复杂背景下的检测精度与实时性,为智能除草装备提供可参考的工程范式[5];同时,围绕苗期蔬菜等更"密集、小目标、易遮挡"的作业场景,也出现了将改进检测网络与移动机器人平台结合的识别方法研究,强调在自然光照与行进振动条件下的稳定识别[6]。

在方法谱系上,早期田间视觉多依赖颜色指数与阈值分割来区分绿色植被与非植被背景,这类方法计算开销低、无需标注数据,但对光照、残茬与土壤颜色变化敏感,且难以进一步完成"作物---杂草---杂草种类"的细粒度判别[7]。随着公开数据集与算力条件改善,面向自然环境杂草识别的多类别数据集推动了深度模型在真实田间纹理与遮挡条件下的可复现评测,并揭示了跨地点泛化与类间相似性带来的困难[8]。在检测框架方面,两阶段检测器以区域提议机制获得更强的定位能力,但通常难以满足移动端实时性约束[9];一阶段检测器将检测建模为密集回归与分类问题,在速度与精度之间形成更适合田间在线作业的折中,因此逐渐成为田间杂草检测系统的主流选择[10]。 (Penn State)

相关研究对比表(按算法范式与任务侧重点归纳)

研究范式/代表工作 典型数据与采集 优点(与田间任务的匹配点) 局限(落地时的主要风险)
颜色指数与阈值分割[7] 近景相机,土壤/残茬背景 计算量小,适合低算力硬件做"植被/非植被"粗分割 对光照与背景极敏感,难支持作物-杂草细分与密集遮挡
多类别真实场景数据集驱动的识别评测[8] 多地点、自然环境采集(公开数据集) 促进跨地点泛化与鲁棒性研究,便于复现实验 类间相似与长尾分布突出,标注成本高、域移更明显
两阶段通用检测器[9] 通用检测数据或自建标注集 定位精度高,小目标可受益 推理开销较大,端到端时延不利于移动平台闭环作业
工程化 YOLO 改进用于大田杂草检测[5] 自建大田图像与杂草标注 可在复杂背景下兼顾精度与速度,改进点易复现 改进往往与数据分布强耦合,跨地区/跨季节迁移仍需验证
面向机器人作业场景的检测识别方法[6] 苗期/行间近景视频或图像 更关注振动、遮挡与在线处理等"系统级约束" 真实作业工况更复杂,评价指标需覆盖闭环控制与漏检代价
NMS-free 的端到端实时检测路线[14] 通用检测基准与工程部署 有利于减少后处理开销,改善推理链路延迟与一致性 训练与匹配策略更敏感,迁移到田间小目标需重新校准
注意力驱动的新一代实时检测器[15] 通用基准与高效注意力结构 强化全局建模能力,有潜力提升遮挡与形态变化下的可分性 注意力结构的硬件友好性与推理稳定性需结合部署平台验证

围绕 YOLO 系列的迭代,工程社区首先在 YOLOv5 上形成了成熟的训练、导出与部署生态,使其成为田间在线检测项目常用的强基线之一[11];随后,YOLOv7 从训练可增益模块与结构设计角度系统化提升实时检测器的精度上限,并强调在不增加推理开销前提下改进训练过程[12]。进一步地,YOLOv9 引入可编程梯度信息与新的网络结构以缓解深层网络信息损失问题,强化不同尺度模型的参数利用效率[13];YOLOv10 则以端到端与 NMS-free 的目标为牵引,对训练分配与结构冗余做更整体的效率审视,为低延迟部署提供更直接的路径[14];最新的 YOLOv12 将注意力机制置于实时检测器的核心设计中,试图在速度约束下获得更强的全局表征能力,从而改善复杂遮挡与形态变化下的检测性能[15]。 (Zenodo)

尽管算法与系统均在快速演进,田间杂草检测在工程落地上仍面临若干共性难点:其一,自然光照与天气导致的显著域移,使得同一地块在不同时段、不同季节呈现出截然不同的颜色与纹理统计;其二,苗期小目标与叶片交叠导致的遮挡,使得检测框的尺度分布偏向长尾并放大定位误差对作业效果的影响;其三,在线作业要求"稳定的低时延"而不仅是平均帧率,这会把数据读取、预处理、推理与后处理中的任何波动放大为执行机构响应不确定性;其四,标注成本与标签噪声限制了大规模高质量数据的获得,进一步加剧跨区域泛化困难。

基于上述背景,博主在本文中聚焦"YOLOv5 至 YOLOv12 的升级脉络如何服务田间杂草检测系统落地"这一主线:一方面在同一任务与自建数据集上系统对比 YOLOv5--YOLOv12 的检测效果与速度特性,并给出可复现实验设置;另一方面面向真实使用流程实现完整的 PySide6 图形界面与推理闭环,支持图片/视频/摄像头输入与结果保存导出;同时整理并开源数据集构建、标注、预处理与划分流程,配套提供完整代码与工程化运行说明,便于读者复现实验并二次开发。

主要功能演示:

(1)启动与登录:系统启动后首先进入登录界面,用户可选择注册新账号或使用已有账号登录;登录成功后自动加载该用户的历史检测记录与个性化配置(阈值、上次选用模型、主题方案等),并切换至主检测窗口以保证交互连贯与状态可追踪。

启动与登录界面图

(2)多源输入与实时检测(摄像头/视频/图片/文件夹):主界面提供四类输入入口,分别对应实时摄像头流、离线视频文件、单张图片以及图片文件夹批处理;系统在统一的推理管线中完成帧获取、尺寸归一化、YOLO 推理与后处理,并在界面上实时叠加检测框、类别名称与置信度,同时同步输出类别计数与结果列表,便于快速复核与导出。

多源输入与实时检测演示图

(3)模型选择与对比演示:界面内置 YOLOv5--YOLOv12 多模型权重切换入口,支持在同一输入源、同一阈值设置下进行"即时切换---即时观察"的对比;为便于客观比较,系统会同时记录每次推理的耗时、帧率(或单帧延迟)与关键指标统计,并在结果面板中按模型归档,方便博主做横向对照与复现实验结论。

模型选择与对比演示图

(4)主题修改功能:系统新增主题管理模块,支持浅色/深色等预设主题一键切换,并允许用户对主色调、背景图、图标风格与字号进行快速配置;主题配置与账号绑定并持久化保存,重启后自动恢复,确保在不同设备与不同光照环境下获得一致且舒适的可视化体验。

主题修改功能演示图


2. 数据集介绍

本项目面向田间杂草目标检测任务,数据集采用单类别标注策略,类别名为 weeds,在界面与报告中统一映射为中文"杂草"。数据集共包含 2,486 幅图像,其中 1,661 幅用于训练,580 幅用于验证模型的泛化能力,245 幅作为独立测试集;该划分既保证了训练阶段的样本覆盖,又为后续不同 YOLO 版本(YOLOv5--YOLOv12)的横向对比提供了相对稳定的评测基准。根据标签统计可观察到,目标框中心在图像平面内分布较为分散,未出现明显的中心偏置;框的宽高主要集中在较小区间并存在一定长尾,这与田间杂草在自然场景中呈现"小目标、形态多变、边界不规则"的视觉特征一致。老思在数据整理阶段将标注统一整理为 YOLO 归一化坐标格式,并保持图像与标签的一致性;在训练时通常会将输入统一缩放/填充至方形尺寸(如 640 × 640 640\times640 640×640,具体可在训练配置中调整),并将数据增强限制在训练集内以避免评估集泄漏,从而确保验证与测试结果能够真实反映跨光照、遮挡与背景变化下的鲁棒性表现。

python 复制代码
Chinese_name = {'weeds': "杂草"}

从工程可复现角度,数据集遵循 YOLO 系列常用目录组织方式(images/train|val|testlabels/train|val|test 对应),每张图像均配套一个同名 txt 标签文件,标签行格式为 class x_center y_center width height,其中坐标均为相对图像宽高的归一化值。由于任务为单类检测,类别分布不存在多类别不均衡问题,系统侧的统计面板可直接输出"杂草"实例计数与置信度分布,便于在不同模型之间对漏检与误检进行快速对照;同时,单类设定也更适合把研究重点聚焦在复杂田间背景下的定位精度、召回稳定性与实时推理效率等核心指标上。

📊 数据集规格说明 (Dataset Specification)

维度 参数项 详细数据
基础信息 标注软件 Roboflow (Labeling)
标注格式 YOLO TXT (Normalized)
数量统计 训练集 (Train) 1,661 张 (66.8%)
验证集 (Val) 580 张 (23.3%)
测试集 (Test) 245 张 (9.9%)
总计 (Total) 2,486 张
类别清单 Class ID: 0 weeds(杂草)
图像规格 输入尺寸 640 * 640(训练时统一缩放/填充,可配置)
数据来源 田间自然场景图像(单类杂草检测)

3. 模型设计与实现

面向田间杂草检测这一类"自然光照强波动、背景纹理高相似、目标尺度偏小且形态不规则"的任务,模型设计需要在两条约束之间取得可控平衡:一方面,必须具备足够强的表征能力来区分杂草与土壤、残茬、作物叶片等高频干扰纹理;另一方面,系统部署通常运行在边缘 GPU 或工控机上,推理时延的波动会直接传导到实时检测与交互体验。基于此,博主在系统默认配置中选择 YOLOv12n 作为主模型:其核心思路是将注意力机制从"附加模块"提升为架构中心,通过更高效的注意力设计,在接近传统 CNN 系列的实时性约束下获取更强的全局建模能力。YOLOv12 技术报告与 Ultralytics 文档给出了关键实现动机与结构要点,例如使用 Area Attention 降低注意力计算代价、引入 R-ELAN 改善特征聚合与优化稳定性,并结合 FlashAttention 缓解注意力的显存访问瓶颈,从而在实时检测场景中实现更优的时延---精度折中。

从工程实现上,本系统把 YOLOv5--YOLOv12 统一封装为同一套"预处理---推理---后处理"接口,以保证不同版本模型在同一数据集、同一阈值策略与同一可视化链路下可直接对比。YOLO 家族的共性可以概括为三段式结构:Backbone 负责逐级下采样提取语义特征;Neck 通过 FPN/PAN 思想完成跨层融合,增强多尺度表达;Head 输出分类与定位相关张量并完成解码。以经典的 YOLOv5 为例,Ultralytics 给出的结构示意图清晰展示了其 CSPDarknet 系列 Backbone、SPPF 与 PANet Neck 以及多尺度检测 Head 的组合方式,便于读者理解"多尺度特征如何被逐级融合并用于检测"的主线逻辑。(Ultralytics Docs) 在此基础上,YOLOv12 的关键差异不在于抛弃卷积,而在于将注意力模块以更节制、更硬件友好的方式注入主干与特征聚合过程,使模型在复杂遮挡、形态变化显著的田间场景中更容易形成稳定的全局判别线索;Ultralytics 文档所展示的热力图对比也从可视化侧面反映了 YOLOv12 在目标感知清晰度方面的改善趋势。

为了把检测任务建模为可端到端优化的学习问题,系统采用 YOLO 系列通用的多任务损失设计,将定位、分类与目标置信度统一纳入同一优化目标。其基本形式可以写为
L = λ box L ∗ box + λ ∗ cls L ∗ cls + λ ∗ obj L ∗ obj . \mathcal{L}=\lambda_{\text{box}}\mathcal{L}*{\text{box}}+\lambda*{\text{cls}}\mathcal{L}*{\text{cls}}+\lambda*{\text{obj}}\mathcal{L}*{\text{obj}}. L=λboxL∗box+λ∗clsL∗cls+λ∗objL∗obj.

其中, L ∗ cls \mathcal{L}*{\text{cls}} L∗cls 与 L ∗ obj \mathcal{L}*{\text{obj}} L∗obj 常用二元交叉熵(BCE)或其变体刻画类别与目标存在性; L ∗ box \mathcal{L}*{\text{box}} L∗box 则以 IoU 家族损失作为核心(例如 CIoU/DIoU 等),在单纯 IoU 的基础上进一步约束中心距离与长宽比一致性。以 CIoU 为例,其形式可写为
L CIoU = 1 − IoU + ρ 2 ( b , b g t ) c 2 + α v , \mathcal{L}_{\text{CIoU}} = 1-\text{IoU}+\frac{\rho^2(\mathbf{b},\mathbf{b}^{gt})}{c^2}+\alpha v, LCIoU=1−IoU+c2ρ2(b,bgt)+αv,

其中 ρ ( ⋅ ) \rho(\cdot) ρ(⋅) 表示预测框与真值框中心点的欧氏距离, c c c 为外接框对角线长度, v v v 刻画宽高比差异, α \alpha α 为相应的权衡系数。对于本项目的单类别杂草检测(Class ID=0),分类分支输出维度被自然压缩为单通道,这在一定程度上降低了类别判别的学习难度,使训练更聚焦于"小目标定位稳定性"与"复杂背景下的召回保持"。

在代码实现层面,博主采用 Ultralytics 的统一接口完成 YOLOv5--YOLOv12 的加载与推理,使 GUI 侧仅需感知"当前权重路径与模型名",即可完成模型切换。推理时将输入图像缩放/填充到训练设定分辨率(如 640 × 640 640\times640 640×640),模型输出经置信度阈值与 IoU 阈值筛选后得到最终检测框集合,并回传至 PySide6 界面渲染层完成框绘制、类别计数与结果表格更新。下方给出核心推理接口的典型写法(同一接口可复用于图片、视频帧与摄像头流),其工程意义在于将不同 YOLO 版本的差异尽量封装在模型内部,避免对上层交互逻辑造成侵入式改动:

python 复制代码
from ultralytics import YOLO

class Detector:
    def __init__(self, weights: str, conf: float = 0.25, iou: float = 0.45):
        self.model = YOLO(weights)   # yolov5*.pt / yolov8*.pt / yolov12*.pt 等
        self.conf = conf
        self.iou = iou

    def infer(self, frame_bgr):
        # Ultralytics 接口内部完成预处理与尺度对齐
        results = self.model.predict(
            source=frame_bgr,
            conf=self.conf,
            iou=self.iou,
            verbose=False
        )
        # results[0].boxes.xyxy / .conf / .cls 可用于后处理与界面渲染
        return results[0]

4. 训练策略与模型优化

田间杂草检测的训练过程,本质上是在强域移与小目标长尾分布下,寻求"更稳的召回"与"更小的时延波动"之间的可控折中。为保证 YOLOv5--YOLOv12 的横向对比具有可复现性,老思采用统一的数据划分(Train/Val/Test 固定不变)与统一训练范式:同一输入分辨率、同一增强策略、同一评估脚本与同一早停规则,避免因训练细节差异掩盖模型结构差异。训练环境建议固定 CUDA、PyTorch 与 Ultralytics 版本,并设置随机种子与确定性算子策略,以降低多次运行带来的方差;硬件侧以 RTX 4090 为主,配合 AMP(混合精度)与数据缓存,可显著改善吞吐与显存利用率,使多模型对比的时间成本可控。

迁移学习是本任务获得稳定收敛的关键。杂草虽然属于特定领域目标,但目标的边缘、纹理与局部形态仍能从通用数据(如 COCO)预训练中受益,因此默认启用 pretrained=true,并对不同版本模型加载各自对应尺度的预训练权重。训练初期可采取"先稳后放"的微调策略:先以较小学习率在检测头与高层语义特征上快速适配田间纹理分布,待验证集指标进入稳定上升区间后再进行全网络联合微调;这一做法在小数据量或背景噪声较大的农田场景中,通常能降低梯度震荡与早期过拟合风险。学习率调度采用预热结合余弦退火的方式更利于收敛稳定性,其形式可写为
η t = η min ⁡ + 1 2 ( η 0 − η min ⁡ ) ( 1 + cos ⁡ ( π t T ) ) , η min ⁡ = lrf ⋅ η 0 , \eta_t=\eta_{\min}+\frac{1}{2}\left(\eta_0-\eta_{\min}\right)\left(1+\cos\left(\frac{\pi t}{T}\right)\right),\quad \eta_{\min}=\text{lrf}\cdot \eta_0, ηt=ηmin+21(η0−ηmin)(1+cos(Tπt)),ηmin=lrf⋅η0,

其中 η 0 \eta_0 η0 为初始学习率、 T T T 为总训练步数, η min ⁡ \eta_{\min} ηmin 由 lrf 控制学习率下界。结合 EMA(指数滑动平均)权重、合理的权重衰减与早停策略,可在验证集上获得更平滑的 mAP 曲线,并减少"最后若干轮指标抖动"对模型选择的干扰。

数据增强与训练后期的策略收敛同样决定了小目标与遮挡样本的有效学习。田间图像中杂草目标往往面积占比低且分布离散,因此 Mosaic 等拼接类增强有利于提升模型对多目标共现与尺度变化的适应;但在训练后期,过强的几何扰动可能导致定位精细化不足,因此采用 close_mosaic=10 在收敛阶段关闭 Mosaic,使模型更专注于真实尺度与真实边界的回归精修。推理侧的优化则围绕"稳定低延迟"展开:导出 ONNX/TensorRT 时可开启 FP16 以降低延迟;对摄像头流推理建议使用固定输入尺寸与 batch=1 的流水处理,并将置信度阈值与 IoU 阈值作为界面可调参数,使系统在"漏检代价更敏感"或"误检更不容忍"的不同作业需求下快速切换工作点。

为便于复现实验,本文默认训练超参数如下(若你的实际配置不同,可在此表基础上替换数值即可):

名称 作用(简述) 默认值
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
GPU 训练硬件 RTX 4090

5. 实验与结果分析

本节围绕田间杂草单类检测任务,在固定数据划分(Train 1661 / Val 580 / Test 245)与统一训练范式(输入尺寸 640 × 640 640\times640 640×640、epochs=120、预训练权重初始化、同一增强与同一评估脚本)的前提下,对 YOLOv5--YOLOv12 多版本模型进行横向对比。为同时覆盖"轻量实时"与"精度上限"两类需求,实验按模型尺度划分为 n_type(nano/轻量)s_type(small/中轻量) 两组;其中,推理时延统计来自 Ultralytics 的预处理/推理/后处理计时(表中给出总时延),并在同一硬件上完成测速。需要说明的是,你提供的测速记录中包含设备信息 NVIDIA GeForce RTX 3070 Laptop GPU(8GB),因此表中时延更适合作为"相对比较"的依据;若部署到 RTX 4090 或边缘平台,绝对数值会变化,但排序趋势通常更稳定。

评价指标采用目标检测通用的 Precision、Recall、F1 以及 COCO 风格的 mAP。对单类任务,Precision 与 Recall 定义为 P = T P T P + F P P=\frac{TP}{TP+FP} P=TP+FPTP、 R = T P T P + F N R=\frac{TP}{TP+FN} R=TP+FNTP,并以 F 1 = 2 P R P + R F1=\frac{2PR}{P+R} F1=P+R2PR 综合刻画漏检与误检的平衡;mAP@0.5(记为 mAP50)反映较宽松的定位容忍度,而 mAP@0.5:0.95(记为 mAP50-95)在多阈值下更强调框回归质量,通常对小目标、边界模糊与遮挡更敏感,因此其数值显著低于 mAP50 属于田间场景的常见现象。系统侧为了服务实际作业,一般更关注"在可接受误检下维持召回",因此除 mAP 外,还需要结合阈值扫描曲线选择更合适的置信度工作点。

图5-1 训练过程指标曲线

如图5-1所示,训练阶段的 box/cls/dfl 等损失随 epoch 增加呈单调下降趋势,且验证集损失在快速下降后进入平台期;与之对应,Precision 与 Recall 在前 10--20 个 epoch 内快速提升并逐步饱和,mAP50 在中期后趋于稳定,仅有小幅震荡。这种"早期快速学习、后期缓慢精修"的曲线形态与本数据集的单类设定、小目标占比较高及背景纹理复杂的特点一致:模型较早学会"杂草存在性"的粗判别,但要进一步提高 IoU 意义下的精确定位(尤其是 mAP50-95)则更依赖后期的边界回归精修与增强策略收敛。

图5-2 F1-Confidence 曲线

图5-3 Precision--Recall 曲线

图5-2 给出了置信度阈值的扫描结果:当阈值从 0 增大时,低质量候选框被逐步剔除,Precision 提升带动 F1 快速上升;但当阈值超过约 0.6 后,Recall 下降成为主导因素,F1 进入明显下滑区间。曲线峰值出现在 conf≈0.262(F1≈0.76),这为系统默认阈值提供了直接依据:若以"检测尽量全、允许少量误检"为策略,可在 0.25--0.30 区间选取工作点;若更强调"误检更少",则应提高阈值并接受召回损失。与之对应,图5-3 的 PR 曲线显示在高召回段 Precision 下降加速,说明田间背景下存在不少"近似杂草纹理"的困难负样本,推高召回往往会以误检快速累积为代价,这也是实际喷施/除草系统必须结合作业容错去设定阈值的原因。

图5-4 n_type 模型对比

表5-1 n_type(轻量)模型综合对比(单位:Params 为 M,FLOPs 为 G,TotalTime 为 ms)

模型 Params FLOPs TotalTime F1 mAP50 mAP50-95
YOLOv5nu 2.6 7.7 10.94 0.7582 0.7796 0.4085
YOLOv6n 4.3 11.1 10.34 0.7490 0.7777 0.4097
YOLOv7-tiny 6.2 13.8 21.08 0.7600 0.7814 0.3838
YOLOv8n 3.2 8.7 10.17 0.7522 0.7855 0.4118
YOLOv9t 2.0 7.7 19.67 0.7504 0.7853 0.4092
YOLOv10n 2.3 6.7 13.95 0.7415 0.7650 0.4025
YOLOv11n 2.6 6.5 12.97 0.7586 0.7903 0.4158
YOLOv12n 2.6 6.5 15.75 0.7645 0.7945 0.4159

从图5-4与表5-1可以看出,n_type 组的 mAP50 主要分布在 0.765--0.794 区间,整体差距并不夸张,但迭代方向具有规律性:YOLOv11n 与 YOLOv12n 在 mAP50 与 mAP50-95 上同时达到组内最优(YOLOv12n:mAP50=0.7945,mAP50-95=0.4159),且 F1 也取得最高值 0.7645,说明在单类杂草检测中,新一代结构对"检得准"和"检得全"的平衡仍有稳定收益。代价在于时延上升:例如 YOLOv12n 相比 YOLOv8n 的 mAP50 提升约 0.009、F1 提升约 0.012,但总时延增加约 5.6ms(对应帧率从约 98fps 降至约 63fps 的量级),因此若部署场景对实时性极其敏感(如高速行进平台),YOLOv8n 往往更具性价比;若更强调漏检成本(如对杂草漏喷容忍度低),YOLOv11n/YOLOv12n 更值得作为默认推理权重。另一方面,YOLOv10n 在该数据集上的 mAP50 明显偏低(0.7650),这提示"端到端/NMS-free 思路带来的收益"并非在所有任务分布下都能直接兑现,尤其当目标边界不规则且小目标占比较高时,训练匹配与阈值策略的细节更容易影响最终 AP。

图5-5 n_type mAP50 收敛曲线

结合图5-5,n_type 的差异主要体现在两个方面:其一,收敛速度整体较快,说明轻量模型对单类任务的表示能力已足够覆盖"杂草/背景"的基本判别;其二,模型之间真正拉开差距的往往是中高召回区间的 Precision 保持能力,即当系统试图把 Recall 推高时,谁能更少引入误检,谁就更容易取得更大的 PR 面积与更高的 mAP。YOLOv11n/YOLOv12n 的优势更多表现为这种"高召回下的误检抑制",对实际作业场景更关键,因为漏检将直接导致漏喷或漏除,而误检则对应冗余喷施,二者代价并不对称。

图5-6 s_type 模型对比

表5-2 s_type(中轻量)模型综合对比(单位:Params 为 M,FLOPs 为 G,TotalTime 为 ms)

模型 Params FLOPs TotalTime F1 mAP50 mAP50-95
YOLOv5su 9.1 24.0 12.24 0.7475 0.7801 0.4114
YOLOv6s 17.2 44.2 12.26 0.7408 0.7763 0.3960
YOLOv7 36.9 104.7 29.52 0.7023 0.6528 0.3093
YOLOv8s 11.2 28.6 11.39 0.7575 0.7883 0.4115
YOLOv9s 7.2 26.7 22.17 0.7496 0.7830 0.4137
YOLOv10s 7.2 21.6 14.19 0.7542 0.7748 0.4071
YOLOv11s 9.4 21.5 13.47 0.7519 0.7868 0.4116
YOLOv12s 9.3 21.4 16.74 0.7565 0.7910 0.4125

s_type 组的整体结论与 n_type 相似:主流模型的 mAP50 聚集在 0.774--0.791 区间,YOLOv12s 达到最高 mAP50=0.7910,而 YOLOv8s 取得最高 F1=0.7575 且总时延最低(约 11.39ms),因此若从"实时交互 + 稳定效果"的系统落地角度,YOLOv8s 往往是更均衡的默认选项;若希望在不显著扩大参数规模的前提下进一步抬升 mAP50,YOLOv12s 的增益更明确(相对 YOLOv11s 的 mAP50 提升约 0.004),但需要支付约 3ms 级别的额外时延。表5-2中 YOLOv7 出现显著离群(mAP50=0.6528),结合其参数量与 FLOPs 远高于同组模型却未带来收益,可以合理推断:在本数据规模与默认训练策略下,更大的容量并未转化为更强的泛化,反而可能因优化难度、增强策略不匹配或对小目标回归不稳定导致 Recall 明显偏低(0.6392),这类现象在"田间高噪声纹理 + 单类检测"的设定下并不罕见,也提示工程对比必须坚持同一训练范式与多次复核,避免仅以模型规模做先验判断。

图5-7 s_type 平均 PR 曲线


6. 系统设计与实现

6.1 系统设计思路

本系统面向田间杂草实时检测的工程落地需求,采用 Python 3.12 作为运行时基础,以 PySide6 完成交互界面与事件驱动逻辑,并以 SQLite 作为轻量级本地持久化载体,实现"检测即服务"的桌面端闭环。整体设计遵循分层与低耦合原则:界面层负责组件渲染与用户交互呈现,控制层负责状态机与业务编排,处理层负责模型推理与后处理;三者之间通过 Qt 的信号-槽机制进行单向数据流通信,从而避免跨层直接访问造成的依赖扩散,使模型升级(YOLOv5--YOLOv12 权重切换)与 UI 迭代(主题/布局/控件)能够相对独立演进。

在类与职责划分上,主窗口 MainWindow 作为控制中枢,持有输入源管理器与推理调度器,负责响应按钮、菜单与快捷键等槽函数,并维护当前模型、阈值、主题、播放状态等全局状态;Ui_MainWindow 仅承载由 Qt Designer 生成或手写的界面布局与控件引用,避免在 UI 文件中引入业务逻辑;Detector 封装模型加载、推理与后处理(置信度阈值、IoU 阈值、NMS/端到端输出解码、计数统计等),对上层暴露统一的 infer(frame) 接口。为保证视频/摄像头的流畅性,推理任务通常放置于 QThreadQRunnable/QThreadPool 执行,推理完成后通过信号回传检测框、类别与耗时信息,主线程仅负责绘制与表格刷新,从而避免阻塞事件循环。

数据与配置的持久化以 SQLite 为核心,用户体系(注册/登录/修改资料)与检测结果(时间戳、输入源、模型名、阈值、检测数量、可选的结果路径)在同一数据库中分表管理,并与"主题配置、上次选用模型、默认阈值"等偏好设置绑定到用户维度。这样一来,系统在启动后能够做到"登录即恢复工作现场":自动加载上次的模型与阈值、恢复主题与布局偏好,并在结果页提供按用户隔离的历史检索与导出能力,使演示、复现与日常使用都更稳定可控。

图 系统流程图

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

6.2 登录与账户管理

登录与账户管理在本系统中并非独立"附属功能",而是将检测流程工程化与可复现化的关键支点:登录阶段完成用户身份校验后,系统立即从 SQLite 中恢复该用户的主题样式、默认阈值、上次选择的 YOLO 权重与历史检测记录,使用户进入主界面时即可在一致的交互环境中继续工作;注册流程则以数据库写入为落点,为后续的个性化空间隔离提供结构化基础。进入主界面后,资料修改(头像、密码)与偏好更新(主题、阈值、模型默认项)会被同步持久化,保证重启后状态可恢复;而注销/切换账号通过清理会话与保存必要状态,将不同用户的结果与配置严格隔离,既提升演示与多人共用场景下的可管理性,也使检测结果的统计、筛选与导出具备清晰的归属边界,从而与主检测闭环形成稳定衔接。


7. 下载链接

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

完整资源中包含数据集及训练代码,环境配置与界面中文字、图片、logo等的修改方法请见视频:➷➷➷

详细介绍文档博客: YOLOv5至YOLOv12升级:田间杂草检测系统的设计与实现(完整代码+界面+数据集项目)

环境配置博客教程:(1)Pycharm软件安装教程;(2)Anaconda软件安装教程;(3)Python环境配置教程

或者环境配置视频教程:(1)Pycharm软件安装教程;(2)Anaconda软件安装教程;(3)Python环境依赖配置教程

数据集标注教程(如需自行标注数据):数据标注合集


8. 参考文献(GB/T 7714)

1 Rai N, Zhang Y, Ram B G, et al. Applications of deep learning in precision weed management: A review[J]. Computers and Electronics in Agriculture , 2023, 206: 107698.
2 Hu K, Wang Z, Coleman G, et al. Deep learning techniques for in-crop weed recognition in large-scale grain production systems: A review[J]. Precision Agriculture , 2024, 25(1): 1-29.
3 Sandoval-Pillajo L, García-Santillán I, Pusdá-Chulde M, et al. Weed detection based on deep learning from UAV imagery: A review[J]. Smart Agricultural Technology , 2025: 101147.
4 Vijayakumar V, Ampatzidis Y, Lacerda C, et al. AI-driven real-time weed detection and robotic smart spraying for optimised performance and operational speed in vegetable production[J]. Biosystems Engineering , 2025, 259: 104288.

5\] 王宇博, 马廷淮, 陈光明. 基于改进YOLOv5算法的农田杂草检测\[J\]. *中国农机化学报* , 2023, 44(4): 167-173. \[6\] 任超, 郭福祥, 周海涛. 基于改进YOLOv5的智能除草机器人杂草识别方法\[J\]. *图学学报* , 2023, 44(2): 346-356. \[7\] Woebbecke D M, Meyer G E, Von Bargen K, et al. Color indices for weed identification under various soil, residue, and lighting conditions\[J\]. *Transactions of the ASAE* , 1995, 38(1): 259-269. \[8\] Olsen A, Konovalov D A, Philippa B, et al. DeepWeeds: A multiclass weed species image dataset for deep learning\[J\]. *Scientific Reports* , 2019, 9: 2058. \[9\] Ren S, He K, Girshick R, et al. Faster R-CNN: Towards real-time object detection with region proposal networks\[C\]//*Advances in Neural Information Processing Systems* . 2015. \[10\] Redmon J, Divvala S, Girshick R, et al. You only look once: Unified, real-time object detection\[C\]//*Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition* . 2016: 779-788. \[11\] Jocher G, Changyu L, Hogan A, et al. ultralytics/yolov5: Initial Release\[DB/OL\]. Zenodo, 2020. DOI:10.5281/zenodo.3908560. \[12\] 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* . 2023: 7464-7475. \[13\] Wang C Y, Yeh I H, Liao H Y M. YOLOv9: Learning what you want to learn using programmable gradient information\[C\]//*European Conference on Computer Vision* . 2024. \[14\] Wang A, Chen H, Liu L, et al. YOLOv10: Real-Time End-to-End Object Detection\[C\]//*Advances in Neural Information Processing Systems (NeurIPS 2024)* . 2024. \[15\] Tian Y, Ye Q, Doermann D. YOLOv12: Attention-Centric Real-Time Object Detectors\[EB/OL\]. 2025. arXiv:2502.12524.

相关推荐
YOULANSHENGMENG2 小时前
深度学习的一些基础知识
人工智能·深度学习
思绪无限2 小时前
YOLOv5至YOLOv12升级:常见车型识别系统的设计与实现(完整代码+界面+数据集项目)
人工智能·深度学习·yolo·目标检测·目标跟踪·yolov12·yolo全家桶
BFT白芙堂2 小时前
基于 AR 阻抗可视化的 Franka Research3 机械臂遥操作设计与应用
人工智能·深度学习·机器学习·机器人·ar·franka
jay神2 小时前
鸟类识别数据集 - CUB_200
人工智能·深度学习·目标检测·计算机视觉·目标跟踪·毕业设计
Daydream.V3 小时前
YOLO系列学习——YOLOv3
yolo·yolov3·yolov3网络结构·yolov3改进点
极智视界3 小时前
分类数据集 - 骨癌检测图像分类数据集下载
yolo·数据集·图像分类·算法训练·骨癌分类
QQ676580083 小时前
智慧工地物料堆积识别 工地钢筋木材图像识别 工地砖块目标检测 建筑物大理石图像识别 建筑物工地材料识别 物料堆积识别10349期
人工智能·目标检测·计算机视觉·工地物料堆积·工地钢筋木材图像识别·工地砖块目标检测·建筑物大理石图像
逻辑驱动的ken3 小时前
Java高频面试考点场景题10
java·开发语言·深度学习·求职招聘·春招
大写的z先生4 小时前
【深度学习 | 论文精读】
深度学习·算法·语言模型