yolov安全帽佩戴检测,目标检测,附带可视化界面。

概述

本文介绍一个基于 YOLOv5 目标检测模型构建的安全帽佩戴检测图形化应用系统。该系统融合了深度学习推理能力与 PyQt5 图形用户界面(GUI),支持对静态图像、视频文件及实时摄像头流进行目标检测,并将检测结果实时可视化呈现,适用于工地、工厂等高风险作业场所的安全监控场景。

整个系统架构清晰,模块职责分明,既保留了 YOLOv5 原始代码库的核心推理能力,又通过封装与适配,实现了与 PyQt5 界面的无缝集成,具备良好的可扩展性和部署友好性。


核心功能模块

1. 模型加载与初始化

系统支持用户通过图形界面选择自定义的 .pt 权重文件(如 yolov5s.ptyolov5m.pt 等),并完成模型的初始化配置。初始化过程包括:

  • 设备选择:自动检测 CUDA 环境,优先使用 GPU 加速,若不可用则回退至 CPU。
  • 模型加载:使用 attempt_load 函数加载指定权重,支持 FP16 半精度推理(仅限 CUDA)以提升速度。
  • 输入尺寸校验:根据模型 stride 自动校准推理尺寸,确保输入符合网络要求。
  • 类别与颜色映射:自动读取模型输出类别名,并为每个类别分配唯一颜色,用于可视化标注。

初始化完成后,系统会弹出提示框通知用户“模型加载完成”,确保操作反馈及时。

2. 多源输入检测支持

系统提供三种检测模式,覆盖常见应用场景:

(1)图片检测
  • 用户通过文件选择对话框加载本地图像(支持 .jpg.png 等格式)。
  • 系统调用检测函数对图像进行单帧推理。
  • 原始图像与检测结果分别显示在左右两个 QLabel 控件中。
  • 检测信息(如类别、置信度、边界框坐标)以文本形式输出至 QTextBrowser。
(2)视频检测
  • 支持加载 .mp4.avi 等主流视频格式。
  • 使用 QTimer 以约 30ms 间隔逐帧读取视频流。
  • 每帧图像送入检测模块处理,并实时更新显示区域。
  • 检测结果同时写入新生成的 MP4 视频文件,便于后续回溯。
(3)摄像头实时检测
  • 调用系统默认摄像头(通常为设备 0)进行实时流捕获。
  • 同样基于定时器驱动帧处理流程。
  • 输出视频默认以 5 FPS 保存(可调),兼顾存储与流畅性。
  • 适用于现场安全巡检或实时预警系统。

3. 检测流程与结果处理

每帧图像的检测流程如下:

  1. 图像预处理:使用 letterbox 函数对输入图像进行等比例缩放与填充,确保尺寸符合模型输入要求,同时保持宽高比不变。
  2. 张量转换:将图像从 BGR 转为 RGB,并转换为 PyTorch 张量,归一化至 [0,1] 区间。
  3. 模型推理:将张量送入 YOLOv5 模型前向传播,获取原始检测输出。
  4. 后处理
    - 应用 非极大值抑制(NMS) 去除冗余框。
    - 根据原始图像尺寸对检测框进行 坐标反变换(scale_coords)
  5. 可视化与信息提取
    - 调用 plotonebox2 在图像上绘制带标签的边界框。
    - 同时生成结构化检测信息字符串(含位置、类别、置信度),供界面显示。

该流程高度复用 YOLOv5 官方代码库中的通用函数(如 nonmaxsuppressionscale_coords),保证了检测精度与效率。

4. 用户交互控制

系统提供丰富的交互控件,提升用户体验:

  • 暂停/继续:可在视频或摄像头检测过程中暂停推理,便于查看关键帧。
  • 结束检测:主动终止当前检测任务,释放摄像头或视频资源,恢复按钮可用状态。
  • 模型重载:支持在运行时切换不同权重文件并重新初始化,无需重启应用。

所有操作均通过信号槽机制(Signal-Slot)与主逻辑解耦,确保界面响应流畅、逻辑清晰。


系统架构与工程组织

项目采用典型的分层结构:

  • models/:存放 YOLOv5 网络定义(如 common.pyyolo.py),包含 CSP、SPP、Focus 等核心模块。
  • utils/:提供通用工具函数,涵盖数据加载(datasets.py)、图像处理(general.py)、绘图(plots.py)、设备管理(torch_utils.py)等。
  • ui/:由 Qt Designer 生成的界面代码(GUI.py),定义了窗口布局与控件。
  • detect_logical.py核心业务逻辑文件,继承 QMainWindow,整合模型推理与 GUI 交互,是整个应用的“大脑”。
  • detect.py:保留原始 YOLOv5 的命令行推理脚本,可用于验证或批处理。

这种结构既保留了原始 YOLOv5 项目的可维护性,又通过 detect_logical.py 实现了面向 GUI 应用的定制化封装。


应用价值与扩展方向

本系统已具备完整的安全帽检测能力,可直接部署于边缘设备或监控中心。未来可沿以下方向扩展:

  • 多类别安全装备检测:扩展模型支持反光衣、口罩、护目镜等识别。
  • 报警联动:当检测到未佩戴安全帽时,触发声光报警或短信通知。
  • 性能优化:集成 TensorRT 或 ONNX Runtime,进一步提升推理速度。
  • 远程监控:结合 RTSP 流或 WebRTC,实现远程实时检测。

总结

该 YOLOv5 安全帽检测 GUI 应用成功将先进的目标检测算法与直观的用户界面结合,实现了“开箱即用”的智能视觉分析能力。其模块化设计、清晰的控制流与良好的用户体验,使其不仅适用于实际安防场景,也为开发者提供了将深度学习模型快速产品化的优秀范例。

更多推荐