工业和建筑工地 安全帽-安全带识别数据集 yolo数据集 共2200张 已增强 标注

news2025/1/15 8:36:19

安全帽-安全带识别数据集 yolo数据集 共2200张 已增强

安全帽检测与安全带识别数据集


图像数量:2,200张
增强后标注数量

  • belt(安全带):3,197个
  • head(头部):326个
  • helmet(安全帽):3,171个
  • person(人员):3,912个
  • vest(反光背心):920个

用途:该数据集专为工业和建筑工地的安全监测任务设计,适用于安全帽佩戴、安全带使用以及反光背心穿戴的检测。通过使用YOLO(You Only Look Once)等目标检测模型,可以实现实时的安全装备检测和分类。

数据集特点
  • 多类别:涵盖五种主要的安全装备类型:安全带、头部、安全帽、人员和反光背心,分别用不同的标签进行标注。
  • 高质量标注:所有标注均为人工标注,并经过数据增强处理,确保了标注的准确性和多样性。
  • 实际应用场景:数据来源于真实的工业和建筑工地场景,具有很高的实用价值。
  • 数据增强:通过数据增强技术(如旋转、缩放、亮度调整等),增加了数据的多样性和鲁棒性。
  • 大规模:包含2,200张高分辨率图像,提供了丰富的训练数据。
应用领域
  • 工业安全:实时检测工人是否佩戴安全帽、系好安全带及穿戴反光背心,提高工作现场的安全性。
  • 自动化监控:结合自动化系统,实现对施工现场的持续监控和异常报警。
  • 合规管理:辅助管理人员快速定位和处理未按规定佩戴安全装备的情况,确保符合安全标准。
  • 数据分析:通过数据分析,提供关于安全装备佩戴情况的统计报告,支持决策制定。
获取方式

通常情况下,研究人员可以通过官方提供的链接或相关机构网站下载该数据集。请注意,使用时应遵循相应的许可协议和引用要求。

关键代码示例

1. 下载数据集

假设我们已经有了数据集的下载链接,可以使用 Python 的 requests 库来下载数据集:

import requests
import os

# 定义下载链接和保存路径
url = 'http://example.com/path/to/safety_equipment_detection_dataset.zip'  # 替换为实际的下载链接
save_path = './safety_equipment_detection_dataset.zip'

# 检查是否已经下载过
if not os.path.exists(save_path):
    print("Downloading dataset...")
    response = requests.get(url, stream=True)
    with open(save_path, 'wb') as f:
        for chunk in response.iter_content(chunk_size=8192):
            if chunk:
                f.write(chunk)
    print("Download complete.")
else:
    print("Dataset already exists.")

# 解压数据集
import zipfile
with zipfile.ZipFile(save_path, 'r') as zip_ref:
    zip_ref.extractall('./safety_equipment_detection_dataset')
2. 加载和显示图像及其标注

以下是一个加载和显示图像及其标注框的示例:

 
import matplotlib.pyplot as plt
import numpy as np
from PIL import Image
import xml.etree.ElementTree as ET

def load_image_and_annotations(image_path, annotation_path):
    image = Image.open(image_path).convert("RGB")
    tree = ET.parse(annotation_path)
    root = tree.getroot()
    annotations = []
    for obj in root.findall('object'):
        name = obj.find('name').text
        bbox = obj.find('bndbox')
        xmin = int(bbox.find('xmin').text)
        ymin = int(bbox.find('ymin').text)
        xmax = int(bbox.find('xmax').text)
        ymax = int(bbox.find('ymax').text)
        annotations.append((name, (xmin, ymin, xmax, ymax)))
    return image, annotations

def display_image_with_annotations(image, annotations):
    fig, ax = plt.subplots(1, figsize=(10, 10))
    ax.imshow(image)
    
    for name, (xmin, ymin, xmax, ymax) in annotations:
        rect = plt.Rectangle((xmin, ymin), xmax - xmin, ymax - ymin, fill=False, edgecolor='red', linewidth=2)
        ax.add_patch(rect)
        ax.text(xmin, ymin, name, fontsize=12, color='white', bbox=dict(facecolor='red', alpha=0.5))
    
    plt.axis('off')
    plt.show()

# 示例路径
image_path = './safety_equipment_detection_dataset/images/image_0001.jpg'
annotation_path = './safety_equipment_detection_dataset/annotations/image_0001.xml'

image, annotations = load_image_and_annotations(image_path, annotation_path)
display_image_with_annotations(image, annotations)
3. 创建 YOLO 格式的数据集

YOLO 模型需要特定格式的数据集,通常包括图像文件和对应的标注文件(.txt 格式)。以下是一个将 XML 标注转换为 YOLO 格式的示例:

import os
import xml.etree.ElementTree as ET

def convert_to_yolo_format(xml_dir, img_dir, yolo_dir, classes):
    os.makedirs(yolo_dir, exist_ok=True)
    
    for xml_file in os.listdir(xml_dir):
        if not xml_file.endswith('.xml'):
            continue
        
        tree = ET.parse(os.path.join(xml_dir, xml_file))
        root = tree.getroot()
        
        image_name = root.find('filename').text
        image_path = os.path.join(img_dir, image_name)
        image = Image.open(image_path)
        width, height = image.size
        
        yolo_file = os.path.splitext(xml_file)[0] + '.txt'
        yolo_path = os.path.join(yolo_dir, yolo_file)
        
        with open(yolo_path, 'w') as f:
            for obj in root.findall('object'):
                name = obj.find('name').text
                class_id = classes.index(name)
                bbox = obj.find('bndbox')
                xmin = int(bbox.find('xmin').text)
                ymin = int(bbox.find('ymin').text)
                xmax = int(bbox.find('xmax').text)
                ymax = int(bbox.find('ymax').text)
                
                x_center = (xmin + xmax) / 2.0 / width
                y_center = (ymin + ymax) / 2.0 / height
                box_width = (xmax - xmin) / width
                box_height = (ymax - ymin) / height
                
                f.write(f"{class_id} {x_center} {y_center} {box_width} {box_height}\n")

# 定义类名
classes = ['belt', 'head', 'helmet', 'person', 'vest']

# 转换标注文件
convert_to_yolo_format(
    xml_dir='./safety_equipment_detection_dataset/annotations',
    img_dir='./safety_equipment_detection_dataset/images',
    yolo_dir='./safety_equipment_detection_dataset/yolo_annotations',
    classes=classes
)
4. 使用 YOLOv5 进行目标检测

以下是一个使用 YOLOv5 进行目标检测的简单示例:

  1. 安装 YOLOv5

    git clone https://github.com/ultralytics/yolov5
    cd yolov5
    pip install -r requirements.txt
  2. 准备配置文件: 在 yolov5/data 目录下创建一个配置文件 safety_equipment.yaml,内容如下:

    train: ./safety_equipment_detection_dataset/images/train
    val: ./safety_equipment_detection_dataset/images/val
    nc: 5
    names: ['belt', 'head', 'helmet', 'person', 'vest']
  3. 划分数据集: 将数据集划分为训练集和验证集(例如,80% 训练集,20% 验证集)。

  4. 训练模型

    python train.py --img 640 --batch 16 --epochs 50 --data safety_equipment.yaml --weights yolov5s.pt
  5. 评估模型

    python val.py --img 640 --batch 16 --data safety_equipment.yaml --weights runs/train/exp/weights/best.pt
  6. 推理和可视化

    from yolov5 import detect
    
    # 加载模型
    model = torch.hub.load('ultralytics/yolov5', 'custom', path='runs/train/exp/weights/best.pt')
    
    # 推理单张图片
    results = model(image_path)
    
    # 显示结果
    results.show()

通过上述步骤,您将拥有一个完整的安全帽检测与安全带识别系统,包括数据集、预训练模型和相关的训练流程。希望这些代码能帮助您更好地利用该数据集!

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

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

相关文章

asp.net Core 自定义中间件

内联中间件 中间件转移到类中 推荐中间件通过IApplicationBuilder 公开中间件 使用扩展方法 调用中间件 含有依赖项的 》》》中间件 参考资料

数据结构——排序(1)

数据结构——排序(1) 文章目录 数据结构——排序(1)一、排序1.概念:所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作。 2.运用:购物筛选排序,院校排名等。 3.常见排…

业务的合并与分批

1.你中有我,我中有你 2.合久必分,分久必合 3.正负负正,正道无穷

MRI学习笔记-LItool使用教程,计算偏侧化指数lateralization index

偏侧化指数介绍 描述功能偏侧化最常用的方法之一是计算偏侧化指数,分别是左侧和右侧感兴趣区域(ROI)中值高于特定激活阈值的体素数。因此,LI值的范围从1(左主导)到1(右主导)。然而&…

AtCoder Beginner Contest 375 A-E 题解

我的老师让我先做最后再交,看正确率(即以OI赛制打abc) 所以我用的小号(… …) C 卡了老半天才出来,我把题读错了 难度: A. Seats 题意 给你一个字符串 S S S,仅包含 . 和 #&…

unity 调整skinweight (皮肤权重),解决:衣服穿模问题

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、skinweight 是什么?二、代码控制:可根据平台切换1.引入库 总结 前言 最近遇到一个问题,人物模型的衣服穿模&#xff08…

本地拉取Docker镜像打包导入远程服务器

起因是因为使用远程服务器拉取镜像时,由于网络问题一直拉不成功,使用国内镜像由于更新不及时,国内镜像没有最新的 docker 镜像。最后使用本地的计算机,通过代理下载最新的镜像后打包成 tar, 然后上传到远程服务器进行导…

interwirelessac9560感叹号,电脑无法连接wifi,无法搜索到wifi

interwirelessac9560感叹号 电脑无法连接wifi,无法搜索到wifi 原因 这可能是wifl模块出现了问题。 解决方案 1、winx 打开,选择【设备管理器】 2、选择网络适配器 右键打开wireless-AC,选择【卸载设备】。 3、关机2分钟后&#xff0c…

计算机网络-VRRP实验配置

前面我们大致学习了VRRP的概念和基本原理,但是网络这块就是要多敲命令多用才能印象深刻,今天开始进行一些实验配置,结合日常工作的场景分析VRRP在实际工作中的应用。 一、典型VRRP虚拟网关拓扑 相比于传统单网关,采用VRRP虚拟网关…

Forward Chaining(前向链推理)

这是一个 Forward Chaining(前向链推理) 的例子,用于在给定的命题逻辑规则集下,从已知的事实推导出新结论。图示右侧显示了推理过程的依赖关系图,左侧是规则和初始事实。 我们有以下命题逻辑规则和已知的事实&#xf…

几种常用大模型工具生成基于hi3861的OpenHarmony代码的尝试

引言 最近在上智能物联网的课程,讲授基于hi3861的OpenHarmony编程,所以尝试一下使用大模型工具生成相关的代码,看看效果如何。提问的方式比较简单粗暴: 在OpenHarmony的hi3861平台上,如何编程访问https的网站&#xf…

iOS 打包/导出时提示图标错误,缺少某个规格的图标

Asset validation failed Missing required icon file. The bundle does not contain an app icon for iPad of exactly ‘167x167’ pixels, in .png format for iOS versions supporting iPad Pro. To support older operating systems, the icon may be required in the bun…

唐寅,风流倜傥的艺术天才

唐寅,字伯虎,号六如居士,生于明宪宗成化六年(公元1470年),卒于明世宗嘉靖二十三年(公元1524年),享年54岁。他是吴门画派的重要代表人物之一,不仅在绘画方面有…

分享两种安装windows系统教程,学会后再也不需要花钱装系统了。

前期准备工作: 需要一个8G或16G的空U盘需要你安装的系统的镜像文件 一般是一个以 .iso 后缀结尾的文件 2.1 镜像文件获取方式 1) 去windows 官网获取 2)去 我告诉你 网址下载所需要的镜像文件 这个网址 分享了很多 我们常用的系统 大家可以按…

docker构建jar镜像

文章目录 构建 DockerFile将jar包上传到创建的目录当中在目录中创建 Dockerfile 文件构建镜像创建并启动容器说明 构建 DockerFile [root192 /]# mkdir my [root192 /]# cd my [root192 my]# 将jar包上传到创建的目录当中 在目录中创建 Dockerfile 文件 vi Dockerfile FROM …

RabbitMQ 入门(六)SpringAMQP五种消息类型

一、发布订阅-DirectExchange(路由模式) 在Fanout模式中,一条消息,会被所有订阅的队列都消费。但是,在某些场景下,我们希望不同的消息被不同的队列消费。这时就要用到Direct类型的Exchange。 Direct Exchan…

共识算法Raft(day11)

引入 在分布式系统中,为了消除单点提高系统可用性,通常会创建副本来进行容错,但这会带来另一个问题就是,如何保证多个副本之间的数据一致性。 为了解决这个问题,计算机行内就提出了共识算法,它允许多个分…

增强对象智能:谷歌开源的XR-Objects项目简介

随着增强现实(AR)技术的发展,将物理世界与数字信息融合的需求日益增长。为了探索这一领域的可能性,谷歌推出了一项名为“增强对象智能”(Augmented Object Intelligence, AOI)的新交互范式,并发布了一个开源原型系统——XR-Objects。该系统旨在通过实时对象分割和多模态…

SpringBoot智能推荐:健康生活新体验

4系统概要设计 4.1概述 本系统采用B/S结构(Browser/Server,浏览器/服务器结构)和基于Web服务两种模式,是一个适用于Internet环境下的模型结构。只要用户能连上Internet,便可以在任何时间、任何地点使用。系统工作原理图如图4-1所示: 图4-1系统工作原理…

行业分析---自动驾驶人才流动及从业思考

1 背景 近两年在自动驾驶行业,人才流动非常频繁,最新且影响比较大的例子是小鹏多位高管 “转会” 英伟达。自小鹏前自动驾驶副总裁吴新宙去年8月加入英伟达后,12个月里,至少6位小鹏技术人员加入英伟达。 如果把时间拉得更长一些&a…