🦺 基于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 模型 (智能分析功能需要)
🛠️ 安装与部署指南
第一步: 安装外部依赖 (可选)
- 安装 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 数据集进行模型训练。
- 配置环境: 系统会自动检测 GPU。选择 GPU 以获得更快的速度
- 设置参数:
- 模型大小:
n(nano) 最快,x(extra large) 最准。推荐使用s或m - Epochs: 训练轮数,通常 100-300 轮效果较好
- Batch Size: 根据显存大小调整(GPU 16-32,CPU 4-8)
- 开始训练: 点击"🚀 开始训练",右侧日志区会显示实时进度
- 监控指标: 观察 mAP50 和 mAP50-95 曲线,判断训练效果
Tab 2: �️ 图片检测
- 加载模型: 默认加载
best.pt,只需点击"📂 加载模型" - 上传图片: 点击图片区域上传或拖拽图片
- 配置项:
- 置信度阈值: 过滤低可信度的检测框(推荐 0.25-0.5)
- 启用 LLaVA: 勾选后会调用大模型进行深度安全分析(速度较慢,约 5-10秒/张)
- 查看结果:
- 左侧显示检测图(带标注框)
- 右侧显示智能分析报告和统计信息
- 支持放大查看细节
Tab 3: 📂 批量检测
- 批量上传: 一次性选择多张图片上传(支持拖拽)
- 设置参数: 调整置信度阈值
- 开始处理: 点击"🚀 开始批量处理",系统将自动遍历所有图片
- 结果查看:
- 预览: 缩略图形式预览检测结果(3列网格布局)
- 统计表: 查看每张图片的详细检测数据
- 结果导出:
- 下载 ZIP: 自动生成包含所有标注图片和
summary_report.csv的压缩包
Tab 4: 🎥 视频检测
- 上传视频: 支持 MP4/AVI/MOV/MKV 等常见格式
- 参数设置:
- 置信度阈值: 调整检测灵敏度(默认 0.25)
- 跳帧处理: 默认为 5。数值越大处理越快,但可能漏检快速移动的人员
- 开始分析: 点击"▶️ 开始视频分析"
- 查看结果:
- 📊 分析报告: 查看视频信息和检测统计
- 📥 下载视频: 下载标注后的视频文件
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 # 请求超时时间(秒)