当前位置: 首页 > news >正文

yolov5算法,训练模型,模型检测

嘟嘟嘟嘟!工作需要,所以学习了下yolov5算法。是干什么的呢?
通俗来说,可以将它看做是一个小孩儿,通过成年人(开发人员)提供的大量图片的学习,让自己知道我看到的哪些场景需要提醒给成年人(开发人员)。也算是一个脚指头踩在了人工智能的门口。
我们使用时可以对他做的呢,有以下几点(就想象成孩子已经出来了):

  1. 寻找他可能遇到的场景,成年人在场景上标注“没戴口罩的”、“没戴安全帽的”、“貌似是火源的”…在给孩子找这些场景时,成年人也会精心选择,将其分为标准的很简单看出来的(训练集train)、不很容易的需要仔细学习的(验证集val)、用来测试学习成果的(测试集test)
  2. 孩子的大脑驱动着,记录这些图片的标准参数(训练集图片)、超参数(验证集图片)
  3. 孩子学完之后,成年人可以用测试集中的图片对训练出来的成果做验收,验收成功后,成年人就可以让孩子自己去玩
  4. 孩子在玩的过程中,发现了自己学习中的场景,至于是要孩子回来报告给成年人,还是只是孩子自己知道就可以,这就看开发者了。

源码

如果没看懂,可以看下这个链接,超详细
https://blog.csdn.net/ECHOSON/article/details/121939535?ops_request_misc
接触到了两个,一个是口罩检测模型,一个是安全帽检测模型,源码嘛,都是人家自己的。下面就是下载地址
口罩模型检测源码
安全帽模型检测源码
只是得到源码,其实做不了什么的,除非特有耐心还要有GPU,否则只是在训练模型阶段,就已经…dddd

训练模型

资源已经上传
这是地址

所需安装的程序

  • anaconda
  • pycharm
    其他的程序只在虚拟环境中安装就可以了

环境配置

一、Anaconda、pycharm安装

anaconda官网:https://www.anaconda.com/products/distribution#Downloads
在这里插入图片描述
pycharm官网:https://www.jetbrains.com/pycharm/
在这里插入图片描述

二、环境安装验证

  • 桌面右击,显示“open folder as pycharm project”,就表示pycharm安装成功了
  • 任意一个文件夹,使用cmd打开。执行“conda activate”,在下一命令行前出现了base就是anaconda安装成功了。
    在这里插入图片描述

三、换源(可以省略)

使用过程中,需要在虚拟环境中下载各种源,换源的目的是可以使下载速度快些。此处是换了中科大的源。直接复制粘贴到命令行执行就行

conda config --remove-key channels
conda config --add channels https://mirrors.ustc.edu.cn/anaconda/pkgs/main/
conda config --add channels https://mirrors.ustc.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.bfsu.edu.cn/anaconda/cloud/pytorch/
conda config --set show_channel_urls yes
pip config set global.index-url https://mirrors.ustc.edu.cn/pypi/web/simple

四、虚拟环境

我们已经有yolov5的源码了,可以直接在项目中,打开cmd。
还有另一种选择,直接用anaconda prompt执行也可以,可以使用cd命令跳转文件夹。
anaconda prompt

执行

conda create -n 环境名
conda create -n 环境名 python=3.8  后面最好是写下Python版本,不然后面有个依赖叫pycocotools的,很恶心,没有对应python3.9的版本

这样就创建了一个虚拟环境,创建后环境的查看

conda info --env
或者conda env list

创建成功后,激活,就相当于虚拟环境的入口指令,每次要使用虚拟环境中的包都需要执行

conda activate 环境名    或者    activate 环境名

五、安装依赖

下面的依赖都要在虚拟环境中安装,使用时,直接使用这个虚拟环境,如果使用其他虚拟环境或者base环境,是检测不到依赖的

1、pytorch

pytorch是用python语言打造的一款深度学习框架,既可实现强大的GPU加速,也可支持动态神经网络。yolov5算法在GPU和CPU情况下都可以使用,但是pytorch要区分是在GPU下使用还是CPU使用,而且提醒一下CPU去训练模型时,会让你感动到哭
安装pytorch,要注意自己是GPU还是CPU,此处以CPU为例哈,GPU和他差不多

pytorch官网获取安装命令
官网:https://pytorch.org/get-started/locally/
在这里插入图片描述
这个命令直接在虚拟环境中执行就可以了,如果要带着后面的 -c pytorch ,表示是从国外的源下载,那么前面配置源的地方就没用。看自己,想用哪个用哪个

conda install pytorch torchvision torchaudio cpuonly -c pytorch

2、pycocotools

pip insatll pycocotools-windows

3、其他包

yolov5算法项目中包含一个requirement.txt文件,里面就标注了需要的依赖。

pip install -r requirement.txt
pip insatll pyqt5
pip install labelme

在这里插入图片描述

六、pycharm的配置

这一步是对pycharm打开的项目配置虚拟环境,所以前提就是要有虚拟环境和项目。
pycharm打开项目,右下角的初始状态应该是NO interpreter,点击就会出现设置和添加。
在这里插入图片描述
第一次的话直接添加就可以了
在这里插入图片描述
后面其他项目要使用同一虚拟环境时,点击设置-show all就可以展示之前的虚拟环境
在这里插入图片描述
在这里插入图片描述

七、训练模型

在这里插入图片描述

数据集分为三部分,训练集train、验证集val、测试集test。之前看过的一个分配比例是60%、20%、20%。数据集标注的位置文件就在与images同级的labels文件夹中,且这个文件夹中结构与images相同,有train/val/test。
在这里插入图片描述
首先,要训练模型就要先找数据集,人工去标注图片,让程序学习。
标注的工具就是labelimg
安装命令

pip install labelimg

安装成功后,使用时,在虚拟环境中执行 labelimg 命令,就可以打开界面。这里要注意,一定要将文件类型改成yolo类型,就是下图中yolo的位置。
在这里插入图片描述
标注后生成的文件如下
在这里插入图片描述
每一行就是一个目标的数据,分别是目标的类别id(戴口罩或没带口罩)、归一化处理后的中心点X坐标、y坐标、框的w和h。
在这里插入图片描述
数据集配置文件,名字可以随意,内容一定要包含这几项。
在这里插入图片描述
模型配置文件
在这里插入图片描述
预训练模型
在这里插入图片描述
训练的执行文件
在这里插入图片描述

训练模型命令:

python train.py --data 数据集配置文件名称 --cfg 模型配置文件名称 --weights 预训练权重文件 --epoch 100 --batch-size 4 --device cpu

不使用命令执行的话,train.py文件中有配置的位置,只要对应修改就可以了
在这里插入图片描述
之后直接执行 python train.py即可

执行之后,等待即可,生成的文件可在runs/train文件夹中查看。

八、模型检测

模型检测,使用的是detect.py文件,运行命令如下:

python detect.py --source   要检测的图片或mp4文件位置 --weights 训练出来的模型/runs/train/exp_yolov5s/weights/best.pt
python detect.py --source 0    检测摄像头,这个没成功
python detect.py --source 'rtsp地址'      根据rtsp地址检测摄像头

不想要那么长的命令,可以直接修改detetct.py文件中的位置
在这里插入图片描述
然后直接执行 python detect.py 即可

相关文章:

yolov5算法,训练模型,模型检测

嘟嘟嘟嘟!工作需要,所以学习了下yolov5算法。是干什么的呢? 通俗来说,可以将它看做是一个小孩儿,通过成年人(开发人员)提供的大量图片的学习,让自己知道我看到的哪些场景需要提醒给成…...

linux系统防火墙开放端口

linux系统防火墙开放端口 在外部访问CentOS中部署应用时,需要通过防火墙管理软件,开端口,或者直接关闭防火墙进行解决(不建议) 加粗样式 常用命令: systemctl start firewalld #启动 systemctl stop firewalld #停止 systemctl status firewalld #查看…...

CSAPP第九章 虚拟内存

理解虚拟内存的原因 本章前部分描述虚拟内存是如何工作的,后一部分描述应用程序如何使用和管理虚拟内存 物理和虚拟寻址 虚拟内存作为缓存的工具 页表 页命中 缺页 虚拟内存作为内存管理的工具 简化链接,简化加载,简化共享,简化…...

numpy数组与矩阵运算(二)

文章目录矩阵生成与常用操作矩阵生成矩阵转置查看矩阵特性矩阵乘法计算相关系数矩阵计算方差、协方差、标准差计算特征值与特征向量计算逆矩阵求解线性方程组奇异值分解函数向量化矩阵生成与常用操作 矩阵生成 扩展库numpy中提供的matrix()函数可以用来把列表、元组、range对…...

Dubbo 中 Zookeeper 注册中心原理分析

Dubbo 中 Zookeeper 注册中心原理分析 文章目录Dubbo 中 Zookeeper 注册中心原理分析一、ZooKeeper注册中心1.1 ZooKeeper数据结构1.2 ZooKeeper的Watcher机制1.3 ZooKeeper会话机制1.4 使用ZooKeeper作为注册中心二、源码分析2.1 AbstractRegistry2.2 FailbackRegistry2.2.1 核…...

素数产生新的算法(由筛法减法改为增加法)--哥德巴赫猜想的第一次实际应用

素数产生新的算法(由筛法减法改为增加法)--哥德巴赫猜想的第一次实际应用 摘要:长期以来,人们认为哥德巴赫猜想没有什么实际应用的。 现在,我假设这个不是猜想,而是定理或公理,就产生了新的应用…...

递归-需要满足三个条件

一,概述 递归是一种应用非常广泛的算法(或者编程技巧)。很多数据结构和算法的编码实现都要用到递归,比如 DFS 深度优先搜索、前中后序二叉树遍历等。 去的过程叫“递”,回来的过程叫“归”。基本上所有的递归问题都可…...

【剑指Offer-Java】两个栈实现队列

题目 用两个栈实现一个队列。队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead ,分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素,deleteHead 操作返回 -1 ) 输入: [“CQueue”,“appendT…...

Allegro如何将Waived掉的DRC显示或隐藏操作指导

Allegro如何将Waived掉的DRC显示或隐藏操作指导 在用Allegro做PCB设计的时候,如果遇到正常的DRC,可以用Waive的命令将DRC不显示,如下图 当DRC被Waive掉的时候,如何将DRC再次显示出来。类似下图效果 具体操作如下 点击Display...

MATLAB——数据及其运算

MATLAB数值数据数值数据类型的分类1.整型整型数据是不带小数的数,有带符号整数和无符号整数之分。表中列出了各种整型数据的取值范围和对应的转换函数。2.浮点型浮点型数据有单精度(single)和双精度((double)之分&…...

【微信小程序】-- 页面导航 -- 声明式导航(二十二)

💌 所属专栏:【微信小程序开发教程】 😀 作  者:我是夜阑的狗🐶 🚀 个人简介:一个正在努力学技术的CV工程师,专注基础和实战分享 ,欢迎咨询! &…...

gdb查看汇编代码的例子

gdb查看汇编代码的例子 操作步骤 用 gdb 启动可执行文件:gdb executable_file在 gdb 中设置断点:break function_name 或者 break *memory_address运行程序:run当程序停止在断点处时,使用 disassemble 命令来查看汇编代码&#…...

第四讲:如何将本地代码与服务器代码保持实时同步

一、前言 在我们进行 Ambari 二次开发时,通常会先在服务器上部署一套可以使用的 Ambari 环境。 二次开发,就肯定是要改动代码的,我们不能老是在服务器上用vim编辑文件,那样效率太低,始终不是长久之计。 所以我们需要在本地打开我们的Ambari源码项目,比如用idea工具,可…...

cuda调试(一)vs2019-windows-Nsight system--nvtx使用,添加nvToolsExt.h文件

cuda调试 由于在编程过程中发现不同的网格块的结构,对最后的代码结果有影响,所以想记录一下解决办法。 CUDA的Context、Stream、Warp、SM、SP、Kernel、Block、Grid cuda context (上下文) context类似于CPU进程上下,表示由管理层 Drive …...

向Spring容器中注入bean有哪几种方式?

文章前言: 写这篇文章的时候,我正在手机上看腾讯课堂的公开课,有讲到 Spring IOC 创建bean有哪几种方式,视频中有提到过 set注入、构造器注入、注解方式注入等等;于是,就想到了写一篇《Spring注入bean有几种…...

如何用 Python采集 <豆某yin片>并作词云图分析 ?

嗨害大家好鸭!我是小熊猫~ 总有那么一句银幕台词能打动人心 总有那么一幕名导名作念念不忘 不知道大家有多久没有放松一下了呢? 本次就来给大家采集一下某瓣电影并做词云分析 康康哪一部才是大家心中的经典呢? 最近又有哪一部可能会成为…...

Python装饰器的具体实用示例

示例1:普通装饰器 def name(n):def func(x):res n(xx)return resreturn funcname def run(x): # run name(run)print(x)if __name__ __main__:run(1) # 2def name(n):def func(*x):res n(xx)return resreturn funcname def run(x): # run name(run)pr…...

谈谈我对Retrofit源码的理解

文章目录一、Retrofit简介二、使用介绍2.1 app / build.gradle添加依赖2.2 创建 Retrofit 实例2.3 创建 API 接口定义文件2.4 使用 Retrofit 进行网络请求三、源码分析3.1 创建 Retrofit 实例: 建造者模式创建Retrofit3.2 实例化API接口: 动态代理模式3.3 获取Observable返回值…...

八股文(三)

目录 一、 如何理解原型与原型链 二、 js继承 三、 vuex的使用 1.mutation和action的区别 mutation action 2.Vuex都有哪些API 四、 前端性能优化方法 五、 类型判断 题目 (1)typeof判断哪个类型会出错(即结果不准确)&…...

2023最新实施工程师面试题

1、两电脑都在同一个网络环境中,A 电脑访问不到 B 电脑的共享文件。此现象可能是哪些 方面所导致?怎样处理? 答:首先你要确定是不是在一个工作组内,只有在一个工作组内才可以共享文件,然后看一个看一看有没有防火墙之类的,然后确定文件是不是已经共享 2、 电脑开机时风扇…...

椭圆曲线密码学(ECC)

一、ECC算法概述 椭圆曲线密码学(Elliptic Curve Cryptography)是基于椭圆曲线数学理论的公钥密码系统,由Neal Koblitz和Victor Miller在1985年独立提出。相比RSA,ECC在相同安全强度下密钥更短(256位ECC ≈ 3072位RSA…...

【磁盘】每天掌握一个Linux命令 - iostat

目录 【磁盘】每天掌握一个Linux命令 - iostat工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景 注意事项 【磁盘】每天掌握一个Linux命令 - iostat 工具概述 iostat(I/O Statistics)是Linux系统下用于监视系统输入输出设备和CPU使…...

el-switch文字内置

el-switch文字内置 效果 vue <div style"color:#ffffff;font-size:14px;float:left;margin-bottom:5px;margin-right:5px;">自动加载</div> <el-switch v-model"value" active-color"#3E99FB" inactive-color"#DCDFE6"…...

在Ubuntu中设置开机自动运行(sudo)指令的指南

在Ubuntu系统中&#xff0c;有时需要在系统启动时自动执行某些命令&#xff0c;特别是需要 sudo权限的指令。为了实现这一功能&#xff0c;可以使用多种方法&#xff0c;包括编写Systemd服务、配置 rc.local文件或使用 cron任务计划。本文将详细介绍这些方法&#xff0c;并提供…...

Spring数据访问模块设计

前面我们已经完成了IoC和web模块的设计&#xff0c;聪明的码友立马就知道了&#xff0c;该到数据访问模块了&#xff0c;要不就这俩玩个6啊&#xff0c;查库势在必行&#xff0c;至此&#xff0c;它来了。 一、核心设计理念 1、痛点在哪 应用离不开数据&#xff08;数据库、No…...

Maven 概述、安装、配置、仓库、私服详解

目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...

使用Matplotlib创建炫酷的3D散点图:数据可视化的新维度

文章目录 基础实现代码代码解析进阶技巧1. 自定义点的大小和颜色2. 添加图例和样式美化3. 真实数据应用示例实用技巧与注意事项完整示例(带样式)应用场景在数据科学和可视化领域,三维图形能为我们提供更丰富的数据洞察。本文将手把手教你如何使用Python的Matplotlib库创建引…...

sipsak:SIP瑞士军刀!全参数详细教程!Kali Linux教程!

简介 sipsak 是一个面向会话初始协议 (SIP) 应用程序开发人员和管理员的小型命令行工具。它可以用于对 SIP 应用程序和设备进行一些简单的测试。 sipsak 是一款 SIP 压力和诊断实用程序。它通过 sip-uri 向服务器发送 SIP 请求&#xff0c;并检查收到的响应。它以以下模式之一…...

【网络安全】开源系统getshell漏洞挖掘

审计过程&#xff1a; 在入口文件admin/index.php中&#xff1a; 用户可以通过m,c,a等参数控制加载的文件和方法&#xff0c;在app/system/entrance.php中存在重点代码&#xff1a; 当M_TYPE system并且M_MODULE include时&#xff0c;会设置常量PATH_OWN_FILE为PATH_APP.M_T…...

水泥厂自动化升级利器:Devicenet转Modbus rtu协议转换网关

在水泥厂的生产流程中&#xff0c;工业自动化网关起着至关重要的作用&#xff0c;尤其是JH-DVN-RTU疆鸿智能Devicenet转Modbus rtu协议转换网关&#xff0c;为水泥厂实现高效生产与精准控制提供了有力支持。 水泥厂设备众多&#xff0c;其中不少设备采用Devicenet协议。Devicen…...