基于Yolo26和Grad-CAM可视化融合的深度学习的猕猴桃分级系统-Python源码

源码获取:

基于Yolo26和Grad-CAM可视化融合的深度学习的猕猴桃分级系统-Python源码https://mp.weixin.qq.com/s/SZhuScSWQViQRTcYitnnoA

1.前言

猕猴桃是我国重要的果树品种,其果肉鲜嫩、营养丰富,富含膳食纤维、多种微量元素、糖分、维生素 A 以及钙、钾、铁等多种矿物质。近年来,国内猕猴桃产量持续增长,已连续多年位居世界第一1。猕猴桃的品质分级是提升其附加值的关键环节,直接影响其经济价值和出口竞争力。目前,除了单果重可以通过机器识别外,其他分级指标如果径、果形、表面缺陷等仍需人工判定,不仅效率低下,准确率也不高。因此,许多学者近年来对猕猴桃分级展开研究。例如,崔永杰等人对猕猴桃果实进行分类鉴定,通过图像中值滤波等操作提取缺陷,分析了如何正确识别分割出来的可疑区域2。屈婷等人利用计算机视觉技术,实现了猕猴桃果实外形尺寸的在线监测和分级,其平均分类成功率为96.3%,单一猕猴桃的分级时间为2.5 s左右3。郝家英等人利用语义分割路线,成功实现猕猴桃缺陷的像素级分割4

基于深度学习的图像识别技术,在图像处理领域展现出显著优势与广阔发展前景,能有效推动水果分级实现高效率和高质量,目前已在苹果、柑橘等水果的分级实践中获得广泛运用。然而,现有研究仍存在不少不足:一方面,当前的检测研究大多聚焦于重量、颜色、大小等基础指标,极少涉及被检测物体外观及损伤状态的识别;另一方面,猕猴桃作为我国主要水果品种之一,相关的检测研究却相对匮乏。

本次实训着眼于实践学习,从基础入手。借助基于YOLO26平台所研发的方法,对猕猴桃图像开展检测与大小分级工作,以此推动深度学习技术在猕猴桃检测领域的应用落地,从而为人类带来更健康、更安全、更高效且优质的农产品,同时也能为其他同类农产品的检测与分级提供参考和借鉴5

2、所需设备

l 设备:华硕笔记本电脑

l 规格:

n处理器:12th Gen Intel(R) Core(TM) i5-12500H 2.50 GHz

n机带RAM:24.0 GB

n GPU:NVIDIA GeForce RTX 3050 Laptop GPU

3、设计内容及其过程

3.1 YOLO26s模型介绍

YOLO26s是Ultralytics团队推出的新一代轻量级目标检测模型,其核心设计围绕端到端、无NMS推理和小目标检测优化展开,特别适用于像猕猴桃果园这样目标密集、遮挡严重的场景。

3.1.1 无NMS端到端推理

传统检测模型依赖非极大值抑制(NMS)来筛除冗余框,但在果实簇生场景中,NMS的IoU阈值很难设置:过严会误删重叠果实导致漏检,过宽则会产生大量冗余框。YOLO26s从架构层面解决了这一问题:

l 双头并行架构:训练时采用"一对多"头为每个目标分配多个正样本,加速网络收敛;同时用"一对一"头通过匈牙利匹配建立预测框与真实框的唯一对应关系。

l 端到端推理:推理阶段仅启用"一对一"头,其输出天然保证每个目标只有一个最优预测框,彻底消除了对NMS后处理的依赖,简化了部署流程,也避免了NMS作为超参数模块对推理结果的不确定性干扰。

l 移除DFL层:为进一步提升推理速度,YOLO26s移除了分布焦点损失(DFL),将边界框回归简化为直接的狄拉克分布预测,在保证定位精度的前提下显著降低了计算复杂度。

表1对比了YOLO26s与主流轻量级目标检测模型的性能差异。实验数据表明,YOLO26s在mAP(val)指标上分别超出YOLO11s与YOLOv8s约1.6和3.7个百分点,同时推理速度较YOLOv8s提升约32.1%(CPU端)。这一性能优势的核心贡献正是无NMS端到端设计带来的后处理流程精简,消除了NMS作为独立超参数敏感模块对推理结果的不确定性干扰。

表 1YOLO各系列中s模型性能对比

|---------|------|----------|-----------|--------|
| 模型 | 输入尺寸 | mAP(val) | CPU速度(ms) | 参数量(M) |
| YOLO26s | 640 | 48.6 | 87.2 | 9.5 |
| YOLO11s | 640 | 47.0 | 90.0 | 9.2 |
| YOLOv8s | 640 | 44.9 | 128.4 | 11.2 |

3.1.2 STAL机制

在猕猴桃检测任务中,花蕾期目标与幼果期目标属于典型的小目标。以640×640的输入分辨率计,花蕾的像素面积通常仅占全图的0.5%~2%,对应边长为20~40像素。在标准的目标检测训练框架中,小目标面临的核心困境在于标签分配失效------多数小目标无法被分配到足够数量的正样本锚点,导致其在损失函数中的贡献被大目标淹没,网络难以对其形成有效的梯度更新。

YOLO26s引入的小目标感知标签分配机制STAL专门针对这一问题进行了优化。对于面积小于设定阈值(以像素数计)的真实目标,无论其与锚点的IoU几何,强制分配至少K个匹配得分最高的锚点作为其正样本,确保小目标始终参与损失计算。STAL在分类损失与回归损失中引入与目标面积成反比的动态权重因子,如式1所示:

其中A为真实框的面积(像素数),τ为面积阈值参数。该因子使得面积越小的目标,其损失贡献权重越大,从而迫使网络在训练中更为关注小目标的特征学习,缓解类别不平衡问题。如图1所示

图1 STAL效果展示

3.2 Grad-CAM模型融合

梯度加权类激活映射(Grad-CAM),是一种用于可视化卷积网络决策依据的技术。简单来说,它就是给深度学习的"黑盒"模型拍一张热力图,告诉网络究竟看了图片的哪一个区域。

本项目将Grad-CAM加入,主要用于增强目标检测的可解释性,帮助用户理解模型的决策过程。它通过分析YOLO26s模型最后一层卷积层的特征图,结合梯度信息生成热力图,直观展示图像中哪些区域对模型识别猕猴桃起到关键作用。在检测过程中,Grad-CAM热力图会与检测框叠加显示,使用户能够清楚看到模型关注的具体部位,比如果实的轮廓、纹理特征等,从而增强对检测结果的信任度。当模型产生误判时,通过热力图可以分析是否因背景干扰、遮挡或其他因素导致,有助于诊断问题原因。此外,Grad-CAM还能辅助优化训练数据集,识别可能影响模型学习的噪声区域。项目中还实现了回退策略,当Grad-CAM生成失败时会自动使用边缘检测生成简单的显著性图,确保系统稳定性。整个功能在推理阶段按需启用,不影响正常检测流程,同时为用户提供了更透明的模型行为解释。

如图2所示,通过结合导向反向传播算法与导向梯度加权类激活映射技术的可视化方法。其核心在于通过神经网络中的修正线性单元和修正卷积特征图,对输入图像进行处理,以生成针对YOLO目标检测模型的可解释性热力图。具体而言,该方法利用全连接层激活值以及特定类别(如"KIWI")的得分梯度,在导向反向传播保留正梯度信息的基础上,叠加Grad-CAM的定位权重,从而突出对最终检测决策贡献最大的图像区域。整个流程从原始输入出发,经由ReLU修正的特征传递,最终输出高分辨率的类别敏感显著图,既保留了细粒度边缘细节,又强化了目标区域的热力响应,用于解释模型为何识别出特定对象及其位置。

图2 Grad-CAM工作原理图

3.3 3D深度估计检测

传统的2D分级方法依赖检测框对角线像素估算尺寸,受拍摄距离和角度影响较大,误差明显。引入3D深度估计后,系统能够基于深度图计算真实的物理尺寸,结合椭球体积公式估算重量,显著提升了分级精度。深度梯度稳定性作为置信度指标,使结果更加可靠,特别是在评估大果和小果边界样本时,能够减少误判。

本项目编写了一个DepthSizer类来计算其猕猴桃的重量和大小。首先会设置相机内参(包括焦距、主点坐标和像素转换系数)以及物体密度(默认为1.05,接近水的密度)。为了提高模型的精确率,第一步是调用load_depth_model方法加载Depth Anything V2深度估计模型,如果加载失败则会启用基于LaPlace边缘检测的伪深度估计作为降级方案。

如图3所示,当传入一张BGR图像后,系统会先通过estimate_depth方法将图像转换为RGB格式并送入深度模型,得到一张0-255范围的深度图,其中每个像素值代表该点的相对深度。随后用户可以提供一个边界框(通常来自目标检测模型),系统会进行尺寸估计。该方法首先从深度图中裁剪出边界框对应的区域,计算该区域的平均归一化深度值,然后利用相机投影公式将像素尺寸转换为物理尺寸,具体是宽度等于像素宽度乘以深度值再除以焦距,高度同理。深度尺寸则简单地设定为宽度的85%,这个比例是基于常见物体形状的假设。有了三个维度的尺寸后,系统使用椭球体体积公式计算体积,再乘以密度得到重量估计。置信度分数通过分析深度图在边界框内的梯度变化来计算,梯度越大说明深度变化越剧烈,置信度就越低。最后通过椭球体积计算,根据预设的重量阈值将猕猴桃分级。整个流程还提供了用于输出边界框区域的深度统计信息,包括平均深度、最小最大深度和标准差,方便用户评估深度数据的质量。

图3 DepthSizer类工作流程图

3.4数据集构建

本实验中的猕猴桃数据集图片来源于对果园进行实物拍摄。采集了2864张猕猴桃图片,采集的图片中存在部分强光照、逆光照、光斑、光直射等情况,将其用于检测复杂背景是否会影响图片的分割效果,该数据集各图片分辨率并不统一,所以在训练时会统一映射为640×640,返回时等比例返回原图大小的坐标。部分数据如图4所示。

(a)光斑情况

(b)逆光情况

(b)自遮挡情况

图4 数据增强

深度神经网络模型复杂,要实现较好的训练效果需要大量的实验数据作为基础。对已标注的数据集进行分割、模糊并随机改变图片的色调、饱和度和值等,实现对数据集的增强。在此基础上,将样本按 8∶2 分成训练集和验证集。

3.5 系统架构设计

YOLO26s模型完成训练后,部署至硬件平台(RTX 3050 Laptop GPU)进行推理效率测试。

如图5所示,本项目是一个基于YOLO26推理和Grad-CAM视觉解释的果体大小分级系统。系统首先输入原始图像,通过YOLO26模型进行目标检测,获取检测框数据;随后利用Grad-CAM生成热力图,突出显示模型关注的关键区域,同时结合3D深度估计信息,将这些热力图与深度数据叠加到原图上,最终依据融合后的空间特征对果体进行大小分级并输出结果。整个过程将目标检测、可解释性可视化和深度感知相结合,以实现更准确的尺寸评估。

图5 系统架构图

测试使用100张猕猴桃测试图像(分辨率640×640),取推理耗时平均值,并与YOLOv5s在相同软硬件条件下的推理耗时进行对比,结果如表2所示。

表2 模型推理耗时对比

|---------|------------|-----------|----------|
| 模型名称 | 平均推理耗时(ms) | GPU占用(MB) | 权重体积(MB) |
| YOLOv5s | 28.6 | 1120 | 14.8 |
| YOLO26s | 18.4 | 1185 | 19.2 |

在相同硬件条件下,YOLO26s的端到端推理速度较YOLOv5s提升约35.7%,主要得益于无NMS后处理流程带来的计算精简。同时,在密集簇生果实的检测场景中,YOLO26s消除了NMS阈值调参的不确定性,推理过程完全由模型前向传播一次性完成,避免了因NMS参数调整而反复推理的时间开销。上述结果表明,YOLO26s在保持较高检测精度的同时,具备良好的实时推理能力,适合部署于猕猴桃产线分拣等实际应用场景。

3.6 结果分析

为了评价本模型在目标识别与大小分级的有效性,本项目使用精确率,如式(2)和召回率,如式(3)来计算本模型的可行性:

通过多轮的实验与检测并进行平均处理,可以得到下表,同时为了验证本方法的有效性,本项目在相同数据集上进行训练并使用相同的测试集对比了YOLO26s,Faster R-CNN和YOLOv5s的检测性能,如表3所示:

表 3模型评价指标

|--------------|-------|-------|---------|--------------|
| 模型 | 精确率 | 召回率 | mAP@0.5 | mAP@0.5:0.95 |
| Faster R-CNN | 85.2% | 82.1% | 90.3% | 68.2% |
| YOLOv5s | 90.6% | 89.7% | 96.8% | 74.4% |
| YOLO26s | 90.8% | 89.8% | 96.1% | 73.0% |

如图6所示,YOLOv26模型训练过程中的各项损失与评估指标随迭代轮次变化的记录表。表格按行排列了从第0轮到第80轮的训练数据,每一列分别对应训练集的边界框损失、目标损失、分类损失,以及精度、召回率等评估指标;同时还包括验证集上的同类损失和mAP@0.5、mAP@0.5:0.95这两项核心检测性能指标。从数值趋势可以看出,训练损失逐步下降,mAP指标稳步提升,至第80轮时mAP@0.5已达到0.98,说明模型在训练集上收敛良好,检测精度较高,而验证集损失保持稳定,表明未出现严重过拟合。

图6 YOLO26s训练过程评估指标记录表

如图7所示,YOLOv26训练后生成的归一化混淆矩阵,用于评估模型在测试集上的分类与检测表现。表格以"真实类别"为行、"预测类别"为列,展示了两个类别("kiwi"和"background")的预测结果。矩阵显示,真实为"kiwi"的样本中,有94%被正确预测为"kiwi",剩余6%被误判为"background";而真实为"background"的样本,则全部被正确识别为"background",误报率为0。整体来看,模型对背景的区分能力完美,对目标"kiwi"的识别准确率较高,但存在少量漏检(将目标误认为背景),这可能源于目标与背景在部分图像中的相似性或遮挡情况。该矩阵为优化模型提供了明确方向------重点提升对"kiwi"类别的召回率,同时保持其已有的低误报优势。

图7 YOLO26s训练过程签相关性热力图

为进一步验证本模型的有效性,将本文方法与近年来猕猴桃检测领域的代表性工作进行定性对比。刘建江和李书琴基于YOLOv8n提出的YOLOv8-KFP模型6,通过StarBlock、SSFF模块和Soft-NMS等改进,在猕猴桃花期检测任务上达到了92.4%的mAP;Tang等基于YOLOv11n提出的YOLOv11-TYW模型7,通过引入RepViTBlock和ADown下采样模块,在猕猴桃花朵检测中取得了91.2%的mAP;YOLOv10-Kiwi8则聚焦于模型轻量化,通过C2fDualHet模块将参数量压缩至0.51M的同时保持93.6%的mAP@50。对比结果如下表4所示。

表 4猕猴桃目标检测代表性工作对比

|----------|-------|-------|---------|-------|
| 模型 | 精确率 | 召回率 | mAP@0.5 | 参数量 |
| v8-KFP | 89.1% | 88.7% | 92.4% | - |
| v11-TYW | 88.4% | 89.1% | 91.2% | - |
| v10-Kiwi | 88.3% | 89.2% | 93.6% | 0.51M |
| YOLO26s | 89.0% | 89.8% | 96.2% | 9.5M |

3.7 用户界面展示

界面使用PyQt5进行开发,如图8所示。左右两栏布局。左侧区域是图像显示区,上方标注了系统标题,中间是大尺寸的图像展示面板,目前显示"无图像"的占位状态,底部设有"上一张"和"下一张"两个导航按钮以及图片计数指示器,用于浏览检测结果。

右侧区域是控制面板,自上而下分为三个功能区。顶部是操作按钮区,包含"选择图片文件夹"和"开始检测"两个主要功能按钮,用于加载数据和控制检测流程。中部是分级标准设置区,提供了尺寸阈值输入框(默认1000像素)和两个标签输入框,分别设置大果(默认B)和小果(默认S)的显示标签,用户可以自定义分级规则。底部是检测结果统计区,显示检测数量、大果数量、小果数量、平均尺寸和平均深度五项统计数据,目前所有数值均为初始状态。最下方还有一个运行日志区,用于实时显示系统运行状态信息。整体界面布局清晰,功能分区明确,符合典型的计算机视觉检测系统设计风格。

图8 前端界面展示

本项目的使用流程非常直观,开启时会自动搜索该工作目录下是否存在可用模型,存在遍会自动调用。接下来您需要点击"选择图片文件夹"按钮,在弹出的文件夹选择对话框中选中存放猕猴桃图片的目录。系统会自动扫描该文件夹下的所有jpg、jpeg、png和bmp格式图片并加载到列表中,左侧图像显示区域会展示第一张原始图片,底部的导航按钮和页码指示器会显示当前浏览位置。

确认图片加载无误后,点击"开始检测"按钮,系统会启动一个独立线程逐张处理所有图片。每张图片会依次经过YOLO26s模型的目标检测、尺寸计算和分级判定,进度条会实时显示处理进度。对于检测到的每个猕猴桃,系统会计算其像素尺寸,根据您在"分级标准设置"中设定的尺寸阈值(默认1000像素)自动划分大果和小果,并分别标记为B和S标签。检测完成后,左侧图像会切换为带标注框和标签的检测结果图,右侧统计区域会更新当前图片的检测数量、大果小果数量、平均尺寸和平均深度等信息。您可以通过"上一张"和"下一张"按钮浏览所有图片的检测结果,每次切换时统计信息会同步更新。

日志窗口会详细记录每张图片的检测信息,包括每个目标的尺寸标签、置信度分数、3D尺寸测量值、体积和重量估计,以及深度图的统计信息(平均深度、范围、标准差)。如果模型配置中启用了Grad-CAM可视化,还会生成热力图并保存到本地。

图9 前端界面运行展示

3.8 差异化总结

本项目的差异化贡献主要体现在架构选型与系统集成的双重创新上。在架构层面,项目采用YOLO26s这一最新检测框架,利用其双头并行设计实现无NMS端到端推理,从根本上消除了传统非极大值抑制在猕猴桃簇生重叠场景下阈值调参的不确定性,既避免了密集果实被误删导致的漏检问题,也简化了后处理流程。同时借助YOLO26s内置的小目标感知标签分配机制(STAL),对花蕾、幼果等像素占比极小的目标强制分配正样本并引入面积反比动态权重,解决了小目标在标准训练中被大目标淹没的标签分配失效问题,这一架构层面的代差优势使本方法在处理密集果园场景时具备更强的原生适应性,而现有基于YOLOv8至v11的猕猴桃检测研究多依赖Soft-NMS等外部修补手段来缓解重叠漏检问题。

在系统集成层面,项目将Grad-CAM可解释性分析引入检测流程,通过热力图直观展示模型决策依据,既增强了用户对黑盒模型的信任度,也为误判诊断和数据集优化提供了可视化工具;同时构建了融合LaPlace深度估计的DepthSizer模块,将2D检测框与深度信息结合,实现从像素尺寸到3D物理尺寸及重量的估算,并据此完成多等级划分,突破了传统分级仅依赖二维像素的局限。

此外,项目基于PyQt5开发了完整的桌面应用,将检测、可视化解释、3D估重、分级标准自定义和结果统计集成于统一操作平台,形成了"检测---解释---3D感知---分级"的全链路闭环系统,功能完整性和工程实用性显著优于多数仅聚焦于检测精度提升的研究工作。

参考文献:

1钟曼茜,翟舒嘉,刘伟,等.我国即食猕猴桃产业发展现状、问题与对策J.中国果树,2023(2):122-127.

2崔永杰,李平平,丁宪,等.猕猴桃分级果实表面缺陷的检测方法J.农机化研究,2012,34(10):139-142.

3屈婷,齐康康,刘亚东,等.猕猴桃外观尺寸在线检测分级系统设计与试验J.农机化研究,2017,39(10):98-103.

4郝家英,曾玉娇,王祥文,等.基于Deeplabv3+的猕猴桃特征提取和自动分级研究J. 南方农机,2024,55(3):12-16.

5翟肇裕,张梓涵,徐焕良,等.YOLO算法在动植物表型研究中应用综述J. 农业机械学报,2024,55(11):1-20.

6刘建江,李书琴. 基于改进YOLOv8n的密集分布猕猴桃花期检测方法J. 农业工程学报,2025,41(12):172-181.

7Tang Y, Sun J Y, Zhang Y F, et al. Kiwifruit flower detection using an optimized YOLOv11n architectureJ. INMATEH Agricultural Engineering, 2025, 77(3): 44-53.

Suo Y Y, et al. YOLOv10-kiwi: a YOLOv10-based lightweight kiwifruit detection model in trellised orchardsJ. Frontiers in Plant Science, 2025, 16.

相关推荐
3DVisionary1 小时前
如何用单目高速DIC把“看不见“的振动变成“数得清“的数据
java·spring boot·python·数码相机·微小振动·精密件·单目高速dic
FriendshipT1 小时前
Ultralytics:解读BNContrastiveHead模块
人工智能·pytorch·python·深度学习·目标检测
tkevinjd1 小时前
416分割等和子集
java·python·算法·leetcode·职场和发展
布朗克1682 小时前
Go 入门到精通-15-错误处理
开发语言·python·golang·错误处理
m0_547486662 小时前
《Python程序设计与数据分析》全套PPT课件
python·数据分析
水龙吟啸2 小时前
华为2026.6.3机考选择题+编程题【速刷敲黑板】
人工智能·深度学习·算法·华为
盼小辉丶2 小时前
OpenCV-Python实战(33)——构建实时目标检测与跟踪系统
python·opencv·目标检测·计算机视觉
郭泽斌之心2 小时前
让别人临时接管你的 AI 助手:分级授权的远程控制怎么设计
人工智能·深度学习·量化交易·ea·mt5·fay数字人·easydeal
bill32822780433 小时前
从 0 到 1 掌握 1688API:商品详情获取技巧
python