基于YOLO和大语言模型的安全背心穿戴识别检测系统(代码+数据集+模型+部署文档)

作品简介

🦺 基于YOLO和大语言模型的安全背心穿戴识别检测系统

Safety Vest Detection System (SVDS)

SVDS (Safety Vest Detection System) 是一款专为施工现场安全监管设计的智能识别平台。它结合了 YOLOv8 的高精度目标检测能力和 LLaVA 多模态大语言模型的深度分析能力,不仅能精准识别人员是否穿戴安全背心,还能智能分析安全合规情况并提供专业的安全管理建议。

系统整合了模型训练、实时检测、批量处理、视频分析、智能问答和历史管理等功能,是施工现场安全管理和工程监理领域的强大助手。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

📋 目录

🏗️ 系统架构设计

本系统采用模块化分层架构设计,主要包含以下核心组件:

1. 表现层 (Presentation Layer)

  • Web UI: 基于 Gradio 4.0 构建的交互式前端
  • 功能模块:
  • AdvancedWebInterface: 主界面控制器,管理所有 Tab 页面的布局与交互
  • 实时反馈: 利用 Gradio 的 Event Listener 实现训练进度的实时轮询与展示
  • 响应式设计: 自适应不同屏幕尺寸,支持桌面和平板访问

2. 业务逻辑层 (Business Logic Layer)

  • 核心控制器vest_detection_system.py 负责协调各子模块
  • 视频处理video_detector.py 使用 OpenCV 逐帧读取视频,调用检测器进行推理,并合成标注视频
  • 批量处理web_interface_advanced.py 内置多线程批处理逻辑,支持文件队列管理与结果打包
  • 历史管理history_manager.py 基于 SQLite 记录所有操作日志,支持持久化存储和数据回溯

3. 算法核心层 (Algorithm Core Layer)

  • 目标检测:
  • YOLOv8: 负责定位人员位置 (bbox)、识别是否穿戴安全背心、计算置信度 (confidence)
  • 多尺度推理: 支持自适应图片缩放,确保远距离人员不漏检
  • 实时优化: 支持 GPU 加速,毫秒级响应
  • 智能分析:
  • LLaVA: 使用 llava_analyzer.py 连接 Ollama 服务
  • Prompt Engineering: 内置专为安全背心合规分析设计的提示词模板,自动提取检测结果并生成专业安全报告

🌟 核心功能特性

1. 🎯 高精度安全背心识别 (YOLOv8)

  • 实时检测: 毫秒级响应,快速识别施工现场人员是否穿戴安全背心
  • 可视化标注: 在原图上精准绘制检测框
  • 🟢 绿色框: 穿戴安全背心的人员
  • 🔴 红色框: 未穿戴安全背心的人员(警示标注)
  • 显示置信度百分比和目标编号
  • 多模型支持: 支持 YOLOv8n/s/m/l/x 全系列模型,用户可根据硬件算力在速度与精度间灵活权衡
  • 双类别识别:
  • safety_vest (Class 1): 穿戴安全背心的人员
  • no_safety_vest (Class 0): 未穿戴安全背心的人员

2. 🧠 LLaVA 智能安全分析

  • 深度诊断: 集成 LLaVA 多模态大模型,系统不仅"看到"穿戴情况,更能结合上下文"理解"安全风险
  • 专业报告: 自动生成结构化安全报告,包含:
  • 人员分布: 描述现场人员的位置、数量
  • 合规程度: 评估安全背心佩戴率和整体安全等级
  • 风险识别: 分析潜在的安全隐患
  • 管理建议: 提供针对性的安全管理改进措施
  • 交互式问答: 内置智能助手,用户可针对检测结果进行追问,获取更多安全管理建议

3. 📂 全能检测模式


单图检测

  • 适合精细化分析单张图片
  • 支持缩放查看细节
  • 可选启用 LLaVA 深度分析
  • 实时显示检测统计和分析报告

批量检测 (High Efficiency)

  • 多文件上传: 支持一次性拖拽上传数百张现场照片
  • 并行处理: 后台多线程队列处理,不阻塞主界面
  • 结果预览: 缩略图形式预览所有检测结果
  • 数据导出:
  • 自动生成 CSV 统计报表(包含文件名、目标数量、最高置信度、状态)
  • 一键下载打包好的结果图集 (ZIP)
  • 实时进度: 显示处理进度和状态信息

视频流检测

  • 多格式支持: 支持 MP4/AVI/MOV/MKV/FLV/WMV 等主流视频格式
  • 跳帧优化: 可调节跳帧参数(1-30帧)以平衡处理速度与检测密度
  • 高精度模式: frame_skip = 1-2
  • 平衡模式: frame_skip = 5 (默认)
  • 快速模式: frame_skip = 10-30
  • 视频标注: 自动生成带有检测框的标注视频
  • 详细报告:
  • 视频信息(分辨率、帧率、时长)
  • 检测统计(分析帧数、检测帧数、总目标数)
  • 目标检出率分析
  • 文件下载: 支持下载标注后的视频文件

4. 🚀 可视化模型训练

  • 零代码训练无需编写任何 Python 代码,在 Web 界面即可配置所有超参数
  • 参数配置:
  • 模型大小选择 (n/s/m/l/x)
  • Epochs、Batch Size、Image Size
  • 学习率、优化器设置
  • 实时监控:
  • 动态展示 mAP50 / mAP50-95 指标变化曲线
  • 实时滚动显示训练日志
  • 可视化进度条预估剩余时间
  • 硬件自适应: 自动检测并优先使用 GPU (CUDA),若无 GPU 则自动降级至 CPU 模式并调整推荐参数

5. 📊 历史记录与数据管理

  • 全生命周期记录: 所有的检测任务(图片、视频、批量)和训练任务都会自动记录到本地数据库
  • 数据回溯:
  • 支持按时间范围、任务类型(检测/训练)筛选
  • 随时查看过往的检测结果详情和 LLaVA 分析报告
  • 显示详细的任务参数和统计信息
  • 历史管理:
  • 🗑️ 清空所有历史: 一键清除所有历史记录
  • 🗑️ 清空检测历史: 仅清除检测相关记录
  • 🗑️ 清空训练历史: 仅清除训练相关记录
  • 自动刷新: 界面自动同步最新的后台数据状态,确保多人协作时信息一致

💻 系统环境要求

可选软件:

  • Ollama: 用于运行 LLaVA 模型 (智能分析功能需要)

🛠️ 安装与部署指南

第一步: 安装外部依赖 (可选)

  1. 安装 Ollama (智能分析功能)
  • 访问 Ollama 官网 下载并安装
  • 安装完成后,在终端运行以下命令下载 LLaVA 模型:
ollama pull llava
  • 启动 Ollama 服务:
ollama serve

第二步: 数据集准备

本项目已包含 SafetyVests 数据集,包含两个类别:

  • safety_vest: 穿戴安全背心的人员
  • no_safety_vest: 未穿戴安全背心的人员

数据集结构:

SafetyVests/
├── data.yaml          # 数据集配置文件
├── train/             # 训练集 (2728张图片)
│   ├── images/
│   └── labels/
├── valid/             # 验证集 (779张图片)
│   ├── images/
│   └── labels/
└── test/              # 测试集 (390张图片)
    ├── images/
    └── labels/

第三步: 启动系统

运行以下命令启动高级 Web 界面:

python run_web_advanced.py

启动成功后,浏览器自动访问: http://localhost:7860

📖 详细使用手册

Tab 1: � 模型管理

在此页面,你可以对 SafetyVests 数据集进行模型训练。

  1. 配置环境: 系统会自动检测 GPU。选择 GPU 以获得更快的速度
  2. 设置参数:
  • 模型大小n (nano) 最快,x (extra large) 最准。推荐使用 s 或 m
  • Epochs: 训练轮数,通常 100-300 轮效果较好
  • Batch Size: 根据显存大小调整(GPU 16-32,CPU 4-8)
  1. 开始训练: 点击"🚀 开始训练",右侧日志区会显示实时进度
  2. 监控指标: 观察 mAP50 和 mAP50-95 曲线,判断训练效果

Tab 2: �️ 图片检测

  1. 加载模型: 默认加载 best.pt,只需点击"📂 加载模型"
  2. 上传图片: 点击图片区域上传或拖拽图片
  3. 配置项:
  • 置信度阈值: 过滤低可信度的检测框(推荐 0.25-0.5)
  • 启用 LLaVA: 勾选后会调用大模型进行深度安全分析(速度较慢,约 5-10秒/张)
  1. 查看结果:
  • 左侧显示检测图(带标注框)
  • 右侧显示智能分析报告和统计信息
  • 支持放大查看细节

Tab 3: 📂 批量检测

  1. 批量上传: 一次性选择多张图片上传(支持拖拽)
  2. 设置参数: 调整置信度阈值
  3. 开始处理: 点击"🚀 开始批量处理",系统将自动遍历所有图片
  4. 结果查看:
  • 预览: 缩略图形式预览检测结果(3列网格布局)
  • 统计表: 查看每张图片的详细检测数据
  1. 结果导出:
  • 下载 ZIP: 自动生成包含所有标注图片和 summary_report.csv 的压缩包

Tab 4: 🎥 视频检测

  1. 上传视频: 支持 MP4/AVI/MOV/MKV 等常见格式
  2. 参数设置:
  • 置信度阈值: 调整检测灵敏度(默认 0.25)
  • 跳帧处理: 默认为 5。数值越大处理越快,但可能漏检快速移动的人员
  1. 开始分析: 点击"▶️ 开始视频分析"
  2. 查看结果:
  • 📊 分析报告: 查看视频信息和检测统计
  • 📥 下载视频: 下载标注后的视频文件

Tab 5: 💬 智能问答

  • 这是一个通用的安全助手。你可以询问关于施工安全规范、安全背心标准、现场安全管理等任何问题
  • 底层调用 Ollama/LLaVA 模型进行对话
  • 支持多轮对话,可以追问和深入讨论

Tab 6: 📜 历史记录

  • 自动保存: 所有的检测和训练任务都会被记录
  • 筛选查看:
  • 点击"检测历史"子标签查看所有检测记录
  • 点击"训练历史"子标签查看所有训练记录
  • 历史管理:
  • 🗑️ 清空所有历史: 清除所有历史记录
  • 🗑️ 清空检测历史: 仅清除检测记录
  • 🗑️ 清空训练历史: 仅清除训练记录
  • 自动刷新: 切换到此标签页时表格会自动刷新

⚙️ 配置文件 (config.yaml) 说明

系统核心配置位于 config.yaml,可根据需要修改:

web:
  host: "0.0.0.0"  # 监听地址
  port: 7860       # 端口号
  share: false     # 是否创建公网链接

yolov8:
  model_size: "n"  # 默认模型大小
  data_yaml: "SafetyVests/data.yaml"  # 数据集配置
  train:
    device: 0      # GPU索引
    batch_size: 16
    epochs: 100
    imgsz: 640
  inference:
    conf_threshold: 0.25  # 置信度阈值
    iou_threshold: 0.45   # NMS IOU阈值

llava:
  ollama_url: "http://localhost:11434" # Ollama服务地址
  ollama_model: "llava"
  timeout: 60  # 请求超时时间(秒)

创作时间: