基于YOLO26深度学习的蓝莓成熟度检测与分割系统【python源码+Pyqt5界面+数据集+训练代码】图像分割、人工智能

《博主简介》

小伙伴们好,我是阿旭。
专注于计算机视觉领域,包括目标检测、图像分类、图像分割和目标跟踪等项目开发,提供模型对比实验、答疑辅导等。

《------往期经典推荐------》

一、AI应用软件开发实战专栏【链接】

项目名称 项目名称
1.【人脸识别与管理系统开发 2.【车牌识别与自动收费管理系统开发
3.【手势识别系统开发 4.【人脸面部活体检测系统开发
5.【图片风格快速迁移软件开发 6.【人脸表表情识别系统
7.【YOLOv8多目标识别与自动标注软件开发 8.【基于深度学习的行人跌倒检测系统
9.【基于深度学习的PCB板缺陷检测系统 10.【基于深度学习的生活垃圾分类目标检测系统
11.【基于深度学习的安全帽目标检测系统 12.【基于深度学习的120种犬类检测与识别系统
13.【基于深度学习的路面坑洞检测系统 14.【基于深度学习的火焰烟雾检测系统
15.【基于深度学习的钢材表面缺陷检测系统 16.【基于深度学习的舰船目标分类检测系统
17.【基于深度学习的西红柿成熟度检测系统 18.【基于深度学习的血细胞检测与计数系统
19.【基于深度学习的吸烟/抽烟行为检测系统 20.【基于深度学习的水稻害虫检测与识别系统
21.【基于深度学习的高精度车辆行人检测与计数系统 22.【基于深度学习的路面标志线检测与识别系统
23.【基于深度学习的智能小麦害虫检测识别系统 24.【基于深度学习的智能玉米害虫检测识别系统
25.【基于深度学习的200种鸟类智能检测与识别系统 26.【基于深度学习的45种交通标志智能检测与识别系统
27.【基于深度学习的人脸面部表情识别系统 28.【基于深度学习的苹果叶片病害智能诊断系统
29.【基于深度学习的智能肺炎诊断系统 30.【基于深度学习的葡萄簇目标检测系统
31.【基于深度学习的100种中草药智能识别系统 32.【基于深度学习的102种花卉智能识别系统
33.【基于深度学习的100种蝴蝶智能识别系统 34.【基于深度学习的水稻叶片病害智能诊断系统
35.【基于与ByteTrack的车辆行人多目标检测与追踪系统 36.【基于深度学习的智能草莓病害检测与分割系统
37.【基于深度学习的复杂场景下船舶目标检测系统 38.【基于深度学习的农作物幼苗与杂草检测系统
39.【基于深度学习的智能道路裂缝检测与分析系统 40.【基于深度学习的葡萄病害智能诊断与防治系统
41.【基于深度学习的遥感地理空间物体检测系统 42.【基于深度学习的无人机视角地面物体检测系统
43.【基于深度学习的木薯病害智能诊断与防治系统 44.【基于深度学习的野外火焰烟雾检测系统
45.【基于深度学习的脑肿瘤智能检测系统 46.【基于深度学习的玉米叶片病害智能诊断与防治系统
47.【基于深度学习的橙子病害智能诊断与防治系统 48.【基于深度学习的车辆检测追踪与流量计数系统
49.【基于深度学习的行人检测追踪与双向流量计数系统 50.【基于深度学习的反光衣检测与预警系统
51.【基于深度学习的危险区域人员闯入检测与报警系统 52.【基于深度学习的高密度人脸智能检测与统计系统
53.【基于深度学习的CT扫描图像肾结石智能检测系统 54.【基于深度学习的水果智能检测系统
55.【基于深度学习的水果质量好坏智能检测系统 56.【基于深度学习的蔬菜目标检测与识别系统
57.【基于深度学习的非机动车驾驶员头盔检测系统 58.【太基于深度学习的阳能电池板检测与分析系统
59.【基于深度学习的工业螺栓螺母检测 60.【基于深度学习的金属焊缝缺陷检测系统
61.【基于深度学习的链条缺陷检测与识别系统 62.【基于深度学习的交通信号灯检测识别
63.【基于深度学习的草莓成熟度检测与识别系统 64.【基于深度学习的水下海生物检测识别系统
65.【基于深度学习的道路交通事故检测识别系统 66.【基于深度学习的安检X光危险品检测与识别系统
67.【基于深度学习的农作物类别检测与识别系统 68.【基于深度学习的危险驾驶行为检测识别系统
69.【基于深度学习的维修工具检测识别系统 70.【基于深度学习的维修工具检测识别系统
71.【基于深度学习的建筑墙面损伤检测系统 72.【基于深度学习的煤矿传送带异物检测系统
73.【基于深度学习的老鼠智能检测系统 74.【基于深度学习的水面垃圾智能检测识别系统
75.【基于深度学习的遥感视角船只智能检测系统 76.【基于深度学习的胃肠道息肉智能检测分割与诊断系统
77.【基于深度学习的心脏超声图像间隔壁检测分割与分析系统 78.【基于深度学习的心脏超声图像间隔壁检测分割与分析系统
79.【基于深度学习的果园苹果检测与计数系统 80.【基于深度学习的半导体芯片缺陷检测系统
81.【基于深度学习的糖尿病视网膜病变检测与诊断系统 82.【基于深度学习的运动鞋品牌检测与识别系统
83.【基于深度学习的苹果叶片病害检测识别系统 84.【基于深度学习的医学X光骨折检测与语音提示系统
85.【基于深度学习的遥感视角农田检测与分割系统 86.【基于深度学习的运动品牌LOGO检测与识别系统
87.【基于深度学习的电瓶车进电梯检测与语音提示系统 88.【基于深度学习的遥感视角地面房屋建筑检测分割与分析系统
89.【基于深度学习的医学CT图像肺结节智能检测与语音提示系统 90.【基于深度学习的舌苔舌象检测识别与诊断系统
91.【基于深度学习的蛀牙智能检测与语音提示系统 92.【基于深度学习的皮肤癌智能检测与语音提示系统
93.【基于深度学习的工业压力表智能检测与读数系统 94.【基于深度学习的CT扫描图像肝脏肿瘤智能检测与分析系统】
95.【基于深度学习的CT扫描图像脑肿瘤智能检测与分析系统】 96.【基于深度学习的甲状腺结节智能检测分割与诊断系统】
97.【基于深度学习的车载视角路面病害检测系统】 98.【基于深度学习的宫腔镜病变智能检测与语音提示系统】
99.【基于深度学习的人群密集检测统计分析与报警系统 100.【基于深度学习的路面积水智能检测分割与分析系统】
101.【基于深度学习的钢丝绳缺陷检测与语音提示系统 102.【基于深度学习的无人机视角河道水面垃圾检测系统
103.【基于深度学习的停车场车位智能检测识别系统】 104.【基于深度学习的无人机视角野外搜救人员检测与语音提示系统
105.【基于深度学习的无人机视角路面病害检测识别系统 106.【基于深度学习的无人机红外视角海上搜救人员检测与语音提示系统
107.【基于深度学习的交警手势识别系统 108.【基于深度学习的红外图像光伏板热斑缺陷检测与语音提示系统】
109.【基于深度学习的风力机缺陷检测与语音提示系统】 110.【基于深度学习的茶叶病害智能检测识别系统】
111.【基于深度学习的铁轨部件缺陷检测与语音提示系统】 112.【基于深度学习的无人机视角车辆检测系统】

二、机器学习实战专栏【链接】 ,已更新31期,欢迎关注,持续更新中~~
三、深度学习【Pytorch】专栏【链接】
四、【Stable Diffusion绘画系列】专栏【链接】
五、YOLOv8改进专栏【链接】持续更新中~~
六、YOLO性能对比专栏【链接】,持续更新中~

《------正文------》

目录

基本功能演示

项目演示视频地址:https://www.bilibili.com/video/BV16gApzREWo

摘要:蓝莓的高经济价值高度依赖采摘时机,但传统人工分拣效率低、主观性强,易导致分级不准和经济损失。针对蓝莓果小、色变细微及枝叶遮挡等难点,常规检测框难以胜任。本文基于YOLO26深度学习框架,通过1439张图片训练了一个进行蓝莓成熟度分割模型,能够分割识别4种成熟度蓝莓。最终基于此模型开发了一款带UI界面的蓝莓成熟度检测与分割系统,可用于实时检测场景中的蓝莓成熟度。该系统是基于pythonPyQT5开发的,支持图片、批量图片、视频以及摄像头进行目标检测分割,并保存分割结果。本文提供了完整的Python代码和使用教程,给感兴趣的小伙伴参考学习,完整的代码资源文件获取方式见文末

文章目录

点击跳转至文末**《完整相关文件及源码》**获取


前言

蓝莓的高经济价值高度依赖采摘时机,但传统人工分拣效率低、主观性强,易导致分级不准和经济损失。针对蓝莓果小、色变细微及枝叶遮挡等难点,常规检测框难以胜任。本系统基于YOLO框架引入实例分割技术,构建了"未成熟、半成熟、成熟、过熟"四类精细化模型。系统能以像素级精度定位分割果实并实时统计数量,实现了从"粗略检测"到"精细量化"的跨越,对指导精准采摘、优化分选、减少损耗及建立标准化品质体系具有重要价值。

应用场景

智能采摘引导:利用分割掩膜精准定位成熟果实,引导机械臂避障无损抓取,执行"只采成熟"策略,实现选择性收获。
自动化分选:在线高速检测并剔除过熟与未熟果,按等级自动分流包装,大幅提升分选效率与准确率,降低人工成本。
长势监测与估产:周期性扫描生成成熟度热力图,辅助判断最佳采摘窗口,基于数据科学预估产量以优化产销计划。
育种表型分析:量化记录不同品种成熟进程,客观评估成熟一致性与抗过熟能力,加速优良品种筛选。

博主通过搜集蓝莓成熟度的相关数据图片,根据最前沿的YOLO26目标分割技术,基于python与Pyqt5开发了一款界面简洁的蓝莓成熟度检测与分割系统能够检测分割不同成熟度的蓝莓,并统计各个类别数量,可支持图片、视频以及摄像头检测,同时可以将图片、视频以及摄像头的检测结果进行保存本文详细的介绍了此系统的核心功能以及所使用到的技术原理与制作流程。

软件初始界面如下图所示:

检测结果界面如下:

检测结果说明:

蓝莓总数:表示画面中检测到的蓝莓数量;
柱状图:表示画面中每个成熟度蓝莓的数量;
总分割面积占比:表示画面中分割出的蓝莓区域占整张图片的百分比;
用时:表示图片检测用时;
目标选择:下拉框能够选择单个目标,并显示相关信息;
类型:表示当前选择的目标类型;
分割面积占比:表示所选择目标分割区域占整张图片的百分比;
置信度:当前目标的置信度;
目标位置:表示所选择分割目标的检测框坐标信息,框左上角坐标(xmin,ymin),框右下角坐标(xmax,ymax)。

一、软件核心功能介绍及效果演示

软件主要功能

1. 可进行4种成熟度类型检测,类型分别为: ['未成熟','成熟','过熟','半成熟']
2. 能够统计画面中每个蓝莓成熟度类别数量;
3. 支持图片、图片批量、视频及摄像头进行检测分割;
4. 可显示总分割面积占比以及单个目标的分割面积占比
5. 界面可实时显示目标位置分割结果分割面积占比置信度用时等信息;
6. 结果保存:支持图片视频摄像头分割结果保存

界面参数设置说明

  1. 置信度阈值:也就是目标检测时的conf参数,只有检测出的目标置信度大于该值,结果才会显示;
  2. 交并比阈值:也就是目标检测时的iou参数,只有目标检测框的交并比大于该值,结果才会显示;
  3. 显示分割结果:表示是否在检测图片中显示分割结果,默认勾选;
  4. 显示检测框与标签:表示是否在检测图片中显示检测框与标签,默认勾选;
  5. 显示Mask或者显示原始分割图片:表示显示分割的Mask或者原始图片分割内容

显示Mask或者显示原始分割图片选项的功能效果如下:

(1)图片检测演示

1.点击打开图片按钮,选择需要检测的图片,或者点击打开文件夹按钮,选择需要批量检测图片所在的文件夹,操作演示如下:

2.点击目标下拉框后,可以选定指定目标的结果信息进行显示。
3.
点击保存按钮,会对图片检测结果进行保存,存储路径为:save_data目录下。

4.点击表格中的指定行,界面会显示该行表格所写的信息内容。
注:右侧目标位置默认显示置信度最大一个目标位置,可用下拉框进行信息切换。所有检测结果均在表格中显示。

点击保存按钮,会对图片的检测结果进行保存,共会保存3种类型结果,分别是:检测分割结果标识图片、分割的Mask图片以及原图分割后的图片。存储在save_data目录下,保存结果如下:

(2)视频检测演示

1.点击打开视频图标,打开选择需要检测的视频,就会自动显示检测结果。再次点击该按钮,会关闭视频

2.点击保存按钮,会对视频检测结果进行保存,同样会保存3种类型结果,分别是:检测分割结果标识视频、分割Mask视频以及原视频分割后的视频,存储路径为:save_data目录下。

(3)摄像头检测演示

1.点击打开摄像头按钮,可以打开摄像头,可以实时进行检测,再次点击该按钮,可关闭摄像头

2.点击保存按钮,可以进行摄像头实时图像的检测结果保存

(4)检测结果保存

点击保存按钮后,会将当前选择的图片【含批量图片】、视频或者摄像头的分割结果进行保存。结果会存储在save_data目录下,保存内容如下:

图片检测保存的csv文件信息内容如下:

包括:'文件名', '目标编号', '类别', '置信度', '检测框位置','分割占比',信息。

二、目标分割模型的训练、评估与推理

1.YOLO26简介

本项目采用的是最新的YOLO26目标分割模型。YOLO26 是 Ultralytics 2026 年 1 月推出的新一代计算机视觉模型,主打边缘优先、高效部署。它采用端到端免 NMS 架构,移除 DFL 模块,CPU 推理速度较前代提升 43%;搭配 MuSGD 优化器与 ProgLoss+STAL 损失策略,强化小目标检测能力,支持检测、分割、姿势估计等多任务,可无缝适配树莓派、嵌入式设备等终端,广泛应用于智慧农业、安防监控等领域。
YOLO各版本性能对比:

2. 数据集准备与训练

通过网络上搜集关于蓝莓成熟度相关图片,并使用Labelme标注工具对每张图片中的分割结果及类别进行标注。一共包含1439张图片,其中训练集包含1260张图片验证集包含120张图片测试集包含59张图片部分图像及标注如下图所示。


数据集的各类别具体分布如下所示:

图片数据的存放格式如下,在项目目录中新建datasets目录,同时将检测的图片分为训练集、验证集、测试集放入Data目录下。

同时我们需要新建一个data.yaml文件,用于存储训练数据的路径及模型需要进行检测的类别。在进行模型训练时,会读取该文件的信息,用于进行模型的训练与验证。data.yaml的具体内容如下:

python 复制代码
train: E:\MyCVProgram\3SegProgram\BlurberryRipeSeg_v26\datasets\train/images
val: E:\MyCVProgram\3SegProgram\BlurberryRipeSeg_v26\datasets\valid/images
test: E:\MyCVProgram\3SegProgram\BlurberryRipeSeg_v26\datasets\test/images

nc: 4
names: ['immature', 'mature', 'overmature', 'semi-mature']

注:train与val后面表示需要训练图片的路径,建议直接写自己文件的绝对路径。

数据准备完成后,通过调用train.py文件进行模型训练,epochs参数用于调整训练的轮数,batch参数用于调整训练的批次大小【根据内存大小调整,最小为1】,代码如下:

python 复制代码
#coding:utf-8
from ultralytics import YOLO
import matplotlib
matplotlib.use('TkAgg')

# 模型配置文件
model_yaml_path = "ultralytics/cfg/models/26/yolo26-seg.yaml"
#数据集配置文件
data_yaml_path = r'PuddleSeg/data/data/data.yaml'
#预训练模型
pre_model_name = 'yolo26n-seg.pt'

if __name__ == '__main__':
    #加载预训练模型
    model = YOLO(model_yaml_path).load(pre_model_name)
    #训练模型
    results = model.train(data=data_yaml_path,
                          epochs=150,
                          batch=32,
                          name='train_26')

模型常用训练超参数参数说明:
模型的训练设置包括训练过程中使用的各种超参数和配置。这些设置会影响模型的性能、速度和准确性。关键的训练设置包括批量大小、学习率、动量和权重衰减。此外,优化器、损失函数和训练数据集组成的选择也会影响训练过程。对这些设置进行仔细的调整和实验对于优化性能至关重要。
以下是一些常用的模型训练参数和说明:

3. 训练结果评估

在深度学习中,我们通常用损失函数下降的曲线来观察模型训练的情况。YOLO26在训练时主要包含三个方面的损失:定位损失(box_loss)、分类损失(cls_loss)、动态特征损失(dfl_loss)以及分割损失(seg_loss),在训练结束后,可以在runs/目录下找到训练过程及结果文件,如下所示:

各损失函数作用说明:
定位损失box_loss:预测框与标定框之间的误差(GIoU),越小定位得越准;
分类损失cls_loss:计算锚框与对应的标定分类是否正确,越小分类得越准;
动态特征损失(dfl_loss):DFLLoss是一种用于回归预测框与目标框之间距离的损失函数。在计算损失时,目标框需要缩放到特征图尺度,即除以相应的stride,并与预测的边界框计算Ciou Loss,同时与预测的anchors中心点到各边的距离计算回归DFLLoss。这个过程是YOLO11训练流程中的一部分,通过计算DFLLoss可以更准确地调整预测框的位置,提高目标检测的准确性。
实例分割损失(seg_loss):预测的分割结果与标定分割之前的误差,越小分割的越准确;
语义分割损失(sem_loss):预测的语义分割结果与标定分割之前的误差,结合了 BCE(Binary Cross Entropy)和 Dice 损失,越小分割的越准确。仅在训练时计算,验证时未计算(所以数值为0);
本文训练结果如下:

我们通常用PR曲线来体现精确率和召回率的关系,本文训练结果的PR曲线如下。mAP表示Precision和Recall作为两轴作图后围成的面积,m表示平均,@后面的数表示判定iou为正负样本的阈值。mAP@.5:表示阈值大于0.5的平均mAP。

定位结果的PR曲线如下:

分割结果的PR曲线如下:

从上面图片曲线结果可以看到:定位的平均精度为0.794,分割的平均精度为0.787,结果还是很不错的。

4. 模型推理

模型训练完成后,我们可以得到一个最佳的训练结果模型best.pt文件,在runs/trian/weights目录下。我们可以使用该文件进行后续的推理检测。

图片检测代码如下:

python 复制代码
#coding:utf-8
from ultralytics import YOLO
import cv2
# 所需加载的模型目录
path = 'models/best.pt'
# 需要检测的图片地址
img_path = "TestFiles/00036_png.rf.fe91d596d8aedae404a60659c9819748.jpg"

# 加载预训练模型
# conf	0.25	object confidence threshold for detection
# iou	0.7	intersection over union (IoU) threshold for NMS
model = YOLO(path, task='segment')

# 检测图片
results = model(img_path)
res = results[0].plot()

# res = cv2.resize(res,dsize=None,fx=0.5,fy=0.5,interpolation=cv2.INTER_LINEAR)
cv2.imshow("YOLO Detection", res)
cv2.waitKey(0)

执行上述代码后,会将执行的结果直接标注在图片上,结果如下:

更多检测结果展示如下:

四、可视化系统制作

基于上述训练出的分割模型,为了给此检测系统提供一个用户友好的操作平台,使用户能够便捷、高效地进行检测任务。博主基于Pyqt5开发了一个可视化的系统界面,通过图形用户界面(GUI),用户可以轻松地在图片、视频和摄像头实时检测之间切换,无需掌握复杂的编程技能即可操作系统。【系统详细展示见第一部分内容】

Pyqt5详细介绍

关于Pyqt5的详细介绍可以参考之前的博客文章:《Python中的Pyqt5详细介绍:基本机构、部件、布局管理、信号与槽、跨平台》,地址:

https://a-xu-ai.blog.csdn.net/article/details/143273797

系统制作

博主基于Pyqt5框架开发了此款蓝莓成熟度检测与分割系统即文中第一部分的演示内容 ,能够很好的支持图片、视频及摄像头进行检测,同时支持检测结果的保存

通过图形用户界面(GUI),用户可以轻松地在图片、视频和摄像头实时检测之间切换,无需掌握复杂的编程技能即可操作系统。这不仅提升了系统的可用性和用户体验,还使得检测过程更加直观透明,便于结果的实时观察和分析。此外,GUI还可以集成其他功能,如检测结果的保存与导出、检测参数的调整,从而为用户提供一个全面、综合的检测工作环境,促进智能检测技术的广泛应用。


【获取方式】

关注末尾名片G-Z-H:【阿旭算法与机器学习】,号内发送【源码】即可获取下载方式

本文涉及到的完整全部程序文件:包括环境配置文档说明、python源码、数据集、训练代码、UI文件、测试图片视频 等(见下图),获取方式:

注意:该代码基于Python3.9开发,运行界面的主程序为MainProgram.py,其他测试脚本说明见上图。为确保程序顺利运行,请按照程序运行说明文档txt配置软件运行所需环境。

相关推荐
Flittly2 小时前
【从零手写 ClaudeCode:learn-claude-code 项目实战笔记】(10)Team Protocols (团队协议)
笔记·python·ai·ai编程
lxmyzzs2 小时前
使用Python分析COCO数据集标注信息:一个简单脚本实现统计与可视化
python·深度学习·目标检测·计算机视觉
wertyuytrewm2 小时前
自动化与脚本
jvm·数据库·python
智算菩萨2 小时前
【How Far Are We From AGI】4 AGI的“生理系统“——从算法架构到算力基座的工程革命
论文阅读·人工智能·深度学习·算法·ai·架构·agi
White-Legend2 小时前
GPT5.4每日200刀
人工智能·gpt
qq_417695052 小时前
Python深度学习入门:TensorFlow 2.0/Keras实战
jvm·数据库·python
小程故事多_802 小时前
重构 RAG 质量标准,一套可落地、可量化的全维度评估框架
人工智能·重构·aigc·ai编程·rag
problc2 小时前
在 OpenClaw 里一句话记账:消费说出来,账单自动进乖猫记账 App
开发语言·python
紫丁香2 小时前
Dify源码深度剖析3
后端·python·ai·flask·fastapi