【YOLO学习】YOLOv5口罩检测实战

文章目录

  • 1. 环境配置
  • 2. 下载代码
  • 3. 安装库
    • 3.1 安装pytorch
    • 3.2 安装其他库
  • 4. 测试
  • 5. 数据标注
  • 6. 模型训练
    • 6.1 一些修改
    • 6.2 训练
  • 7. 界面可视化


1. 环境配置

 1. 先参考其他文章安装 Anaconda 或者 Miniconda,我安装的是 Miniconda。

 2. 更换国内源,以加快速度 。可以参考下面这个博客:https://blog.csdn.net/hanjmm/article/details/127433373

 3. 打开 Anaconda Prompt,创建环境:

conda create -n mask python==3.8conda activate mask

2. 下载代码

 1. 下载代码,代码网址:https://gitee.com/song-laogou/yolov5-mask-42

 2. 我学到了一点:可以直接在这个目录导航输入 cmd,进入的终端直接 cd 到这个文件路径下。
 如图:在这个终端下激活 mask 虚拟环境。

在这里插入图片描述

在这里插入图片描述

3. 安装库

3.1 安装pytorch

 1. 如果你的电脑没有 GPU,只有 CPU 的话,运行下面指令,耐心等上几分钟。

conda install pytorch==1.8.0 torchvision==0.9.0 torchaudio==0.8.0 cpuonly -c pytorch # 可以修改pytorch版本

 2. 如果你的电脑有 GPU,可以安装 GPU 版本的 pytorch,操作如下内容所示。

 3. win+R 进入命令行输入 nvidia-smi,可以查看 CUDA 版本。

vid

 4. 从官网下载对应的 CUDA 版本,由于我的显卡版本为 12.5,我只需要安装小于或者等于 12.5 都是可以的,因此这里我安装12.0。下图中的 Version 是指的是 win10 还是 win11。
 官网地址:CUDA Toolkit Archive | NVIDIA Developer

在这里插入图片描述

在这里插入图片描述

 5. 之后安装 Cudaa 和 Pytorch。这里安装步骤可以参考一下网上一些教程,这里我就不再说了。

3.2 安装其他库

pip install pycocotools-windows
pip install -r requirements.txt
pip install pyqt5
pip install labelme

4. 测试

 1. 在命令行输入指令:

python detect.py --source data/images/bus.jpg --weights pretrained/yolov5s.pt

 2. 在runs目录下可以找到检测之后的结果,环境安装完成!

在这里插入图片描述

在这里插入图片描述

5. 数据标注

 1. 在环境中运行指令:pip install labelimg,再运行:labelimg 即可打开。

在这里插入图片描述

 2. 软件启动后的界面如下所示。一般刚开始我们要选择打开需要标注的图片路径和标注文件保存的位置,并把标注的格式改为 yolo。

在这里插入图片描述

 3. 标注完成之后你会得到一系列的 txt 文件,这里的 txt 文件就是目标检测的标注文件,其中 txt文件和图片文件的名称是一一对应的,如下图所示:

在这里插入图片描述

在这里插入图片描述

 4. 打开具体的标注文件,你将会看到下面的内容,txt 文件中每一行表示一个目标,以空格进行区分,分别表示目标的类别 id,归一化处理之后的中心点 x 坐标、y 坐标、目标框的 w 和 h。

在这里插入图片描述

6. 模型训练

6.1 一些修改

 1. 可以下载别人标注好的数据集进行训练,比如这里的数据集:https://download.csdn.net/download/ECHOSON/63290559
 标记完成的数据请按照下面的格式进行放置,方便程序进行索引。

YOLO_Mask # 存放数据集文件名称
└─ score├─ images│    ├─ test # 下面放测试集图片│    ├─ train # 下面放训练集图片│    └─ val # 下面放验证集图片└─ labels├─ test # 下面放测试集标签├─ train # 下面放训练集标签├─ val # 下面放验证集标签

 2. 修改配置:

在这里插入图片描述

 (1)修改 data 里面的数据集配置文件:

在这里插入图片描述

 (2)修改 model 里面的模型配置文件:

在这里插入图片描述

 (3)在 train.py 里面已经放好了示例命令:

在这里插入图片描述

6.2 训练

 1. 在命令行输入以下指令。我这里就训练 50 轮测试一下。

python train.py --data mask_data.yaml --cfg mask_yolov5s.yaml --weights pretrained/yolov5s.pt --epoch 50 --batch-size 4

 2. 训练完成,结果保存在 runs\train\exp 下。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

 3. 模型训练结束之后你会找到三张图像,分别表示模型在验证集上的召回率、准确率和均值平均密度。

在这里插入图片描述

7. 界面可视化

 可视化界面的部分在 window.py 文件中,是通过 pyqt5 完成的界面设计,在启动界面前,你需要将模型替换成你训练好的模型,替换的位置在 window.py 的第 60 行,修改成你的模型地址即可,如果你有 GPU 的话,可以将 device 设置为 0,表示使用第 0 行 GPU,这样可以加快模型的识别速度。

在这里插入图片描述

 2. 识别结果如下,只训练了 50 轮,所以精度不是很高。

在这里插入图片描述

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

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

相关文章

LLM详解

一 定义 Large Language Model,称大规模语言模型或者大型语言模型,是一种基于大量数据训练的统计语言模型,可用于生成和翻译文本和其他内容,以及执行其他自然语言处理任务(NLP),通常基于深度神…

vue 的属性绑定

双大括号不能在 HTML attributes 中使用。想要响应式地绑定一个 attribute&#xff0c;应该使用 v-bind 指令。 <template> <div v-bind:class"boxClass" v-bind:id"boxId"> </div> </template><script> export default{da…

VNC轻松连接远程Linux桌面

Linux配置VNC&#xff08;以RedHat、CentOS为例&#xff09; 说明&#xff1a; Linux平台安装VNCServer Windows平台使用VNC-Viewer 1.在Linux平台安装VNCServer服务端软件包。 yum -y install vnc *vnc-server*2.修改VNCServer主配置文件 vi /etc/sysconfig/vncservers复制…

【Redis】Set类型的常用命令与应用场景

目录 1.命令小结 2.命令解析 3.编码方式与应用场景 1.命令小结 &#xff08;1&#xff09;set的特点 1&#xff09;set中存放的数据也都是String类型 2&#xff09;set集合中的元素是无须的 3&#xff09;set集合中的元素是唯一的&#xff0c;不可重复 &#xff08;2&a…

RISC-V开发 linux下GCC编译自定义指令流程笔记

第一步&#xff1a;利用GCC提供了内嵌汇编的功能可以在C代码中直接内嵌汇编语言 第二步&#xff1a;利用RSIC-V的中的.insn模板进行自定义指令的插入 第三步&#xff1a;RISC-V开发环境的搭建 C语言插入汇编 GCC提供了内嵌汇编的功能可以在C代码中直接内嵌汇编语言语句方便了…

在树莓派上部署安装OAK

OAK设备可以与微型主机&#xff08;例如树莓派&#xff09;进行连接&#xff0c;在树莓派上安装DepthAI, 需要安装相关依赖Dependencies并且可以通过pip安装Depthai Library. DepthAI Library 在PyPi上对树莓派有预构建的 wheels 使用预配置的树莓派OS 镜像 我们提供预安装了D…

期权懂|面对期权下跌该如何操作呢?

本期让我懂 你就懂的期权懂带大家来了解&#xff0c;面对期权下跌该如何操作呢&#xff1f;有兴趣的朋友可以看一下。期权小懂每日分享期权知识&#xff0c;帮助期权新手及时有效地掌握即市趋势与新资讯&#xff01; 面对期权下跌该如何操作呢&#xff1f; 首先我们需要保持冷静…

Zotero插件指南:20个工具让你的学术生活更简单

以下插件排序按照星标量进行排序&#xff0c;常用的插件大概是前20的样子&#xff0c;可以根据自己的需求进行插件的安装。 顺带提一句&#xff0c;插件不是越多越好&#xff0c;装多了可能会出现软件卡顿的情况。 1、Scholaread for Zotero 插件下载&#xff1a;插件下载 …

Linux文件权限与用户管理详解:权限、所属用户组和所有者的变更

&#x1f49d;&#x1f49d;&#x1f49d;欢迎莅临我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐&#xff1a;「storm…

HTB:Markup[WriteUP]

目录 连接至HTB服务器并启动靶机 1.What version of Apache is running on the targets port 80? 2.What username:password combination logs in successfully? 使用Yakit并使用TOP1000字典对密码进行爆破 3.What is the word at the top of the page that accepts use…

以光塑形:光固化3D打印机原理图文解析

公众号端&#xff1a; 光固化打印机介绍https://mp.weixin.qq.com/s?__bizMzkwMjc0MTE3Mw&mid2247484073&idx1&sn0d0fd026b373b06cd7c340ec8f56a006&chksmc0a1af73f7d62665a632baebbde4e5e00ffb9c6bd31bf547b4a86855d5524535619a6175a428#rd 光固化打印机…

前端面试:项目细节重难点问题分享(17)

更多详情&#xff1a;爱米的前端小笔记&#xff08;csdn~xitujuejin~zhiHu~Baidu~小红shu&#xff09;同步更新&#xff0c;等你来看&#xff01;都是利用下班时间整理的&#xff0c;整理不易&#xff0c;大家多多&#x1f44d;&#x1f49b;➕&#x1f914;哦&#xff01;你们…

SpringSession;基于Redis的SpringSession实现;实现session共享的三种方式

一&#xff0c;SpringSession简介 是SpringCloud下管理session的框架&#xff0c;在微服务架构中&#xff0c;由于应用了分布式的思想&#xff0c;session无法做到内存中互通&#xff0c;需要一个框架来实现各个微服务中session数据共享&#xff0c;SpringSession解决了这个问题…

C++语言学习(3): type 的概念

type 的概念 C中的变量拥有类型&#xff0c; 这是显然的。 实际上&#xff0c;每个 object&#xff0c; 每个 reference&#xff0c; 每个 function&#xff0c; 每个 expression &#xff0c; 都有对应的 type &#xff08;类型&#xff09;&#xff1a; Each object, refer…

随机掉落的项目足迹:使用箭头函数时踩到的坑

这篇博客没有啥硬核知识&#xff0c;讲的是我遇到问题然后排错的过程&#xff0c;大家可以当故事看看 事情的起因是请求响应的对象打印出来竟然是undefined&#xff0c;但是network里却可以正常看到响应体 于是我把这个问题扔给了我队友&#xff0c;他改了我两处代码&#xff…

通信工程学习:什么是OSPF开放式最短路径优先

OSPF&#xff1a;开放式最短路径优先 OSPF&#xff08;Open Shortest Path First&#xff0c;开放式最短路径优先&#xff09;是一种内部网关协议&#xff08;IGP&#xff09;&#xff0c;被广泛应用于计算机网络中&#xff0c;特别是在构建大型和复杂的网络时。以下是对OSPF的…

Linux-磁盘优化的几个思路

优化前先看看性能指标 I/O 基准测试 fio&#xff08;Flexible I/O Tester&#xff09;正是最常用的文件系统和磁盘 I/O 性能基准测试工具。这类工具非常用&#xff0c;了解即可 应用程序优化 应用程序处于整个 I/O 栈的最上端&#xff0c;它可以通过系统调用&#xff0c;来调…

Go基础学习11-测试工具gomock和monkey的使用

文章目录 基础回顾MockMock是什么安装gomockMock使用1. 创建user.go源文件2. 使用mockgen生成对应的Mock文件3. 使用mockgen命令生成后在对应包mock下可以查看生成的mock文件4. 编写测试代码5. 运行代码并查看输出 GomonkeyGomonkey优势安装使用对函数进行monkey对结构体中方法…

UEFI学习笔记(十):系统表与ACPI表的遍历

一、概述 在 UEFI 系统表中&#xff0c;有几个关键的表用于提供系统信息、服务和硬件抽象。这些表可以通过 EFI_SYSTEM_TABLE 访问&#xff0c;常见的 UEFI 系统表如下&#xff1a; 1、EFI_SYSTEM_TABLE (系统表) EFI_SYSTEM_TABLE 是一个指针&#xff0c;包含多个服务和系统…

docker-compose无法切换用户

问题描述 jupyter:image: flink:1.19-pyprivileged: trueuser: rootports:- "9999:8888"volumes:- /data/docker_data/jupyter:/workcommand: sh -c "cd / && jupyter notebook --ip 0.0.0.0 --port 8888 --allow-root --NotebookApp.passwordsha1:658…