基于yolov26的樱桃成熟度检测系统python源码+pytorch模型+评估指标曲线+精美GUI界面
基于 PyQt5 和YOLO26的目标检测桌面应用程序,支持图片、视频和摄像头实时检测。
功能特性
- • 图片检测 :支持图片检测
- • 视频检测 :支持视频文件实时检测与播放
- • 摄像头检测 :支持实时摄像头视频流检测
- • 模型切换 :支持加载不同的 YOLO26 模型(.pt 或 .onnx 格式)
- • 参数调节 :可调节置信度阈值和 IOU 阈值
- • 类别筛选 :支持按类别筛选检测结果
- • 结果导出 :支持检测结果保存为图片或导出为 JSON/TXT 格式
- • 实时统计 :显示 FPS、目标数量等实时统计信息
效果展示
训练数据集介绍
数据集格式:YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的yolo格式txt文件)
图片数量(jpg文件个数):2892
标注数量(txt文件个数):2892
训练集数量:2692
验证集数量:100
测试集数量:100
标注类别数:3
所在github仓库:firc-dataset
标注类别名称(注意yolo格式类别顺序不和这个对应,而以labels文件夹classes.txt为准):[‘ripe’,‘semi-ripe’,‘unripe’]
每个类别标注的框数:
ripe 框数=16051
semi-ripe 框数=9811
unripe 框数=5590
总框数=31452
使用标注工具:labelImg
标注规则:对类别进行画矩形框
重要说明:暂无
特别声明:本数据集不对训练的模型或者权重文件精度作任何保证
图片预览:
标注例子:
训练情况介绍
模型在训练集2692张+100张验证集张进行训练得到
ClassImagesInstancesPRmAP50mAP50-95all10011540.7540.6300.7060.557ripe915650.8360.8380.8950.730semi-ripe714200.7170.5730.6750.531unripe411690.7100.4780.5470.411YOLO26目标检测算法介绍(Markdown格式)
算法原理
YOLO26目标检测算法
本项目基于 YOLO26(You Only Look Once v26) 目标检测算法,由 Ultralytics 公司开发。YOLO26 是一种单阶段(One-Stage)目标检测器,具有以下特点:
1. 网络架构
YOLO26 采用先进的骨干网络(Backbone)和特征融合网络:
- • Backbone :采用基于PPHGNetV2改进的C3k2_HGBlock结构,集成HGBlock密集连接与压缩激励机制,搭配LightConv轻量级卷积,在降低计算量的同时提升特征提取效率,适配边缘设备的轻量化需求[2]
- • Neck :采用 PAN-FPN(Path Aggregation Network - Feature Pyramid Network)结构,实现自顶向下和自底向上的特征融合
- • Head :解耦头(Decoupled Head)设计,将分类和定位任务分开处理,提升检测精度
2. 检测流程
- 1. 图像预处理 :将输入图像调整为模型输入尺寸(默认 640x640),进行归一化处理
- 2. 特征提取 :通过 Backbone 网络提取多尺度特征图
- 3. 特征融合 :Neck 网络融合不同层级的特征,增强小目标检测能力
- 4. 预测输出 :Head 网络输出每个网格的类别概率和边界框坐标
- 5. 后处理 :无需使用NMS(非极大值抑制)算法,模型采用端到端设计,可直接输出最终检测结果,简化部署流程并降低推理延迟[3]
3. 关键技术
- • Anchor-Free 检测 :YOLO26 采用无锚框设计,直接预测目标中心点和尺寸,简化模型结构
- • 动态目标分配(DTA) :替代传统Task-Aligned Assigner,训练时为每个目标分配唯一正样本网格,从根源上避免重复框产生,支撑端到端无NMS设计[1]
- • 无DFL设计 :摒弃传统DFL(Distribution Focal Loss)的复杂分布建模,采用轻量化直接坐标回归,降低推理负担,提升边缘设备运行速度[1]
- • Mosaic 增强 :训练时采用 Mosaic 数据增强,将四张图片拼接,提升小目标检测能力
- • 端到端无NMS设计 :YOLO26 摒弃了传统NMS后处理步骤,通过优化预测生成和训练过程,让模型直接输出最终检测结果,无需额外过滤重复框,不仅提升了推理速度,还简化了多硬件平台的部署流程[3]
4. 后处理算法
- • 置信度过滤 :过滤掉置信度低于阈值的检测结果
- • 类别筛选 :支持按指定类别过滤检测结果
环境要求
硬件要求
项目最低配置推荐配置CPUIntel i5 或同等性能Intel i7/i9 或 AMD Ryzen 7/9内存8 GB16 GB 或以上显卡支持 CUDA 的 NVIDIA GPU(可选)NVIDIA RTX 1660 或以上显存4 GB(GPU 推理)8 GB 或以上硬盘2 GB 可用空间SSD,5 GB 可用空间
软件环境
- • 操作系统 :Windows 10/11、Linux、macOS
- • Python :3.9 或以上版本
- • CUDA :11.8 或以上(如需 GPU 加速)
- • cuDNN :8.6 或以上(如需 GPU 加速)
安装步骤
1. 克隆或下载项目
# 使用 git 克隆
git clone <项目仓库地址>
# 或直接下载 ZIP 压缩包并解压
2. 创建虚拟环境(推荐)
# 使用 conda 创建
conda create -n YOLO26-det python=3.9
conda activate YOLO26-det
# 或使用 venv 创建
python -m venv venv
# Windows:
venv\Scripts\activate
# Linux/Mac:
source venv/bin/activate
3. 安装依赖包
# 安装 PyTorch(根据 CUDA 版本选择)
# CUDA 11.8 版本:
pip install torch==2.0.1+cu118 torchvision==0.15.2+cu118 --extra-index-url https://download.pytorch.org/whl/cu118
# CUDA 12.1 版本:
pip install torch==2.0.1+cu121 torchvision==0.15.2+cu121 --extra-index-url https://download.pytorch.org/whl/cu121
# CPU 版本(无显卡):
pip install torch==2.0.1 torchvision==0.15.2 --extra-index-url https://download.pytorch.org/whl/cpu
# 安装其他依赖
pip install ultralytics==8.4.31
pip install PyQt5==5.15.9
pip install opencv-python==4.8.0.74
pip install numpy==1.24.3
4. 准备模型文件
将训练好的 YOLO26 模型文件(.pt 格式)放入 weights/ 目录下:
weights/
├── best.pt # 主要模型文件
├── class_names.txt # 类别名称文件
└── ...
类别名称文件格式 (class_names.txt):
ripe semi-ripe unripe
每行一个类别名称,顺序需与模型训练时的类别顺序一致。
运行步骤
启动应用程序
# 激活虚拟环境后
python main.py
使用流程
- 1. 加载模型 :
- • 程序启动时会自动加载
weights/目录下的默认模型 - • 或点击"加载模型"按钮手动选择模型文件
- 2. 选择检测模式 :
- • 图片检测 :点击"图片检测"按钮,然后选择"选择文件"加载图片
- • 视频检测 :点击"视频检测"按钮,选择视频文件
- • 摄像头检测 :点击"摄像头检测"按钮,自动打开默认摄像头
- 3. 设置参数 (可选):
- • 调节"置信度阈值":控制检测结果的置信度下限(0.1 - 0.9)
- • 调节"IOU 阈值":控制非极大值抑制的重叠度阈值(0.1 - 0.9)
- • 选择"类别筛选":只显示指定类别的检测结果
- • 勾选"显示标签与置信度":控制是否在图像上显示标签
- 4. 开始检测 :
- • 点击"开始检测"按钮启动检测
- • 检测过程中可点击"停止检测"终止
- 5. 保存结果 :
- • 点击"保存结果"保存检测结果图片
- • 点击"导出结果"将检测数据导出为 JSON 或 TXT 格式
- • 点击"截图保存"快速保存当前画面
注意事项
1. 模型文件
- • 确保模型文件(.pt)与类别名称文件(class_names.txt)匹配
- • 模型文件路径不能包含中文字符,建议放在项目根目录的
weights/文件夹下 - • 支持的模型格式:PyTorch (.pt) 和 ONNX (.onnx)
2.GPU加速
- • 首次运行时会自动下载 CUDA 相关的预训练权重,可能需要等待几分钟
- • 如遇到 CUDA 内存不足错误,请关闭其他占用显存的程序
- • 无 NVIDIA 显卡时,程序会自动切换为 CPU 推理,速度较慢
3. 检测参数
- • 置信度阈值 :建议设置在 0.3 - 0.5 之间,过低会产生大量误检,过高可能漏检
- • IOU 阈值 :建议设置在 0.4 - 0.6 之间,用于去除重叠的检测框
- • 参数调整会实时生效,无需重新加载模型
4. 摄像头检测
- • 确保摄像头设备正常工作且未被其他程序占用
- • 默认使用摄像头索引 0,如需修改请在代码中调整
camera_index参数 - • 摄像头检测为实时模式,按"停止检测"或关闭窗口即可退出
5. 性能优化
- • 视频检测时,检测速度取决于视频分辨率和显卡性能
- • 如检测卡顿,可尝试降低输入视频分辨率或更换更高性能的显卡
- • 批量图片检测时会顺序处理,建议在处理大量图片前确保磁盘空间充足
6. 常见问题
问题解决方案模型加载失败检查模型文件路径是否正确,确保文件未损坏无法打开摄像头检查摄像头连接,确保没有其他程序占用摄像头CUDA out of memory减小 batch size,关闭其他程序,或使用 CPU 推理检测结果不准确调整置信度和 IOU 阈值,或更换更合适的模型界面显示异常确保 PyQt5 正确安装,尝试更新显卡驱动
文件夹结构
YOLO26-det-pyqt5/ # 项目根目录
│
├── main.py # 主程序入口,PyQt5 界面实现
├── Yolov26Detector.py # YOLO26 检测器核心类
├── README.md # 项目说明文档
│
├── weights/ # 模型权重文件夹
│ ├── weights/ # 子文件夹(存放 .pt 模型文件)
│ │ └── best.pt # 默认模型文件
│ ├── class_names.txt # 类别名称列表
│ ├── args.yaml # 训练参数配置
│ ├── data.yaml # 数据集配置
│ ├── results.csv # 训练结果数据
│ ├── results.png # 训练结果图表
│ ├── confusion_matrix.png # 混淆矩阵
│ ├── BoxF1_curve.png # F1 分数曲线
│ ├── BoxP_curve.png # 精确率曲线
│ ├── BoxR_curve.png # 召回率曲线
│ └── ... # 其他训练和验证可视化结果
│
├── test_img/ # 测试图片文件夹
│ ├── firc_1000.jpg # 测试图片示例
│ ├── firc_1001.jpg
│ └── ... # 更多测试图片
│
└── 数据集地址.xlsx # 数据集信息文档
文件说明
文件/文件夹说明main.py应用程序主入口,包含 PyQt5 GUI 界面、多线程检测逻辑、信号槽处理Yolov26Detector.pyYOLO26 检测核心类,封装模型加载、推理、可视化等功能weights/存放模型权重文件和相关配置,是检测功能的核心资源目录test_img/提供测试用的示例图片,用于快速验证检测功能class_names.txt类别名称定义文件,每行一个类别,顺序需与模型训练时一致data.yamlYOLO26 数据集配置文件,包含类别数、类别名称、数据集路径等
技术栈
- • Python 3.9+ :编程语言
- • PyQt5 :桌面 GUI 框架
- • YOLO26(Ultralytics) :目标检测模型
- • OpenCV :图像和视频处理
- • NumPy :数值计算
- • PyTorch :深度学习框架
许可协议
本项目仅供学习和研究使用。
更新日志
v1.0
- • 初始版本发布
- • 支持图片、视频、摄像头三种检测模式
- • 实现参数调节和结果导出功能
- • 提供实时 FPS 和统计信息显示