0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

保姆教程:YOLOv5在建筑工地中安全帽佩戴检测的应用

电子设计 来源:电子设计 作者:电子设计 2020-12-14 22:08 次阅读

转载自:3D视觉工坊
编辑:AI深度学习视线

教程来自:https://github.com/PeterH0323/Smart/_Construction

一、YOLO v5训练自己数据集教程

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

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

1.3 文件放置规范

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

1.5 选择一个你需要的模型

1.6 开始训练

1.7 看训练之后的结果

二、侦测
三、检测危险区域内是否有人

3.1 危险区域标注方式

3.2 执行侦测

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

四、生成 ONNX
五、增加数据集的分类
该项目是使用 YOLOv5 v2.x 来训练在智能工地安全领域中头盔目标检测的应用,先来一波演示!

指标

yolov5s 为基础训练,epoch = 50


对应的权重文件:https://pan.baidu.com/share/i.../_5A,提取码: b981

yolov5m 为基础训练,epoch = 100


对应的权重文件:https://pan.baidu.com/share/i.../_vHnPHwEA,提取码: psst

yolov5l 为基础训练,epoch = 100

对应的权重文件:https://pan.baidu.com/share/i...,提取码: a66e

1

YOLOv5训练自己数据集教程

使用的数据集:Safety-Helmet-Wearing-Dataset ,感谢这位大神的开源数据集!

https://github.com/njvisionpo...

本文结合 YOLOv5官方教程 来写

环境准备

首先确保自己的环境:

Python >= 3.7

训练自己的数据

提示:

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

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

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

# 训练集和验证集的 labels 和 image 文件的位置

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

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

每一行都是一个目标

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

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

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

import numpy as np

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

./score/images/train/00001.jpg  # image

生成的.txt例子

1 0.1830000086920336 0.1396396430209279 0.13400000636465847 0.15915916301310062

1.3文件放置规范

文件树如下

1.4 聚类得出先验框(Yolov5 内部已做适配,可选)

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

FILE_ROOT = r"xxx" # 根路径

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

Best Accuracy = 79.72%

1.5 选择一个您需要的模型

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

# parameters

1.6 开始训练

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

pythontrain.py--img640--batch16--epochs10--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

例如使用我的 s 权重检测图片,可以运行以下命令,侦测图片会保存在 ./inferenct/output/ 文件夹下

python detect.py --source 图片路径 --weights ./weights/helmet_head_person_s.pt

3

检测危险区域内是否有人

3.1 危险区域标注方式

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

3.2 执行侦测

侦测图片会保存在 ./inferenct/output/ 文件夹下
运行命令:

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

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

生成 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 文件夹中

增加数据集的分类

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

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

修改 ./data/gen_data/merge_data.py 中的自己数据集标签所在的路径,执行这个python脚本,会进行 person 类型的合并
本文仅做学术分享,如有侵权,请联系删文。

审核编辑 黄昊宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 检测
    +关注

    关注

    5

    文章

    4087

    浏览量

    90753
  • 深度学习
    +关注

    关注

    73

    文章

    5240

    浏览量

    119936
收藏 人收藏

    评论

    相关推荐

    龙哥手把手教你学视觉-深度学习YOLOV5

    利用labview部署yolov5导出的模型,能利用摄像头动态检测输出目标检测结果。根据工业视觉外观检测的速度和准确性要求,龙哥视觉结合labview编程平台推出了labview+
    发表于 09-03 09:39

    MAT400安全帽标签的相关资料下载

    MAT400安全帽标签产品简介MAT400是奔骝科技自主研发的一款属于区域定位产品线的定位标签,主要功能是附着在安全帽上,用在佩戴安全帽的人员定位。功能特性和定位基站远距离有效定位距离
    发表于 11-29 06:45

    如何利用单片机去设计一种建筑工地降尘系统

    项目编号:mcuclub-204设计简介:资料下载网址项目名:基于单片机的建筑工地降尘系统单片机:STC89C52功能:1、通过PM2.5传感器检测建筑工地旁空气中PM2.5浓度的值,如果超过阈值
    发表于 01-19 08:02

    怎样去设计一个基于单片机的建筑工地降尘系统

    单片机、LCD1602、PM2.5、ADC0832题目扩展:空气质量检测系统。建筑工地降尘-实物设计 - 电子校园编号: CP-51-2021-028-SW 仿真链接: 建筑工地降尘-仿真设计 设计说明书链接:
    发表于 02-18 06:10

    怎样使用PyTorch Hub去加载YOLOv5模型

    在Python>=3.7.0环境中安装requirements.txt,包括PyTorch>=1.7。模型和数据集从最新的 YOLOv5版本自动下载。简单示例此示例从
    发表于 07-22 16:02

    使用Yolov5 - i.MX8MP进行NPU错误检测是什么原因?

    的时机(yolov5s 模型,输入为 448x448 ~ 70ms)。 现在我正在尝试使用 Yolov5(uint8 量化),但我尝试使用不同的预训练模型获得相同的行为,在 CPU 上进行良好检测,在
    发表于 03-31 07:38

    如何YOLOv5测试代码?

    使用文档“使用 YOLOv5 进行对象检测”我试图从文档第 10 页访问以下链接(在 i.MX8MP 上部署 yolov5s 的步骤 - NXP 社区) ...但是这样做时会被拒绝访问。该文档没有说明需要特殊许可才能下载 tes
    发表于 05-18 06:08

    基于YOLOv5的目标检测文档进行的时候出错如何解决?

    你好: 按Milk-V Duo开发板实战——基于YOLOv5的目标检测 安装好yolov5环境,在执行main.py的时候会出错,能否帮忙看下 main.py: import torch
    发表于 09-18 07:47

    ZLG安全帽佩戴检测方案的解读

    安全帽佩戴检测工地安防的重中之重,但人为主观检测的方式时效性差且不能全程监控。AI技术的日渐成熟催生了
    发表于 03-13 15:32 1338次阅读

    无人机在建筑工地的应用

    众所周知,建筑工地环境复杂,靠人工去监控难免会有遗漏,而随着无人机技术的日益成熟,其被大力引入建筑工地,用于对工地进行实时监控。
    发表于 05-16 17:48 3280次阅读

    建筑工地安装β射线扬尘监测设备正宗厂家

    建筑工地β射线扬尘监测设备。建筑工地需要扬尘监测设备,根据市场新需求,成都建筑工地配置β射线扬尘监测设备,更好地为建筑工地的环境治理和监测提供帮助。
    的头像 发表于 12-12 11:32 478次阅读
    <b class='flag-5'>建筑工地</b>安装β射线扬尘监测设备正宗厂家

    建筑工地运用β射线扬尘监测设备的安装厂家

    建筑工地β射线扬尘监测设备。建筑工地需要扬尘监测设备,根据市场新需求,建筑工地配置β射线扬尘监测设备,更好地为建筑工地的环境治理和监测提供帮助。
    的头像 发表于 12-12 11:07 399次阅读
    <b class='flag-5'>建筑工地</b>运用β射线扬尘监测设备的安装厂家

    4G工作记录仪在建筑工地中的应用优势

    建筑工地作为一个复杂的工作环境,安全管理和法规合规一直是重要的考量因素。近年来,随着科技的进步,4G工作记录仪在建筑工地中的应用逐渐成为一种趋势。
    的头像 发表于 06-29 15:09 391次阅读

    瑞尼4G智能安全帽工地施工安全管理解决方案

    随着建筑工地的规模和复杂程度不断增加,安全管理成为了工地管理者亟待解决的难题。为了保障工人的安全与健康,瑞尼推出了4G智能安全帽
    的头像 发表于 07-27 15:18 366次阅读

    建筑工地用电安全管理系统

    建筑工地人员密集,电气设备众多,如果用电安全管理工作不到位,可能会引发火灾、触电等事故,给现场工人和项目带来极大的安全风险和经济损失。通过用电安全管理系统,可以实现电力控制的自动化和智
    的头像 发表于 09-20 13:59 568次阅读
    <b class='flag-5'>建筑工地</b>用电<b class='flag-5'>安全</b>管理系统