安全帽检测

article/2025/7/30 1:35:00

通过百度网盘分享的文件:工地项目

链接:https://pan.baidu.com/s/1pVxriAKKodwrcf_4Ou-OZg?pwd=n2rv

提取码:n2rv

--来自百度网盘超级会员V2的分享

YOLOv5训练自定义模型

YOLOv5需要安装pytorch、cuda、cudnn,可以参考我的环境搭建环境搭建

,如果已经安装过了,就不用重复安装了。

说明:

1、训练过程请参考官网:Train Custom Data · ultralytics/yolov5 Wiki · GitHub

2、本课使用的是YOLOv5 6.1版本,其他版本训练过程可能有不同,请以官网为准

3、硬件:Windows 10 、GPU GeForce 2060

一、安装Pytorch 及 YOLO v5

1.1 安装pytorch GPU版

1.1.1 准备工作
  • 先去pytorch官网查看支持的CUDA版本;

    • 建议配合TensorFlow官网一起参考,以便两个库都可以使用

    • pytorch

      • 最新版:Get Started

      • 历史版本:https://pytorch.org/get-started/previous-versions/安全帽检测https://pytorch.org/get-started/previous-versions/

  • Tensorflow :

    • GPU支持CUDA列表:https://www.tensorflow.org/install/source_windows?hl=zh-cn

  • 再查看所需CUDA版本对应的显卡驱动版本:

    • 参考信息:

      • 1. Why CUDA Compatibility — CUDA Compatibility

      • 1. CUDA 12.9 Release Notes — Release Notes 12.9 documentation

      • CUDA Compatibility of NVIDIA Display / GPU Drivers | Amikelive | Technology Blog

  • 下载显卡对应版本驱动:

    • 最新版:Download The Official NVIDIA Drivers | NVIDIA

  • 其他历史版本:Download The Official NVIDIA Drivers | NVIDIA

  • 下载对应版本CUDA:

    • 官网:CUDA Toolkit Archive | NVIDIA Developer

  • 下载对应版本cuDNN

    • 参考TensorFlow GPU支持CUDA列表:https://www.tensorflow.org/install/source_windows?hl=zh-cn

    • cudnn官网:CUDA 深度神经网络库 (cuDNN) | NVIDIA 开发者

  • 下载VS studio:Visual Studio: 面向软件开发人员和 Teams 的 IDE 和代码编辑器

  • 安装顺序:

    • VS studio:安装社区版即可

    • 显卡驱动:安装完重启电脑可以使用nvidia-smi查看显卡信息

    • CUDA:按流程安装即可

    • cudnn:

      • 解压cudnn压缩文件:

  • 进入cuda目录,将cudnn所有文件复制并替换

    • 如我的cuda目录位置为:C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1

  • 更改环境变量:

    • 双击path

  • 新建2个路径(cuda bin、libnvvp)

    • 如我的路径为:C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1\binC:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1\libnvvp

  • 重启电脑

1.1.2 安装pytorch

创建conda虚拟环境,参考你选择的版本安装即可

  • 最新版:Get Started

  • 历史版本:https://pytorch.org/get-started/previous-versions/

如我的是pip install torch==1.8.1+cu101 torchvision==0.9.1+cu101 torchaudio==0.8.1 -f https://download.pytorch.org/whl/torch_stable.html

1.2 安装YOLO v5

  • 安装

# 克隆地址
git clone https://github.com/ultralytics/yolov5.git   
# 如果下载速度慢,参考课程附件:
Windows软件/yolov5-master.zip # 进入目录
cd yolov5 
# 安装依赖
pip3 install -r requirements.txt
  • 下载预训练权重文件

下载地址:https://github.com/ultralytics/yolov5/releases,附件位置:Windows软件/yolov5s.pt,将权重文件放到weights目录下:

  • 测试安装

python detect.py --source ./data/images/ --weights weights/yolov5s.pt --conf-thres 0.4

二、YOLO v5训练自定义数据

2.1 准备数据集

2.1.1 创建 dataset.yaml

复制yolov5/data/coco128.yaml一份,比如为coco_chv.yaml

# Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
path: ../datasets/CHV_dataset  # 数据所在目录
train: images/train  # 训练集图片所在位置(相对于path)
val:  images/val # 验证集图片所在位置(相对于path)
test:  # 测试集图片所在位置(相对于path)(可选)# 类别
nc: 6  # 类别数量
names: ['person','vest','blue helmet','red helmet','white helmet','yellow helmet']  # 类别标签名
2.1.2 标注图片

使用LabelImg等标注工具(需要支持YOLO格式,LabelImg附件路径:Windows软件/labelImg.zip)标注图片:

YOLO格式标签:

  • 一个图一个txt标注文件(如果图中无所要物体,则无需txt文件);

  • 每行一个物体;

  • 每行数据格式:类别id、x_center y_center width height

  • xywh必须归一化(0-1),其中x_center、width除以图片宽度,y_center、height除以画面高度;

  • 类别id必须从0开始计数。

2.1.3 组织目录结构

  • datasetsyolov5同级目录;

  • YOLO会自动将../datasets/CHV_dataset/images/train/ppe_1106.jpg中的/images/替换成/labels/以寻找它的标签,如../datasets/CHV_dataset/labels/train/ppe_1106.txt,所以根据这个原则,我们一般可以:

    • images文件夹下有trainval文件夹,分别放置训练集和验证集图片;

    • labels文件夹有trainval文件夹,分别放置训练集和验证集标签(yolo格式)

2.2 选择合适的预训练模型

根据你的设备,选择合适的预训练模型,具体模型比对如下:

 

复制models下对应模型的yaml文件,重命名,并修改其中:

nc: 80  # 类别数量 如果是安全帽的话就改成6

2.3 训练

下载对应的预训练模型权重文件,可以放到weights目录下,设置本机最好性能的各个参数,即可开始训练,课程中训练了以下参数:

# yolov5n
python .\train.py --data .\data\coco_chv.yaml --cfg .\models\yolov5n_chv.yaml --weights .\weights\yolov5n.pt --batch-size 20 --epochs 120 --workers 4 --name base_n --project yolo_test# yolov5s 
python .\train.py --data .\data\coco_chv.yaml --cfg .\models\yolov5s_chv.yaml --weights .\weights\yolov5s.pt --batch-size 16 --epochs 120 --workers 4 --name base_s --project yolo_test# yolov5m 
python .\train.py --data .\data\coco_chv.yaml --cfg .\models\yolov5m_chv.yaml --weights .\weights\yolov5m.pt --batch-size 12 --epochs 120 --workers 4 --name base_m --project yolo_test# yolov5n6 1280
python .\train.py --data .\data\coco_chv.yaml --img-size 1280 --cfg .\models\yolov5n6_chv.yaml --weights .\weights\yolov5n6.pt --batch-size 20 --epochs 120 --workers 4 --name base_n6 --project yolo_test

更多参数见train.py

训练结果在runs/train/中可见,一般训练时间在几个小时以上。

2.4 可视化

2.4.1 wandb

YOLO官网推荐使用Weights & Biases。

  • 使用pip install wandb安装扩展包;

  • 去官网注册账号;

  • 训练的时候填写key秘钥,地址:Weights & Biases

  • 打开网站即可查看训练进展。

2.4.2 Tensorboard

tensorboard --logdir=./runs

2.5 测试评估模型

2.5.1 测试
Usage - sources:$ python path/to/detect.py --weights yolov5s.pt --source 0              # webcamimg.jpg        # imagevid.mp4        # videopath/          # directorypath/*.jpg     # glob'https://youtu.be/Zgi9g1ksQHc'  # YouTube'rtsp://example.com/media.mp4'  # RTSP, RTMP, HTTP stream# 如                                                             
python detect.py --source ./test_img/img1.jpg --weights runs/train/base_n/weights/best.pt --conf-thres 0.3
# 或
python detect.py --source 0 --weights runs/train/base_n/weights/best.pt --conf-thres 0.3
2.5.2 评估
# n
# python val.py --data ./data/coco_chv.yaml  --weights runs/train/base_n/weights/best.pt --batch-size 12
# 4.3 GFLOPsClass     Images     Labels          P          R     mAP@.5 mAP@.5:.95all        133       1084       0.88      0.823      0.868      0.479person        133        450      0.899      0.808      0.877      0.484vest        133        217      0.905      0.788      0.833      0.468blue helmet        133         44      0.811       0.75      0.803      0.489red helmet        133         50      0.865        0.9      0.898      0.425white helmet        133        176      0.877      0.807      0.883      0.467yellow helmet        133        147      0.922      0.885      0.917      0.543
Speed: 0.2ms pre-process, 4.7ms inference, 3.9ms NMS per image at shape (12, 3, 640, 640)# s
# python val.py --data ./data/coco_chv.yaml  --weights runs/train/base_s/weights/best.pt --batch-size 12
# 15.8 GFLOPsClass     Images     Labels          P          R     mAP@.5 mAP@.5:.95all        133       1084      0.894      0.848      0.883      0.496person        133        450      0.915       0.84      0.887      0.508vest        133        217      0.928      0.834      0.877      0.501blue helmet        133         44      0.831       0.75      0.791      0.428red helmet        133         50        0.9      0.899      0.901      0.473white helmet        133        176      0.884      0.858       0.91      0.496yellow helmet        133        147      0.908      0.905       0.93      0.567
Speed: 0.2ms pre-process, 8.3ms inference, 3.9ms NMS per image at shape (12, 3, 640, 640)# m
# python val.py --data ./data/coco_chv.yaml  --weights runs/train/base_m/weights/best.pt --batch-size 12
# 48.0 GFLOPsClass     Images     Labels          P          R     mAP@.5 mAP@.5:.95all        133       1084      0.928      0.845      0.886      0.512person        133        450      0.935      0.794      0.895      0.529vest        133        217      0.922      0.813      0.868      0.508blue helmet        133         44      0.916      0.818      0.812      0.464red helmet        133         50        0.9        0.9      0.892      0.488white helmet        133        176      0.932      0.841      0.899      0.511yellow helmet        133        147      0.964      0.905      0.948      0.574
Speed: 0.4ms pre-process, 18.8ms inference, 4.6ms NMS per image at shape (12, 3, 640, 640)# n6 1280 :
# python val.py --data ./data/coco_chv.yaml  --weights runs/train/base_n6_1280/weights/best.pt --batch-size 12 --img-size 1280
# 4.3 GFLOPsClass     Images     Labels          P          R     mAP@.5 mAP@.5:.95all        133       1084      0.906      0.858      0.901      0.507person        133        450      0.903      0.831      0.887      0.503vest        133        217      0.922      0.816       0.86      0.486blue helmet        133         44      0.843      0.795      0.828      0.465red helmet        133         50      0.899       0.92      0.954      0.507white helmet        133        176      0.921      0.865      0.925      0.515yellow helmet        133        147      0.947      0.918      0.954      0.566
Speed: 1.5ms pre-process, 14.1ms inference, 2.2ms NMS per image at shape (12, 3, 1280, 1280)

三、得到最优的训练结果

参考:Tips for Best Training Results · ultralytics/yolov5 Wiki · GitHub

3.1 数据:

  • 每类图片:建议>=1500张;

  • 每类实例(标注的物体):建议>=10000个;

  • 图片采样:真实图片建议在一天中不同时间、不同季节、不同天气、不同光照、不同角度、不同来源(爬虫抓取、手动采集、不同相机源)等场景下采集;

  • 标注:

    • 所有图片上所有类别的对应物体都需要标注上,不可以只标注部分;

    • 标注尽量闭合物体,边界框与物体无空隙,所有类别对应物体不能缺少标签;

  • 背景图:背景图用于减少假阳性预测(False Positive),建议提供0~10%样本总量的背景图,背景图无需标注;

3.2 模型选择

模型越大一般预测结果越好,但相应的计算量越大,训练和运行起来都会慢一点,建议:

  • 在移动端(手机、嵌入式)选择:YOLOv5n/s/m

  • 云端(服务器)选择:YOLOv5l/x

3.3 训练

  • 对于小样本、中样本,建议试用预训练模型开始训练

python train.py --data custom.yaml --weights yolov5s.ptyolov5m.ptyolov5l.ptyolov5x.ptcustom_pretrained.pt
  • 对于大样本,建议从0开始训练(无需预训练模型):

# --weights ''python train.py --data custom.yaml --weights '' --cfg yolov5s.yamlyolov5m.yamlyolov5l.yamlyolov5x.yaml
  • Epochs:初始设定为300,如果很早就过拟合,减少epoch,如果到300还没过拟合,设置更大的数值,如600, 1200等;

  • 图像尺寸:训练时默认为--img 640,如果希望检测出画面中的小目标,可以设为--img 1280(检测时也需要设为--img 1280才能起到一样的效果)

  • Batch size:选择你硬件能承受的最大--batch-size

  • 超参数(Hyperparameters):初次训练暂时不要改,具体参见Hyperparameter Evolution · Issue #607 · ultralytics/yolov5 · GitHub

  • 更多:官网建议 查看A Recipe for Training Neural Networks

安全帽程序

在vscode中直接运行,演示效果如下:

后期将安排jstson nano运行安全帽代码

敬请期待


http://www.hkcw.cn/article/VooQVTYHxP.shtml

相关文章

晨控CK-UR08与欧姆龙PLC配置Ethernet/IP通讯连接操作手册

晨控CK-UR08与欧姆龙PLC配置Ethernet/IP通讯连接操作手册 晨控CK-UR08系列作为晨控智能工业级别RFID读写器,支持大部分工业协议如RS232、RS485、以太网。支持工业协议Modbus RTU、Modbus TCP、Profinet、EtherNet/lP、EtherCat以及自由协议TCP/IP等。 本期主题:围绕…

windows无法安装到这个磁盘,选中的磁盘采用gpt分区仪式

解决办法: 我才用的是一个网友分享的微软官方解决办法,成功了,但是不知道会不会i有什么影响。将所有分区删掉,这时磁盘变成为分配的空间。我个人是两块固态,一块m.2,一块sata;所以我直接将500g…

JVM内存模型

JVM内存模型 说明: 1、JVM由装载子系统、运行时数据区(jvm内存模型)、字节码执行引擎; 2、运行时数据区包含堆、元空间、栈、本地方法栈和程序计数器; 3、堆、元空间是线程共享;方法栈、程序计数器是线程…

【Python】第一弹:对 Python 的认知

目录 一、Python 的背景 1.1. Python 的由来 1.2 Python 的作用 1.3 Python 的优缺点 1.4 Python 的开发工具 一、Python 的背景 1.1. Python 的由来 Python 由荷兰数学和计算机科学研究学会的吉多・范罗苏姆 (Guido van Rossum)在 20 世纪 80 年代…

动态规划基础

动态规划是一种算法思想,关键是理解思想和什么时候用。 算法思想 动态规划用于解决多阶段决策最优化问题,这类问题类似递推。 1.阶段 将问题分为多个阶段,每个阶段之间有联系,即可递推。一般可按问题求解次序或问题的递归性质划…

WEB3——什么是ABI

怎么获得ABI? 在编译完合约后,可以在左边下面点击复制ABI ABI(Application Binary Interface,应用二进制接口)是用来让前端或服务端 JavaScript 代码与智能合约进行交互的桥梁,它描述了合约的函数、事件和…

本地部署Ollama DeepSeek-R1:8B,接入Cherry Studio

本地部署Ollama DeepSeek-R1:8B,接入Cherry Studio 本教程为本地部署ollama 环境,运行deepseek-r1:8B 模型,并完成cherry studio接入调用。 实现无网环境也可提问模型 一、ollama 环境安装 通过网盘分享的文件:OllamaSetup.ex…

彻底解决Win11文件资源管理器预览窗格无法预览问题

国内某几个流氓软件(W*S、*狗PDF...),耗子尾之!!! (转载)Windows中PDF TXT Excel Word PPT等Office文件在预览窗格无法预览的终级解决方法大全 https://zhuanlan.zhihu.com/p/4542…

竞争加剧,美团的战略升维:反内卷、科技与全球化

5月26日,美团发布2025年第一季度业绩报告,交出了一份兼具韧性与创新性的成绩单。 报告显示,公司一季度总营收866亿元,同比增长18%;核心本地商业收入643亿元,同比增长18%;季度研发投入58亿元&a…

【unity游戏开发——编辑器扩展】AssetPostprocessor和AssetImporter对导入的资源进行统一的预处理

注意:考虑到编辑器扩展的内容比较多,我将编辑器扩展的内容分开,并全部整合放在【unity游戏开发——编辑器扩展】专栏里,感兴趣的小伙伴可以前往逐一查看学习。 文章目录 前言一、AssetPostprocessor1、主要特点2、常用回调方法3、…

代码随想录算法训练营 Day61 图论ⅩⅠ Floyd A※ 最短路径算法

图论 题目 97. 小明逛公园 本题是经典的多源最短路问题。 在这之前我们讲解过,dijkstra朴素版、dijkstra堆优化、Bellman算法、Bellman队列优化(SPFA) 都是单源最短路,即只能有一个起点。 而本题是多源最短路,即求多…

CATIA高效工作指南——测量分析篇(一)

一、精准重心分析与实时更新技术 1.1 材料属性与几何体重心关联 在复杂零件设计中,重心控制直接影响产品性能。通过CATIA的材料属性系统可实现动态重心跟踪: ​​密度赋值​​:应用材料 → 选择单个几何体 /依次选择多个几何体→ 指定材质…

【PCB工艺】PCB设计中的基本概念

此文结合实例讲解PCB的设计流程和一些基本概念。 🧱 PCB 是什么? PCB(Printed Circuit Board)(即印制线路板) 是电子元器件的载体,是没有焊接任何器件的“裸板”。 PCB只是板子,没有焊接元件,而PCBA可以理解为焊接好元件的完成板子。 简单点说,PCB 只包含:铜线、电源…

深度学习|pytorch基本运算

【1】引言 pytorch是深度学习常用的包,顾名思义,就是python适用的torch包,在python里面使用时直接import torch就可以调用。 需要注意的是,pytorch包与电脑配置、python版本有很大关系,一定要仔细阅读安装要求、找到…

[Windows] 千库/六图素材下载工具

下载链接 夸克网盘分享(点击蓝色自己自行保存下载) 由吾爱大神分享一块下载工具 核心功能:无水印下载,圈网站素材覆盖,下载速度飞起,还能同时下载100个素材 使用方法: 双击运行 千库六图下…

SolidWorks 文件打开时电脑卡顿问题分析与解决

最近遇到一个问题就是我点击solid work的文件的时候会将电脑卡住然后电脑开始飞速的加载内存,鼠标移动很卡顿 解决办法: 1.找到资源管理器 当遇到这种情况时,可以尝试通过资源管理器来解决问题。首先,找到任务管理器&#xff08…

CppCon 2014 学习:Hourglass Interfaces for C++ APIs

共享库(Shared Libraries) 的基本结构和机制。 什么是 Shared Library? 共享库是在多个程序之间共享的一组可执行代码和数据,可以在运行时动态加载。 在 Windows 中通常是 .dll在 Linux 中是 .so(Shared Object&…

<3>, 常用控件

目录 一、控件概述 二、QWidget 核心属性 1, 核心属性列表 2,enabled 3,geometry 4,windowTitle 5,windowIcon 6,windowOpacity 7,font 8,toolTip 9,focusPol…

基于微服务架构的社交学习平台WEB系统的设计与实现

设计(论文)题目 基于微服务架构的社交学习平台WEB系统的设计与实现 摘 要 社交学习平台 web 系统要为学习者打造一个开放、互动且社交性强的在线教育环境,打算采用微服务架构来设计并实现一个社交学习平台 web 系统,以此适应学…

uboot启动流程分析之uboot启动阶段

uboot启动可分为汇编语言执行和C语言执行两个阶段,两个阶段以_main函数为分界。 uboot第一阶段由_start (arch/arm/lib/vectors.S)进入,然后跳转到reset(arch/arm/cpu/armv7/start.S)函数, reset函数进行设置CPU运行模式,关闭中断等一系列CP…