本项目为 2026 届本科毕业设计实现版本
检测类别:helmet(安全帽)、vest(反光衣)
本系统基于 YOLOv11n 实现安全装备实时检测,并结合规则引擎完成违规预警。系统具备以下能力:
- 实时视频检测(摄像头/视频文件)
- 违规状态判定(未戴安全帽 / 未穿反光衣)
- 声音报警
- 违规截图自动保存
- SQLite 日志存证
- PyQt5 可视化控制界面
YOLOv11-Safety-Equipment-Detection/
├─ datasets/
│ └─ helmet-vest.v2i.yolov11/
│ ├─ train/
│ ├─ valid/
│ ├─ test/
│ └─ data.yaml
├─ runs/
│ └─ train/
│ └─ yolov11_ppe_v1002/
│ ├─ weights/
│ │ ├─ best.pt
│ │ └─ last.pt
│ └─ results.csv
├─ violations/ # 违规截图目录
├─ main.py # PyQt5 主程序(推荐运行)
├─ train.py # 训练脚本
├─ val.py # 验证脚本
├─ safety_logs.db # 违规事件数据库
└─ README.md
- Python 3.8+
- PyTorch(CUDA)
- ultralytics
- opencv-python
- pyqt5
- sqlite3(Python内置)
安装示例:
conda activate yolo_env
pip install ultralytics opencv-python pyqt5data.yaml 示例:
path: D:/Code/PycharmProjects/Practice/YOLOv11-Safety-Equipment-Detection/datasets/helmet-vest.v2i.yolov11
train: train/images
val: valid/images
test: test/images
nc: 2
names:
0: helmet
1: vestpython train.py或命令行:
yolo detect train data=.../data.yaml model=yolo11n.pt epochs=100 imgsz=640 batch=8 device=0python val.pypython main.py功能流程:
- 加载模型(best.pt)
- 导入视频源(默认摄像头)
- 开始检测
- 发生违规时触发:
- UI日志提示
- 声音报警
- 截图保存到
violations/ - 数据写入
safety_logs.db
COMPLIANT:检测到 helmet + vestNO_HELMET:检测到 vest 但未检测到 helmetNO_VEST:检测到 helmet 但未检测到 vestNO_PPE_DETECTED:两者均未检测到
注:本项目为两类数据集,采用画面级规则判定。
表名:warning_events
| 字段名 | 类型 | 说明 |
|---|---|---|
| id | INTEGER | 主键自增 |
| event_time | TEXT | 事件时间 |
| status | TEXT | 违规状态 |
| confidence | REAL | 置信度 |
| image_path | TEXT | 截图路径 |
使用 Python API 运行(python main.py / python val.py)即可,不影响系统功能。
检查 video_path=0 是否正确,或尝试更换为 1。
确认 main.py 中 model_path 对应真实 best.pt 路径。
- 增加
person类实现“人-装备关联判定” - 增加邮件/微信告警
- 增加违规统计可视化报表
- 接入多路摄像头与边缘部署
本项目用于本科毕业设计学习与研究,数据集遵守原始来源授权协议。