YOLOv5进行目标检测的“落地化“应用:安全帽佩戴检测

17 篇文章 4 订阅
订阅专栏

YOLOv5进行目标检测的"落地化"应用:安全帽佩戴检测

该项目使用了YOLOv5s、YOLOv5m、YOLOv5l来训练安全帽佩戴检测数据集,代码和权重均已开源!安全帽佩戴检测数据集也是开源的(共含7581 张图像)!

该项目是使用 YOLOv5 来训练在智能工地安全领域中头盔目标检测的应用

 


1.YOLO v5训练自己数据集教程

使用的数据集:Safety-Helmet-Wearing-Dataset

环境准备

首先确保自己的环境:

    Python >= 3.7
    Pytorch == 1.5.x

训练自己的数据

提示:

关于增加数据集分类的方法,请看【5. 增加数据集的分类】

1.1 创建自己的数据集配置文件

因为我这里只是判断 【人没有带安全帽】、【人有带安全帽】、【人体】 3个类别 ,基于 data/coco128.yaml 文件,创建自己的数据集配置文件 custom_data.yaml

# 训练集和验证集的 labels 和 image 文件的位置
train: ./score/images/train
val: ./score/images/val

# number of classes
nc: 3

# class names
names: ['person', 'head', 'helmet']

1.2 创建每个图片对应的标签文件

使用标注工具类似于 Labelbox 、CVAT 、精灵标注助手 标注之后,需要生成每个图片对应的 .txt 文件,其规范如下:

  • 每一行都是一个目标

  • 类别序号是零索引开始的(从0开始)

  • 每一行的坐标 class x_center y_center width height 格式

  • 框坐标必须采用归一化的 xywh格式(从0到1)。如果您的框以像素为单位,则将x_centerwidth除以图像宽度,将y_centerheight除以图像高度。代码如下:

import numpy as np
def convert(size, box):
    """
    将标注的 xml 文件生成的【左上角x,左上角y,右下角x,右下角y】标注转换为yolov5训练的坐标
    :param size: 图片的尺寸: [w,h]
    :param box: anchor box 的坐标 [左上角x,左上角y,右下角x,右下角y,]
    :return: 转换后的 [x,y,w,h]
    """

    x1 = int(box[0])
    y1 = int(box[1])
    x2 = int(box[2])
    y2 = int(box[3])

    dw = np.float32(1. / int(size[0]))
    dh = np.float32(1. / int(size[1]))

    w = x2 - x1
    h = y2 - y1
    x = x1 + (w / 2)
    y = y1 + (h / 2)

    x = x * dw
    w = w * dw
    y = y * dh
    h = h * dh
    return [x, y, w, h]

生成的 .txt 文件放置的名字是图片的名字,放置在 label 文件夹中,例如:

./score/images/train/00001.jpg  # image
./score/labels/train/00001.txt  # label

生成的 .txt 例子:

1 0.1830000086920336 0.1396396430209279 0.13400000636465847 0.15915916301310062
1 0.5240000248886645 0.29129129834473133 0.0800000037997961 0.16816817224025726
1 0.6060000287834555 0.29579580295830965 0.08400000398978591 0.1771771814674139
1 0.6760000321082771 0.25375375989824533 0.10000000474974513 0.21321321837604046
0 0.39300001866649836 0.2552552614361048 0.17800000845454633 0.2822822891175747
0 0.7200000341981649 0.5570570705458522 0.25200001196935773 0.4294294398277998
0 0.7720000366680324 0.2567567629739642 0.1520000072196126 0.23123123683035374

1.3 文件放置规范

文件树如下

1.4 聚类得出先验框(可选)

使用代码 ./data/gen_anchors/clauculate_anchors.py ,修改数据集的路径

FILE_ROOT = r"xxx" # 根路径
ANNOTATION_ROOT = r"xxx"  # 数据集标签文件夹路径
ANNOTATION_PATH = FILE_ROOT + ANNOTATION_ROOT

跑完会生成一个文件 anchors.txt,里面有得出的建议先验框:

Best Accuracy = 79.72%

Best Anchors = [[14.74, 27.64], [23.48, 46.04], [28.88, 130.0], [39.33, 148.07], [52.62, 186.18], [62.33, 279.11], [85.19, 237.87], [88.0, 360.89], [145.33, 514.67]]

1.5 选择一个你需要的模型

在文件夹 ./models 下选择一个你需要的模型然后复制一份出来,将文件开头的 nc = 修改为数据集的分类数,下面是借鉴 ./models/yolov5s.yaml来修改的

# parameters
nc: 3  # number of classes     <============ 修改这里为数据集的分类数
depth_multiple: 0.33  # model depth multiple
width_multiple: 0.50  # layer channel multiple

# anchors
anchors: # <============ 根据 ./data/gen_anchors/anchors.txt 中的 Best Anchors 修改,需要取整(可选)
  - [14,27, 23,46, 28,130] 
  - [39,148, 52,186, 62.,279] 
  - [85,237, 88,360, 145,514]

# YOLOv5 backbone
backbone:
  # [from, number, module, args]
  [[-1, 1, Focus, [64, 3]],  # 0-P1/2
   [-1, 1, Conv, [128, 3, 2]],  # 1-P2/4
   [-1, 3, BottleneckCSP, [128]],
   [-1, 1, Conv, [256, 3, 2]],  # 3-P3/8
   [-1, 9, BottleneckCSP, [256]],
   [-1, 1, Conv, [512, 3, 2]],  # 5-P4/16
   [-1, 9, BottleneckCSP, [512]],
   [-1, 1, Conv, [1024, 3, 2]],  # 7-P5/32
   [-1, 1, SPP, [1024, [5, 9, 13]]],
   [-1, 3, BottleneckCSP, [1024, False]],  # 9
  ]

# YOLOv5 head
head:
  [[-1, 1, Conv, [512, 1, 1]],
   [-1, 1, nn.Upsample, [None, 2, 'nearest']],
   [[-1, 6], 1, Concat, [1]],  # cat backbone P4
   [-1, 3, BottleneckCSP, [512, False]],  # 13

   [-1, 1, Conv, [256, 1, 1]],
   [-1, 1, nn.Upsample, [None, 2, 'nearest']],
   [[-1, 4], 1, Concat, [1]],  # cat backbone P3
   [-1, 3, BottleneckCSP, [256, False]],  # 17

   [-1, 1, Conv, [256, 3, 2]],
   [[-1, 14], 1, Concat, [1]],  # cat head P4
   [-1, 3, BottleneckCSP, [512, False]],  # 20

   [-1, 1, Conv, [512, 3, 2]],
   [[-1, 10], 1, Concat, [1]],  # cat head P5
   [-1, 3, BottleneckCSP, [1024, False]],  # 23

   [[17, 20, 23], 1, Detect, [nc, anchors]],  # Detect(P3, P4, P5)
  ]

1.6 开始训练

这里选择了 yolov5s 模型进行训练,权重也是基于 yolov5s.pt 来训练

python train.py --img 640 --batch 16 --epochs 10 --data ./data/custom_data.yaml --cfg ./models/custom_yolov5.yaml --weights ./weights/yolov5s.pt

其中,yolov5s.pt 需要自行下载放在本工程的根目录即可,下载地址 官方权重

1.7 看训练之后的结果

训练之后,权重会保存在 ./runs 文件夹里面的每个 exp 文件里面的 weights/best.py ,里面还可以看到训练的效果

2. 侦测

侦测图片会保存在 ./inferenct/output/ 文件夹下

运行命令:

python detect.py --source   0  # webcam
                            file.jpg  # image 
                            file.mp4  # video
                            path/  # directory
                            path/*.jpg  # glob
                            rtsp://170.93.143.139/rtplive/470011e600ef003a004ee33696235daa  # rtsp stream
                            http://112.50.243.8/PLTV/88888888/224/3221225900/1.m3u8  # http stream

3. 检测危险区域内是否有人

3.1 危险区域标注方式

我这里使用的是 精灵标注助手 标注,生成了对应图片的 json 文件

3.2 执行侦测

侦测图片会保存在 ./inferenct/output/ 文件夹下

运行命令:

python area_detect.py --source ./area_dangerous --weights ./weights/helmet_head_person_s.pt

3.3 效果:在危险区域里面的人体会被 红色框 选出来

4. 生成 ONNX

4.1 安装 onnx 库

pip install onnx

4.2 执行生成

python ./models/export.py --weights ./weights/helmet_head_person_s.pt --img 640 --batch 1

onnx 和 torchscript 文件会生成在 ./weights 文件夹中

5. 增加数据集的分类

关于增加数据集分类的方法:

SHWD 数据集里面没有 person 的类别,先将现有的自己的数据集执行脚本生成 yolov5 需要的标签文件 .txt,之后再用 yolov5x.pt 加上 yolov5x.yaml ,使用指令检测出人体

python detect.py --save-txt --source ./自己数据集的文件目录 --weights ./weights/yolov5x.pt

yolov5 会推理出所有的分类,并在 inference/output 中生成对应图片的 .txt 标签文件;

修改 ./data/gen_data/merge_data.py 中的自己数据集标签所在的路径,执行这个python脚本,会进行 person 类型的合并

项目链接:

https://github.com/PeterH0323/Smart_Construction

数据集链接:

https://github.com/njvisionpower/Safety-Helmet-Wearing-Dataset

安全帽数据集,目标检测,可以直接使用
10-17
安全帽数据集,目标检测,已经转换为yolo格式,可以直接使用,包含安全帽与未佩戴安全帽的人员标注信息
基于改进的YOLOv5安全帽佩戴检测算法
05-12
针对现有安全帽佩戴检测干扰性强、检测精度低等问题,提出一种基于改进YOLOv5安全帽检测新算法。首先,针对安全帽尺寸不一的问题,使用K-Means++算法重新设计先验框尺寸并将其匹配到相应的特征层;其次,在特征...
佩戴安全帽数据集使用说明和下载
AI吃大瓜的博客
10-15 8119
安全帽数据集,佩戴安全帽数据集,头盔数据集,safety helmet , safety hat , hard hat
YOLO目标检测——工地安全帽手套数据集【含对应voc、coco和yolo三种格式标签】
m0_64879847的博客
09-08 496
YOLO目标检测——工地安全帽手套数据集【含对应voc、coco和yolo三种格式标签】
YoloV10部署落地:用于实时嵌入式目标检测(附论文下载)
最新发布
gzq0723的博客
05-28 253
关注并星标从此不迷路计算机视觉研究院公众号ID|ComputerVisionGzq学习群|扫码在主页获取加入方式标题:YOLOv10: Real-Time End-to-End Object Detection论文:https://arxiv.org/pdf/2405.14458源码:https://github.com/THU-MIG/yolov10计算机视觉研究院专栏作者:Edison_GYO...
YOLO +安全帽 + 数据集
07-14
YOLO +安全帽 + 数据集
Yolov5-v3安全帽检测
05-15
1.这是一个检测是否佩戴安全帽的完整训练代码项目,包含一个已训练好的yolov5m的模型,mAP在90%以上,能直接应用于要求不高的场景上。 2.参考博文:...
yolov5安全帽头盔检测目标检测深度学习
04-25
yolo安全帽检测,电动车安全帽,pyqt,目标检测,深度学习,目标检测接单,yolov5,yolov7,可dai写 扣扣:2046删532除381 语言:python 环境:pycharm,anaconda 功能:可添加继电器或者文字报警,可统计数量 ...
yolov5检测源码+安全帽佩戴检测模型+使用说明
11-28
《基于Yolov5安全帽佩戴检测模型及应用详解》 在现代的智慧工地管理中,确保工人的安全是至关重要的。为此,我们提供了一套完整的"Yolov5检测源码+安全帽佩戴检测模型+使用说明",旨在帮助实现高效、精准的安全帽...
YOLOV5安全帽检测数据集
01-05
YOLOV5安全帽检测数据集是专门为训练和评估安全帽检测模型而设计的一个资源,主要应用于建筑工地、矿业和其他需要工人佩戴安全帽的行业的安全监控。这个数据集的创建是为了帮助开发更精确的计算机视觉算法,确保工人...
工地挖掘机20211004.zip
10-04
工地场景数据集 - 挖掘机 项目上收集的 超值资源
安全帽识别yolov5图片数据集
08-25
训练集有5269张图片,测试集有1766张。包含不同场景和不同颜色安全帽,有需要的可以下载。 学生私聊我留下邮箱及数据集名称,可免费发送,回复可能没那么及时请见谅!
【OpenCV】Pyqt界面+摄像头实现人脸检测+安全帽识别,最终导出为exe文件
李白白的博客
04-27 8892
文章目录前言一、界面设计二、相关代码三、导出exe文件总结 前言 接上节的内容。设计好界面如下: 实现的功能:通过开关摄像头截图,上传到OneNetAI服务器进行人脸检测。通过打开文件,上传图片到OneNetAI服务器进行安全帽识别检测。 一、界面设计 参考我博客的另外一篇文章。【OpenCV】Pyqt5界面设计+USB摄像头 二、相关代码 文件结构如下: demo.ui是界面设计文件,使用pyqt的designer.exe实现的。 demo.py是界面设计文件通过pyuic5.exe转的pyth
基于YOLOv8模型的安全帽和背心检测系统(PyTorch+Pyside6+YOLOv8模型)
sc1434404661的博客
09-27 863
近年来,机器学习和深度学习取得了较大的发展,深度学习方法在检测精度和速度方面与传统方法相比表现出更良好的性能。YOLOv8 是 Ultralytics 公司继 YOLOv5 算法之后开发的下一代算法模型,目前支持图像分类、物体检测和实例分割任务。YOLOv8 是一个 SOTA模型,它建立在之前YOLO 系列模型的成功基础上,并引入了新的功能和改进,以进一步提升性能和灵活性。
【深度学习】保姆教程 | YOLOv5在建筑工地中安全帽佩戴检测应用
fengdu78的博客
03-28 824
教程来自:https://github.com/PeterH0323/Smart_Construction编辑:AI深度前沿视线,深度学习爱好者一、YOLO v5训练自己数据集教程1.1 创建自己的数据集配置文件1.2 创建每个图片对应的标签文件1.3 文件放置规范1.4 聚类得出先验框(可选)1.5 选择一个你需要的模型1.6 开始训练1.7 看训练之后的结果二、侦测三、检测危...
开源一个安全帽佩戴检测数据集及预训练模型
qwj的博客
10-11 2947
转载自开源一个安全帽佩戴检测数据集及预训练模型 - supersayajin - 博客园 本文开源了一个安全帽佩戴检测数据集及预训练模型,该项目已上传至github,点此链接,感觉有帮助的话请点star 。同时简要介绍下实践上如何完成一个端到端的目标检测任务。可以看下效果图: 同时该模型也可以做人头检测,效果如下: 一、背景介绍 最近几年深度学习的发展让很多计算机视觉任务落地成为可能,这些任务渗透到了各行各业,比如工业安全,包含的任务如安全帽佩戴检测、高空坠物检测、异常事故检测(行人跌倒..
智慧工地安全帽识别检测算法 yolov5
燧机科技的博客
12-31 370
智慧工地安全帽识别检测算法通过Python基于YOLOv5机器学习模型技术,对现场画面中人员穿戴行为实时分析。YOLOv5中在训练模型阶段仍然使用了Mosaic数据增强方法,该算法是在CutMix数据增强方法的基础上改进而来的。CutMix仅仅利用了两张图片进行拼接,而Mosaic数据增强方法则采用了4张图片,并且按照随机缩放、随机裁剪和随机排布的方式进行拼接而成。
yolov5安全帽佩戴检测
03-09
Yolov5是一种目标检测算法,用于检测图像或视频中的物体。而"安全帽佩戴检测"是指通过计算机视觉技术来检测人们是否佩戴了...4. 部署和应用:将训练好的模型部署到实际应用中,通过输入图像或视频进行安全帽佩戴检测

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
写文章

热门文章

  • 【机器学习】 随机森林(Random Forest) 104376
  • 【C++】std::map用法 56932
  • 搭建自己的github.io博客 53426
  • Tensorflow与keras学习 (0)——环境安装与配置 42081
  • 【目标检测】CNN物体定位和检测 32275

分类专栏

  • 大模型 10篇
  • 自动驾驶与3D视觉 22篇
  • 高性能计算与嵌入式AI 25篇
  • 人脸识别 20篇
  • Tensorflow与Keras学习 18篇
  • OPENCV从0到N 21篇
  • 目标检测与分割 17篇
  • PyTorch 学习 4篇
  • 数字图像处理 32篇
  • C/C++/C#编程学习 14篇
  • 机器学习 15篇
  • 系统/服务器 10篇
  • Android/JAVA 5篇
  • 深度学习编程 35篇
  • 爬虫 4篇
  • 人脸识别杂谈 6篇

最新评论

  • 【自动驾驶】单目3D检测M3D-RPN解析与paddle复现

    waewe: 你用的cuda版本是多少

  • Ollama部署

    Arthur.AI: #为了使更改生效,您需要重新加载systemd的配置。使用以下命令: sudo systemctl daemon-reload #最后,重启服务以应用更改: sudo systemctl restart ollama

  • 基于容器训练OpenPCdet

    w1410311725_guo: 您好,我的数据集和您一样,但是训练时出现RecursionError: maximum recursion depth exceeded while calling a Python object问题,应该怎么解决

  • 【自动驾驶】基于点云的避障算法笔记

    冀以: 您好,点云图怎么获取呢,使用小车并搭载雷达对区域进行扫描吗

  • 【虚拟主播】刚刚,我用三行代码创建了一个虚拟主播

    芝华塔尼奥: 一定要用百度的产品吗,百度的产品大家心里都有数

大家在看

  • Java | Leetcode Java题解之第264题丑数II 24
  • C++ | Leetcode C++题解之第268题丢失的数字
  • [CISCN2019 华北赛区 Day1 Web2]ikun 1 590
  • LVS+Nginx高可用集群---搭建高可用集群负载均衡 1490
  • 前端性能优化

最新文章

  • 【AI编译器】triton学习:矩阵乘优化
  • 【AI编译器】triton学习:编程模型
  • Stable Diffusion 3: Research Paper
2024年12篇
2023年12篇
2022年26篇
2021年27篇
2020年6篇
2019年42篇
2018年66篇

目录

目录

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Arthur.AI

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或 充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

PHP网站源码南山网站优化按天收费福永百度网站优化坂田品牌网站设计荷坳建站福永关键词排名光明网站优化按天扣费永湖关键词排名木棉湾百度seo南联外贸网站建设民治企业网站制作双龙网站改版福田网站seo优化沙井百搜标王龙岗网站优化按天收费沙井SEO按天计费盐田网站排名优化平湖网站推广盐田网站开发光明网站搜索优化宝安网站设计塘坑百搜标王大浪模板网站建设坪山网站优化排名松岗网站搜索优化龙华高端网站设计坂田网站改版宝安高端网站设计大芬网站搭建南联网站优化按天扣费广州网页制作歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

PHP网站源码 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化