摘要 :番茄成熟度的快速、稳定识别是温室分级、采后分拣与机器人采摘中的关键感知环节,但在真实场景中常同时面临光照波动、遮挡与重叠、背景干扰、尺度变化以及相似颜色阶段边界模糊等问题。本文围绕"YOLOv5 至 YOLOv12 升级:番茄成熟度识别系统的设计与实现"这一工程目标,给出一套可复现的端到端方案与完整项目资源。系统以 YOLO 系列(v5--v12,共 8 个代表性版本) 为核心检测器,对番茄成熟度目标进行定位与分级识别,并在统一数据集与一致训练设置下开展模型对比,结合 mAP、F1-Score、PR 曲线与训练曲线 等指标分析各版本在速度与精度上的权衡规律。面向真实应用落地,本文构建并标注专用成熟度数据集,给出数据清洗、增强与划分流程,并提供可直接运行的训练、验证、推理与导出脚本。系统侧以 PySide6 实现桌面端可视化界面,支持图片/视频/摄像头多源输入、阈值参数(Conf/IoU)调节、检测结果叠加显示、类别统计与结果导出等功能;同时引入 SQLite 完成用户注册登录、配置持久化与历史记录管理,实现"模型推理---界面交互---结果存储"的闭环。本文最终交付 完整代码、界面工程与数据集项目,为农业视觉分级任务提供一套可直接复用与扩展的工程化参考。
文章目录
- [1. 前言综述](#1. 前言综述)
- [2. 数据集介绍](#2. 数据集介绍)
- [3. 模型设计与实现](#3. 模型设计与实现)
- [4. 训练策略与模型优化](#4. 训练策略与模型优化)
- [5. 实验与结果分析](#5. 实验与结果分析)
-
- [5.1 实验设置与对比基线](#5.1 实验设置与对比基线)
- [5.2 度量指标](#5.2 度量指标)
- [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。(Springer) 传统方法多依赖颜色阈值、形态学分割与几何定位等流程化设计,例如双目立体视觉结合颜色分割可在温室场景完成成熟果定位并给出可用的深度测量精度,但对光照变化、反光与遮挡的敏感性使其难以稳定覆盖多品种与多棚室条件2。(tcsae.org) 在更一般的目标识别任务中,手工特征与浅层分类器(如梯度方向直方图)曾长期作为主流方案并在受控场景表现可靠,但其特征表达的任务适配性有限,面对番茄成熟度这种"类内差异小、类间边界模糊、域偏移显著"的问题往往需要频繁重设规则与阈值3。(lear.inrialpes.fr)
深度学习将检测与分类从"特征工程"转向"端到端表征学习",两阶段框架通过候选区域与分类回归解耦显著提升了定位与识别精度,为复杂背景下的果实检测提供了可复用的技术路线4。(arXiv) 一阶段方法进一步以密集预测实现速度优势,使检测更易嵌入实时系统并适配边缘算力,典型代表如 SSD 通过多尺度特征图预测兼顾了速度与中等尺度目标的召回5。(Springer) 面向农作物的尺度变化与小目标密集分布,特征金字塔网络以自顶向下语义融合构建多尺度表示,成为后续多种检测器与工程实现中处理小果、远景果的重要模块6。(CVF Open Access) 同时,密集检测中的前景---背景极度不均衡会导致训练偏置,Focal Loss 通过重加权机制聚焦难样本,为复杂背景下的稳定收敛与误检抑制提供了通用损失设计依据7。(DBLP)
YOLO 系列将检测统一为单网络回归并以极高吞吐率推动"实时检测"成为工程常态,其端到端推理范式为番茄成熟度识别这种需要在线处理视频流与摄像头输入的任务奠定了系统形态基础8。(CVF Open Access) 随着网络结构与训练策略演进,YOLOv3 等模型通过多尺度预测与更强主干网络显著改善了速度---精度折中,使轻量化部署与可接受的检测精度可以在同一框架内兼得9。(arXiv) 进一步地,YOLOv7 在"可训练的 freebies"设计下继续强化实时区间的精度上限,体现了 YOLO 系列在工程可用性与精度提升上的持续迭代逻辑10。(arXiv) 另一方面,Transformer 进入目标检测后以集合预测与全局匹配重塑了检测的建模方式,DETR 证明了在去除锚框与 NMS 的条件下仍可获得有竞争力的性能,为后续结构化输出与多任务学习打开了思路11。(Springer) 作为视觉骨干网络的 Swin Transformer 通过移窗机制在计算复杂度与全局建模之间取得平衡,也促使检测系统在特征表达层面更易获得对遮挡与复杂纹理的鲁棒性12。(CVF Open Access)
面向"成熟度"这一更偏语义与决策的目标,近期研究开始将检测、果串关联与成熟度估计进行联合建模,例如 MTD-YOLO 在樱桃番茄果实/果串检测与成熟度判别的多任务设定中给出了较高的综合表现,说明多头解码与共享特征对降低重复计算、提升一致性具有现实价值13。(DBLP) 国内也有工作针对轻量化部署对 YOLOv5s 做结构改造并在番茄成熟度识别任务上讨论了注意力与轻量卷积的收益,反映出"精度可用---速度可用---端侧可用"三者同时满足仍是农业场景必须直面的工程约束14。(zgnjhxb.niam.com.cn) 从更完整的系统视角看,数字孪生驱动的温室番茄采收系统把识别结果进一步纳入三维重建与策略优化闭环,强调了成熟度识别不仅是视觉指标,更将直接影响作业优先级与整体效率15。(ScienceDirect)
尽管方法不断进步,番茄成熟度识别在真实温室与田间仍面临若干共性技术难点:其一,成熟阶段通常呈连续谱而非离散类别,颜色受光照、相机白平衡与品种差异强烈影响,导致同一成熟等级在不同棚室呈现显著域偏移;其二,叶片遮挡、果实重叠与反光会引入局部纹理缺失与边缘破碎,使检测框与成熟度判断在"可见区域"上高度耦合;其三,系统需要在视频流上实时运行并支持交互式参数调节与结果追溯,这要求模型推理、后处理、UI 渲染与数据持久化之间形成稳定的工程边界。老思在本文将以"YOLOv5 至 YOLOv12 的版本演进与工程化差异"为主线,围绕番茄成熟度识别这一任务给出从数据集构建、模型对比到 PySide6 桌面端系统实现的完整链路,避免仅停留在离线指标对比。
为便于读者把握研究谱系与工程取舍,表 1 总结了从传统视觉到 YOLO 系列与多任务/系统级方法在农业成熟度识别问题上的典型特征与适用边界。
表 1 番茄成熟度识别相关方法谱系对比(含代表性工作)
| 方法类别 | 代表性技术要点 | 常见数据形态 | 优势 | 局限 | 代表性工作 |
|---|---|---|---|---|---|
| 传统视觉/几何法 | 颜色分割、形态学、双目/几何定位 | 小规模、受控采集 | 可解释、实现成本低 | 对光照/遮挡敏感,迁移困难 | 2 |
| 手工特征 + 浅层学习 | HOG/SIFT 等特征 + SVM/树模型 | 中小规模、特征可分 | 训练需求低、调参直观 | 表达受限,难覆盖复杂域偏移 | 3 |
| 两阶段检测 | 候选框 + 分类回归 | 通用检测标注 | 精度强、定位稳定 | 推理开销大、端侧不友好 | 4 |
| 一阶段检测 | 密集预测、多尺度输出 | 通用检测标注 | 速度快、易实时 | 类不平衡与小目标易漏检 | 5 |
| 多尺度表征增强 | 金字塔特征融合 | 小目标/密集目标 | 提升小目标召回 | 结构更复杂、训练更敏感 | 6 |
| YOLO 实时检测范式 | 单网络回归、端到端推理 | 视频流/在线场景 | 工程部署成熟、速度优势明显 | 对数据质量与域偏移更敏感 | 810 |
| Transformer 表征 | 全局建模、集合预测/层级骨干 | 大规模多样数据 | 遮挡与复杂纹理表征潜力强 | 训练成本与工程复杂度较高 | 11 |
| 多任务成熟度识别 | 共享特征 + 多头解码(检测/成熟度等) | 果实+果串/成熟度联合标注 | 一致性强、减少重复计算 | 标注成本高、任务权重难平衡 | 13 |
| 轻量化端侧改造 | 轻量卷积/注意力/剪枝量化等 | 端侧采集数据 | 贴近部署约束 | 需在精度与速度间反复权衡 | 14 |
| 系统级闭环(决策/孪生) | 识别 → 3D/策略优化 → 作业闭环 | 多源传感+时序数据 | 与采收决策直接耦合 | 系统集成难度高、评测复杂 | 15 |
本文的主要贡献概括为三点:其一,围绕番茄成熟度识别对 YOLOv5 至 YOLOv12 的可复现实验与工程差异进行系统化梳理,并给出可直接运行的训练与推理代码;其二,构建并标注面向真实采收场景的数据集,完成预处理、划分与统计分析,为跨版本对比提供统一基准;其三,基于 PySide6 实现桌面端可交互系统,支持多权重切换、图片/视频/摄像头输入、结果保存与可视化展示,并整理发布完整项目资源包,方便复现与二次开发。
主要功能演示:
(1)启动与登录
系统启动后首先进入登录界面,用户可选择注册新账号或使用已有账号登录;登录成功后自动加载该用户的个性化配置与历史检测记录(如上次选择的模型权重、置信度阈值、导出路径等),并进入主界面完成"账户空间---检测空间"的衔接,保证不同用户的结果与偏好互不干扰。
启动与登录界面图

(2)多源输入与实时检测(摄像头/视频/图片/文件夹)
主界面提供统一的输入入口,支持摄像头实时流、视频文件、单张图片与图片文件夹批量推理;推理过程中界面同步显示检测框、类别标签与置信度,侧栏实时刷新目标数量统计,视频/摄像头模式下支持暂停、继续与帧率状态提示,确保交互操作不阻塞推理线程。
多源输入与实时检测演示图

(3)模型选择与对比演示
系统内置 YOLOv5 至 YOLOv12 的权重切换能力,用户可在下拉框中选择不同版本模型并即时生效;为便于横向对比,界面保留统一的阈值设置与同一输入源复用机制,使得不同模型在同一图像/同一视频片段上的检测差异可被直观看到,同时可将结果(含模型名、时间戳、阈值与统计信息)导出用于后续实验分析。
模型选择与对比演示图

(4)主题修改功能
在"设置/主题"中提供界面主题切换与样式自定义,支持浅色/深色模式、主色调与强调色、背景图或纯色背景、图标与字体大小等参数调整;主题更改后即时应用到主界面控件与可视化区域,并写入本地配置(或数据库)实现下次启动自动恢复,从而在不同光照环境与显示设备上维持可读性与一致的交互体验。
主题修改功能演示图

2. 数据集介绍
本项目面向"番茄成熟度识别"这一偏工程落地的视觉任务,数据集以实拍图像为主体构建,尽量覆盖采摘与分拣环节中常见的外观变化,包括光照强弱与色温漂移、果面高光反射、叶片与枝蔓遮挡、果实相互重叠、背景材质干扰以及不同拍摄距离带来的尺度变化。标注层面采用目标检测范式,对图像中的番茄实例绘制矩形框,并给出成熟度/状态类别;其中 Green(绿色) 与 Red(红色)对应成熟度阶段差异,damaged(损坏)用于描述表面破损、腐烂或明显病斑等影响品质分级的状态。为了降低数据泄漏风险,数据划分时优先按拍摄场景或相近时间段进行分组,再在组内做近似分层抽样,使训练、验证与测试在背景与光照分布上尽量一致,同时避免同一场景的高度相似帧跨集合重复出现。老思在训练前对标注进行了完整性检查与边界框合法性校验,并以 YOLO 训练流水线的常规做法完成尺寸对齐与增强策略接入,从而保证跨 YOLOv5--YOLOv12 的对比实验具备一致的数据前提。

python
Chinese_name = {"Green": "绿色", "Red": "红色", "damaged": "损坏"}
从规模与划分看,数据集共包含 6,371 张图像,其中训练集 5,520 张、验证集 566 张、测试集 285 张,对应占比约为 86.6%、8.9% 与 4.5%。这一划分更偏向"训练优先",适合在类别边界相对连续的成熟度任务中充分学习颜色与纹理表征,同时通过独立验证集控制早停与超参选择,并保留测试集用于最终报告。根据训练过程生成的标注统计图可以观察到:目标中心在图像平面上分布较为分散,符合多视角采集特征;框尺度覆盖小目标到中大目标,说明数据能同时刻画远景果与近景果,这对多尺度检测头的稳定性尤为重要。若后续发现 damaged 样本占比偏低或难例集中,可通过定向补采与难例重加权策略进一步改善类别不均衡带来的召回下降问题。

📊 数据集规格说明 (Dataset Specification)
| 维度 | 参数项 | 详细数据 |
|---|---|---|
| 基础信息 | 标注软件 | LabelImg |
| 标注格式 | YOLO TXT (Normalized) | |
| 数量统计 | 训练集 (Train) | 5,520 张 (86.6%) |
| 验证集 (Val) | 566 张 (8.9%) | |
| 测试集 (Test) | 285 张 (4.5%) | |
| 总计 (Total) | 6,371 张 | |
| 类别清单 | Class ID: 0 | Green(绿色) |
| Class ID: 1 | Red(红色) |
|
| Class ID: 2 | damaged(损坏) |
|
| 图像规格 | 输入尺寸 | 640 * 640 |
| 数据来源 | 实拍数据(多场景采集,含遮挡/重叠/光照变化) |
3. 模型设计与实现
番茄成熟度识别在工程上通常面临两类"非理想输入":其一是多目标与遮挡,同一画面可能同时出现多个番茄且存在相互遮挡、手持遮挡与背景干扰;其二是外观域偏移,室内灯光、自然光、手机曝光与反光会显著改变颜色分布,使"绿色/红色/损坏"的判别从简单的颜色阈值问题退化为纹理、形状与上下文耦合的视觉理解问题。老思在系统方案上优先采用单阶段目标检测范式:直接将"成熟度/损坏状态"作为检测类别输出(即 C = 3 C=3 C=3 类),在一次前向传播中同时完成定位与分类,从而避免先检出番茄再做二次分类时对裁剪质量、跟踪稳定性与误检传播的依赖,并天然支持多目标场景。
在基线模型选择上,传统的两阶段方案往往采用"候选区域生成 + 分类器"的结构,其中分类器可选用 ResNet、MobileNet 或 EfficientNet 等主干网络以适配不同算力约束;这类方案的优势是分类器可针对颜色与病斑细粒度特征做更强的判别建模,但在番茄小目标、遮挡与尺度变化显著时,候选框质量会直接决定最终分类上限,且工程链路更长、实时性更难保障。相比之下,YOLO 系列将定位与分类统一到共享特征表征上,在保证实时性的同时更擅长处理多尺度目标,因此本文以 YOLOv12n 作为主力模型,并在系统中保留 YOLOv5--YOLOv12 的权重切换接口用于对比评测与部署权衡。(Ultralytics Docs)

从结构上看,YOLO 检测器可以概括为 Backbone--Neck--Head 三段式:Backbone 提取多层语义特征,Neck 通过自顶向下与自底向上路径聚合实现多尺度融合,Head 在不同尺度特征图上输出边界框与类别置信度。以 YOLOv5 为例,其骨干网络以 CSP 思想减少冗余梯度流,Neck 常采用 SPPF 与 PANet 融合多尺度信息,Head 在 P 3 / P 4 / P 5 P3/P4/P5 P3/P4/P5 三个尺度上进行预测,从而兼顾小目标与大目标检测。(Ultralytics Docs)
(网络的整体架构图如下图所示,便于读者对 Backbone/Neck/Head 的数据流有直观认识。)
text
图3-1 YOLOv5 模型结构(Backbone--Neck--Head):
https://cdn.jsdelivr.net/gh/ultralytics/assets@main/docs/yolov5-model-structure.avif
随着 YOLOv5→YOLOv12 的迭代,检测头与训练机制发生了几次关键转向:YOLOv5 以 anchor-based 预测为主,依赖先验框匹配;后续版本逐步增强了 anchor-free 与解耦头(分类/回归分支分离)的实践,使正负样本分配与收敛稳定性更友好,并降低对人工先验的敏感性。对本文任务而言,这种演化的直接收益体现在两点:其一,番茄在画面中的尺度跨度大、形状近似椭圆且姿态变化多,anchor-free 往往更不易被"先验框尺度不合适"牵制;其二,解耦头能让分类分支更专注于颜色与损坏纹理,回归分支更专注于边界定位,从而在复杂光照下提升类别判别的鲁棒性。(Ultralytics Docs)
YOLOv12 的核心变化在于"注意力中心化"的骨干与特征聚合设计。与以卷积为主的 YOLOv5--YOLOv11 不同,YOLOv12 引入 Area Attention,将特征图沿水平或垂直方向划分为 l l l 个区域(默认 l = 4 l=4 l=4),在区域内计算注意力以扩大有效感受野并控制复杂度。若将特征展平为长度 N = H W N=HW N=HW 的序列,标准全局注意力复杂度为 O ( N 2 ) O(N^2) O(N2);Area Attention 将序列划分为 l l l 个子序列后,复杂度近似变为
O ! ( l ( N l ) 2 ) = O ! ( N 2 l ) , O!\left(l\left(\frac{N}{l}\right)^2\right)=O!\left(\frac{N^2}{l}\right), O!(l(lN)2)=O!(lN2),
在保持较大上下文建模能力的同时显著降低开销,并可在具备条件时使用 FlashAttention 进一步优化显存读写瓶颈。(arXiv)
此外,YOLOv12 采用 R-ELAN(Residual Efficient Layer Aggregation Networks)缓解注意力骨干的优化困难,其思想是在特征聚合块外侧引入带缩放的残差捷径,使块级输出满足
y = x + α f ( x ) , y = x + \alpha f(x), y=x+αf(x),
其中 α \alpha α 为缩放系数,用于抑制深层堆叠带来的梯度不稳定,并通过重新设计聚合路径提升特征复用效率。(arXiv)
(Area Attention 与 R-ELAN 的示意图如下,便于对 YOLOv12 的结构创新建立直观认知。)
text
图3-2 Area Attention 分区示意(来自 YOLOv12 技术报告 HTML 版本渲染图):
https://ar5iv.labs.arxiv.org/html/2502.12524/assets/x2.png
图3-3 CSPNet / ELAN / C3K2 与 R-ELAN 的结构对比示意:
https://ar5iv.labs.arxiv.org/html/2502.12524/assets/x3.png
在任务建模上,本文将"Green / Red / damaged"视为互斥检测类别,检测头对每个候选框输出类别概率与边界框参数。训练目标函数沿用 Ultralytics 系列实现中常见的三项加权形式(不同 YOLO 版本权重与细节略有差异,但总体思想一致):
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 box L_{\text{box}} Lbox 通常采用 IoU 家族(如 CIoU)度量预测框 b ^ \hat{b} b^ 与真值框 b b b 的几何一致性,常写作 L box = 1 − CIoU ( b , b ^ ) L_{\text{box}} = 1-\text{CIoU}(b,\hat{b}) Lbox=1−CIoU(b,b^); L cls L_{\text{cls}} Lcls 多用 BCEWithLogits 以适配多类检测的稳定优化; L dfl L_{\text{dfl}} Ldfl 为 Distribution Focal Loss,用离散分布回归增强边界框定位的精细度。这种"分类---回归---分布回归"联合约束在小目标与边界模糊(例如反光导致的边缘不清)时往往更有利。(Ultralytics Docs)
实现层面,本文在工程中将"模型推理"封装为独立 Detector:初始化时加载所选 YOLO 权重(v5--v12),推理时统一返回 ( 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 列表,并将类别 ID 映射为中文标签(绿色/红色/损坏),供 PySide6 界面层绘制框与统计。为了保证 UI 实时性,推理线程与主线程通过信号槽传递结果,避免阻塞界面事件循环;同时预留导出 ONNX/TensorRT 的接口,以便在部署阶段把相同 Detector 逻辑迁移到更高吞吐的后端。(Ultralytics Docs)
4. 训练策略与模型优化
番茄成熟度识别的训练目标并不只是追求离线 mAP,更关键的是让模型在真实采摘/分拣场景下对光照漂移、反光高光、遮挡重叠以及不同拍摄距离保持稳定输出。因此,老思在训练流程上坚持两条原则:其一,跨 YOLOv5--YOLOv12 的横向对比必须共享同一数据划分、同一输入分辨率与尽可能一致的优化超参,以保证对比结论可解释;其二,面向工程部署要优先获得"可收敛、可复现、可导出"的权重,而不是在训练集上做过度拟合。具体实现采用 Ultralytics 训练框架的标准流水线:加载预训练权重进行迁移学习(以 COCO 等通用数据上的视觉先验为起点),在前若干 epoch 主要适配番茄外观与成熟度颜色分布,随后逐步降低学习率进行细化收敛;当验证集指标在一定耐心轮数内不再提升时触发早停,以避免后期过拟合与无效训练开销。学习率策略采用余弦退火更便于在中后期稳定收敛,其形式可写为
l r ( t ) = l r 0 ( ( 1 − l r f ) 1 + cos ( π t / T ) 2 + l r f ) , \mathrm{lr}(t)=\mathrm{lr}_0\Big(\big(1-\mathrm{lrf}\big)\frac{1+\cos(\pi t/T)}{2}+\mathrm{lrf}\Big), lr(t)=lr0((1−lrf)21+cos(πt/T)+lrf),
其中 t t t 为当前迭代(或 epoch), T T T 为总训练长度, l r 0 \mathrm{lr}_0 lr0 为初始学习率, l r f \mathrm{lrf} lrf 控制末端学习率占比;该策略在成熟度这种"类间边界较软"的任务中通常比激进的分段下降更不易引发指标震荡。
数据增强方面,成熟度类别高度依赖颜色与局部纹理,增强既要提升泛化又要避免破坏语义。训练前期启用 Mosaic/RandomAffine/HSV 抖动等增强以扩展尺度与背景分布,提升对遮挡、局部裁切与复杂背景的鲁棒性;训练后期关闭 Mosaic(close_mosaic)让样本分布回归真实拍摄形态,使检测框回归与类别判别在"自然图像结构"上完成最后收敛,这一点对损坏类(damaged)这类往往依赖细粒度斑块纹理的类别尤其重要。若实际统计发现 damaged 样本显著少于 Green/Red,建议在不改动测试集分布的前提下,训练阶段引入类重加权或定向补采难例;否则模型可能出现"损坏类高精度但低召回"的现象,即只在非常典型的腐烂/破损外观上给出响应,而对轻微病斑或局部破损更易漏检。为了进一步控制过拟合,训练中默认启用权重衰减( L 2 L_2 L2 正则)与 EMA(指数滑动平均)权重评估,前者抑制参数爆炸,后者在验证时提供更平滑的泛化性能;同时启用混合精度(FP16)以在 RTX 4090 上获得更高吞吐,保证视频流场景下的部署配置与训练侧数值行为尽量一致。
下表给出本文默认训练配置(未额外说明时用于 YOLOv5--YOLOv12 的统一对比),你可直接替换为自己实际工程中的参数以保证全文一致性。
| 名称 | 作用(简述) | 默认值 |
|---|---|---|
| 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 |
| device | 训练 GPU | RTX 4090 |
模型优化分为"训练期优化"和"部署期优化"两段。训练期优化的核心是让不同 YOLO 版本在同等数据与预算下达到可比的最优点:除统一超参外,还需要统一推理后处理(同一 NMS/阈值规则)与评估脚本,避免因为后处理差异造成的指标偏移。部署期优化则聚焦推理开销,常用路径是导出 ONNX 并进一步编译到 TensorRT,配合 FP16/INT8(若有校准集)降低延迟;在不改变检测行为的前提下,可优先选择模型结构更轻的 n/tiny 尺度权重,并通过输入源分辨率与帧率控制让系统端到端时延满足交互要求。以工程可复现为目标,建议在每次训练完成后固化三类产物:最佳权重(best.pt)、训练配置(yaml/args)与验证报告(曲线图与指标表),并在 UI 系统中记录"权重版本---阈值---数据来源---导出路径"的元信息,确保后续对比与回归测试具备可追溯性。
bash
# 训练(Ultralytics 风格示例,按你的 data.yaml 与模型权重路径替换)
yolo detect train model=yolo12n.pt data=data.yaml imgsz=640 batch=16 epochs=120 patience=50 \
lr0=0.01 lrf=0.01 momentum=0.937 weight_decay=0.0005 warmup_epochs=3.0 \
mosaic=1.0 close_mosaic=10 device=0
# 导出 ONNX(部署期优化的起点)
yolo export model=runs/detect/train/weights/best.pt format=onnx opset=12 simplify=True
5. 实验与结果分析
5.1 实验设置与对比基线
本节在同一数据集划分(训练 5,520 / 验证 566 / 测试 285)与一致输入分辨率( 640 × 640 640\times640 640×640)下,对 YOLOv5--YOLOv12 的不同尺度模型进行横向对比。对比基线分为两组:其一为 n 型轻量模型 (YOLOv5nu、YOLOv6n、YOLOv7-tiny、YOLOv8n、YOLOv9t、YOLOv10n、YOLOv11n、YOLOv12n),其二为 s 型中等规模模型(YOLOv5su、YOLOv6s、YOLOv7、YOLOv8s、YOLOv9s、YOLOv10s、YOLOv11s、YOLOv12s)。推理速度统计采用统一硬件环境(日志记录为 NVIDIA GeForce RTX 3070 Laptop GPU),并拆分为预处理、前向推理与后处理三段时延,以更贴近桌面端 GUI 实时显示的端到端体验。
5.2 度量指标
检测性能以 Precision、Recall、F1 及 mAP 为核心指标,其中
Precision = T P T P + F P , Recall = T P T P + F N , F 1 = 2 ⋅ Precision ⋅ Recall Precision + Recall . \text{Precision}=\frac{TP}{TP+FP},\qquad \text{Recall}=\frac{TP}{TP+FN},\qquad F_1=\frac{2\cdot \text{Precision}\cdot \text{Recall}}{\text{Precision}+\text{Recall}}. Precision=TP+FPTP,Recall=TP+FNTP,F1=Precision+Recall2⋅Precision⋅Recall.
mAP@0.5 与 mAP@0.5:0.95 分别衡量在 IoU=0.5 单阈值以及多阈值平均意义下的综合检测质量。与此同时,为便于工程阈值选型,额外给出 F1--Confidence 曲线 用于确定推荐的置信度阈值区间,并结合 PR 曲线 分析不同类别在召回提升过程中的精度衰减特征。

5.3 单模型训练收敛与阈值行为分析
从训练过程曲线可以看到,box/cls/dfl 三类损失在前 20 个 epoch 下降最快,随后进入缓慢收敛阶段;验证集 mAP@0.5 与 mAP@0.5:0.95 在中后期逐步爬升并在末段趋于平稳,说明模型已完成从"快速拟合外观差异"到"细化边界与分类置信度校准"的典型收敛过程。值得注意的是,recall 曲线在中期达到相对高点后出现回落,这在采用较强增强、并在训练后期关闭 Mosaic 的设置下并不罕见:数据分布从"强增强的合成视角"回到"更接近真实采集的样本形态"时,模型会重新调整置信度分布,表现为召回与精度的再平衡。该现象并不必然意味着退化,更应结合 PR 与 F1--Confidence 曲线共同判断。

进一步观察阈值行为,图5-1 给出了 F1 随置信度阈值变化的关系,"all classes"在 conf≈0.088 附近达到峰值(图例给出 all classes 0.44 at 0.088),这意味着若系统目标是获得较均衡的 Precision/Recall,UI 默认阈值设置在 0.08--0.12 区间更稳妥。图5-2 的 PR 曲线同时揭示了明显的"类别两极化":Fresh Tomato 与 Rotten Tomato 的 AP 接近 0.78,而若干低 AP 类别(如 object 以及数值型标签)显著拉低 all classes 的综合 mAP(图例 all classes 0.395 mAP@0.5)。这类现象在工程数据集中往往对应两种原因:一是类别定义与 data.yaml 的 names 顺序不一致,导致评估按"错误类别语义"统计;二是存在占位/噪声类或极少样本类,使得该类 PR 曲线坍塌并拖累宏平均结果。就系统落地而言,老思更建议先以"业务关心类别"为主核对标注与类别映射,再决定是否保留这些低质量类别进入正式评估与部署。
在 n 型组中,mAP@0.5 的最优值出现在 YOLOv12n(0.3897),YOLOv10n(0.3890)与 YOLOv11n(0.3878)非常接近,三者差距在千分位到百分位之间,说明在当前数据规模与任务难度下,"版本迭代"带来的收益更多体现在收敛稳定性与误差结构变化,而不是绝对指标的显著跃迁。与之相对,YOLOv6n 与 YOLOv9t 的 F1 更高(分别约 0.596 与 0.593),但它们的 mAP@0.5 并非最高,这通常意味着其在某一固定阈值下的 Precision/Recall 平衡更有利,而在全阈值积分意义下的排序能力并未拉开差距;因此在 GUI 默认阈值未做"按模型自适应"时,用户体感可能更偏好 F1 更高的模型,而论文对比则更应优先参考 mAP。
表 5-1 n 型模型(n_type)综合指标与时延统计
| Model | Params(M) | FLOPs(G) | PreTime(ms) | InfTime(ms) | PostTime(ms) | TotalTime(ms) | Precision | Recall | F1 Score | mAP50 | mAP50-95 |
|---|---|---|---|---|---|---|---|---|---|---|---|
| YOLOv5nu | 2.6 | 7.7 | 1.90 | 7.73 | 1.31 | 10.94 | 0.531 | 0.610 | 0.568 | 0.377 | 0.364 |
| YOLOv6n | 4.3 | 11.1 | 2.17 | 6.78 | 1.39 | 10.34 | 0.514 | 0.710 | 0.596 | 0.378 | 0.361 |
| YOLOv7-tiny | 6.2 | 13.8 | 2.28 | 14.74 | 4.06 | 21.08 | 0.518 | 0.676 | 0.586 | 0.365 | 0.344 |
| YOLOv8n | 3.2 | 8.7 | 1.95 | 6.83 | 1.39 | 10.17 | 0.357 | 0.526 | 0.425 | 0.382 | 0.368 |
| YOLOv9t | 2.0 | 7.7 | 1.87 | 16.51 | 1.29 | 19.67 | 0.539 | 0.659 | 0.593 | 0.384 | 0.370 |
| YOLOv10n | 2.7 | 6.7 | 1.93 | 7.97 | 1.25 | 11.15 | 0.372 | 0.529 | 0.437 | 0.389 | 0.375 |
| YOLOv11n | 2.6 | 6.7 | 1.99 | 14.61 | 1.40 | 18.00 | 0.366 | 0.546 | 0.438 | 0.388 | 0.374 |
| YOLOv12n | 2.6 | 6.5 | 1.91 | 12.47 | 1.37 | 15.75 | 0.353 | 0.561 | 0.433 | 0.390 | 0.375 |
| YOLOv5n | 1.9 | 4.5 | 1.83 | 7.63 | 1.28 | 10.74 | 0.519 | 0.629 | 0.569 | 0.373 | 0.360 |

从端到端时延看,YOLOv6n 与 YOLOv8n 的前向推理耗时约 6.8ms,为 n 型组中最快;YOLOv12n 尽管 FLOPs 更低,但推理耗时约 12.5ms,说明其算子形态与实现路径对 GPU kernel 的友好程度会显著影响"实际速度",这一点在桌面端实时系统中往往比参数量更敏感。综合"精度---速度---稳定性",若以实时为先且允许小幅牺牲 mAP,YOLOv6n/YOLOv8n 更具交互优势;若以论文对比与中等实时性为先,YOLOv10n/YOLOv11n/YOLOv12n 更适合作为主模型候选。
为了更直观呈现训练过程差异,图5-5 给出了 n 型组 mAP@0.5 随 epoch 的变化。可以看到多数模型在 20--40 epoch 完成主要爬升,后期进入平台期;YOLOv10n/YOLOv11n/YOLOv12n 的曲线在中后段更平滑,提示其训练稳定性与后期收益更可控,这对需要反复试验超参、并在工程上追求可复现收敛的场景更重要。

与训练曲线一致,图5-6 的平均 PR 曲线显示各模型整体差距不大,但在高召回区间(接近 1.0)精度下降的速度存在细微差别:更"抗下降"的曲线通常意味着对难例与低置信度样本的排序更合理,部署时更适合配合较低阈值以换取更高召回。

s 型组整体 mAP@0.5 上限略高于 n 型组,其中 YOLOv12s 达到 0.3955,为本组最高;YOLOv10s 与 YOLOv11s 紧随其后(约 0.3899 与 0.3886),而 YOLOv7 的 mAP@0.5 也较高(0.3924),但其推理耗时显著增大。需要强调的是,s 型组的 F1 普遍集中在 0.41--0.45 区间,明显低于部分 n 型模型的 F1,这再次提示"固定阈值下的 F1"会受到置信度校准与类别噪声影响;在类别映射尚未完全清理的情况下,用 mAP 作为主排序依据更稳健,而 F1 更适合作为"部署阈值调优后的体验指标"。
表 5-2 s 型模型(s_type)综合指标与时延统计
| Model | Params(M) | FLOPs(G) | PreTime(ms) | InfTime(ms) | PostTime(ms) | TotalTime(ms) | Precision | Recall | F1 Score | mAP50 | mAP50-95 |
|---|---|---|---|---|---|---|---|---|---|---|---|
| YOLOv5su | 9.1 | 24.0 | 2.28 | 8.45 | 1.51 | 12.24 | 0.332 | 0.654 | 0.441 | 0.374 | 0.360 |
| YOLOv6s | 17.2 | 44.2 | 2.22 | 8.59 | 1.45 | 12.26 | 0.321 | 0.715 | 0.443 | 0.377 | 0.364 |
| YOLOv7 | 36.9 | 104.7 | 2.44 | 23.62 | 3.46 | 29.52 | 0.335 | 0.544 | 0.415 | 0.392 | 0.379 |
| YOLOv8s | 11.2 | 28.6 | 2.31 | 7.66 | 1.42 | 11.39 | 0.334 | 0.606 | 0.431 | 0.379 | 0.366 |
| YOLOv9s | 7.2 | 26.7 | 2.12 | 18.66 | 1.39 | 22.17 | 0.326 | 0.690 | 0.443 | 0.373 | 0.361 |
| YOLOv10s | 8.0 | 21.4 | 2.06 | 15.31 | 1.35 | 18.72 | 0.371 | 0.542 | 0.440 | 0.390 | 0.377 |
| YOLOv11s | 9.4 | 21.5 | 2.04 | 15.28 | 1.38 | 18.70 | 0.368 | 0.552 | 0.442 | 0.389 | 0.376 |
| YOLOv12s | 9.3 | 21.4 | 2.09 | 13.23 | 1.42 | 16.74 | 0.379 | 0.544 | 0.447 | 0.395 | 0.380 |
| YOLOv5s | 7.0 | 16.4 | 2.15 | 8.31 | 1.48 | 11.94 | 0.336 | 0.613 | 0.434 | 0.374 | 0.361 |

从训练过程角度,图5-8 显示 YOLOv12s 的 mAP 曲线后期仍有小幅上扬,并在末段保持相对稳定,这与其最终 mAP 领先一致;反之,部分模型在中后期出现更明显波动,往往意味着对增强策略与学习率更敏感,工程复现时需要更严格的随机种子与数据加载一致性控制。

小结(面向系统默认推荐):若你希望 UI 默认模型兼顾精度与可解释的版本先进性,且允许 10--15ms 级推理时延,YOLOv11n/YOLOv12n 或 YOLOv10s/YOLOv12s 更适合作为"可对比的主模型";若你更看重摄像头实时交互的流畅度,YOLOv6n/YOLOv8n、YOLOv8s 更接近"低延迟优先"的工程选择。与此同时,图5-2 所揭示的类别两极化强烈建议你在最终发布前完成类别映射与噪声类清理,否则 all classes 的宏平均指标会系统性低估"业务主类"的真实效果。
6. 系统设计与实现
6.1 系统设计思路
本系统以"检测链路可复现、交互链路可实时、数据链路可追溯"为设计目标,采用分层与对象组合的方式组织代码结构:Ui_MainWindow 负责界面元素与样式呈现,MainWindow 作为控制中枢承载状态机与槽函数调度,Detector 作为处理核心完成权重加载、推理与后处理。这样的拆分使界面迭代(主题、布局、控件)与算法迭代(YOLOv5--YOLOv12 切换、阈值策略、导出后端)相互解耦,避免在工程扩展时出现"UI 逻辑侵入推理逻辑"的维护风险。

在运行时链路上,系统围绕"多源输入→预处理→YOLO 推理→后处理/统计→界面更新→用户交互→循环/结束"形成闭环。输入源统一抽象为帧/图像流(摄像头帧、视频帧、图片或文件夹迭代),预处理阶段对尺寸与色彩空间做一致化处理,使不同来源进入同一推理接口;推理阶段支持加载 YOLO 家族不同版本权重,并将输出统一规约为检测框、类别与置信度;后处理阶段完成 NMS、阈值过滤与类别映射,同时计算类别计数、置信度分布等统计量,以便在界面侧即时展示。
为保证桌面端的交互流畅性,推理与渲染采用 Qt 信号-槽跨线程通信:Detector 在工作线程中完成推理并通过信号发送结果,MainWindow 在主线程接收后更新图像叠加与表格统计,避免长耗时计算阻塞事件循环。用户侧的 Conf/IoU 调参、模型切换与主题切换则通过槽函数回写至运行时状态,并按"即时生效、最小重算"的策略触发后处理或重载权重,从而在保证响应速度的同时维持输出一致性。
数据管理方面,系统引入 SQLite 作为轻量持久化层:用户注册/登录、个人配置(主题、默认阈值、默认模型)与检测历史(时间戳、输入源、模型版本、统计结果、导出路径)均可追溯。这样既支持"每用户独立空间"的工程需求,也为后续实验复盘与对比评测提供结构化记录,避免仅依赖零散图片或日志文件难以复现的问题。
图 系统流程图

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

登录与账户管理被设计为检测系统的"前置入口与持久化枢纽":启动后用户先在登录界面完成注册或校验,账号信息以 SQLite 形式存储并在登录成功后加载个人配置与历史记录,使主题样式、默认模型与阈值等偏好能够跨会话保持一致;进入主界面后,检测链路与账户链路通过 MainWindow 的状态管理自然衔接------一方面推理结果可按用户维度写入历史表用于查询与导出,另一方面用户可在不退出系统的情况下修改头像、密码与偏好设置并即时生效;当执行注销或切换账号时,系统清理会话缓存并回到登录页,从而保证不同用户的检测结果与配置空间相互隔离,同时维持连续使用场景下的操作流畅性。

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

完整资源中包含数据集及训练代码,环境配置与界面中文字、图片、logo等的修改方法请见视频:➷➷➷
详细介绍文档博客: YOLOv5至YOLOv12升级:番茄成熟度识别系统的设计与实现(完整代码+界面+数据集项目)
环境配置博客教程:(1)Pycharm软件安装教程;(2)Anaconda软件安装教程;(3)Python环境配置教程;
或者环境配置视频教程:(1)Pycharm软件安装教程;(2)Anaconda软件安装教程;(3)Python环境依赖配置教程
数据集标注教程(如需自行标注数据):数据标注合集
8. 参考文献(GB/T 7714)
1 XU Xiao, JIANG Yiming, WANG Yaonan. Key Technologies for Machine Vision for Picking Robots: Review and Benchmarking[J]. Machine Intelligence Research , 2025, 22: 2-16.
2 蒋焕煜, 彭永石, 申川, 应义斌. 基于双目立体视觉技术的成熟番茄识别与定位[J]. 农业工程学报 , 2008, 24(8): 279-283.
3 DALAL N, TRIGGS B. Histograms of Oriented Gradients for Human Detection[C]//Proceedings of the IEEE Computer Society Conference on Computer Vision and Pattern Recognition (CVPR 2005) . San Diego: IEEE, 2005: 886-893.
4 REN S, HE K, GIRSHICK R, SUN J. Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks[C]//Advances in Neural Information Processing Systems (NIPS 2015) . 2015: 91-99.
5 LIU W, ANGUELOV D, ERHAN D, et al. SSD: Single Shot MultiBox Detector[C]//Computer Vision -- ECCV 2016 . Cham: Springer, 2016: 21-37.
6 LIN T Y, DOLLÁR P, GIRSHICK R, et al. Feature Pyramid Networks for Object Detection[C]//Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition (CVPR 2017) . 2017: 2117-2125.
7 LIN T Y, GOYAL P, GIRSHICK R, et al. Focal Loss for Dense Object Detection[C]//Proceedings of the IEEE International Conference on Computer Vision (ICCV 2017) . 2017: 2999-3007.
8 REDMON J, DIVVALA S, GIRSHICK R, FARHADI A. You Only Look Once: Unified, Real-Time Object Detection[C]//Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition (CVPR 2016) . 2016: 779-788.
9 REDMON J, FARHADI A. YOLOv3: An Incremental Improvement[EB/OL]. arXiv:1804.02767, 2018.
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[EB/OL]. arXiv:2207.02696, 2022.
11 CARION N, MASSA F, SYNNAEVE G, et al. End-to-End Object Detection with Transformers[C]//Computer Vision -- ECCV 2020 . Cham: Springer, 2020: 213-229.
12 LIU Z, LIN Y, CAO Y, et al. Swin Transformer: Hierarchical Vision Transformer Using Shifted Windows[C]//Proceedings of the IEEE/CVF International Conference on Computer Vision (ICCV 2021) . 2021: 10012-10022.
13 CHEN Wenbai, LIU Mengchen, ZHAO Chunjiang, LI Xingxu, WANG Yiqun. MTD-YOLO: Multi-task Deep Convolutional Neural Network for Cherry Tomato Fruit Bunch Maturity Detection[J]. Computers and Electronics in Agriculture , 2024, 216: 108533.
14 刘坤, 吉宏亚, 黄程菲, 王晓, 朱一帆. 基于改进YOLOv5s的番茄成熟度识别技术研究[J]. 中国农机化学报 , 2025, 46(5): 79-85.
15 LANG Yining, ZHANG Yanqi, SUN Tan, CHAI Xiujuan, ZHANG Ning. Digital Twin-driven System for Efficient Tomato Harvesting in Greenhouses[J]. Computers and Electronics in Agriculture, 2025, 236: 110451.