安全防护检测数据集 3500张 PPE 动火 带标注 voc yolo 12类

安全防护检测数据集 3500张 PPE 动火 带标注 voc yolo

分类名: (图片张数, 标注个数)
he Imet:
(3649,10494)
no_ goggles:
(2197,4545)
no_ mask: (2986, 6918)
no_ vest: (2602, 7462)
boots: (1802, 7657)
no_ gloves: (2278, 6350)
g loves:
: (1527, 3602)
no_ he Imet: (756, 2048)
vest: (1735, 4286) 
goggles: (1108, 1965)
no_ boots:
(99,266)
mask: (167, 251)
总数: (4034, 55844)
总类(nc): 12类

 

安全防护检测数据集介绍

数据集名称

安全防护检测数据集 (Safety Protection Equipment Detection Dataset)

数据集概述

该数据集是一个专门用于训练和评估安全防护装备(PPE, Personal Protective Equipment)检测模型的数据集。数据集包含3500张图像,每张图像都带有标注信息,标注格式为VOC(Pascal VOC)和YOLO格式。这些图像涵盖了各种工作场景中工人穿戴的安全防护装备情况,适用于基于深度学习的目标检测任务。通过这个数据集,可以训练出能够准确检测和识别工人是否正确佩戴安全帽、护目镜、口罩、反光背心、手套和安全靴等防护装备的模型,从而帮助进行现场安全管理、合规性检查等应用。

数据集特点
  • 高质量图像:数据集中的图像具有高分辨率,能够提供丰富的细节信息。
  • 带标注:每张图像都有详细的标注信息,包括各种安全防护装备的位置和大小。
  • 多格式标注:标注信息同时以VOC和YOLO格式提供,方便不同框架的使用。
  • 实际应用场景:适用于需要精确检测工人安全防护装备佩戴情况的场景,如建筑工地、工厂、实验室等。
数据集结构
safety_ppe_detection_dataset/
├── images/                            # 图像文件
│   ├── 00001.jpg                      # 示例图像
│   ├── 00002.jpg
│   └── ...
├── annotations/                       # 标注文件
│   ├── VOC/                           # Pascal VOC格式标注
│   │   ├── 00001.xml                  # 示例VOC标注文件
│   │   ├── 00002.xml
│   │   └── ...
│   ├── YOLO/                          # YOLO格式标注
│   │   ├── 00001.txt                  # 示例YOLO标注文件
│   │   ├── 00002.txt
│   │   └── ...
├── data.yaml                          # 类别描述文件
├── README.md                          # 数据集说明
数据集内容
  1. images/

    • 功能:存放图像文件。
    • 内容
      • 00001.jpg:示例图像。
      • 00002.jpg:另一张图像。
      • ...
  2. annotations/

    • 功能:存放标注文件。
    • 内容
      • VOC/:存放Pascal VOC格式的标注文件。
        • 00001.xml:示例VOC标注文件。
        • 00002.xml:另一张图像的VOC标注文件。
        • ...
      • YOLO/:存放YOLO格式的标注文件。
        • 00001.txt:示例YOLO标注文件。
        • 00002.txt:另一张图像的YOLO标注文件。
        • ...
  3. data.yaml

    • 功能:定义数据集的类别和其他相关信息。
    • 内容
       yaml 

      深色版本

      train: safety_ppe_detection_dataset/images
      val: safety_ppe_detection_dataset/images
      nc: 12
      names: ['he Imet', 'no_goggles', 'no_mask', 'no_vest', 'boots', 'no_gloves', 'gloves', 'no_he Imet', 'vest', 'goggles', 'no_boots', 'mask']
  4. README.md

    • 功能:数据集的详细说明文档。
    • 内容
      • 数据集的来源和用途。
      • 数据集的结构和内容。
      • 如何使用数据集进行模型训练和评估。
      • 其他注意事项和建议。
数据集统计
  • 总图像数量:3500张
  • 总标注框数量:55844个
  • 类别:12类
  • 平均每张图像的标注框数量:约16个

具体类别及其统计如下:

  • he Imet:(3649, 10494)
  • no_goggles:(2197, 4545)
  • no_mask:(2986, 6918)
  • no_vest:(2602, 7462)
  • boots:(1802, 7657)
  • no_gloves:(2278, 6350)
  • gloves:(1527, 3602)
  • no_he Imet:(756, 2048)
  • vest:(1735, 4286)
  • goggles:(1108, 1965)
  • no_boots:(99, 266)
  • mask:(167, 251)
使用说明
  1. 环境准备

    • 安装依赖库:
      pip install -r requirements.txt
    • 确保安装了常用的深度学习库,例如torchtorchvisionnumpy等。
  2. 数据集路径设置

    • 将数据集解压到项目目录下,确保路径正确。
  3. 训练模型

     

    以下是一个使用PyTorch和torchvision库进行安全防护装备检测的示例代码。我们将使用预训练的Faster R-CNN模型,并对其进行微调以适应我们的数据集。

     python 

    深色版本

    import torch
    import torchvision
    from torchvision.models.detection.faster_rcnn import FastRCNNPredictor
    from torchvision.models.detection import FasterRCNN
    from torchvision.models.detection.rpn import AnchorGenerator
    from torchvision.transforms import functional as F
    from torch.utils.data import DataLoader, Dataset
    from PIL import Image
    import os
    import xml.etree.ElementTree as ET# 自定义数据集类
    class SafetyPPEDetectionDataset(Dataset):def __init__(self, root, transforms=None):self.root = rootself.transforms = transformsself.imgs = list(sorted(os.listdir(os.path.join(root, "images"))))self.annotations = list(sorted(os.listdir(os.path.join(root, "annotations", "VOC"))))def __getitem__(self, idx):img_path = os.path.join(self.root, "images", self.imgs[idx])annotation_path = os.path.join(self.root, "annotations", "VOC", self.annotations[idx])img = Image.open(img_path).convert("RGB")annotation_root = ET.parse(annotation_path).getroot()boxes = []labels = []for obj in annotation_root.findall('object'):xmin, ymin, xmax, ymax = [int(obj.find('bndbox').find(tag).text) for tag in ('xmin', 'ymin', 'xmax', 'ymax')]label = obj.find('name').textlabel_id = ['he Imet', 'no_goggles', 'no_mask', 'no_vest', 'boots', 'no_gloves', 'gloves', 'no_he Imet', 'vest', 'goggles', 'no_boots', 'mask'].index(label) + 1boxes.append([xmin, ymin, xmax, ymax])labels.append(label_id)boxes = torch.as_tensor(boxes, dtype=torch.float32)labels = torch.as_tensor(labels, dtype=torch.int64)target = {}target["boxes"] = boxestarget["labels"] = labelstarget["image_id"] = torch.tensor([idx])if self.transforms is not None:img, target = self.transforms(img, target)return F.to_tensor(img), targetdef __len__(self):return len(self.imgs)# 数据预处理
    def get_transform(train):transforms = []if train:transforms.append(torchvision.transforms.RandomHorizontalFlip(0.5))return torchvision.transforms.Compose(transforms)# 加载数据集
    dataset = SafetyPPEDetectionDataset(root='safety_ppe_detection_dataset', transforms=get_transform(train=True))
    dataset_test = SafetyPPEDetectionDataset(root='safety_ppe_detection_dataset', transforms=get_transform(train=False))indices = torch.randperm(len(dataset)).tolist()
    dataset = torch.utils.data.Subset(dataset, indices[:-500])
    dataset_test = torch.utils.data.Subset(dataset_test, indices[-500:])data_loader = DataLoader(dataset, batch_size=2, shuffle=True, num_workers=4, collate_fn=lambda x: tuple(zip(*x)))
    data_loader_test = DataLoader(dataset_test, batch_size=1, shuffle=False, num_workers=4, collate_fn=lambda x: tuple(zip(*x)))# 定义模型
    model = torchvision.models.detection.fasterrcnn_resnet50_fpn(pretrained=True)
    num_classes = 13  # 12类防护装备 + 背景
    in_features = model.roi_heads.box_predictor.cls_score.in_features
    model.roi_heads.box_predictor = FastRCNNPredictor(in_features, num_classes)# 设置设备
    device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
    model.to(device)# 定义优化器
    params = [p for p in model.parameters() if p.requires_grad]
    optimizer = torch.optim.SGD(params, lr=0.005, momentum=0.9, weight_decay=0.0005)# 训练模型
    num_epochs = 10
    for epoch in range(num_epochs):model.train()for images, targets in data_loader:images = list(image.to(device) for image in images)targets = [{k: v.to(device) for k, v in t.items()} for t in targets]loss_dict = model(images, targets)losses = sum(loss for loss in loss_dict.values())optimizer.zero_grad()losses.backward()optimizer.step()print(f'Epoch {epoch+1}/{num_epochs}, Loss: {losses.item()}')# 验证模型model.eval()with torch.no_grad():for images, targets in data_loader_test:images = list(image.to(device) for image in images)targets = [{k: v.to(device) for k, v in t.items()} for t in targets]outputs = model(images)# 保存模型
    torch.save(model.state_dict(), 'safety_ppe_detection_model.pth')
注意事项
  • 数据格式:确保输入的数据格式正确,特别是图像文件和标注文件的格式。
  • 超参数调整:根据实际情况调整学习率、批大小等超参数,以获得最佳训练效果。
  • 硬件要求:建议使用GPU进行训练和推理,以加快处理速度。如果没有足够的计算资源,可以考虑使用云服务提供商的GPU实例。
  • 数据增强:可以通过数据增强技术(如随机翻转、旋转等)来增加模型的鲁棒性。
  • 模型选择:除了Faster R-CNN,还可以尝试其他目标检测模型,如YOLOv5、SSD等,以找到最适合当前任务的模型。
  • 类别平衡:虽然数据集中各类别的样本数量相对均衡,但在实际应用中可能需要进一步检查并处理类别不平衡问题,例如通过过采样或欠采样方法。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1555617.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

VirtualBox虚拟机连接宿主机并能够上网(小白向)

现存问题 windows系统主要使用vmare和virtualbox两种虚拟机,virtualbox相对于vmare更加轻便,但少有博客能够详细说明使用virtualbox的教程。踩了网上的坑后,决定写一篇文章介绍virtualbox虚拟机上网的流程。 需求 1. virtualbox虚拟机与宿主机…

一篇文章搞懂Android 刷卡器对接:RS232 DB9串口通讯,通讯设置,刷卡器API介绍;代码示例;MDB协议;

目录 前言 在一些国家,还没有普及扫码支付的时候,消费者会纸币、硬币或者刷卡进行支付,这里我们讲解一下刷卡支付。 在市面上,有哪家刷卡器公司可以说的上是开通了很多国家的支付银行,那么Nayax和Pax可以说的上是名列前茅,他们适配了很多国家,对接其他国家的银行,让我…

ChatGPT 更新 Canvas 深度测评:论文写作这样用它!

我是娜姐 迪娜学姐 ,一个SCI医学期刊编辑,探索用AI工具提效论文写作和发表。 ChatGPT又又更新了:基于ChatGPT 4o模型的Canvas 写作和代码功能。目前,仅针对Plus和Team用户。是一个独立的模块,如下所示: 官方…

ISO IEC 18004 2024/2015 Chinese 下载

ISO_IEC 18004 2024.pdf - 蓝奏云文件大小:40.3 M|https://610402220623.lanzouq.com/iqZ122bnx0yjISO IEC 18004-2015 zh-CN.pdf - 蓝奏云文件大小:34.1 M|https://610402220623.lanzouq.com/iEXSB2bnx0hc

G. Gears (2022 ICPC Southeastern Europe Regional Contest. )

G. Gears 思路: 本身这个题并不难,奈何卡了很久后看了题解才做出来,感觉自己好笨。 很容易想到的是,只要确定了一个齿轮的位置,其他齿轮的位置都可以直接推出来。所以当前目标是如何确定第一个齿轮的位置。 令 x [ i …

系统守护者:使用PyCharm与Python实现关键硬件状态的实时监控

目录 前言 系统准备 软件下载与安装 安装相关库 程序准备 主体程序 更改后的程序: 编写.NET程序 前言 在现代生活中,电脑作为核心工具,其性能和稳定性的维护至关重要。为确保电脑高效运行,我们不仅需关注软件优化&#xf…

Koa2项目实战2(路由管理、项目结构优化)

添加路由(处理不同的URL请求) 路由:根据不同的URL,调用对应的处理函数。 每一个接口服务,最核心的功能是:根据不同的URL请求,返回不同的数据。也就是调用不同的接口返回不同的数据。 在 Node…

数据服务-备份服务(rsync)

1. 概述 特点: 1. rsync是个服务也是命令 2. 使用方便,具有多种模式 3. 传输数据的时候是增量传输 1.1 增量与全量 1. 增量:只会把修改,新建的内容推走 2. 全量:无论数据多少全部推送 1.2 把/etc/目录传输到另一台机器的/tmp/下面…

安卓 /proc 目录详解:从内核到进程的桥梁

在安卓系统中,/proc 目录是开发者、调试者、甚至是普通用户深入了解系统状态、性能及行为的一个重要入口。这个虚拟文件系统不仅包含了丰富的内核信息,还反映了运行中的每个进程的状态。 /proc 文件系统 /proc 文件系统(procfs)是…

前端编程艺术(3)---JavaScript

目录 1.JavaScript 1.输出 2.变量和数据类型 3.运算符 4.数组 5.函数 6.面向对象 7.ES6面向对象 2.BOM 1.document对象 3.DOM 4.JSON 1.JavaScript JavaScript是一种脚本编程语言,通常用于为网页增加交互性和动态效果。它是一种高级语言&#xff…

C++ 算法学习——1.6 差分算法与二维差分算法

一维差分算法概述: 差分算法是一种用于计算序列中相邻元素之间差值的技术。在C中,STL(标准模板库)提供了std::adjacent_difference函数来实现差分算法。 std::adjacent_difference函数: std::adjacent_difference函数位…

余承东直播论道智能驾驶:激光雷达不可或缺,华为ADS 3.0引领安全创新

华为余承东:激光雷达,智能驾驶安全性的关键 9月29日,华为消费者业务集团CEO余承东在一场引人注目的直播中,与知名主持人马东就智能驾驶技术的最新进展进行了深入交流。在这场直播中,余承东针对激光雷达在智能驾驶中的必要性问题,发表了明确且深刻的观点,引发了业界和公众…

网关路由登录校验

网关过滤器 登录校验必须在请求转发到微服务之前做,否则就失去了意义。而网关的请求转发是Gateway内部代码实现的,要想在请求转发之前做登录校验,就必须了解Gateway内部工作的基本原理。 暂时无法在飞书文档外展示此内容 如图所示&#xff…

一、Python(介绍、环境搭建)

一、介绍 Python 是一种高级编程语言,具有简洁易读的语法、丰富的库和强大的功能。Python是解释型语言,运行代码必须依赖安装好的解释器。Python目前存在两个版本:Python2、Python3(主流使用) 二、环境搭建 1.安装P…

四、函数顶层变量

函数&顶层变量 函数定义创建和使用 顶层变量递归函数实用库函数高阶函数与lambda表达式函数类型变量类型别名匿名函数lambda表达式基本用法lambda的简写 内联函数 函数 定义 其实函数我们在一开始就在使用了: fun main() {println("Hello World") …

Python 语言学习——应用1.1 数字图像处理(第一节,颜色)

目录 1.基础知识 2.实战演示 1.基础知识: 1.图像的表示. 函数表示:图像是二维信号,定义为二维函数f(x,y),其中,x、y是空间坐标,f(x,y)是点(x,y)的幅值。拓展看,视频,又称动态图像…

一阶差分模板的频率响应

一阶差分模板不同于二阶差分模板,它是一个奇对称的模板,傅里叶变换是纯虚数,无法用图形直接显示傅里叶变换,只能显示幅值谱。 冈萨雷斯的这个图我一直很好奇是怎么显示的,也没有坐标轴标出变量表示。 如今终于想明白…

论文笔记:微表情欺骗检测

整理了AAAI2018 Deception Detection in Videos 论文的阅读笔记 背景模型实验可视化 背景 欺骗在我们的日常生活中很常见。一些谎言是无害的,而另一些谎言可能会产生严重的后果。例如,在法庭上撒谎可能会影响司法公正,让有罪的被告逍遥法外。…

04-SpringBootWeb案例(中)

3. 员工管理 完成了部门管理的功能开发之后,我们进入到下一环节员工管理功能的开发。 基于以上原型,我们可以把员工管理功能分为: 分页查询(今天完成)带条件的分页查询(今天完成)删除员工&am…

服务器conda环境安装rpy2

参考博客 https://stackoverflow.com/questions/68936589/how-to-select-r-installation-when-using-rpy2-on-conda 现在我遇到这样一个问题,服务器系统环境没有R(没有权限安装),我只能在minconda的conda环境中使用R, 使用方法如下 我现在…