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

功能特性

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

效果展示

在这里插入图片描述

训练数据集介绍

数据集格式:YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的yolo格式txt文件)
图片数量(jpg文件个数):1005
标注数量(txt文件个数):1005
训练集数量:805
验证集数量:100
测试集数量:100
标注类别数:4
所在github仓库:firc-dataset
标注类别名称(注意yolo格式类别顺序不和这个对应,而以labels文件夹classes.txt为准):[‘Blossom fruits’,‘Green fruits’,‘Ripe fruits’,‘Young fruits’]
每个类别标注的框数:
Blossom fruits(开花坐果)框数 = 539
Green fruits(青果)框数 = 4045
Ripe fruits(成熟果实)框数 = 7701
Young fruits(幼果)框数 = 4581
总框数=16866
使用标注工具:labelImg
标注规则:对类别进行画矩形框
重要说明:暂无
特别声明:本数据集不对训练的模型或者权重文件精度作任何保证
图片预览:
在这里插入图片描述

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

训练情况介绍

模型在训练集805张+100测试集张进行训练得到

Class Images Instances P R mAP50 mAP50-95
all 100 1832 0.811 0.795 0.875 0.605
Blossom fruits 15 38 0.69 0.579 0.712 0.456
Green fruits 21 566 0.853 0.88 0.94 0.723
Ripe fruits 31 516 0.82 0.864 0.911 0.59
Young fruits 33 712 0.882 0.855 0.939 0.651

算法原理

YOLO26 目标检测算法

本项目基于 YOLO26(You Only Look Once v8) 目标检测算法,由 Ultralytics 公司开发。YOLO26 是一种单阶段(One-Stage)目标检测器,具有以下特点:

1. 网络架构

YOLO26 采用先进的骨干网络(Backbone)和特征融合网络:

  • Backbone:使用 CSPDarknet 结构,通过跨阶段局部网络(Cross Stage Partial Network)提取多尺度特征
  • Neck:采用 PAN-FPN(Path Aggregation Network - Feature Pyramid Network)结构,实现自顶向下和自底向上的特征融合
  • Head:解耦头(Decoupled Head)设计,将分类和定位任务分开处理,提升检测精度
2. 检测流程
  1. 图像预处理:将输入图像调整为模型输入尺寸(默认 640x640),进行归一化处理
  2. 特征提取:通过 Backbone 网络提取多尺度特征图
  3. 特征融合:Neck 网络融合不同层级的特征,增强小目标检测能力
  4. 预测输出:Head 网络输出每个网格的类别概率和边界框坐标
  5. 后处理:使用 NMS(非极大值抑制)算法去除重复检测框
3. 关键技术
  • Anchor-Free 检测:YOLO26 采用无锚框设计,直接预测目标中心点和尺寸,简化模型结构
  • Task-Aligned Assigner:动态标签分配策略,根据分类和定位任务的对齐程度分配正样本
  • CIoU Loss:使用 Complete Intersection over Union 损失函数,更精确地衡量预测框与真实框的重叠程度
  • Mosaic 增强:训练时采用 Mosaic 数据增强,将四张图片拼接,提升小目标检测能力
4. 后处理算法
  • NMS(非极大值抑制):根据置信度分数排序,移除重叠度(IOU)过高的检测框
  • 置信度过滤:过滤掉置信度低于阈值的检测结果
  • 类别筛选:支持按指定类别过滤检测结果

环境要求

硬件要求

项目 最低配置 推荐配置
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):

Blossom fruits
Green fruits
Ripe fruits
Young fruits
...

每行一个类别名称,顺序需与模型训练时的类别顺序一致。


运行步骤

启动应用程序

# 激活虚拟环境后
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 界面实现
├── YOLO26Detector.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 界面、多线程检测逻辑、信号槽处理
YOLO26Detector.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 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐