基于 YOLO11 的工业场景安全帽佩戴检测系统 | 完整源码分享

简介: 本项目基于YOLO11n开发工业级安全帽佩戴检测系统,支持实时识别、类型区分(工业/普通安全帽),集成单图/批量/视频/摄像头四模态检测。采用Streamlit构建中文友好Web界面,附完整源码、预训练模型与2900+真实场景标注数据集,助力安全生产智能监管。(239字)

基于 YOLO11 的工业场景安全帽佩戴检测系统 | 完整源码分享

一套面向工地、生产车间与厂区出入口的安全帽佩戴视觉识别方案,使用 YOLO11n + Streamlit 构建,可实时检出画面中的安全帽并区分类型,辅助安全生产监管与违规预警。

附完整源码与效果演示。

一、背景

1.1 行业痛点

安全帽是工地与车间的第一道生命防线,但佩戴合规性检查长期依赖人力,存在三个老大难问题:

  1. 人工巡检有死角——安全员不可能同时盯住所有作业面,临时进场、夜班时段最容易漏管;
  2. 监控回放滞后——传统视频监控只能事后查证,违规佩戴已经发生,处罚代替不了预防;
  3. 合规台账难沉淀——谁没戴、哪个时段高发,缺乏结构化数据,安全例会只能凭印象说话。

本项目把"人眼巡查"升级为"实时检出":摄像头采集 → YOLO11 检测 → 框出安全帽并区分类型,为安全员、班组与企业安监提供一个可量化、可追溯的合规检查底座。

数据集来自真实工业场景,共 2900+ 张高质量标注图(train 2904 / valid 74 / test 8),按 YOLO 格式组织,两个类别 nc=2:工业安全帽 / 安全帽。

视频演示与源码 下载

https://www.bilibili.com/video/BV1q2pm6dERQ/

在这里插入图片描述

包含: 📦完整项目源码 📦 预训练 模型权重

🗂️数据集

1.2 项目运行效果

  • *Web 界面总览(

    在这里插入图片描述

  • *单张图片识别效果

    在这里插入图片描述

  • *批量图片合规检查

    在这里插入图片描述

1.3 项目介绍

创新点 / 亮点

维度 说明
类型可区分 两类安全帽分别标注(工业安全帽 / 安全帽),适配多工种混合作业面
原子配置即业务 project.yaml 描述行业、场景、部署形态,前端 0 代码定制品牌
多源接入 同一 UI 支持单图、批量、视频、摄像头四种模式,零部署门槛
中文类名 训练即用中文标签,前端无需翻译,对非技术用户(安全员)友好

系统功能概览

  • 单张图片检测:上传图片即得标注图 + 检测明细 + 类别统计
  • 批量图片检测:多图或 ZIP 上传,自动汇总每张图的检出数与平均置信度,结果打包下载
  • 视频检测:逐帧推理生成标注视频,附逐帧检出统计
  • 摄像头实时检测:浏览器拉本机摄像头,实时输出检测结果

技术栈

层级 技术选型
检测模型 YOLO11n(Ultralytics)
Web 框架 Streamlit
图像处理 OpenCV、Pillow
数据 / 图表 Pandas
视频编解码 imageio-ffmpeg
部署 Python 3.8+,本地 / 容器 / 边缘盒子 均可

类别定义:nc=2,names 为 0: 工业安全帽,1: 安全帽。

二、设计框架

系统架构

┌────────────────────────────────────────────────────────────┐
│           用户浏览器(安全员 / 班组长 / 安监)              │
│        单张图片 │ 批量图片 │ 视频 │ 摄像头                   │
└──────────────────────┬─────────────────────────────────────┘
                       │ HTTP / WebSocket
┌──────────────────────▼─────────────────────────────────────┐
│              Streamlit App (app/streamlit_app.py)          │
│  · 模式路由(st.radio)                                     │
│  · 上传 / 预览 / 检测明细 / 结果 ZIP 导出                   │
│  · 行业品牌渲染(project.yaml 驱动)                        │
└──────────────────────┬─────────────────────────────────────┘
                       │ model.predict(conf=可调, iou=0.7)
┌──────────────────────▼─────────────────────────────────────┐
│                 YOLO11n 推理引擎                           │
│  Backbone (C2f + SPPF) → Neck (FPN + PAN) → Decoupled Head │
│  + DFL(分布式回归)→ NMS                                   │
└──────────────────────┬─────────────────────────────────────┘
                       │ result.boxes (cls, conf, xyxy)
┌──────────────────────▼─────────────────────────────────────┐
│   后处理:类别映射 → DataFrame 明细 → 统计汇总 → 前端渲染   │
└────────────────────────────────────────────────────────────┘

YOLO11 网络结构(沿用 v8 主干,更轻更深)

  • Backbone:Conv + C2f 堆叠下采样 5 次,末端 SPPF 融合多尺度特征
  • Neck:FPN(自顶向下语义)+ PAN(自底向上定位)双向特征金字塔
  • Head:解耦头 + DFL(分布回归),对小目标(远处人头)定位更稳
  • 损失:BCE(分类)+ CIoU + DFL(回归)

检测流程:图像/帧 → letterbox 至 imgsz=640 → 推理 → 置信度过滤(默认 0.25)→ NMS(iou=0.7)→ 类别映射 → 前端图表渲染。

三、代码结构(核心 50 行 + 解析)

项目结构:

工业场景安全帽佩戴检测_yolo11n/
├── app/streamlit_app.py        # Streamlit Web 入口
├── configs/project.yaml        # 业务配置(场景、部署、UI 主题、推理参数)
├── model/best.pt               # YOLO11n 权重
├── data/                       # train / valid / test
└── train/                      # 训练产物

核心代码(项目真实摘录):

PROJECT_ROOT = Path(__file__).resolve().parent.parent
APP_CONFIG = load_yaml(PROJECT_ROOT / "configs" / "project.yaml")
DEFAULT_CONF = float(INFERENCE_META.get("conf", 0.30))     # 阈值由配置驱动

@st.cache_resource(show_spinner=False)
def load_model(model_path: str) -> YOLO:
    return YOLO(model_path)                       # 全局缓存,避免反复加载

def infer_image_path(model: YOLO, image_path: Path, conf: float) -> tuple:
    result = model.predict(str(image_path), conf=conf, verbose=False)[0]
    annotated = result.plot()
    rows = []
    if result.boxes is not None:
        for box in result.boxes:
            cls_id = int(box.cls.item())
            rows.append({
   
                "class_name": result.names[cls_id],
                "confidence": round(float(box.conf.item()), 4),
                "x1": float(box.xyxy[0][0]), "y1": float(box.xyxy[0][1]),
                "x2": float(box.xyxy[0][2]), "y2": float(box.xyxy[0][3]),
            })
    return annotated[:, :, ::-1], pd.DataFrame(rows)

逐段解析

  1. project.yaml + INFER.get(…):置信度、iou、批量上限全部从配置读取,安全员侧调阈值不用改代码。
  2. @st.cache_resource 缓存 YOLO(model_path):Streamlit 每次交互不重建模型,首屏后单图响应稳定在百毫秒级。
  3. model.predict 一行完成"预处理 + 推理 + NMS",.plot() 直接生成带标签框的 ndarray,[:, :, ::-1] 转回 RGB 喂给 Streamlit。
  4. result.boxes 迭代得到 cls / conf / xyxy,组成 DataFrame:单图、批量、视频、摄像头四个入口复用同一份推理逻辑。
  5. 批量入口在推理循环中同步完成"明细落表 + 标注图写 ZIP + 缩略预览"三件事,一次跑完即拿可下载结果包,方便直接贴进安全例会材料。

四、训练效果

训练采用 YOLO11n 预训练权重 微调 ,epochs=200(best epoch 164),imgsz=640,batch=16。best.pt 对应指标:

指标 数值
Precision (B) 0.986
Recall (B) 0.977
mAP@0.5 0.994
mAP@0.5:0.95 0.784
  • PR 曲线(mAP@0.5 = 0.994,两类安全帽均维持高精度高召回)(原文此处为截图)
  • 归一化混淆矩阵(对角线主导,类别间几乎无混淆——两类安全帽外观差异明确)(原文此处为截图)
  • 类别分布:两类样本均衡,安全帽目标尺寸集中在小到中等区域,小目标检出稳定(原文此处为截图)

五、项目总结

做对了什么

  • 两类安全帽分开标注,多工种混合作业面也能给出结构化合规数据。
  • 业务话术、场景、部署形态全在 project.yaml,同一套代码可换皮复用到工地、车间、厂区等不同客户。
  • 推理函数返回 (annotated, DataFrame),单图 / 批量 / 视频 / 摄像头复用同一份逻辑,扩展新模式成本极低。

还能怎么做

  • 加入人头检测做"戴/未戴"配对判定,把"检出安全帽"升级为"检出未佩戴人员",直接输出违规名单。
  • 引入跟踪(ByteTrack / BoT-SORT)做跨帧关联,统计单人持续违规时长,过滤单帧闪烁误报。
  • 对接门禁闸机与广播系统,检出未佩戴即联动拦截提醒,形成"检出—告警—处置"闭环。
  • 边缘部署:YOLO11n 轻量,INT8 量化后可塞进工地摄像头本地芯片,敏感画面不出场。

一句话总结

YOLO11n + Streamlit 把"人眼巡查"升级为"实时检出",给工地、车间与厂区安防一个可立即落地、可配置化复用的视觉底座。

标签:# yolo #YOLO #目标检测 #安全帽检测

相关文章
|
5月前
|
运维 监控 安全
2类安全帽目标检测数据集(工业安全帽/安全帽)分享
本数据集含3000张真实工业场景图像,标注2类安全帽(工业安全帽/安全帽),YOLO格式,覆盖建筑工地、厂房、夜间、遮挡等复杂工况,适配YOLO系列、Faster R-CNN等主流模型,助力智慧工地与工业安防智能化升级。
|
5月前
|
机器学习/深度学习 人工智能 监控
8类工地安全防护用品检测5200张数据集分享
本数据集含5200张真实工地实景图像,精细标注8类安全目标(安全帽、反光背心、施工人员等),YOLO格式,开箱即用。适用于智慧工地监管、PPE合规检测及YOLOv5-v11等模型训练,助力工业安防与目标检测研究。
|
2月前
|
监控 安全 算法
头盔检测数据集 | 8300张YOLO智慧交通数据集
本数据集含8300张YOLO格式标注图像,涵盖“戴头盔”“未戴头盔”“摩托车”“人数”4类,专为骑行安全监管与目标检测研发设计,适配YOLOv5-v12等主流模型,支持执法辅助、共享出行监控及科研教学。(239字)
|
4月前
|
监控 算法 小程序
图书馆座位占位检测数据集| 2600张YOLO智慧校园数据集分享
本数据集含2600张真实图书馆场景图像,YOLO格式,标注包、笔记本电脑、人三类目标,支持座位占用状态智能识别。兼顾隐私保护与工程实用,适用于智慧图书馆管理、占座行为治理及YOLO等目标检测算法研究。
|
25天前
|
文字识别 前端开发 数据可视化
基于 YOLO11 的多语种交通标志与信号灯识别系统
本项目基于YOLO11n构建多语种交通标志与信号灯识别系统,支持中、英、阿拉伯文34类要素(含细粒度限速、停车让行及红黄绿灯),轻量(5MB)、高精度、开箱即用。集成Streamlit前端,支持图片/视频/摄像头实时检测,专为出海驾驶、跨境物流与ADAS出海场景设计。(239字)
|
2月前
|
机器学习/深度学习 监控 安全
航拍校园操场人体检测数据集 | YOLO航拍人体检测数据集
本数据集为无人机航拍校园操场场景下的人体检测专用数据集,含高质量YOLO格式标注图像,覆盖多尺度、多姿态、多光照及不同人群密度场景,专为YOLOv5-v12等模型训练优化,适用于校园安防、人流统计与智慧巡检研究。(239字)
|
4月前
|
机器学习/深度学习 编解码 运维
PCB表面缺陷目标检测数据集:6类别、3,500张图像 | 目标检测
本数据集含3500张PCB表面缺陷图像,覆盖漏孔、鼠咬、开路、短路、毛刺、伪铜6类工业缺陷,采用YOLO格式高精度标注,专为小目标检测优化,支持YOLOv8等模型训练与TensorRT部署,助力AOI质检落地。(239字)
392 0
|
5月前
|
机器学习/深度学习 数据采集 人工智能
田间杂草检测数据集分享(适用于YOLO系列深度学习分类检测任务)
本数据集含4000张真实农田图像(小麦/玉米/水稻田),YOLO格式标注杂草目标,覆盖多天气、光照与视角,适用于YOLO系列等目标检测模型训练,助力智能除草与精准农业研究。(239字)
613 16
|
5月前
|
前端开发 JavaScript 测试技术
基于java+springboot+mysql的美食在线分享平台的设计与实现
本项目基于Java+SpringBoot+MySQL开发美食在线分享平台,支持用户注册登录、菜谱查询/浏览/收藏、笔记发布与评论,以及管理员对用户、菜谱、笔记的全流程管理。含完整源码、数据库、文档及部署教程。(239字)
256 0
基于java+springboot+mysql的美食在线分享平台的设计与实现
|
5月前
|
机器学习/深度学习 人工智能 编解码
睡岗检测数据集分享(适用于YOLO系列深度学习分类检测任务)
本数据集含2000张真实监控场景图像,专为睡岗检测设计,支持YOLO等目标检测模型。涵盖多光照、多角度、多分辨率条件,标注精准(YOLO格式),含训练/验证集及配置文件,适用于安防、交通、工业等智能监控场景。(239字)
453 1

热门文章

最新文章