摘要 :面向设施农业的精细化管理需求,构建鲁棒、可部署的草莓成熟度检测系统对于提升采摘决策效率、降低人工分拣成本与实现标准化品质评估具有重要意义。本文围绕"YOLOv5 至 YOLOv12 的算法升级与工程落地"主线,系统讲解如何以深度学习目标检测方法完成草莓果实的成熟度识别与定位,并给出可复现的完整项目资源。系统侧重解决自然场景下光照波动、遮挡重叠、果实尺度差异大、背景干扰强以及成熟度边界模糊等问题,通过对 YOLOv5--YOLOv12 共 8 个代表性版本的训练推理流程、结构演化与性能差异进行对比,形成可用于实际部署的模型选型依据。在工程实现方面,本文以 Python 3.12 与 PySide6 搭建可交互的桌面端界面,支持图片/文件夹/视频/摄像头多源输入,提供置信度与 IOU 阈值调节、检测框与类别标签可视化、结果统计与导出、历史记录管理等功能,并基于 SQLite 实现登录注册、用户配置持久化与分用户结果空间管理,保证系统在多用户场景下的可用性与可维护性。与此同时,本文完成了面向草莓成熟度任务的专用数据集构建流程,包含采集、清洗、标注、划分与增强策略说明,并提供训练与测试脚本、推理与 UI 集成代码以及项目打包与部署建议。通过系列对比实验与可视化分析(如 PR 曲线、训练曲线、混淆矩阵等),本文验证了不同 YOLO 版本在精度、速度与资源开销之间的权衡关系,为草莓成熟度检测的研究与应用提供一套可直接复用的实现范式与工程参考。
文章目录
- [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。 (Springer) 近年来农业视觉研究从传统特征工程走向深度学习驱动,形成了以目标检测为核心的感知范式,强调在自然光照波动、果实密集遮挡与多尺度成像条件下保持鲁棒性,并以可复现实验指标支撑跨工作对比2。 (ScienceDirect) 进一步地,采摘系统并非孤立的"识别模块",而是由传感、检测定位、运动规划与执行器协同构成,其中视觉子系统在数据标注规模、推理算力与实时性之间长期存在工程张力,这一点在面向采收机器人的视觉综述中被反复强调3。 (ScienceDirect)
在深度学习普及之前,草莓成熟度识别更多依赖颜色空间变换、纹理统计与浅层分类器,优点是可解释性较强、部署成本低,但对成像条件敏感且难以覆盖"转色期"等细粒度过渡状态;例如,有研究系统比较了多种颜色空间与机器学习模型在草莓多成熟阶段分类上的差异,指出中间成熟阶段往往比"未熟/过熟"更难判别4。 (Springer) 也有工作直接围绕果皮红色比例构造判别规则或学习特征,在设施环境中获得较高识别效果,但其泛化能力在跨棚、跨品种与跨光照条件下仍需依托更强的表征学习机制来保障5。 (Researchr)
随着一阶段检测器在速度与精度上的持续推进,成熟度检测逐步由"先分割/再分类"的两段式流程转向"检测与阶段分类一体化"的端到端方案,并常与注意力机制或显著性先验结合以抑制背景干扰;例如,针对柑橘多成熟等级选择性采摘,有研究在第一阶段采用 YOLOv5 完成目标定位,第二阶段引入显著图与卷积网络实现成熟度判别,从而兼顾果实检测与成熟度识别6。 (Springer) 对于枝叶遮挡显著、果实密集的树冠结构场景,基于改进 YOLO 的未熟/成熟果检测也已用于早期负载估计,显示出注意力与结构改造对密集遮挡目标识别的价值7。 (ScienceDirect)
国内在设施农业与采摘自动化需求牵引下,针对温室草莓成熟度的快速检测也形成了面向工程落地的研究脉络,例如有研究提出 YOLO-ODM 框架用于温室场景下的成熟度快速检测,强调在遮挡与小目标条件下保持推理效率8。 (TCSAE) 同期也有工作围绕"多阶段草莓"提出轻量化改进 YOLOv5s,通过轻量骨干与损失函数改造提升遮挡、小目标条件下的检测精度与帧率,体现出"移动端可部署"的应用导向9。 (TCSAE)
相关研究与技术路线对比(含代表性数据集与改进点)
| 方法谱系 | 代表性工作(与任务相关) | 数据集/场景特征(公开信息) | 优点 | 局限与启示 |
|---|---|---|---|---|
| 传统特征 + 机器学习 | 颜色空间与浅层分类器比较研究[4](https://deepwiki.com/sunsmarterjie/yolov12/2-core-architecture "Core Architecture | sunsmarterjie/yolov12 | DeepWiki") | 1210 样本、4 阶段、手工分级 |
| 规则/弱特征驱动 | 果皮红色比例设施识别5 | 设施环境、强调果皮红色比例 | 实现简单、可快速落地 | 跨品种、跨棚泛化不足;对高光与遮挡敏感 |
| 两阶段成熟度判别 | YOLOv5 定位 + 显著性/分类网络[6](https://link.springer.com/article/10.1007/s11119-022-09895-2 "Citrus fruits maturity detection in natural environments based on convolutional neural networks and visual saliency map | Precision Agriculture | Springer Nature Link") | 自然环境、多成熟等级 |
| 密集遮挡检测改进 | 树冠密集场景未熟/成熟识别7 | 树冠密集、遮挡严重 | 注意力/结构改造对遮挡有效 | 需结合硬件与拍摄策略,数据域迁移仍是瓶颈 |
| 国内温室工程化路线 | 温室草莓成熟度快速检测8 | 温室场景、强调实时性 | 面向部署,关注速度与漏检 | 公开可复现资源有限;跨环境泛化需更系统的数据构建 |
| 轻量化一阶段检测 | Mobile-YOLOv5s 多阶段草莓9 | 多阶段(成熟/未熟等)、小目标/遮挡 | 速度与精度兼顾,利于端侧 | 仍依赖高质量标注与增强策略,细粒度阶段边界需更稳健表征 |
从方法论角度看,草莓成熟度检测的难点并不只在"目标是否存在",而是要在多源扰动下稳定输出"目标框 + 成熟阶段标签 + 置信度",其中成熟度表观差异常表现为颜色渐变、纹理细节与局部高光共同作用;在田间或温室的实际图像中,果实密集导致的相互遮挡、枝叶遮挡造成的局部可见性不足、同一果实在不同视角下的颜色分布变化,以及光照色温漂移引起的域偏移,都会直接拉低端到端检测器的类别判别置信度并放大漏检/错检风险。针对这些挑战,检测算法的演进一方面通过更合理的特征聚合与训练策略提升密集目标与小目标能力,另一方面通过端到端与注意力结构改造削减冗余计算并提升表达上限;例如,YOLOv7 在训练策略与结构设计上系统化挖掘"训练增益而不增推理开销"的空间,推动实时检测性能边界10。 (CVF Open Access) 随后,YOLOv9 进一步引入可编程梯度信息以增强学习目标的可控性,在通用检测基准上延续了速度与精度的竞争力11。 (Springer) 与之对应,YOLOv10 试图摆脱对 NMS 的依赖并提出端到端的实时检测设计,使部署链路更接近"训练即推理"的工程诉求12。 (NeurIPS Proceedings) 更近期的 YOLOv12 则将注意力机制置于框架核心,强调在保持实时性的前提下提升注意力表征带来的精度收益,为细粒度成熟度判别这类"纹理与局部颜色线索并重"的任务提供了新的结构选项13。 (arXiv) 在面向草莓成熟度识别的直接实践中,已有研究将 YOLOv8 与轻量级 Swin Transformer 模块融合以应对复杂生长环境下的光照干扰与果实聚集遮挡,验证了引入 Transformer 表征对成熟度检测的增益14。 (ScienceDirect) 此外,面向 YOLOv11 的草莓成熟度检测改进也已出现,例如 SR-YOLO 以改进 YOLO11 为核心开展成熟度检测,反映出新一代结构在农业场景中的快速迁移与工程化需求的持续上升[15]。 (Qikan)
基于上述研究脉络,老思在本文的工作定位是:围绕草莓成熟度检测这一典型的"细粒度阶段识别 + 实时检测部署"问题,系统对比 YOLOv5 至 YOLOv12 的系列模型在同一数据集上的表现,并在轻量化与小目标/遮挡适应性方面给出可复现的改进实现;与此同时,博主将构建并规范化标注草莓成熟度数据集,给出清晰的数据预处理与划分策略,并基于 PySide6 实现可交互的检测系统界面,集成多模型切换、结果可视化与工程化导出,最终提供完整代码、界面与数据集项目以支撑复现与二次开发。
主要功能演示:
(1)启动与登录:系统启动后首先进入登录界面,用户可完成注册、登录与记住登录状态等操作;登录成功后自动加载该用户的历史检测记录与个性化配置,并进入主界面,使后续的模型选择、阈值参数与导出路径等设置具备持久化能力。
启动与登录界面图

(2)多源输入与实时检测(摄像头/视频/图片/文件夹):主界面统一抽象"输入源",支持摄像头实时流、视频文件、单张图片以及图片文件夹批处理四种模式。实时模式下界面同步显示检测框、类别与置信度,并在侧栏更新各成熟度类别计数;离线模式下支持逐帧播放控制、暂停/继续、进度条跳转以及批量保存推理结果,满足采集巡检与离线复盘两类常见流程。
多源输入与实时检测演示图

(3)模型选择与对比演示:系统内置 YOLOv5--YOLOv12 多版本权重的快速切换入口,用户可在不更改代码的情况下直接选择不同模型进行推理对比;在相同输入与阈值配置下,界面同时展示推理耗时、检测数量变化与可视化差异,便于直观观察不同模型在遮挡、小目标与光照偏色场景中的检出能力与稳定性差异。
模型选择与对比演示图

(4)主题修改功能:为提升长期使用的可读性与展示一致性,系统提供主题切换与界面外观自定义能力,包括浅色/深色主题、主色调、字体大小、按钮与表格样式,以及背景图与图标资源替换等;其实现基于 Qt 的样式表(QSS)与资源管理机制,支持在运行时即时生效,同时将用户选择写入本地配置与数据库,确保下次启动自动恢复。
主题修改功能演示图

2. 数据集介绍
本项目面向"草莓成熟度"这一具有强外观连续性与强场景噪声的目标检测任务,自建并整理了包含 3713 张 高分辨率图像的数据集,覆盖草莓生长与品质变化过程中具有代表性的三类状态:raw(未熟草莓)、ripe(成熟草莓)、turning(变质草莓)。从样例可见,数据同时包含盆栽/地栽、自然光与设施环境、背景叶片密集遮挡、果实尺度差异显著以及多目标重叠等复杂情况(标注样例可参考你提供的训练批次可视化图)。在标注规范上,本文将成熟度理解为"可采收成熟"与"不可采收状态(未熟/变质)"的视觉可分性问题:未熟阶段常表现为果面偏白或偏青、红色覆盖率低;成熟阶段红色覆盖率高且纹理清晰;变质阶段往往伴随颜色暗沉、局部腐烂或失水皱缩等特征,这类样本在遮挡与光照偏色条件下更易与成熟果混淆,因此在标注时优先保证边界框紧致包围可见果体区域,弱可见目标仅在可辨识时纳入标注,以降低噪声标签比例。

python
Chinese_name = { "raw": "未熟草莓","ripe": "成熟草莓", "turning": "变质草莓"}
数据集按工程化训练流程划分为 3426 张训练集、215 张验证集、72 张测试集 ,分别约占 92.3%、5.8%、1.9%。训练阶段采用 YOLO 系列常用的数据管线进行统一输入尺度与增强:图像在送入网络前通过等比例缩放与填充(letterbox)适配到固定输入尺寸,并在训练中启用 Mosaic 等增强方式以提升小目标与遮挡场景的泛化能力(你提供的 mosaic 训练 batch 图已直观体现该策略对多尺度与密集目标的覆盖效果)。从标签统计图来看,三类目标实例分布呈现一定不均衡:raw 数量最多(约 1.17 万 实例),ripe 次之(约 0.59 万 实例),turning 相对较少(约 0.30 万 实例);这种"变质样本偏少"的现实分布符合农业场景的采集规律,但也意味着模型更容易在转色/暗光条件下将 turning 误判为 ripe,后续训练策略中通常需要通过采样、增强或损失权重来缓解类别偏置,老思会在训练与优化一节进一步展开。

📊 数据集规格说明 (Dataset Specification)
| 维度 | 参数项 | 详细数据 |
|---|---|---|
| 基础信息 | 标注软件 | LabelImg(矩形框标注;若你实际使用其它工具,可在此处替换为对应名称) |
| 标注格式 | YOLO TXT (Normalized) | |
| 数量统计 | 训练集 (Train) | 3,426 张 (≈92.3%) |
| 验证集 (Val) | 215 张 (≈5.8%) | |
| 测试集 (Test) | 72 张 (≈1.9%) | |
| 总计 (Total) | 3,713 张 | |
| 类别清单 | Class ID: 0 | raw(未熟草莓) |
| Class ID: 1 | ripe(成熟草莓) |
|
| Class ID: 2 | turning(变质草莓) |
|
| 图像规格 | 输入尺寸 | 640 * 640(训练阶段 letterbox 适配) |
| 数据来源 | 实地采集图像为主(含遮挡、密集、多尺度与光照变化场景),并结合训练阶段增强扩充样本覆盖面 |
3. 模型设计与实现
草莓成熟度检测在工程上更接近"多目标检测 + 细粒度阶段分类"的联合任务:一张图像/一段视频帧内常同时存在多个果实,且果实尺度变化大、遮挡频繁;如果仅做整图分类或先裁剪再分类,容易在密集果串、叶片遮挡和转色期(raw↔ripe)场景中引入较大的定位误差与流程复杂度。因此本文将每个草莓实例作为一个检测目标,在同一检测头上同时输出边界框与成熟度类别(raw/ripe/turning),保证系统能够直接向 UI 与后续采摘策略模块提供"位置 + 阶段 + 置信度"的结构化结果。
基线模型选择上,老思以 YOLO 系列作为统一框架,核心原因是其端到端的一阶段检测范式在 640×640 这类常用输入尺寸下兼具速度与精度,便于在 PySide6 桌面端实现近实时交互推理,同时又能通过不同尺度(n/s/m/...)在算力与精度之间做平滑权衡。具体到版本演进,YOLOv5 的经典范式采用 Backbone--Neck--Head 的三段式结构,其中 Backbone 常见为 CSPDarknet 变体,Neck 使用 SPPF 与 PAN/FPN 进行多尺度特征聚合,Head 输出多尺度预测以覆盖小中大目标。(Ultralytics Docs) 在此基础上,Ultralytics 的 YOLOv8 强调 anchor-free 的检测头设计与更高效的检测流程,便于同一代码栈下完成训练、验证与部署。(Ultralytics Docs) 更进一步,YOLOv12 将注意力机制作为结构核心,提出 Area Attention 与 R-ELAN 等模块,并结合 FlashAttention 等工程优化以尽量维持实时性;其在文档中也明确提示该系列对显存与训练稳定性更敏感,因此在实际工程里通常优先选择 n/s 等轻量规模落地。(Ultralytics Docs)

从网络结构实现角度看,本文采用"多尺度特征金字塔 + 检测头"的主干设计:输入图像经归一化与 letterbox 适配后进入 Backbone,逐级下采样提取语义特征;Neck 通过自顶向下与自底向上的路径聚合,将深层语义与浅层纹理融合;Head 在至少三个尺度(通常对应 P3/P4/P5)上同时预测,以提高小目标(远景或局部可见果实)与被遮挡目标的召回率。对于注意力版本(如 YOLOv12),其核心思路是用更高效的区域注意力在较大感受野上建模全局依赖,从而在遮挡、背景杂乱与光照偏色条件下提升特征判别性;但在部署上需要更加关注显存占用与推理后端支持(尤其是 GPU 侧的注意力加速)。(Ultralytics Docs)
任务输出的数学建模可写为:对每个候选位置(或网格单元/特征点)预测边界框 b ^ = ( x ^ , y ^ , w ^ , h ^ ) \hat{\mathbf{b}}=(\hat{x},\hat{y},\hat{w},\hat{h}) b^=(x^,y^,w^,h^)、目标存在置信度 o ^ \hat{o} o^ 与类别概率 p ^ ∈ R C \hat{\mathbf{p}}\in\mathbb{R}^{C} p^∈RC(本任务 C = 3 C=3 C=3)。推理阶段将候选框按置信度排序,并通过 NMS 在 IoU 阈值 τ \tau τ 下抑制高度重叠框,保留最终集合 D \mathcal{D} D。对于 YOLO 家族在不同实现中的差异(anchor-based/anchor-free、是否显式 objectness、是否端到端去 NMS),本文在工程系统中保持"同一 UI 与同一数据预处理"的前提下,分别调用对应版本的原生推理后处理流程,以避免人为改写造成的不公平对比。
损失函数方面,为适应检测任务的多目标与多尺度特性,训练目标通常由框回归损失、分类损失与置信度损失构成,可统一写作
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 ∗ box \mathcal{L}*{\text{box}} L∗box 常采用 IoU 家族(如 CIoU/GIoU)衡量预测框与真值框的几何一致性; L ∗ cls \mathcal{L}*{\text{cls}} L∗cls 与 L ∗ obj \mathcal{L}*{\text{obj}} L∗obj 多用 BCE/CE 形式以稳定优化。在 Ultralytics 系列实现中,边界框回归还常配合分布式回归思想(DFL)增强定位精度,即用离散分布拟合边界偏移,再将其期望映射回连续坐标,从而在小目标和边界模糊样本上获得更细的回归梯度。(DeepWiki) 对于本数据集中 turning 样本相对较少的长尾现象,训练时可在不改变标签定义的前提下,通过类别权重、重采样或更强的数据增强来缓解偏置;这些策略属于训练阶段优化,本文在下一节集中说明其具体配置。
4. 训练策略与模型优化
草莓成熟度检测的训练难点主要来自三类不确定性:其一是成像域不稳定(温室补光与自然光混合、色温漂移、高光反射),其二是目标形态与可见性变化(遮挡、密集、多尺度、仅局部可见),其三是类别分布天然不均衡(你给出的标签统计中 raw 显著多于 turning)。因此,本文采用"统一训练协议 + 版本公平对比"的策略:在相同数据划分、相同输入尺寸与增强配置下训练 YOLOv5--YOLOv12 的轻量模型(以 n 级别为主),并固定随机种子与数据加载策略,确保性能差异主要来自模型结构与训练稳定性,而非训练过程偶然波动。硬件侧以 RTX 4090 为主卡,训练启用混合精度以提高吞吐并降低显存压力;推理端则提前进行 warmup,以减少首次前向带来的时延抖动,保证 PySide6 界面实时显示的稳定性。
迁移学习是本文获得稳定收敛的关键前提。由于数据集规模为 3713 张,直接从零训练容易在早期陷入"背景过拟合"或"颜色捷径"的局部最优,尤其在 turning 样本较少时更明显;因此训练默认加载 COCO 等通用数据集预训练权重,在保持 Backbone 通用纹理与边缘表征的同时,让检测头快速适配草莓的颜色纹理与形态差异。训练初期采用学习率预热(warmup)抑制梯度震荡,随后使用余弦退火让学习率平滑下降,典型形式可写为
η ( t ) = η min + 1 2 ( η 0 − η min ) ( 1 + cos π t T ) , \eta(t)=\eta_{\min}+\frac{1}{2}\left(\eta_{0}-\eta_{\min}\right)\left(1+\cos\frac{\pi t}{T}\right), η(t)=ηmin+21(η0−ηmin)(1+cosTπt),
其中 η 0 \eta_{0} η0 为初始学习率、 η min \eta_{\min} ηmin 为最终学习率底值、 T T T 为总训练步数;该策略在小数据集上通常比阶梯下降更不易出现验证集指标的大幅反复。为避免长时间无收益训练,本文启用早停机制(patience),当验证集指标在连续若干轮内无提升时自动终止,并保存验证集表现最佳的权重作为部署模型。
数据增强方面,本文优先选择与农业场景统计特性一致、且对小目标与遮挡有效的增强组合:Mosaic 用于增强多尺度与密集目标分布,随机翻转与轻量仿射用于提升姿态鲁棒性,HSV 抖动用于模拟光照色温变化与相机白平衡漂移;同时在训练后期关闭 Mosaic(close_mosaic),让网络在更接近真实分布的样本上完成收敛"收口",避免增强分布与真实部署分布差异过大造成的定位偏移。针对类别不均衡带来的偏置,本文在不改变标注定义的前提下采取两类优化:其一是在采样与增强层面对 turning 类进行适度"看见次数"提升(如更高的被采样概率或更强的颜色扰动以覆盖腐烂/暗沉外观),其二是在损失层面引入类别权重或更稳健的分类目标(如轻量标签平滑),以降低模型将 turning 向 ripe 吸附的倾向。实践中老思更偏向"数据侧优先、损失侧克制"的原则:先把难样本覆盖做扎实,再用温和的权重策略微调决策边界。
为便于复现,下面给出本文默认训练配置(若你后续提供更具体的训练日志与超参数,博主可以据此把该节进一步写得更贴合你的工程实现与收敛现象)。
| 名称 | 数值 | 设计意图(简述) |
|---|---|---|
| epochs | 120 | 给足收敛空间,配合早停避免无效训练 |
| patience | 50 | 验证集长期无提升则停止并回滚最佳权重 |
| batch | 16 | 兼顾 4090 显存与梯度稳定性 |
| imgsz | 640 | 与 UI 推理输入一致,便于部署一致性 |
| pretrained | true | 迁移学习提升小数据集收敛与泛化 |
| optimizer | auto | 由框架按模型与 batch 自适配 |
| lr0 / lrf | 0.01 / 0.01 | 预热后余弦退火到低学习率底值 |
| momentum | 0.937 | 提升收敛稳定性 |
| weight_decay | 0.0005 | 抑制过拟合与权重发散 |
| warmup_epochs | 3.0 | 初期抑制梯度震荡、提升稳定性 |
| mosaic | 1.0 | 强化密集与小目标覆盖 |
| close_mosaic | 10 | 后期回归真实分布,提升定位"收口" |
对应 Ultralytics 训练入口可写成如下形式(不同版本权重只需替换 model):
bash
yolo detect train \
model=yolo12n.pt data=strawberry.yaml \
imgsz=640 epochs=120 batch=16 \
patience=50 pretrained=True optimizer=auto \
lr0=0.01 lrf=0.01 momentum=0.937 weight_decay=0.0005 \
warmup_epochs=3.0 mosaic=1.0 close_mosaic=10
模型部署侧的优化重点则围绕"实时交互体验"展开:推理线程与 UI 主线程解耦,避免推理阻塞界面刷新;对模型进行一次性 warmup 后再开始读流,减少首帧延迟;后处理阶段将 NMS 的阈值与置信度阈值开放给界面调参,以适配"密集果串(高召回优先)"与"稀疏场景(高精度优先)"两类使用情境。若部署到更受限的环境(如低功耗边缘端),则建议进一步导出 ONNX/TensorRT 并进行 FP16 加速,同时对输入分辨率与模型规模做联合权衡;这些内容会在后续的实验分析与系统实现部分结合实际帧率与资源占用给出更具体的对比说明。
5. 实验与结果分析
为保证不同算法版本的可比性,本实验在同一草莓成熟度数据集划分(Train/Val/Test = 3426/215/72)、同一输入尺寸( 640 × 640 640\times 640 640×640)与一致的数据预处理(letterbox、归一化)条件下,对 YOLOv5--YOLOv12 共 8 个代表模型进行对比评估。轻量端采用 n 级/近似 n 级配置(YOLOv5nu、YOLOv6n、YOLOv7-tiny、YOLOv8n、YOLOv9t、YOLOv10n、YOLOv11n、YOLOv12n),同时给出更高容量的 s 级配置(YOLOv5su、YOLOv6s、YOLOv7、YOLOv8s、YOLOv9s、YOLOv10s、YOLOv11s、YOLOv12s),以观察"模型容量提升"对成熟度细粒度判别的收益与对实时性的代价。推理性能统计中将端到端耗时拆分为预处理(Pre)、网络前向(Inf)与后处理(Post),便于在系统工程中定位耗时瓶颈并指导 UI 侧默认阈值与帧率策略的选择。
评价指标方面,本文采用目标检测的标准度量:精确率 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,并以 m A P @ 0.5 mAP@0.5 mAP@0.5 衡量 IoU=0.5 下的平均精度,以 m A P @ 0.5 : 0.95 mAP@0.5:0.95 mAP@0.5:0.95 衡量更严格的多阈值综合定位质量。由于系统部署时需要用户可调的置信度阈值(Conf),因此除固定阈值下的 mAP 外,老思额外给出 F1--Confidence 曲线用于确定"精度/召回折中"的默认阈值:如图5-1所示,整体最优点出现在置信度约 0.493 处,此时全类别综合 F 1 ≈ 0.79 F1\approx 0.79 F1≈0.79,因此工程实现中将 UI 默认 Conf 设为 0.5 更符合该数据集的最优工作点附近。
图5-1 F1-Confidence 曲线

在同一主模型的 PR 曲线中(图5-2),三类成熟度的可分性呈现较清晰的层次:ripe 的 AP 最高(0.862),说明成熟果的红色覆盖与纹理特征更稳定,模型更容易获得高精度与高召回的同时成立;turning 次之(0.804),这类样本虽然数量相对较少,但其暗沉/腐烂纹理往往与背景叶片差异较大,因此在"中等召回区间"仍能保持较高 precision;raw 的 AP 最低(0.746),其外观偏白或偏浅红且常与高光、土壤反射、枯叶颜色相近,叠加遮挡导致的局部可见性不足,使得模型在提升召回时更容易引入误检,从而出现曲线更早下弯的现象。整体上,全类别 m A P @ 0.5 ≈ 0.804 mAP@0.5\approx 0.804 mAP@0.5≈0.804,说明模型已具备较强的部署可用性,但 raw 与 turning 的边界样本仍是后续数据与增强需要重点覆盖的区域。
图5-2 Precision-Recall 曲线

训练过程的收敛情况如图5-3所示,box/cls/dfl 三项训练损失均呈平滑下降,验证损失在前 20--30 个 epoch 内快速下降后进入平台区间;与此同时,precision 与 recall 在早期快速爬升并趋于稳定, m A P @ 0.5 mAP@0.5 mAP@0.5 在约 30--40 个 epoch 后基本收敛到 0.80 左右, m A P @ 0.5 : 0.95 mAP@0.5:0.95 mAP@0.5:0.95 收敛到约 0.61。值得注意的是,验证侧 dfl_loss 在后期有轻微回升迹象,但 mAP 指标并未同步下滑,说明模型主要进入"细粒度定位微调"的收益递减阶段而非明显过拟合;从工程角度看,这一现象通常意味着可以通过早停或更强的后期正则(例如减小学习率底值、适度降低增强强度)获得更高的训练效率。
图5-3 训练/验证损失与指标曲线

接下来给出跨版本对比。对于 n 级模型,图5-4显示各版本的 F1 与 m A P @ 0.5 mAP@0.5 mAP@0.5 整体差距不大,说明在该数据集规模与任务难度下,"结构演进带来的收益"更多体现在稳定性与速度成本上,而非绝对精度的大幅拉开。结合表5-1可见:YOLOv9t 取得最高 m A P @ 0.5 = 0.805 mAP@0.5=0.805 mAP@0.5=0.805,但推理时延较高(Inf≈16.51ms);YOLOv7-tiny 的 F1 最高(0.803),其召回更强(0.776),但端到端耗时最高(Total≈21.08ms),更适合作为"追求召回"的离线复核模型;YOLOv8n 的端到端耗时最低(Total≈10.17ms),在 m A P @ 0.5 = 0.801 mAP@0.5=0.801 mAP@0.5=0.801 的同时保持较好的实时性,更适合在 PySide6 界面中作为默认实时推理模型。
图5-4 n 型模型 F1 与 mAP50 对比

| Model | Params(M) | FLOPs(G) | InfTime(ms) | TotalTime(ms) | Precision | Recall | F1 Score | mAP50 | mAP50-95 |
|---|---|---|---|---|---|---|---|---|---|
| YOLOv5nu | 2.6 | 7.7 | 7.73 | 10.94 | 0.845 | 0.734 | 0.785 | 0.797 | 0.595 |
| YOLOv6n | 4.3 | 11.1 | 6.78 | 10.34 | 0.770 | 0.733 | 0.751 | 0.777 | 0.564 |
| YOLOv7-tiny | 6.2 | 13.8 | 14.74 | 21.08 | 0.832 | 0.776 | 0.803 | 0.801 | 0.559 |
| YOLOv8n | 3.2 | 8.7 | 6.83 | 10.17 | 0.783 | 0.761 | 0.772 | 0.801 | 0.593 |
| YOLOv9t | 2.0 | 7.7 | 16.51 | 19.67 | 0.811 | 0.732 | 0.769 | 0.805 | 0.599 |
| YOLOv10n | 2.3 | 6.7 | 11.24 | 13.95 | 0.832 | 0.729 | 0.777 | 0.803 | 0.604 |
| YOLOv11n | 2.6 | 6.5 | 9.44 | 12.97 | 0.803 | 0.763 | 0.782 | 0.796 | 0.596 |
| YOLOv12n | 2.6 | 6.5 | 12.47 | 15.75 | 0.801 | 0.745 | 0.772 | 0.795 | 0.598 |
从训练动态看,n 型模型的 m A P @ 0.5 mAP@0.5 mAP@0.5 随 epoch 变化如图5-5所示,大多数模型在前 10--20 个 epoch 快速提升并进入平台期;其中某些端到端改造更激进的版本在最初 epoch 段可能出现更明显的抖动,但在中后期基本回归到 0.79--0.81 区间,最终差距主要由"高召回区间的误检抑制能力"决定。平均 PR 曲线的横向对比如图5-6所示,模型间差异集中出现在 recall>0.75 的区域:当系统为了减少漏检而提高召回时,precision 下降更快的模型更容易在叶片纹理、花萼与背景高光上产生误检,这一现象在 raw 类尤为突出,因此在实际部署中更建议通过 UI 侧的阈值滑条让用户按场景选择"偏召回"或"偏精度"的工作点,而不是强行固定单一阈值。
图5-5 n 型模型 mAP50 随 Epoch 变化

对于 s 级模型,图5-6与表5-2表明其整体精度较 n 型有小幅提升,但增益并非与参数量线性相关。YOLOv10s 取得最高 m A P @ 0.5 = 0.817 mAP@0.5=0.817 mAP@0.5=0.817 与最高 m A P @ 0.5 : 0.95 = 0.618 mAP@0.5:0.95=0.618 mAP@0.5:0.95=0.618,说明其在更严格 IoU 条件下的定位质量更好,适合用于离线统计、质检分级或"高精度模式";YOLOv7 的 F1 最高(0.809)且召回最高(0.793),更适合在遮挡密集、宁可多检也不漏检的场景;若以界面实时流畅为优先,YOLOv8s 的 Total≈11.39ms 在 s 级中更均衡,通常能在较高精度下维持更稳定的交互帧率。
图5-6 s 型模型 F1 与 mAP50 对比

| Model | Params(M) | FLOPs(G) | InfTime(ms) | TotalTime(ms) | Precision | Recall | F1 Score | mAP50 | mAP50-95 |
|---|---|---|---|---|---|---|---|---|---|
| YOLOv5su | 9.1 | 24.0 | 8.45 | 12.24 | 0.829 | 0.767 | 0.797 | 0.814 | 0.609 |
| YOLOv6s | 17.2 | 44.2 | 8.59 | 12.26 | 0.824 | 0.737 | 0.778 | 0.796 | 0.594 |
| YOLOv7 | 36.9 | 104.7 | 23.62 | 29.52 | 0.826 | 0.793 | 0.809 | 0.809 | 0.608 |
| YOLOv8s | 11.2 | 28.6 | 7.66 | 11.39 | 0.820 | 0.766 | 0.792 | 0.803 | 0.608 |
| YOLOv9s | 7.2 | 26.7 | 18.66 | 22.17 | 0.793 | 0.788 | 0.790 | 0.810 | 0.615 |
| YOLOv10s | 7.2 | 21.6 | 11.38 | 14.19 | 0.838 | 0.733 | 0.782 | 0.817 | 0.618 |
| YOLOv11s | 9.4 | 21.5 | 9.74 | 13.47 | 0.815 | 0.770 | 0.792 | 0.813 | 0.617 |
| YOLOv12s | 9.3 | 21.4 | 13.23 | 16.74 | 0.844 | 0.745 | 0.791 | 0.804 | 0.609 |
从训练曲线层面,s 型模型的 m A P @ 0.5 mAP@0.5 mAP@0.5 随 epoch 变化如图5-8所示,整体收敛更快且平台期更稳定,但个别模型在最初 epoch 段仍可能出现明显波动,这通常与 warmup、增强分布以及初期正负样本分配有关,并不必然意味着最终精度较差。平均 PR 曲线对比如图5-9所示,s 型在中高召回区间的 precision 下降相对更缓,这与其更强的特征表达能力一致;但当 recall 推到接近 1.0 时,各模型 precision 仍会快速跌落,反映出"极高召回"在真实复杂背景下会不可避免地引入大量误检,因此工程上更合理的做法是以图5-1给出的最优 F1 置信度附近作为默认点,再通过业务偏好(采摘偏召回、质检偏精度)进行小范围调节。
图5-7 s 型模型平均 PR 曲线对比

6. 系统设计与实现
6.1 系统设计思路
草莓成熟度检测系统在工程上需要同时满足两类约束:其一是交互侧的实时性与可控性,用户希望在同一界面中完成多源输入切换、阈值调节、暂停播放与结果导出;其二是算法侧的可复用与可扩展性,尤其是本文需要在 YOLOv5--YOLOv12 之间快速切换权重并保持推理链路一致。老思在实现时采用"界面层---控制层---处理层"的分层组织:界面层只负责控件呈现与事件触发,控制层负责状态机与业务编排,处理层封装模型推理、后处理与结果结构化输出,从而把 UI 交互与模型细节隔离开,降低后续替换权重、升级 YOLO 版本或引入 TensorRT/ONNX 的改动成本。

具体类与职责上,Ui_MainWindow 负责按钮、标签、表格、画布等控件布局与样式加载(含主题 QSS);MainWindow 作为中枢调度器,集中实现槽函数、播放控制、阈值与模型切换、结果统计与导出等状态管理;Detector 则对外提供统一的 load/warmup/predict 接口,内部完成预处理(letterbox、归一化)、推理调用、NMS/阈值过滤、坐标回映射与类别统计。为避免推理阻塞界面刷新,推理过程通常运行在 QThread/工作线程中,结果以 Qt 信号携带结构化数据(框、类别、置信度、耗时)回传至主线程渲染,这样能在摄像头与视频流模式下保持稳定帧率与操作响应。
数据与用户态持久化由 SQLite 承担:每次推理可选择写入检测记录(含时间戳、输入源、模型版本、阈值、统计结果与可选的可视化图像路径),并与用户表关联,以实现"分用户空间"的历史管理;主题与偏好参数也可随账号保存,使系统在重新启动后自动恢复到上次使用状态。整体流程上,系统始终围绕"输入→预处理→推理→后处理/统计→界面更新→交互控制→下一帧/下一图"的闭环运行,既满足实时检测,也兼容离线批处理与复盘分析。
图 系统流程图

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

登录与账户管理在本文中并非独立的"附加页面",而是与检测流程强耦合的工程支撑:系统启动后先完成账号注册或登录,登录成功即从 SQLite 加载该用户的主题与推理偏好(例如默认 Conf/IoU、默认模型版本、导出目录)以及历史检测记录,从而把"参数选择---推理结果---导出与复盘"固化到个人空间中;当用户在主界面进行头像、密码或偏好修改时,控制层将变更写回数据库并即时作用于界面样式与推理配置,使交互体验与数据持久化保持一致;注销或切换账号时清理会话态并回到登录界面,但不删除历史记录,保证不同用户在同一设备上使用时互不干扰,且能够在后续的模型对比与结果追溯中保持可复现的配置与记录闭环。

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

完整资源中包含数据集及训练代码,环境配置与界面中文字、图片、logo等的修改方法请见视频:➷➷➷
详细介绍文档博客: YOLOv5至YOLOv12升级:草莓成熟度检测系统的设计与实现(完整代码+界面+数据集项目)
环境配置博客教程:(1)Pycharm软件安装教程;(2)Anaconda软件安装教程;(3)Python环境配置教程;
或者环境配置视频教程:(1)Pycharm软件安装教程;(2)Anaconda软件安装教程;(3)Python环境依赖配置教程
数据集标注教程(如需自行标注数据):数据标注合集
8. 参考文献(GB/T 7714)
1 ZHOU H, WANG X, AU W, et al. Intelligent robots for fruit harvesting: recent developments and future challenges[J]. Precision Agriculture, 2022, 23: 1856-1907.
2 KOIRALA A, WALSH K B, WANG Z, et al. Deep learning -- Method overview and review of use for fruit detection and yield estimation[J]. Computers and Electronics in Agriculture, 2019, 162: 219-234.
3 MONTOYA-CAVERO L E, DÍAZ DE LEÓN TORRES R, GÓMEZ-ESPINOSA A, et al. Vision systems for harvesting robots: Produce detection and localization[J]. Computers and Electronics in Agriculture, 2021, 187: 106562.
4 KARKI S, BASAK J K, PAUDEL B, et al. Classification of strawberry ripeness stages using machine learning algorithms and colour spaces[J]. Horticulture, Environment, and Biotechnology, 2024. doi:10.1007/s13580-023-00559-2.
5 WANG D, WANG X, CHEN Y, et al. Strawberry ripeness classification method in facility environment based on red color ratio of fruit rind[J]. Computers and Electronics in Agriculture, 2023, 214: 108313.
6 CHEN S, XIONG J, JIAO J, et al. Citrus fruits maturity detection in natural environments based on convolutional neural networks and visual saliency map[J]. Precision Agriculture, 2022, 23: 1515-1531.
7 LU S, CHEN W, ZHANG X, et al. Canopy-attention-YOLOv4-based immature/mature apple fruit detection on dense-foliage tree architectures for early crop load estimation[J]. Computers and Electronics in Agriculture, 2022, 193: 106696.
8 刘鑫, 柳俊能, 谢晶, 等. 基于YOLO-ODM的温室草莓成熟度的快速检测[J]. 华中农业大学学报, 2023, 42(4): 43-50. doi:10.13300/j.cnki.hnlkxb.2023.04.030.
9 黄家才, 赵雪迪, 高芳征, 等. 基于改进YOLOv5s的草莓多阶段识别检测轻量化算法[J]. 农业工程学报, 2023, 39(21): 181-187. doi:10.11975/j.issn.1002-6819.202307186.
10 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.
11 WANG C Y, YEH I H, MARK LIAO H Y. 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. doi:10.1007/978-3-031-72751-1_1.
12 WANG A, CHEN H, LIU L, et al. YOLOv10: Real-Time End-to-End Object Detection[C]//Advances in Neural Information Processing Systems 37 (NeurIPS 2024). 2024.
13 TIAN Y, YE Q, DOERMANN D. YOLOv12: Attention-Centric Real-Time Object Detectors[EB/OL]. arXiv:2502.12524, 2025. doi:10.48550/arXiv.2502.12524.
14 YANG S, WANG W, GAO S, et al. Strawberry ripeness detection based on YOLOv8 algorithm fused with LW-Swin Transformer[J]. Computers and Electronics in Agriculture, 2023.
15\] ZHAO Q, YUE Z, HUANG J, et al. Strawberry ripeness detection based on SR-YOLO: An improved YOLO11 algorithm\[J\]. Multimedia Tools and Applications, 2025. doi:10.1007/s11694-025-03559-1.