YOLOv5至YOLOv12升级:花卉检测与识别系统的设计与实现(完整代码+界面+数据集项目)
摘要:面向园艺生产管理、植物表型监测与移动端辅助识别等应用场景,博主构建了一套基于深度学习目标检测的花卉检测与品类识别系统,实现对自然场景中多品类花卉目标的定位、计数与类别判别。系统以 YOLO 系列检测网络为核心,通过迁移学习与数据增强提升在复杂背景、遮挡、光照变化与尺度差异条件下的鲁棒性,并在推理端集成置信度阈值调节、非极大值抑制与结果可视化等模块,输出包含边界框、类别与置信度的结构化信息。为便于工程落地,系统提供图像/视频/摄像头多源输入、批量检测与结果导出能力,可支持后续的统计分析与数据回溯。整体方案兼顾识别精度与实时性,为花卉目标的自动化监测与智能管理提供可复用的实现参考。
文章目录
功能效果展示视频:YOLOv5至YOLOv12升级:花卉检测与识别系统的设计与实现(完整代码+界面+数据集项目)
1.前言综述
在园艺生产、城市绿化巡检、花期监测与授粉评估等场景中,花卉目标往往呈现出明显的细粒度特征差异与复杂背景干扰,早期研究已通过构建多类别花卉数据集并讨论“类间相似、类内差异”的识别瓶颈,为后续方法演进奠定了问题刻画与评测基础。1 (dblp)
随着移动端采集与公众科学平台的发展,花卉识别逐渐融入更广义的物种识别范畴,数据分布呈现长尾不均衡、拍摄设备与成像条件多样化等特征,使得模型需要在开放环境中同时面对小样本类别与跨域泛化压力。2 (CVF Open Access)
近年来植物图像识别研究在网络结构、数据获取与训练范式上持续迭代,相关综述工作系统梳理了迁移学习、数据增强与轻量化部署等方向的共性规律,也指出了真实场景下数据稀缺与域偏移仍是制约工程落地的重要因素。3 (ScienceDirect)
从方法谱系看,传统视觉方案多依赖颜色、纹理与形状等手工特征并配合浅层分类器,虽然具备一定可解释性,但在遮挡、强光/逆光、复杂背景与细粒度差异并存时往往难以保持稳定性能,而深层残差网络通过更深层次的表征学习显著提升了特征抽象能力,为复杂花卉类别的鲁棒识别提供了更强的骨干网络支撑。4 (CVF Open Access)
在细粒度花卉识别任务中,Transformer 及其改进结构逐步用于捕获更长程的依赖关系与全局判别线索,例如基于 Swin 思路构建的轻量化网络在公开花卉数据集上验证了提升全局建模能力与降低计算开销可以同步成立。5 (Txxb)
当任务从“单目标分类”扩展到“自然场景中的多目标检测与类别识别”时,两阶段检测框架以候选区域生成与分类回归的分离式建模获得了较高精度,但其计算链路较长,对实时性要求苛刻的应用并不友好。6 (arXiv)
为应对花卉在图像中尺度跨度大、远景密集与近景局部细节并存的问题,多尺度特征融合成为检测系统的关键模块之一,特征金字塔结构通过自顶向下与横向连接为不同分辨率特征注入更强语义信息,从而改善小目标与多尺度目标的召回能力。7 (CVF Open Access)
与此同时,花卉检测还常伴随前景目标稀少、背景区域占比极高的类别不平衡现象,焦点损失通过抑制易分类样本的梯度贡献,使训练过程更聚焦于困难样本,有助于提升密集预测框架在不平衡数据上的有效学习。8 (CVF Open Access)
在工程部署层面,单阶段检测以端到端的回归式框架显著降低了推理复杂度,其中 YOLO 将检测建模为单次前向计算即可输出边界框与类别概率,为实时花卉检测提供了具有代表性的速度优势。9 (CV Foundation)
围绕 YOLO 的持续演进主要集中在主干特征提取、颈部特征融合、损失设计与训练策略等方面,YOLOv4 将多种可复用的训练技巧与结构改动系统化整合,在通用数据集上取得了速度与精度的兼顾,因而在农业视觉场景中被广泛借鉴。10 (arXiv)
在此基础上,YOLOv7 进一步从训练可增益模块与推理代价之间的关系出发,提出可训练的“bag-of-freebies”思路并在实时检测区间实现更优的精度速度折中,为后续在边缘端与工业端的部署优化提供了更明确的设计路径。11 (CVF Open Access)
面向果园花期与产量预估等具体需求,已有研究将花朵检测与计数放入高密度、强遮挡的真实场景中进行对比实验,结果显示在密集目标条件下检测与密度估计等策略各有适用边界,反映出“检测精度—计数稳定性—场景复杂度”之间的权衡关系。12 (ScienceDirect)
进一步地,花卉检测与机器人作业的耦合也推动了模型轻量化与鲁棒性的研究,例如面向智能疏花机器人提出的改进模型在复杂果园环境中兼顾了较小模型体积与较高帧率需求,体现了检测算法向装备端迁移时对算力与时延约束的现实考量。13 (IJABE)
在国内研究中,面向多目标花卉识别定位的系统性工作已尝试以轻量化骨干与训练策略改进提升实时性能,并将优化后的模型集成到交互界面以支撑实际操作流程,说明“算法—系统—交互”的协同设计对应用落地具有直接价值。14 (Doc88)
与此同时,针对复杂背景下植物目标识别的研究也从注意力机制、损失函数与深度可分离卷积等角度推进轻量化模型构建,表明在相近的农业视觉任务中,提升小目标可检出性与降低模型体积可以通过结构与训练的精细化设计同时实现。15 (J-CSAM)
尽管相关研究已覆盖花卉与植物目标的分类、检测、计数与装备部署等多个方向,但在花卉检测与识别系统的工程实践中仍普遍存在若干共性难点:其一是花卉类别细粒度差异导致的高相似类混淆与类内形态波动;其二是小目标与密集目标带来的漏检、遮挡与重叠边界框回归不稳定;其三是跨季节、跨设备与跨场景的域偏移使得离线评测指标与线上效果可能产生显著落差;其四是面向实时应用时,推理时延、内存占用与可解释性需求往往需要在同一系统内同时被满足。基于这些问题,老思在本文(后续章节)将围绕深度学习花卉检测与识别任务,给出一套可复用的系统实现路线:以 YOLO 系列为核心完成花卉目标检测与类别识别,并在相同数据集上进行多版本模型对比;面向任务构建并规范化标注数据,形成可重复的预处理与划分流程;结合 PySide6 设计可交互的桌面端界面,支持图片/视频/摄像头多源输入、阈值调参、结果可视化与导出,从而将算法验证与应用部署放在同一工程闭环中完成。
主要功能演示:
(1)登录注册演示:系统启动后默认进入登录页,界面包含账号、密码输入框与“登录/注册”入口,并在提交时进行基础合法性校验(空值、长度、字符范围)与数据库查询校验。登录流程以 SQLite 为后端存储,输入凭据通过参数化查询完成匹配,校验通过后加载该用户的个性化配置(如主题、最近一次模型选择、结果保存路径等)以及历史检测记录索引;若为新用户,注册页会完成用户名唯一性检查并写入用户表,同时初始化用户配置表项,随后自动跳转至主界面,使“账号体系—配置持久化—业务入口”形成闭环。
(2)页面布局演示:主界面采用典型的“左侧控制区 + 右侧可视化区 + 底部状态栏”的布局结构:左侧面板集成输入源选择(图片/文件夹/视频/摄像头)、推理控制(开始/暂停/停止)、阈值设置(Conf/IoU)、结果保存与导出等控件;右侧区域以图像视图组件承载检测可视化(边界框、类别、置信度),并提供适配窗口缩放与等比例显示;下方状态栏实时反馈当前输入源、帧率、推理耗时、已检测目标数与保存状态等运行信息。该布局将高频交互控件集中在固定区域,避免遮挡检测画面,同时便于后续扩展热力图、统计面板等功能模块。
(3)模型选择演示:系统在“模型管理/模型选择”区域提供 YOLO 系列权重切换入口,支持从预置列表选择(例如 YOLOv5/YOLOv8/YOLOv12 的不同规模)或从本地导入自训练权重文件。切换模型时,界面会触发统一的加载流程:先释放旧模型与显存缓存,再按当前设备(CPU/CUDA)初始化推理会话,并对输入尺寸、类别映射与后处理参数进行同步更新;为避免误用,界面同步展示模型名称、输入尺寸、类别数与加载状态提示。该设计使“同一套 UI 交互”能够覆盖多模型对比与实际部署需求,用户可以在相同输入上快速观察不同模型的精度与速度差异。
(4)主题修改演示:系统提供主题切换与界面外观配置功能,用户可在设置面板中选择浅色/深色主题或自定义配色方案,并可同步调整部分 UI 资源(图标、背景、字号与强调色)。实现上通过 Qt 样式表(QSS)与资源管理模块对按钮、表格、标签、进度指示与状态栏进行统一风格控制;主题切换操作即时生效,并将选择结果写入用户配置表,保证下次登录自动恢复。该模块的目标是提升长时间使用的可读性与一致性,同时不影响推理主流程的稳定性。
2. 数据集介绍
本项目采用一套面向自然场景的花卉目标检测数据集,合计包含 10,513 幅图像,覆盖 14 个花卉类别,旨在为“多类别、细粒度、复杂背景”的花卉检测与识别任务提供可复现的数据基础。数据集按照工程训练习惯划分为训练集 9,131 张、验证集 919 张、测试集 463 张,并使用 YOLO 系列通用的归一化标注格式(每个目标由 ( x , y , w , h ) (x,y,w,h) (x,y,w,h) 的归一化框参数与类别编号共同描述)。结合你给出的类别映射,本数据集同时保留英文类名与中文释义(如 Allium/大葱花、Borage/琉璃苣等),便于在 UI 展示、结果导出与报告撰写时进行一致的中英对照呈现;老思在后续训练与部署环节也将直接沿用这套映射,保证推理端输出的类别可读性与可追溯性。
从标注统计图可以看出,数据集类别分布存在较明显的不均衡现象,部分类别样本量显著高于其他类别,这会在训练中诱发模型对头部类偏置、尾部类召回不足等问题;因此在训练阶段通常需要配合更强的尺度扰动与数据增强(例如随机缩放、颜色扰动与 Mosaic 等)来缓解长尾带来的泛化压力。目标框分布热力图显示多数标注框中心在图像中部区域更为密集,同时宽高散点呈现“由小到大连续覆盖”的形态,说明该任务既包含近景大目标,也包含占比较高的中小目标与细碎结构,这类分布对检测器的多尺度表征能力与小目标召回提出了更高要求,也为后续采用更合理的输入尺寸、特征金字塔与阈值策略提供了数据层面的依据。
📊 数据集规格说明 (Dataset Specification)
| 维度 | 参数项 | 详细数据 |
|---|---|---|
| 基础信息 | 标注软件 | LabelImg |
| 标注格式 | YOLO TXT (Normalized) | |
| 数量统计 | 训练集 (Train) | 9,131 张 (86.85%) |
| 验证集 (Val) | 919 张 (8.74%) | |
| 测试集 (Test) | 463 张 (4.40%) | |
| 总计 (Total) | 10,513 张 | |
| 类别清单 | Class ID: 0 | 15 |
| Class ID: 1 | Allium (大葱花) |
|
| Class ID: 2 | Borage (琉璃苣) |
|
| Class ID: 3 | Burdock (牛蒡) |
|
| Class ID: 4 | Calendula (金盏花) |
|
| Class ID: 5 | Chicory (菊苣) |
|
| Class ID: 6 | Chive blossoms (韭菜花) |
|
| Class ID: 7 | Coltsfoot (款冬) |
|
| Class ID: 8 | Common mallow (锦葵) |
|
| Class ID: 9 | Common yarrow (洋蓍草) |
|
| Class ID: 10 | Coneflower (金光菊) |
|
| Class ID: 11 | Cow parsley (欧芹) |
|
| Class ID: 12 | Dandelion (蒲公英) |
|
| Class ID: 13 | Gardenia (栀子花) |
|
| 图像规格 | 输入尺寸 | 640 * 640 |
| 数据来源 | 公开图像 / 实地拍摄(统一清洗后混合构建) |
3. 模型设计与实现
面向自然场景的花卉检测与识别,模型需要同时处理细粒度类间差异(花瓣纹理、形态相近导致的混淆)与复杂成像扰动(遮挡、尺度变化、背景干扰)。从工程落地角度看,两阶段检测器(以 ResNet 等作为骨干的候选框范式)通常具备较强的上限精度,但其推理链路更长、部署门槛更高;而以 MobileNet、EfficientNet 为代表的轻量骨干更适合分类或作为检测器骨干替换方案,但仍需要额外的特征金字塔与检测头设计才能覆盖多尺度目标。因此,老思在本系统中选择 Ultralytics 系列的 YOLO12n 作为默认基线:它在保持实时性优势的前提下,将注意力机制更深地引入网络结构,以增强对全局形态与关键判别区域的建模能力,更契合花卉这种“局部纹理与整体结构共同决定类别”的任务特征。(Ultralytics Docs)
从网络结构实现上,YOLO12 延续了“Backbone–Neck–Head”的检测器组织方式.
在 Ultralytics 的 YOLO12 配置中,网络输出采用三尺度特征图 P 3 / 8 , P 4 / 16 , P 5 / 32 P3/8, P4/16, P5/32 P3/8,P4/16,P5/32,以覆盖中小目标与近景大目标的共同需求;Backbone 由逐级下采样的卷积层与 C3k2 模块构成,在高语义层引入 A2C2f 模块以强化表示能力;Neck 通过上采样与拼接进行跨层融合,并继续使用 A2C2f 进行特征整合;Head 端在三尺度上执行密集预测并由 Detect 模块输出类别与边界框回归结果。上述结构细节可由官方模型 YAML 直接读出。(GitHub) 结合 YOLO12 的方法描述,其注意力侧的关键改动包括区域化注意力(Area Attention)、更利于优化的特征聚合模块(R-ELAN 思路)以及用于隐式位置感知的 7 × 7 7\times7 7×7 可分离卷积等,这些设计旨在降低注意力计算与访存开销,同时保留更大的有效感受野。(Ultralytics Docs)
在任务建模与损失函数方面,检测任务通常被写成分类与回归的联合优化问题。对边界框几何一致性,常用的 IoU 家族损失可写为
I o U ( B , B ∗ ) = ∣ B ∩ B ∗ ∣ ∣ B ∪ B ∗ ∣ , \mathrm{IoU}(B,B^{*})=\frac{|B\cap B^{*}|}{|B\cup B^{*}|}, IoU(B,B∗)=∣B∪B∗∣∣B∩B∗∣,
并可进一步采用 CIoU 形式同时约束中心距离与长宽比:
L CIoU = 1 − I o U + ρ 2 ( b , b ∗ ) c 2 + α v , \mathcal{L}_{\text{CIoU}} = 1-\mathrm{IoU}+\frac{\rho^2(\mathbf{b},\mathbf{b}^{*})}{c^2}+\alpha v, LCIoU=1−IoU+c2ρ2(b,b∗)+αv,
其中 ρ ( ⋅ ) \rho(\cdot) ρ(⋅) 为预测框与真值框中心点距离, c c c 为最小包围框对角线长度, v v v 为长宽比一致性项, α \alpha α 为权重系数。分类项在 YOLO 系列中通常采用 sigmoid 形式的二元交叉熵来对每一类的置信度进行监督:
L ∗ cls = − 1 N ∑ ∗ i = 1 N ( y i log σ ( p i ) + ( 1 − y i ) log ( 1 − σ ( p i ) ) ) , \mathcal{L}*{\text{cls}}=-\frac{1}{N}\sum*{i=1}^{N}\Big(y_i\log\sigma(p_i)+(1-y_i)\log(1-\sigma(p_i))\Big), L∗cls=−N1∑∗i=1N(yilogσ(pi)+(1−yi)log(1−σ(pi))),
在长尾类别较明显的花卉数据上,该类损失与后续的采样、增强策略结合,往往比单纯依赖结构更能稳定尾部类的收敛。对于边界框回归的细粒度定位,一些 Ultralytics 系列模型会引入分布式回归思想(将边界距离离散化并学习概率分布)以提升定位精度;老思在实现中保持 Ultralytics 默认实现,训练与推理端的损失与解码保持一致,以保证部署可复现性。(Ultralytics Docs)
工程实现层面,本系统基于 Ultralytics Python API 完成模型构建与推理封装,训练时只需在数据配置中声明类别数与类别名映射,Detect 头会随 nc 自动调整输出维度;推理时按 640 × 640 640\times640 640×640 进行缩放与 letterbox 填充,再将网络输出解码为 ( x 1 , y 1 , x 2 , y 2 , conf , cls ) (x_1,y_1,x_2,y_2,\text{conf},\text{cls}) (x1,y1,x2,y2,conf,cls) 并执行阈值筛选与 NMS(或框架默认后处理),最终把结果同步给 PySide6 前端渲染。一个最小化的加载示例如下:
from ultralytics import YOLO
# 直接加载预训练/微调后的 YOLO12 权重
model = YOLO("yolo12n.pt")
# 推理:source 可为图片路径、视频路径或摄像头索引
results = model.predict(source="demo.jpg", imgsz=640, conf=0.25, iou=0.7)
4. 训练策略与模型优化
花卉检测数据在自然场景下往往伴随显著的尺度变化、遮挡与背景杂波,同时你给出的类别统计也显示出一定程度的长尾不均衡。老思在训练阶段采用“预训练权重初始化 + 强数据增强 + 稳定学习率日程 + 适度正则化”的思路来降低过拟合风险并提升小目标与尾部类的召回。具体做法是以 COCO 等通用数据集预训练的 YOLO12n 权重作为初始化,通过迁移学习快速获得通用边缘与纹理表征,再在本任务数据上进行端到端微调;输入端采用 letterbox 保持纵横比,并在训练早期启用 Mosaic、随机仿射、HSV 抖动与随机翻转等增强来扩充有效样本分布,从而缓解类别不均衡与场景多样性不足带来的分布偏移。考虑到 Mosaic 在训练后期可能引入过强的几何扰动而影响定位精修,训练后段按 close_mosaic 逐步关闭增强,使模型更专注于真实分布上的边界框回归与类别判别收敛。
优化器与学习率策略直接决定了收敛稳定性。工程实现中采用 Ultralytics 默认的 optimizer=auto(通常会在 SGD 与 AdamW 等方案间择优),并引入 warmup 以避免训练初期梯度不稳定;主学习率日程使用余弦退火可获得更平滑的下降轨迹,其形式可写为
η ( t ) = η min + 1 2 ( η max − η min ) ( 1 + cos ( π t T ) ) , \eta(t)=\eta_{\min}+\frac{1}{2}\left(\eta_{\max}-\eta_{\min}\right)\left(1+\cos\left(\pi \frac{t}{T}\right)\right), η(t)=ηmin+21(ηmax−ηmin)(1+cos(πTt)),
其中 t t t 为当前迭代步或 epoch, T T T 为总训练长度, η max \eta_{\max} ηmax 与 η min \eta_{\min} ηmin 分别对应初始学习率与最终学习率下界(工程中以 lr0 与 lrf 间接控制)。在正则化方面,权重衰减用于抑制参数幅值增长,BN 在小批量场景下对稳定训练尤为关键;同时配合早停(patience)防止验证集性能在收敛后反复震荡导致过拟合。为提升吞吐并减少显存占用,训练默认开启混合精度(AMP),在 RTX 4090 上可以在基本不损失精度的情况下显著提高 batch 利用率;推理端则可进一步采用 FP16 导出与 TensorRT 加速以获得更低延迟,这部分属于部署层面的“模型优化”,但其前提是训练时保持算子与后处理路径一致,从而保证导出后的数值行为可控。
下面给出一套在本任务中可直接复用的默认训练配置(若你后续提供更具体的超参数与硬件约束,老思可以再据此做针对性改写与解释):
| 名称 | 作用(简述) | 数值 |
|---|---|---|
| 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 | 训练设备 | RTX 4090 (CUDA) |
对应的训练调用可以用命令行或 Python API 完成,工程上建议将数据配置(类别名、路径、划分)固化为 data.yaml,并在训练脚本中显式记录随机种子、图像尺寸与阈值等关键实验条件,保证结果可复现:
yolo detect train model=yolo12n.pt data=flower.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
这一套策略的核心目标并不在于追求“更复杂的训练技巧”,而是用可解释、可复用的配置稳定提升泛化:前期依靠增强覆盖分布、依靠 warmup 与余弦退火稳定优化轨迹,后期关闭强扰动让定位与分类精修收敛;最终再结合导出侧的 FP16/TensorRT 等推理优化,使系统在保证检测精度的同时满足交互式 UI 的实时性需求。
5. 实验与结果分析
本节围绕你给定的数据集划分(Train 9,131 / Val 919 / Test 463)与统一训练配置(输入 640 × 640 640\times640 640×640、同等数据增强与学习率日程、同一硬件环境)开展对比实验,核心目标是回答两个工程问题:其一,在花卉这种“细粒度类别 + 复杂背景 + 多尺度目标”的任务上,YOLO 系列不同代际与不同尺度模型的精度差距是否显著;其二,在精度差距不大的情况下,如何从参数规模、计算量与推理延迟的角度选出更适合系统落地的默认模型。对比组按你提供的设置覆盖轻量级 “n”/“t” 系列(yolov5nu、yolov6n、yolov8n、yolov9t、yolov10n、yolo11n、yolo12n),并补充 “s” 尺度在训练过程中的收敛曲线对比(YOLOv8s/9s/10s/11s/12s),以观察更高容量模型在本任务上的收敛稳定性差异。
度量指标采用目标检测通用的 Precision、Recall、F1 与 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)表示在 IoU=0.5 下对各类别 AP 求均值,mAP@0.5:0.95(记作 mAP50-95)则在 IoU 阈值从 0.50 到 0.95(步长 0.05)上取均值,更能反映定位质量对性能的影响。(Ultralytics Docs) 由于花卉目标存在大量中小目标与细碎结构,mAP50-95 往往比 mAP50 更敏感,能够更直接暴露“框回归不够紧致”“遮挡场景下定位抖动”等问题,因此本文在解释结果时优先关注 mAP50-95 的变化趋势,并辅以 F1 来刻画阈值条件下的综合检出质量。
在参考复杂度方面,表中给出若干代表性轻量模型在 COCO 上的公开基准(用于说明量级差异,而非用于与本文自建数据集的精度做数值对齐)。可以看到,yolov5nu 与 yolo11n/yolo12n 均处于 2.6M 参数量附近,但 CPU 推理侧与注意力结构引入会带来不同的吞吐表现;同时 yolov10n 在参数与 FLOPs 上进一步压缩,并以端到端设计换取更低的端侧延迟。(Ultralytics Docs)
表 5-1 代表性轻量模型公开复杂度参考(COCO)
| 模型 | 输入尺寸 | mAP50-95 | CPU ONNX (ms) | GPU TensorRT (ms) | 参数量 (M) | FLOPs (B/G) |
|---|---|---|---|---|---|---|
| yolov5nu | 640 | 34.3 | 73.6 | 1.06(A100) | 2.6 | 7.7 (Ultralytics Docs) |
| yolov8n | 640 | 37.3 | 80.4 | 0.99(A100) | 3.2 | 8.7 (GitHub) |
| yolov9t | 640 | 38.3 | — | — | 2.0 | 7.7 (GitHub) |
| yolov10n | 640 | 39.5 | — | 1.84(Latency, 文献设置) | 2.3 | 6.7 (G) (GitHub) |
| yolo11n | 640 | 39.5 | 56.1 | 1.5(T4) | 2.6 | 6.5 (Ultralytics Docs) |
| yolo12n | 640 | 40.6 | —(官方未给出) | 1.64(T4) | 2.6 | 6.5 (GitHub) |

结合训练过程曲线(results 图),模型在前 10–20 个 epoch 内快速完成从迁移初始化到任务适配的收敛,随后 mAP50 进入平台期并在后期保持小幅波动,说明整体训练过程较稳定;与此同时,train/box_loss、train/cls_loss 与 train/dfl_loss 持续下降,而 val 侧的 loss 在中后期出现轻微回升,但 mAP 曲线并未同步明显下滑,这通常意味着“拟合能力继续增强但有效泛化收益有限”,在工程上可以通过更积极的早停或缩短训练轮次来节省训练成本,而不必机械跑满 epoch。就检测质量而言,Precision 曲线整体高于 Recall,且两者在平台期的间隔较为稳定,反映出主要误差来源更偏向漏检(FN)而非误检(FP);这与花卉目标的遮挡、尺度变化以及部分类别样本偏少所导致的可检出性不足相一致。
从 “s” 尺度的收敛对比曲线(Flower-s_type-mAP50 图)看,YOLOv8s 在极早期出现一次明显的性能抖动后迅速恢复,随后各模型在 20 epoch 左右进入相近的 mAP50 平台,整体差距被压缩到很小范围;其中 yolo12s 的曲线在平台期表现出更平滑的波动与略高的上沿,yolov9s/11s 紧随其后,yolov10s 的平台略低但较稳定。对花卉识别这类细粒度任务而言,“平台期差距小”并不意味着结构差异无效,往往是因为训练数据的类间可分性上限与标注噪声共同限制了进一步提升空间,此时更合理的策略是将模型选择转化为“精度边际收益是否值得付出额外计算代价”的权衡,而不是单纯追逐曲线最高点。
在轻量 “n”/“t” 组的综合指标对比(Flower-n_type: F1 & mAP50 Comparison 图)中,各模型的 mAP50 与 F1 同样呈现“整体接近、局部有差”的格局:mAP50 维持在相近区间内,F1 的差异略更明显,说明不同模型在阈值条件下对 FP/FN 的平衡能力存在细微差别。结合前述训练曲线中 “Recall 相对偏低” 的现象,博主更倾向于把系统默认模型放在“召回更稳、平台期波动更小”的版本上,然后在 UI 层提供 conf/IoU 可调来适配不同应用侧对误检与漏检的偏好;若部署端算力更紧张,则可优先选择参数量更低且延迟更友好的变体(例如 yolov5nu 或 yolov10n),用轻量化换取更高的实时帧率,并通过数据补强与阈值校准弥补部分精度差距。
最后,从归一化混淆矩阵(Confusion Matrix Normalized 图)可以更具体地定位类别层面的薄弱环节:Calendula、Chicory、Coneflower、Dandelion、Gardenia 等类别在对角线上呈现较高的一致性,说明这些类在纹理或形态上具有更稳定的判别特征;而 Borage、Cow parsley、以及 Common mallow 的对角线权重明显偏低,并且在“被判为背景”或“与形态相近类互相混淆”的位置上出现较多质量损失,这一方面反映了类别样本量不足与拍摄条件变化造成的域内方差更大,另一方面也提示 Common mallow 等类可能存在较多小目标、遮挡或边界不清晰实例,使得模型在定位与分类的联合优化中更容易产生 FN。面向这些问题,较直接且有效的改进路径通常不在于继续堆叠更大的模型,而是回到数据与训练策略:针对尾部类补充样本并提升标注一致性;对小目标类适度提高输入分辨率或引入更保守的后处理阈值策略;在训练侧采用更贴近长尾分布的采样与增强(如 Copy-Paste、类别重采样),往往能比更换主干带来更确定的收益。
6.系统设计与实现
6.1 系统设计思路
本系统以 Python 3.12 为运行时,前端采用 PySide6(Qt 信号槽机制)实现交互界面,后端以 SQLite 提供用户账户、个性化配置与检测结果的持久化支持。整体结构遵循“界面层—控制层—处理层”的清晰分工:Ui_MainWindow 负责承载按钮、标签、表格与图像视图等控件布局;MainWindow 作为控制中枢完成状态机管理、槽函数调度与跨模块协调;Detector 则封装 YOLO 系列模型的加载、推理与后处理逻辑,使得算法升级或权重替换不会侵入 UI 代码,从而降低维护成本并保证可扩展性。
在运行流程上,系统把“输入源管理”视为首要入口:图片模式强调批量读取与一次性推理,视频/摄像头模式强调帧级循环与播放控制。为了避免推理阻塞 UI 主线程,工程实现中通常将推理放入工作线程(或以 QThread/QRunnable 承载),通过信号将每帧的检测结果(边界框、类别、置信度与统计信息)回传给 MainWindow,再由其统一驱动界面刷新,包括绘制检测框、更新类别计数表、刷新状态栏 FPS/时延等关键运行指标。与此同时,用户在界面上对 conf/iou、模型权重切换、暂停/继续等操作,会被控制层转化为对 Detector 的即时参数更新或会话重建,从而形成稳定的“推理—渲染—交互”闭环。
在数据管理上,系统将“账户空间”与“结果空间”绑定:登录后加载用户的主题(QSS)、最近模型、默认阈值、导出路径与历史记录索引;检测结果可按用户维度写入 SQLite(例如记录输入源、时间戳、模型名、类别统计与导出文件路径),并支持导出为 CSV/JSON 便于二次分析。这样一来,系统既能满足实验对比阶段的可追溯性,也能支撑面向实际使用时的长期积累与复用。
图 系统流程图
图注:系统从初始化到多源输入,完成预处理、推理与界面联动,并通过交互形成闭环。
6.2 登录与账户管理 — 流程图

账户体系的设计目标并不只是“能登录”,而是让检测系统具备可持续使用的个性化空间:博主将登录/注册与 SQLite 的用户表、配置表、记录表联动,登录成功后自动恢复主题样式、默认阈值与最近一次模型选择,并加载历史检测索引,保证用户在多次使用与多场景输入之间保持一致的交互体验;当用户在主界面修改头像或密码时,控制层通过信号槽触发数据库更新并即时刷新界面状态,从而把“身份—配置—结果”稳定地绑定在同一账户下。更重要的是,这一账户流程与主检测流程天然衔接:鉴权通过后才创建推理会话并进入 MainWindow,注销时统一清理会话与资源,避免不同用户之间的配置串扰与结果混写,使系统在工程层面具备可维护、可扩展且可审计的运行形态。
7. 下载链接
若您想获得博文中涉及的实现完整全部资源文件(包括测试图片、视频,py, UI文件,训练数据集、训练代码、界面代码等),这里见可参考博客与视频,已将所有涉及的文件同时打包到里面,点击即可运行,完整文件截图如下:

完整资源中包含数据集及训练代码,环境配置与界面中文字、图片、logo等的修改方法请见视频,项目完整文件请见项目介绍及功能演示视频处给出:➷➷➷
功能效果展示视频:YOLOv5至YOLOv12升级:花卉检测与识别系统的设计与实现(完整代码+界面+数据集项目)
环境配置博客教程:(1)Pycharm软件安装教程;(2)Anaconda软件安装教程;(3)Python环境配置教程;
或者环境配置视频教程:(1)Pycharm软件安装教程;(2)Anaconda软件安装教程;(3)Python环境依赖配置教程
数据集标注教程(如需自行标注数据):数据标注合集
8.参考文献
1 Nilsback M E, Zisserman A. Automated flower classification over a large number of classes[C]//Proceedings of the Indian Conference on Computer Vision, Graphics and Image Processing (ICVGIP). 2008: 722-729.
2 Van Horn G, Mac Aodha O, Song Y, Cui Y, Sun C, Shepard A, Adam H, Perona P, Belongie S. The iNaturalist species classification and detection dataset[C]//Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition (CVPR). 2018: 8769-8778.
3 Chen Y, Huang Y, Zhang Z, Wang Z, Liu B, Liu C, Huang C, Dong S, Pu X, Wan F, Qiao X, Qian W. Plant image recognition with deep learning: A review[J]. Computers and Electronics in Agriculture, 2023, 212: 108072.
4 He K, Zhang X, Ren S, Sun J. Deep residual learning for image recognition[C]//Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition (CVPR). 2016: 770-778.
5 熊举举, 徐杨, 范润泽, 孙少聪. 基于轻量化视觉Transformer的花卉识别[J]. 图学学报, 2023, 44(2): 271-279.
6 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 (NeurIPS). 2015: 91-99.
7 Lin T Y, Dollár P, Girshick R, He K, Hariharan B, Belongie S. Feature pyramid networks for object detection[C]//Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition (CVPR). 2017: 2117-2125.
8 Lin T Y, Goyal P, Girshick R, He K, Dollár P. Focal loss for dense object detection[C]//Proceedings of the IEEE International Conference on Computer Vision (ICCV). 2017: 2999-3007.
9 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: 779-788.
10 Bochkovskiy A, Wang C Y, Liao H Y M. YOLOv4: Optimal speed and accuracy of object detection[EB/OL]. arXiv:2004.10934, 2020.
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 Estrada J S, Vasconez J P, Fu L, Auat Cheein F. Deep learning based flower detection and counting in highly populated images: A peach grove case study[J]. Journal of Agriculture and Food Research, 2024, 15: 100930.
13 Gao A, Du Y H, Li Y Q, Song Y P, Ren L L. Apple flower phenotype detection method based on YOLO-FL and application of intelligent flower thinning robot[J]. International Journal of Agricultural and Biological Engineering, 2025, 18(3): 236-246.
14 谢州益, 胡彦蓉. 基于YOLOv4的多目标花卉识别系统[J]. 南京农业大学学报, 2022, 45(4): 818-827.
15 马宏兴, 董凯兵, 王英菲, 魏淑花, 黄文广, 苟建平. 基于改进YOLO v5s的轻量化植物识别模型研究[J]. 农业机械学报, 2023, 54(8): 267-276.
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)