基于 PyQt5 和 YOLO26 的目标检测桌面应用程序,支持图片、视频和摄像头实时检测。

功能特性

  • 图片检测:支持图片检测
  • 视频检测:支持视频文件实时检测与播放
  • 摄像头检测:支持实时摄像头视频流检测
  • 模型切换:支持加载不同的 YOLO26 模型(.pt 或 .onnx 格式)
  • 参数调节:可调节置信度阈值和 IOU 阈值
  • 类别筛选:支持按类别筛选检测结果
  • 结果导出:支持检测结果保存为图片或导出为 JSON/TXT 格式
  • 实时统计:显示 FPS、目标数量等实时统计信息

效果展示

在这里插入图片描述

训练数据集介绍

数据集格式:YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的yolo格式txt文件)
图片数量(jpg文件个数):3630
标注数量(txt文件个数):3630
训练集数量:2333
验证集数量:200
测试集数量:1097
标注类别数:3
所在github仓库:firc-dataset
标注类别名称(注意yolo格式类别顺序不和这个对应,而以labels文件夹classes.txt为准):[‘ripe’,‘semi-ripe’,‘unripe’]
每个类别标注的框数:
ripe 框数=1763
semi-ripe 框数=3676
unripe 框数=5168
总框数=10607
使用标注工具:labelImg
标注规则:对类别进行画矩形框
重要说明:暂无
特别声明:本数据集不对训练的模型或者权重文件精度作任何保证
图片预览:
在这里插入图片描述
在这里插入图片描述

标注例子:
在这里插入图片描述

训练情况介绍

模型在训练集2333张+200张验证集张进行训练得到

Class Images Instances P R mAP50 mAP50-95
all 200 613 0.726 0.790 0.822 0.737
ripe 47 84 0.884 0.813 0.894 0.821
semi-ripe 102 213 0.619 0.739 0.753 0.678
unripe 113 316 0.676 0.816 0.818 0.711

算法原理

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. 后处理算法

  • 置信度过滤:过滤掉置信度低于阈值的检测结果

  • 类别筛选:支持按指定类别过滤检测结果

环境要求

硬件要求

项目 最低配置 推荐配置
CPU Intel i5 或同等性能 Intel i7/i9 或 AMD Ryzen 7/9
内存 8 GB 16 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.py YOLO26 检测核心类,封装模型加载、推理、可视化等功能
weights/ 存放模型权重文件和相关配置,是检测功能的核心资源目录
test_img/ 提供测试用的示例图片,用于快速验证检测功能
class_names.txt 类别名称定义文件,每行一个类别,顺序需与模型训练时一致
data.yaml YOLO26 数据集配置文件,包含类别数、类别名称、数据集路径等

技术栈

  • Python 3.9+:编程语言
  • PyQt5:桌面 GUI 框架
  • YOLO26(Ultralytics):目标检测模型
  • OpenCV:图像和视频处理
  • NumPy:数值计算
  • PyTorch:深度学习框架

许可协议

本项目仅供学习和研究使用。


更新日志

v1.0

  • 初始版本发布
  • 支持图片、视频、摄像头三种检测模式
  • 实现参数调节和结果导出功能
  • 提供实时 FPS 和统计信息显示
Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐