当前位置: 首页 > 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、 电脑开机时风扇…...

MPNet:旋转机械轻量化故障诊断模型详解python代码复现

目录 一、问题背景与挑战 二、MPNet核心架构 2.1 多分支特征融合模块(MBFM) 2.2 残差注意力金字塔模块(RAPM) 2.2.1 空间金字塔注意力(SPA) 2.2.2 金字塔残差块(PRBlock) 2.3 分类器设计 三、关键技术突破 3.1 多尺度特征融合 3.2 轻量化设计策略 3.3 抗噪声…...

脑机新手指南(八):OpenBCI_GUI:从环境搭建到数据可视化(下)

一、数据处理与分析实战 (一)实时滤波与参数调整 基础滤波操作 60Hz 工频滤波:勾选界面右侧 “60Hz” 复选框,可有效抑制电网干扰(适用于北美地区,欧洲用户可调整为 50Hz)。 平滑处理&…...

深入理解JavaScript设计模式之单例模式

目录 什么是单例模式为什么需要单例模式常见应用场景包括 单例模式实现透明单例模式实现不透明单例模式用代理实现单例模式javaScript中的单例模式使用命名空间使用闭包封装私有变量 惰性单例通用的惰性单例 结语 什么是单例模式 单例模式(Singleton Pattern&#…...

学校招生小程序源码介绍

基于ThinkPHPFastAdminUniApp开发的学校招生小程序源码,专为学校招生场景量身打造,功能实用且操作便捷。 从技术架构来看,ThinkPHP提供稳定可靠的后台服务,FastAdmin加速开发流程,UniApp则保障小程序在多端有良好的兼…...

1.3 VSCode安装与环境配置

进入网址Visual Studio Code - Code Editing. Redefined下载.deb文件,然后打开终端,进入下载文件夹,键入命令 sudo dpkg -i code_1.100.3-1748872405_amd64.deb 在终端键入命令code即启动vscode 需要安装插件列表 1.Chinese简化 2.ros …...

汇编常见指令

汇编常见指令 一、数据传送指令 指令功能示例说明MOV数据传送MOV EAX, 10将立即数 10 送入 EAXMOV [EBX], EAX将 EAX 值存入 EBX 指向的内存LEA加载有效地址LEA EAX, [EBX4]将 EBX4 的地址存入 EAX(不访问内存)XCHG交换数据XCHG EAX, EBX交换 EAX 和 EB…...

关键领域软件测试的突围之路:如何破解安全与效率的平衡难题

在数字化浪潮席卷全球的今天,软件系统已成为国家关键领域的核心战斗力。不同于普通商业软件,这些承载着国家安全使命的软件系统面临着前所未有的质量挑战——如何在确保绝对安全的前提下,实现高效测试与快速迭代?这一命题正考验着…...

佰力博科技与您探讨热释电测量的几种方法

热释电的测量主要涉及热释电系数的测定,这是表征热释电材料性能的重要参数。热释电系数的测量方法主要包括静态法、动态法和积分电荷法。其中,积分电荷法最为常用,其原理是通过测量在电容器上积累的热释电电荷,从而确定热释电系数…...

【Go语言基础【12】】指针:声明、取地址、解引用

文章目录 零、概述:指针 vs. 引用(类比其他语言)一、指针基础概念二、指针声明与初始化三、指针操作符1. &:取地址(拿到内存地址)2. *:解引用(拿到值) 四、空指针&am…...

深入浅出深度学习基础:从感知机到全连接神经网络的核心原理与应用

文章目录 前言一、感知机 (Perceptron)1.1 基础介绍1.1.1 感知机是什么?1.1.2 感知机的工作原理 1.2 感知机的简单应用:基本逻辑门1.2.1 逻辑与 (Logic AND)1.2.2 逻辑或 (Logic OR)1.2.3 逻辑与非 (Logic NAND) 1.3 感知机的实现1.3.1 简单实现 (基于阈…...