基于yolov26+pyqt5的交警手势识别检测系统python源码+pytorch模型+评估指标曲线+精美GUI界面

作品简介

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

功能特性

  • 图片检测
  • 视频检测
  • 摄像头检测
  • 模型切换
  • 参数调节
  • 类别筛选
  • 结果导出
  • 实时统计

效果展示



训练数据集介绍

数据集格式:YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的yolo格式txt文件)

图片数量(jpg文件个数):5162

标注数量(txt文件个数):5162

训练集数量:4000

验证集数量:1056

测试集数量:106

标注类别数:8

所在github仓库:firc-dataset

标注类别名称(注意yolo格式类别顺序不和这个对应,而以labels文件夹classes.txt为准):[‘LANE CHANGING’,‘LEFT TURN’,‘LEFT TURN WAITING’,‘MOVE STRAIGHT’,‘PULL OVER’,‘RIGHT TURN’,‘SLOW DOWN’,‘STOP’]

每个类别标注的框数:

LANE CHANGING(变道)框数 = 682

LEFT TURN(左转)框数 = 697

LEFT TURN WAITING(左转待转)框数 = 625

MOVE STRAIGHT(直行)框数 = 609

PULL OVER(靠边停车)框数 = 688

RIGHT TURN(右转)框数 = 697

SLOW DOWN(减速)框数 = 773

STOP(停车)框数 = 393

总框数=5164

图片分辨率:640x640

使用标注工具:labelImg

标注规则:对类别进行画矩形框

重要说明:暂无

特别声明:本数据集不对训练的模型或者权重文件精度作任何保证

图片预览:





标注例子:



训练情况介绍

模型在训练集4000张+1056验证集张图片进行训练得到


算法原理

YOLO26 目标检测算法

本项目基于 YOLO26(You Only Look Once v26)

1. 网络架构

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

  • Backbone
  • Neck
  • Head

2. 检测流程

  1. 图像预处理
  2. 特征提取
  3. 特征融合
  4. 预测输出
  5. 后处理

3. 关键技术

  • Anchor-Free 检测
  • 动态目标分配(DTA)
  • 无DFL设计
  • Mosaic 增强
  • 端到端无NMS设计

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 可用空间

软件环境

  • 操作系统
  • Python
  • CUDA
  • cuDNN

安装步骤

1. 克隆或下载项目

# 使用 git 克隆,可以在github仓库firc-projects找到完整源码
git clone <项目仓库地址>

# 或直接下载 ZIP 压缩包并解压

2. 创建虚拟环境(推荐)

# 使用 conda 创建
conda create -n YOLO26-det pythnotallow=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 torchvisinotallow==0.15.2+cu118 --extra-index-url https://download.pytorch.org/whl/cu118

# CUDA 12.1 版本:
pip install torch==2.0.1+cu121 torchvisinotallow==0.15.2+cu121 --extra-index-url https://download.pytorch.org/whl/cu121

# CPU 版本(无显卡):
pip install torch==2.0.1 torchvisinotallow==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-pythnotallow==4.8.0.74
pip install numpy==1.24.3

4. 准备模型文件

将训练好的 YOLO26 模型文件(.pt 格式)放入 ​​weights/​​ 目录下:

weights/
├── best.pt          # 主要模型文件
├── class_names.txt  # 类别名称文件
└── ...

类别名称文件格式

LANE CHANGING
LEFT TURN
LEFT TURN WAITING
MOVE STRAIGHT
PULL OVER
RIGHT TURN
SLOW DOWN
STOP

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


运行步骤

启动应用程序

# 激活虚拟环境后
python main.py

使用流程

  1. 加载模型
  • 程序启动时会自动加载 ​​weights/​​ 目录下的默认模型
  • 或点击”加载模型”按钮手动选择模型文件


  1. 选择检测模式
  • 图片检测
  • 视频检测
  • 摄像头检测


  1. 设置参数 (可选):
  • 调节”置信度阈值”:控制检测结果的置信度下限(0.1 - 0.9)
  • 调节”IOU 阈值”:控制非极大值抑制的重叠度阈值(0.1 - 0.9)
  • 选择”类别筛选”:只显示指定类别的检测结果
  • 勾选”显示标签与置信度”:控制是否在图像上显示标签


  1. 开始检测
  • 点击”开始检测”按钮启动检测
  • 检测过程中可点击”停止检测”终止


  1. 保存结果
  • 点击”保存结果”保存检测结果图片
  • 点击”导出结果”将检测数据导出为 JSON 或 TXT 格式
  • 点击”截图保存”快速保存当前画面



注意事项

1. 模型文件

  • 确保模型文件(.pt)与类别名称文件(class_names.txt)匹配
  • 模型文件路径不能包含中文字符,建议放在项目根目录的 ​​weights/​​ 文件夹下
  • 支持的模型格式:PyTorch (.pt) 和 ONNX (.onnx)

2.GPU加速

  • 首次运行时会自动下载 CUDA 相关的预训练权重,可能需要等待几分钟
  • 如遇到 CUDA 内存不足错误,请关闭其他占用显存的程序
  • 无 NVIDIA 显卡时,程序会自动切换为 CPU 推理,速度较慢

3. 检测参数

  • 置信度阈值
  • IOU 阈值
  • 参数调整会实时生效,无需重新加载模型

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
  • YOLO26(Ultralytics)
  • OpenCV
  • NumPy
  • PyTorch

许可协议

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


更新日志

v1.0

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


创作时间: