最新YOLO实现的水果新鲜程度实时检测平台(Flask+SocketIO+HTML_CSS_JS)
摘要
本文面向“水果新鲜程度”场景,构建基于 Flask + Flask-SocketIO/HTML/CSS/JS 的实时目标检测与新鲜度判定平台,后端以 PyTorch 实现 YOLOv5–YOLOv12(共 8 种)的统一训练与推理接口,前端提供Web 网页界面实时演示与可视化分析。系统支持图片/视频/浏览器摄像头三类输入流,采用即时双画面对比(原图与检测图等宽 16:9 自适应)与进度控制(播放/暂停/续播/停止、逐帧/倍速),并内置Conf/IoU 调节、类别筛选与同步双帧回放。结果层面提供CSV 导出、带框结果一键下载(图片/视频)、SQLite 入库与可检索的“检测记录”,并在“导出视图”实现按文件名高亮与一键打包。用户可登录/注册(支持一次性跳过)进入主界面,采用口令哈希与会话控制保障安全;导航动线覆盖“概览 → 图片/视频/摄像头检测 → 模型选择 → 导出视图”,可快速定位最近任务。模型侧支持模型选择/权重上传与类别自动刷新,便于在 YOLOv5/v6/v7/v8/v9/v10/v11/v12 间切换并比较 mAP、F1、PR 曲线与训练曲线;针对边缘部署与实时性,提供 ONNX/TensorRT 推理选项与轻量化配置。平台面向分拣线与质检台等真实工况,覆盖成熟度/瑕疵/腐烂早期征兆等细粒度标签,既可在线监测也可离线评测,文末提供完整工程与数据集下载链接。
讲解视频地址:[基于深度学习的水果新鲜程度检测系统(Web系统+完整项目分享+数据集+多YOLO模型)](https://www.bilibili.com/video/BV14GQwBCEEs/)
YOLOv12-v11/v10/v9/v8/v7/v6/v5系统(八个模型,含说明论文)合集下载:https://mbd.pub/o/bread/YZWck55uZQ==
说明论文下载:https://mbd.pub/o/bread/YZWck5twbQ==
YOLOv12下载:https://mbd.pub/o/bread/YZWbmplwZw==
YOLOv11下载:https://mbd.pub/o/bread/YZWbm5lwbA==
YOLOv10下载:https://mbd.pub/o/bread/YZWbm5hsaQ==
YOLOv9下载:https://mbd.pub/o/bread/YZWbmp9sZw==
安装与教程文档:https://deeppython.feishu.cn/wiki/II45w0dDfi2k0ikxmXCcf2IFnWf
@
1. 网页功能与效果
(1)登录注册:提供注册、登录与一次性“跳过”三种入口,成功进入后会话仅在当前浏览器生效,未登录用户保存于本地缓存。密码采用哈希与会话过期控制,兼顾上手效率与基础安全;首次访问可快速跳过体验并在需要时再补全账户信息。

(2)功能概况:主页以卡片概览图片检测、视频检测与摄像头检测三类任务,指向模型选择与导出视图的快捷入口同步显示。支持最近记录与CSV高亮定位,便于从上次中断位置继续;关键运行参数(Conf/IoU、类别筛选)在侧边栏集中呈现,做到所见即所得。

(3)视频检测:采用同步双帧对比(原始帧与标注帧等宽16:9自适应),提供进度条、暂停、继续与停止控制,适合逐段核查。推理过程中可实时调节阈值与类别筛选,并支持缓冲生成MP4、一键导出带框视频与CSV,底部“检测记录”跨页共享。

(4)更换模型:上传权重即可切换当前模型,类别信息与配色随即刷新,覆盖YOLOv5–YOLOv12的对比需求。路径规范保持跨平台兼容,数据库自动迁移以保障历史记录可读可写;页面标题与品牌元素可编辑并本地保存,方便团队化部署。

(5)概览界面:以轻量仪表盘呈现近期开箱指标与任务统计,包含mAP/F1趋势、处理量与导出次数等摘要,并给出异常任务的快捷跳转。博主还加入了最近文件名与时间轴视图,支持按文件名高亮与一键回放,形成从概览到细节的闭环体验。

2. 绪论
2.1 研究背景与意义
生鲜供应链的分拣、质检与零售复检迫切需要将目标检测与细粒度品质判定整合为低延迟、可追溯、强鲁棒的一体化方案,而端到端检测范式的演进为实时落地提供了方法学基础 [1]。在工程侧,近年的实时检测工作强调减少后处理冗余并稳定时延,使检测—判定链条更适配产线节拍与人机协同 [2]。考虑到现场普遍存在强光反光、遮挡与“新鲜—轻腐”等细粒度差异,模型需提升多尺度与细节表征能力,同时在系统层面以双画面对比、参数联动与结果入库支撑可解释复核 [3]。基于 Flask+SocketIO 的 Web 化实现可将推理、交互与留痕统一到浏览器端,并与模型训练—评测—导出闭环顺滑衔接,降低从研发到部署的迁移成本 [4]。
2.2 国内外研究现状
围绕水果新鲜度/成熟度的细粒度检测,常见难点包括类间可分性弱、尺度差异与密集遮挡,以及反光与污渍引发的伪影,而改进 YOLO 结构叠加注意力或颜色先验被证明能提升区分力与稳定性 [5]。在温室/自然场景的番茄等作物中,针对遮挡与小目标的多尺度融合与分支设计可同时提高 mAP 与 F1,并将单帧推理保持在十几毫秒量级 [6]。同时,利用检测框内的 HSV 比例等颜色规则与检测结果联动,有助于在保持实时性的同时提升成熟度判定精度 [7]。
从范式演进看,端到端检测器通过高效的编码与匹配策略显著缓解 NMS 带来的延迟波动并提升吞吐,为实时与稳定性并重的工况提供了良好起点 [8]。YOLO 系列持续围绕标签分配、解耦头与端到端化优化以降低冗余与预测冲突,从而在相近精度下获得更低延迟 [9]。可编程梯度与骨干结构改造进一步改善收敛与特征通路,使轻量模型在复杂光照与遮挡下更稳健 [10]。工程生态方面,面向“训练—导出—部署”一体化的工具与文档加速了从实验到生产的复现与迁移 [11]。
除 YOLO 外的单阶段/无锚方法在不同硬件预算与数据规模下同样表现突出,其中演化的骨干与任务对齐策略可在保证精度的同时获得较高帧率,适合工业加速链路 [12]。基于解耦头与自适应匹配的改进在密集与细粒度场景中取得兼顾精度—速度的结果,具备良好可部署性 [13]。无锚像素级预测在简化锚框设计与超参数调优的同时,仅需少量后处理,提升了实现与维护的可控性 [14]。点式检测以极简结构达成较高帧率,为超轻量端侧应用提供备选路线 [15]。
训练与优化方面,针对前景—背景失衡提出的焦点损失为单阶段检测稳定训练奠定基础,并在当时超过两阶段基线 [16]。多尺度可伸缩的特征融合与复合缩放策略为跨预算部署提供了参考曲线与设计方法论 [17]。边界框回归度量从 GIoU 到 DIoU/CIoU 与 EIoU 的演进,在遮挡与细粒度边界下明显提升定位稳定性与收敛速度,是新鲜度边界判定场景的关键训练要素 [18][19][20]。
为便于工程选型,表 1 汇总了与本文任务密切相关且具备落地可行性的代表方法与指标,数据均引自论文或官方文档。
表 1 代表性方法对比(节选)
| 方法 | 范式/家族 | 数据集 | 关键改进 | 优势/局限 | 关键指标 | 适用难点 |
|---|---|---|---|---|---|---|
| RT-DETR-R50 | Transformer/端到端 | COCO | 高效混合编码器、最小不确定性查询 | 免 NMS、时延稳定;编码器算力需求 | 53.1% AP;T4 108 FPS [8] | 减少后处理瓶颈 |
| YOLOv10-S | YOLO/NMS-free 训练 | COCO | 一致性双重分配、整体高效设计 | 低延迟、少冗余;实现更复杂 | 同等 AP 下较 RT-DETR-R18 1.8× 速度;较 v9-C 延迟-46% [9] | 产线低时延 |
| PP-YOLOE-L | YOLO/Anchor-free | COCO test-dev | CSPRepResStage、ET-Head、TAL | 高精度高 FPS | 51.4 mAP;V100 78.1 FPS;TRT 149.2 FPS [12] | 工程加速 |
| YOLOX-L | YOLO/Anchor-free | COCO | 解耦头、SimOTA | 精度—速度均衡 | 50.0 AP;V100 68.9 FPS [13] | 密集/细粒度 |
| FCOS | Anchor-free | COCO | 每像素预测 | 结构简单、仅 NMS | 44.7% AP(单模单尺度)[14] | 去锚化简配置 |
| CenterNet | 点式检测 | COCO | 中心点建模 | 极简、可高帧率 | 37.4% AP;≈52 FPS(DLA-34)[15] | 超轻量端侧 |
| RetinaNet | 一阶段/Anchor-based | COCO | Focal Loss | 稳定训练、易复现 | 原文报告超越两阶段精度 [16] | 长尾/难例 |
| EfficientDet-D3 | 一阶段 | COCO | BiFPN、复合缩放 | 跨预算伸缩 | 提供 AP-FLOPs 曲线 [17] | 多硬件适配 |
2.3 要解决的问题及其方案
(1)检测准确性与实时性:细粒度区分“新鲜—轻腐”与多尺度遮挡共存,需在高召回下控制端侧延迟。方案:选用具备低冗余设计的实时检测器并对比不同版本 YOLO;在骨干与颈部引入注意力与多尺度融合、小目标分支,并使用端到端或准端到端训练以降低后处理成本 [9]。
(2)环境适应性与泛化:强光反光、污渍与遮挡导致外观退化与噪声。方案:制定光照/颜色域增强、随机遮挡与混合裁剪,结合难例挖掘与层级标签;在推理端提供阈值(Conf/IoU)与类别筛选的可交互调参,并以颜色规则对检测框进行复核 [7]。
(3)网页交互的直观性与完整性:用户需在浏览器端完成检测—调参—对比—导出—入库。方案:以 Flask+SocketIO 实现同步双帧推送与视频进度/暂停/继续/停止,前端支持阈值与类别联动,结果支持 CSV/带框图片或视频一键导出与 SQLite 入库 [4]。
(4)数据处理效率与安全可追溯:多任务并发与长期留痕要求稳定、可审计。方案:统一任务与会话管理,批量提交与异步落盘;导出视图集中管理、按文件名高亮与批量下载;账号登录/注册/跳过配合口令哈希与会话过期控制,数据库自动迁移保障版本更新的连续可用 [11]。
2.4 博文贡献与组织结构
本文贡献包括:(1)面向“水果新鲜度”场景,系统梳理细粒度检测在算法—系统—数据三位一体的落地路径与工程选型依据,并以真实文献与指标支撑比对;(2)在 YOLO 家族内实现统一训练/推理与权重热切换,配套双画面对比、参数联动与结果入库的人机协同设计;(3)提供端到端 Web 原型,覆盖图片/视频/摄像头、导出与追溯链路;(4)完成跨版本实时检测器的 mAP、F1、PR 与训练曲线对比,并给出误检漏检的结构性成因与改进建议 [11]。后续章节依次介绍:第 3 章数据集处理(待读者提供样例与统计后生成)、第 4 章模型原理与设计(以 YOLOv12 为主线)、第 5 章实验结果与分析(含必要表图)、第 6 章系统设计与实现(含可下载的流程与框图)、第 7 章结论与未来工作。
3. 数据集处理
本研究使用的水果新鲜程度数据集共 1974 张图像,按训练/验证/测试分别为 1326/437/211 张(约 67.2% / 22.1% / 10.7%),为保证复现性本文固定随机种子为 42。标注采用 YOLO 格式(类别 id 与归一化的 \(x,y,w,h\)),从上方给出的成对分布图可见目标中心主要集中在画面中部,宽高呈右偏分布,提示既有小物体也有近满幅的大物体;拼贴样例展示了多品类、多场景与不同光照的真实采集情况。类别共 30 个,覆盖 Apple/Banana/Mango/Melon/Orange/Peach/Pear 的 Fresh、Semifresh、Semirotten、Rotten 四级细粒度,再加 Ripe_Grape、Unripe_Grape 两类;中文名称已按读者提供的 Chinese_name 字典本地化,例如 Apple Fresh → 新鲜苹果、Banana Semirotten → 半腐烂香蕉 等。为便于系统联调,标签在导入时完成类别去重与越界裁剪,确保所有框均在 \([0,1]\) 范围内;同时对文件名、图像分辨率与标注行数做一致性校验,剔除空标注与明显异常框。
Chinese_name = {"Apple Fresh": "新鲜苹果", "Apple Rotten": "腐烂苹果", "Apple Semifresh": "半熟苹果",
"Apple Semirotten": "半腐烂苹果", "Banana Fresh": "新鲜香蕉", "Banana Rotten": "腐烂香蕉",
"Banana Semifresh": "半熟香蕉", "Banana Semirotten": "半腐烂香蕉",
"Mango Fresh": "新鲜芒果", "Mango Rotten": "腐烂芒果", "Mango Semifresh": "半熟芒果",
"Mango Semirotten": "半腐烂芒果", "Melon Fresh": "新鲜瓜类", "Melon Rotten": "腐烂瓜类",
"Melon Semifresh": "半熟瓜类", "Melon Semirotten": "半腐烂瓜类",
"Orange Fresh": "新鲜橙子", "Orange Rotten": "腐烂橙子", "Orange Semifresh": "半熟橙子",
"Orange Semirotten": "半腐烂橙子", "Peach Fresh": "新鲜桃子", "Peach Rotten": "腐烂桃子",
"Peach Semifresh": "半熟桃子", "Peach Semirotten": "半腐烂桃子",
"Pear Fresh": "新鲜梨子", "Pear Rotten": "腐烂梨子", "Pear Semifresh": "半熟梨子",
"Pear Semirotten": "半腐烂梨子", "Ripe_Grape": "成熟葡萄", "Unripe_Grape": "未成熟葡萄"}

针对本任务的难点,训练阶段采用“保真 + 强化”两级增强:先进行 Letterbox 640×640(保持纵横比、填充色记录入元数据)、颜色抖动(HSV/Gamma/白平衡微调)与 RandomHorizontalFlip,以维持外观一致性;随后以 Mosaic( p≈0.4 )、MixUp( p≈0.2 )、RandomPerspective 与 RandomErasing/Cutout 有控制地引入遮挡与尺度扰动,仅作用于训练集且与目标最小尺寸联动,验证/测试集不做增强以反映真实性能。考虑到细粒度类别易呈长尾分布与“轻腐/半熟”边界模糊,训练时启用 class-balanced 采样 + Focal/分类损失重加权,并在数据加载器中对稀有类别设置温和的过采样上限以避免过拟合;同时对强反光与过曝样本进行分桶清洗与曝光拉回,确保训练—推理的颜色域一致。上述处理与样本分布图、拼贴可视化共同构成数据治理闭环,为后续 YOLOv5–YOLOv12 的统一训练、网页端双画面对比与导出追溯提供稳定的数据基础。

4. 模型原理与设计
本系统以单阶段、Anchor-free 的 YOLOv12 为主线,在同一训练/推理接口下兼容 YOLOv5–YOLOv11 以便横向对比。整体范式遵循“骨干—颈部—解耦头”的密集预测流程:骨干采用轻量残差与跨阶段部分连接(如 C2f/ELAN/GELAN 一类结构)以提升梯度流通性并控制参数量;颈部以自顶向下与自底向上的多尺度特征融合(PAN/BiFPN 变体)增强小目标与被遮挡目标的可见度;检测头采用解耦设计,在同一特征图上分别回归分类分数与边界框参数,从而降低“置信度—定位”相互牵制。针对水果新鲜程度的细粒度差异与强反光,本系统在骨干局部插入轻量注意力(SE/ECA 之一)与可学习融合权重,并在浏览器端以同步双帧(原图/标注图)呈现,便于在线调参与复核。
在结构细节上,通道注意力采用 SE 形式:对特征图 \(x\in\mathbb{R}^{C\times H\times W}\) 先做全局平均池化得到 \(z_c=\frac{1}{HW}\sum_{i,j}x_{cij}\),经两层全连接与非线性得到缩放向量 \(s=\sigma(W_2\delta(W_1 z))\),再与原特征逐通道相乘 \(\tilde{x}*c=s_c\cdot x_c\),其中 \(\sigma\) 为 Sigmoid、\(\delta\) 为 ReLU,\(C,H,W\) 分别为通道与空间尺寸;该机制在不显著增加延迟的前提下强化了“斑点/霉变/色泽”相关通道表达。多尺度融合采用可学习权重的 BiFPN 体式:设来自不同层级的特征 \(P_i\),上/下采样算子为 \(U_i(\cdot)\),非负权重 \(w_i=\mathrm{ReLU}(\hat w_i)\),则融合输出为
该配方可自适应分配来自高/低层的贡献,对尺度差异与遮挡更稳健;网络整体架构图如下图所示:
在任务建模与损失函数上,分类分支使用 Focal Loss 缓解前景—背景与长尾分布带来的不平衡:
其中 \(p_t\) 为正样本概率,\(\gamma\) 控制易样本抑制、\(\alpha_t\) 为类别权重。边界回归采用 IoU 家族的组合损失以增强定位与形状一致性:标准交并比 \(\mathrm{IoU}=\frac{|B\cap B^{gt}|}{|B\cup B^{gt}|}\) 在遮挡下易饱和,故引入
以及更细的 EIoU 分解项
其中 \(b,b^{gt}\) 为预测/真值框中心,\(c\) 为最小外接框对角线,\(w_c,h_c\) 为其宽高;EIoU 分别约束宽与高,有助于细粒度边界对齐。最终多任务目标为
\(\lambda_{*}\) 为分支权重,\(\mathrm{BCE}\) 为目标存在性损失。正负样本分配默认采用任务对齐的动态策略(如 SimOTA/TAL 一类),与解耦头协同提升小目标与易混类别(如“半熟/半腐”)的召回。
训练与推理要点围绕实时性与稳健性展开。训练端使用 Cosine 学习率调度与 EMA 参数滑动平均,配合 Label Smoothing 限制过拟合;BN/SyncBN 维持分布稳定,必要时插入轻量 Dropout 于分类支路以抑制高亮反光造成的过置信。推理端默认输入 \(640\times640\)、FP16 与算子融合(Conv+BN+SiLU)以降低延迟;后处理采用 NMS/Soft-NMS 或 YOLOv10/12 的准端到端范式以减少冗余框,阈值建议在浏览器侧暴露:置信度 \(\in[0.2,0.5]\) 面向不同光照快速试探,IoU \(\in[0.5,0.7]\) 平衡遮挡聚并与细粒度误合并。上述设计与第 3 章的数据增强/清洗策略形成闭环:注意力与加权融合对应类间相似与尺度差异,IoU 家族损失对应反光与遮挡下的鲁棒定位,而端到端/低冗余后处理与半精度推理确保毫秒级交互体验。
5. 实验结果与分析
本节基于第 3 章的数据划分与第 4 章的训练配置,在 RTX 3070 Laptop 8GB 上统一以 640×640 输入、FP16 与相同增强策略完成对比,测试集评估给出 Precision/Recall/F1/mAP@0.5/mAP@0.5:0.95 等指标,同时记录 预处理(PreTime)/推理(InfTime)/后处理(PostTime)。对比模型覆盖 YOLOv5–YOLOv12 的 nano(n) 与 small(s) 级别。可见模型总体收敛平稳、召回在 10 个 epoch 内迅速提升并趋于稳定,F1–Confidence 的整体最优阈值落在 ≈0.50 附近,便于在网页端设为默认值以平衡误检与漏检。

从整体精度与稳定性看,small 级在 mAP 与 F1 上略优于 nano 级且延迟仍可满足实时;在 nano 级中,YOLOv8n 以 F1=0.778 / mAP50=0.813 呈现更好的综合表现,而 YOLOv9t 虽以 mAP50=0.822 靠前,但由于 Precision=0.654、Recall=0.848 的偏置导致 F1=0.738,更适合“召回优先”的筛查流水;YOLOv5nu 的 mAP50=0.818 / F1=0.772 稳定可靠,属于“默认可用”的保守选项。

small 级中,YOLOv5su 取得最高 mAP50=0.825,而 YOLOv10s 的 F1=0.778 位居第一且 PostTime=0.60 ms 最低,说明其准端到端/NMS 轻化的设计有效降低了后处理抖动,适合网页端“同步双帧”稳定推送。

速度—精度权衡方面,nano 级的 YOLOv6n/YOLOv8n 推理最快(InfTime≈6.8 ms),YOLOv5nu 次之(7.73 ms);YOLOv9 家族虽然 FLOPs 较低,但由于算子特性与内存访问模式,InfTime 明显偏高(n:16.51 ms / s:18.66 ms),提示在本硬件与算子实现下不宜作为极限实时基线。后处理对网页端帧率影响直观:YOLOv10n/s 的 PostTime≈0.6 ms 明显低于其他模型(多在 1.3–1.5 ms),在多人并发或高分辨率回放中优势会进一步放大。

误差结构上,归一化混淆矩阵显示 “Semifresh↔Semirotten” 在 Mango/Banana/Peach 上的混淆最突出,属于颜色/纹理相近的细粒度难例;Grape 的成熟/未成熟在强反光下有少量互判,PR 曲线在高召回段出现轻微下坠。

结合 F1–Confidence 曲线,可将网页端默认 Conf 设为 0.50、IoU 设为 0.55,并为 Mango Semifresh 等易混类单独上调 Conf 至 0.55–0.60 以抑制假阳性;对 Grape 建议 Conf≈0.45 以稳住召回。训练曲线显示 box/cls/dfl 损失稳定下降,mAP50-95 在 60–80 epoch 达到平台期,未见明显过拟合迹象,说明第 3 章的数据增强与类均衡策略有效。

面向生产的改进与选型建议是:其一,若以 摄像头实时监测 为主,优先 YOLOv8n(更高 F1、较低延迟)或 YOLOv10n(后处理最小,时延更稳定);其二,若追求更高精度并允许稍高显存/时延,选择 YOLOv5su/YOLOv10s;其三,对“召回优先”的分拣前置筛查,可用 YOLOv9t/YOLOv9s 并配合阈值下调与网页端 CSV 复核;其四,针对 Semifresh/Semirotten 的混淆,可在训练侧加入 层级标签(先品类后新鲜度)与颜色先验辅助分支,并继续补充反光/遮挡场景的长尾样本。结合平台特性,建议默认开启 带框结果一键下载与 SQLite 入库,对“置信度边缘”的样本在导出视图里高亮,便于值班质检快速二次核验。
表 5-1 关键性能概览(RTX 3070 Laptop, 640×640)
| Model | Size | Params(M) | FLOPs(G) | PreTime(ms) | InfTime(ms) | PostTime(ms) | Precision | Recall | F1 | mAP50 | mAP50-95 |
|---|---|---|---|---|---|---|---|---|---|---|---|
| YOLOv5nu | n | 2.6 | 7.7 | 1.90 | 7.73 | 1.31 | 0.8083 | 0.7397 | 0.7725 | 0.8185 | 0.6417 |
| YOLOv6n | n | 4.3 | 11.1 | 2.17 | 6.78 | 1.39 | 0.7507 | 0.7411 | 0.7459 | 0.8032 | 0.6253 |
| YOLOv8n | n | 3.2 | 8.7 | 1.95 | 6.83 | 1.39 | 0.8117 | 0.7461 | 0.7775 | 0.8130 | 0.6361 |
| YOLOv9t | n | 2.0 | 7.7 | 1.87 | 16.51 | 1.29 | 0.6537 | 0.8485 | 0.7385 | 0.8215 | 0.6392 |
| YOLOv10n | n | 2.3 | 6.7 | 2.08 | 11.24 | 0.63 | 0.7575 | 0.7477 | 0.7526 | 0.7920 | 0.6293 |
| YOLOv11n | n | 2.6 | 6.5 | 2.11 | 9.44 | 1.42 | 0.7655 | 0.7636 | 0.7646 | 0.7989 | 0.6338 |
| YOLOv12n | n | 2.6 | 6.5 | 1.91 | 12.47 | 1.37 | 0.8271 | 0.7082 | 0.7630 | 0.7981 | 0.6317 |
| YOLOv5su | s | 9.1 | 24.0 | 2.28 | 8.45 | 1.51 | 0.7732 | 0.7739 | 0.7736 | 0.8250 | 0.6427 |
| YOLOv6s | s | 17.2 | 44.2 | 2.22 | 8.59 | 1.45 | 0.7935 | 0.7554 | 0.7739 | 0.8195 | 0.6363 |
| YOLOv8s | s | 11.2 | 28.6 | 2.31 | 7.66 | 1.42 | 0.7643 | 0.7438 | 0.7539 | 0.7980 | 0.6312 |
| YOLOv9s | s | 7.2 | 26.7 | 2.12 | 18.66 | 1.39 | 0.7311 | 0.8062 | 0.7668 | 0.8170 | 0.6402 |
| YOLOv10s | s | 7.2 | 21.6 | 2.21 | 11.38 | 0.60 | 0.7471 | 0.8114 | 0.7779 | 0.8062 | 0.6323 |
| YOLOv11s | s | 9.4 | 21.5 | 2.37 | 9.74 | 1.36 | 0.7738 | 0.7636 | 0.7687 | 0.8173 | 0.6489 |
| YOLOv12s | s | 9.3 | 21.4 | 2.09 | 13.23 | 1.42 | 0.7760 | 0.7547 | 0.7652 | 0.8021 | 0.6322 |
注:加粗为同列较优值;InfTime 为纯前向时间,PostTime 主要由 NMS/解码构成,适合观察“端到端化”的工程收益。
图 5-1:nano 级(n)F1 与 mAP50 双条形图。
图注:YOLOv8n 在 F1 上占优,YOLOv9t mAP50 靠前但精度偏保守,适合召回优先的筛查场景。

图 5-2:small 级(s)F1 与 mAP50 双条形图。
图注:YOLOv5su 的 mAP50 最高,YOLOv10s 的 F1 与后处理时延占优,适合网页端实时回放与批量导出。

结合系统侧需求,博主的部署建议如下:网页端默认 Conf=0.50、IoU=0.55,对 Mango/Banana/Peach 的 Semifresh/Semirotten 打开“类别定制阈值”,对 Grape 下调 Conf 以稳住召回;批处理视频建议选 YOLOv10s(低后处理时延、帧率稳定),摄像头在线演示可选 YOLOv8n(更高 F1、更快推理);当需要“先粗检再人工复核”时启用 YOLOv9 系列搭配 CSV 高亮与带框一键导出。总体来看,本数据集上 YOLOv5/8/10 三条线在速度—精度—工程稳定性上更均衡,与平台的“同步双帧、批量导出、SQLite 入库”逻辑契合度最高。
6. 系统设计与实现
6.1 系统设计思路
系统采用分层架构以保证实时性与可扩展性:表现与交互层运行在浏览器侧,基于 HTML/CSS/JS 实现即时双画面可视、阈值/IoU 与类别筛选等控制;业务与会话管理层位于 Flask,统一处理任务路由、账号与权限、参数同步与记录追溯;推理与任务调度层对接 PyTorch/ONNX/TensorRT 推理引擎,管理图片、视频与摄像头三种数据源的单批/流式任务,并通过 Flask-SocketIO 的事件通道将“原始帧/标注帧”以同步双帧方式推送到前端;数据持久化层以 SQLite 存储检测结果、统计信息与账户数据,并提供导出与归档接口。多源输入经预处理(比例保持的缩放与填充、色域稳定化)后进入 YOLO 推理,后处理产生的目标框、置信度与类别统计以消息体返回前端,同时写入数据库以支持导出视图与溯源。
为满足网页端的稳定交互,系统在跨层协同中强调一致性与低延迟:视频与摄像头任务采用双队列与时间戳对齐策略,在推理线程与推送线程之间以零拷贝缓冲区共享,确保“左侧原始帧—右侧标注帧”像素时序一致;参数变化(如 Conf/IoU、类别开关)通过会话级广播即时生效,服务端对同一任务维持单一参数快照以避免读写竞争;导出请求与入库写操作采用异步批量提交,并为每个任务生成幂等 ID 以防重复写入。考虑到不同硬件环境,推理引擎支持 PyTorch FP16、ONNXRuntime 与 TensorRT 可选,权重热切换后自动刷新类别映射与配色,在不中断会话的前提下完成模型切换。
系统同时兼顾可维护性与审计:浏览器端提供概览仪表盘汇聚 mAP、F1 与导出次数等关键统计并对异常任务给出跳转;服务端暴露日志与监控接口记录帧率、GPU/内存占用与消息队列长度,数据库层在版本升级时执行自动迁移以保持历史记录可读写;导出视图集中管理所有图片/视频与 CSV,支持按文件名高亮与批量下载,结合登录/注册/一次性跳过的会话策略形成从在线推理到离线复核的闭环。
图 6-1 系统流程图
图注:系统自初始化后接收多源输入,经预处理进入 YOLO 推理并完成同步双帧推送与结果入库,在导出与复核中形成交互闭环。

图 6-2 系统设计框图
图注:分层体现模块边界与数据流向;表现与交互层—业务与会话—推理与调度—数据层相互解耦,通过事件与接口契合,权重管理与日志监控横切全链路。

6.2 登录与账户管理
流程图 6-3
图注:用户从登录页进入,根据是否已有账号选择注册或登录;一次性跳过建立短会话;成功后加载个性化配置与历史记录进入主界面,支持资料修改与注销/切换。

系统在登录入口提供注册、登录与一次性跳过三种路径;注册分支在通过口令强度校验后完成哈希存储与初始偏好创建,随后回到登录;登录分支通过凭证校验后建立带 TTL 的会话并限制同端并发;一次性跳过创建临时会话,作用域仅限当前浏览器与本次会话。登录成功后系统会载入个性化配置与历史记录进入主界面,用户可在资料页修改头像与密码,所有设置与检测结果均持久化到数据库;注销或切换账号将清理会话并回到登录入口,确保与主检测流程的衔接与安全边界。
代码下载链接
如果您希望获取博客中提及的完整资源包,包含测试图片、视频、Python文件(*.py)、网页配置文件、训练数据集、代码及界面设计等,可访问博主在面包多平台的上传内容。相关的博客和视频资料提供了所有必要文件的下载链接,以便一键运行。完整资源的预览如下图所示:


资源包中涵盖了你需要的训练测试数据集、训练测试代码、UI界面代码等完整资源,完整项目文件的下载链接可在Gitee项目中找到➷➷➷
完整项目下载、论文word范文下载与安装文档:https://deeppython.feishu.cn/wiki/II45w0dDfi2k0ikxmXCcf2IFnWf
讲解视频地址:[最新YOLO实现的水果新鲜程度实时检测平台(Flask+SocketIO+HTML_CSS_JS)](https://www.bilibili.com/video/BV14GQwBCEEs/)
完整安装运行教程:
这个项目的运行需要用到Anaconda和Pycharm两个软件,下载到资源代码后,您可以按照以下链接提供的详细安装教程操作即可运行成功,如仍有运行问题可私信博主解决:
- Pycharm和Anaconda的安装教程:https://deepcode.blog.csdn.net/article/details/136639378;
软件安装好后需要为本项目新建Python环境、安装依赖库,并在Pycharm中设置环境,这几步采用下面的教程可选在线安装(pip install直接在线下载包):
- Python环境配置教程:https://deepcode.blog.csdn.net/article/details/136639396;
7. 结论与未来工作
本文围绕“水果新鲜程度”这一细粒度识别任务,构建了基于 Flask + Flask-SocketIO/HTML/CSS/JS 的实时检测平台,并在统一接口下完成 YOLOv5–YOLOv12 的训练、推理与对比;结合第 3 章的数据治理与第 4 章的结构/损失设计,平台在 RTX 3070 Laptop(640×640、FP16)环境下取得 mAP@0.5≈0.82、F1≈0.77 的综合水平,nano 与 small 两个量级均可在网页端实现稳定的同步双帧可视与一键导出。实验表明:在本数据集与硬件约束下,YOLOv8n 兼顾更高 F1 与更低推理延迟,适合摄像头在线;YOLOv10s 的后处理时延最小,适合视频批处理与多并发场景;对“Semifresh/ Semirotten”易混类,通过类别定制阈值与数据增强可进一步降低误判。系统层面,登录/注册/一次性跳过的会话策略、SQLite 入库与导出视图构成从在线推理到离线复核的闭环,满足分拣线与质检台对实时性、可解释与可追溯的核心诉求。
未来工作将从三条主线推进:其一是模型侧的效率与稳健性,包括更深入的蒸馏与 PTQ/QAT 量化、结构化剪枝与算子融合、轻量注意力与动态输入分辨率、自适应阈值与不确定性估计(温度标定、MC Dropout)以支持风险感知的在线决策;其二是系统侧的工程与运维,包括容器化与 CI/CD、基于分布式任务队列的多路视频调度、WebRTC 实时低延迟推流、GPU 资源配额与日志/审计/告警、角色权限与多租户、i18n,以及与企业 MES/ERP 的接口规范化;其三是数据侧的持续闭环,包括主动学习与半监督挖掘低置信样本、难例回流与弱标签校正、类别层级(先品类后新鲜度)与颜色先验协同建模、数据漂移监测与自动再训练触发、跨域迁移到其它果蔬与不同光照/相机参数的场景。随着这些方向的推进,平台将从单点模型评测演化为面向生产的“检测—复核—治理—再训练”一体化系统,进一步降低部署与维护成本,并提升在真实工况下的可靠性与通用性。
参考文献(GB/T 7714)
[1] Zhao Y, Lv W, Xu S, et al. DETRs Beat YOLOs on Real-time Object Detection[EB/OL]. arXiv:2304.08069, 2023.
[2] Wang A, Chen H, Liu L, et al. YOLOv10: Real-Time End-to-End Object Detection[EB/OL]. arXiv:2405.14458, 2024.
[3] Wang C-Y, Yeh I-H, Liao H-Y M. YOLOv9: Learning What You Want to Learn Using Programmable Gradient Information[C]//ECCV. 2024.
[4] Ultralytics. YOLO11 Model Overview[EB/OL]. 2024–2025.
[5] 魏梓赫, 常妙森, 钟一鹏. 基于YOLOv8和SE注意力机制的水果新鲜度检测[J]. Academic Journal of Science and Technology, 2023.
[6] 改进YOLOv5的番茄成熟度检测方法[J/OL]. 维普, 2024.
[7] 李天华, 孙萌, 丁小明, 等. 基于YOLOv4+HSV的成熟期番茄识别方法[J]. 农业工程学报, 2021.
[8] Zhao Y, Lv W, Xu S, et al. DETRs Beat YOLOs on Real-time Object Detection (RT-DETR细节)[EB/OL]. arXiv:2304.08069, 2023.
[9] Wang A, Chen H, Liu L, et al. YOLOv10: Real-Time End-to-End Object Detection[EB/OL]. arXiv:2405.14458, 2024.
[10] Wang C-Y, Yeh I-H, Liao H-Y M. YOLOv9: Learning What You Want to Learn Using Programmable Gradient Information[C]//ECCV. 2024.
[11] Ultralytics. YOLO12/Docs & 工程化生态说明[EB/OL]. 2025.
[12] Xu S, Wang X, Lv W, et al. PP-YOLOE: An Evolved Version of YOLO[EB/OL]. arXiv:2203.16250, 2022.
[13] Ge Z, Liu S, Wang F, et al. YOLOX: Exceeding YOLO Series in 2021[EB/OL]. arXiv:2107.08430, 2021.
[14] Tian Z, Shen C, Chen H, He T. FCOS: Fully Convolutional One-Stage Object Detection[C]//ICCV. 2019.
[15] Zhou X, Wang D, Krähenbühl P. Objects as Points[EB/OL]. arXiv:1904.07850, 2019.
[16] Lin T-Y, Goyal P, Girshick R, He K, Dollár P. Focal Loss for Dense Object Detection[C]//ICCV. 2017.
[17] Tan M, Pang R, Le Q V. EfficientDet: Scalable and Efficient Object Detection[C]//CVPR. 2020.
[18] Rezatofighi H, Tsoi N, Gwak J, et al. Generalized Intersection over Union: A Metric and A Loss for Bounding Box Regression[EB/OL]. arXiv:1902.09630, 2019.
[19] Zheng Z, Wang P, Ren D, et al. Distance-IoU Loss: Faster and Better Learning for Bounding Box Regression[C]//AAAI. 2020.
[20] Zhang Y-F, Ren W, Zhang Z, et al. Focal and Efficient IoU Loss for Accurate Bounding Box Regression[EB/OL]. arXiv:2101.08158, 2021.

浙公网安备 33010602011771号