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

YOLO-V5轻松上手

之前介绍了YOLO-V1~V4版本各做了哪些事以及相较于之前版本的改进。有的人或许会想“直接学习最近版本的算法不好吗”,在我看来,每一个年代的版本/算法都凝聚着当年学术界的智慧,即便是它被淘汰了也依旧有值得思考的地方,或是可以使我们对后续算法的改进/提出的缺点有更深的理解,进而“凝百家之长”真正开出道花结出道果有自己的感悟。

V4出现后,紧接着V5版本就出现了,相比于之前版本,V5出现时没有论文去介绍它怎么做的。V5像是把V4做了更好的实现,即思想算法上没有太大的变化,更像是一个“实际的偏工程的项目”。直到如今YOLO-V5也十分经典。

本文与前几篇主讲算法不同,本文教大家如何下载和使用YOLO-V5。

有时间的话我会从其源码的角度进行一遍梳理(或许吧不懒的话)。

前面也说过了具体算法和流程与V4无太大区别,主要是更好的实现。

一、YOLO-V5下载

ultralytics/yolov5: YOLOv5 🚀 in PyTorch > ONNX > CoreML > TFLite (github.com)

点击上方链接直接下载即可,下载完成后解压,打开Pycharm新建一个目录,

下载requirements里面的依赖

pip install -r requirements.txt

值得一提的是YOLO-V5要配合python>=3.7,pytorch>=1.7的版本使用,会用到里面的优化算法,所以大家自行选择一个更高的版本吧。

比如我这里直接选择anaconda里之前下载的torch1.10。

二、下载、配置数据集和下载预训练模型

2.1 下载数据集

他这里用的是COCO数据集,这玩意比较大我们也没必要下载了,下载个小的玩一玩

可以去这里:Computer Vision Datasets (roboflow.com),下载物体检测相关的数据集,样式比较丰富,如检测汽车的、象棋的、动物的、人脸的等等。

以口罩数据集为例,大家也可以下载自己喜欢的,点击Mask Wearing Dataset,进去下载就行了。

下载时会提示你选择格式:

下载完成后和V5放在同一级目录就行

以train里的文件为例:

  • images则是训练所需的图片

  • labels里则是对应名字图片的标签值,如下1表示没戴口罩,戴了就是0,剩下四个则是"框的坐标"。

当然有的有很多行,毕竟一张图片里可能有很多人。找的越全recall越高,越精准accuracy越高,整体mAP越高。

后续第一次去读数据的时候还会自动生成labels.cache缓存文件,方便后续读取。

2.2 配置数据集

点开data.yaml,可以看到train和val的相对路径,到时候YOLO代码会直接读取,自己记得确认一下路径是否正确,路径问题比较基础这里就不讲了。

如果要做test就把test路径写进去就行。

nc指类别的个数,戴口罩和不带口罩,['mask', 'no-mask']

2.3 下载预训练模型

咱们简单下载个5s就行了,https://github.com/ultralytics/yolov5/releases/download/v7.0/yolov5s.pt

下载完成后放到yolov5-master文件夹里。

三、配置demo参数

参考这里:

--data ../MaskDataSet/data.yaml

--cfg models/yolov5s.yaml

--weigths ./yolov5s.pt

--batch-size 24

我们之前下载了预训练模型yolov5s.pt,用的话就加上,不用就--weights ''

当然还有一些参数可选,源码里有默认值,我们先用这些。

四、训练

做好上面那些后,在yolov5-master的train.py里直接run就行了。

刚开始可能报错,我看是他第一次执行,会去github上下载标记字体,然后没连接进去。

解决办法就是自己点进去那个报错下载的连接自己下载就行了,下载完放到上面那个文件夹里。

之后再进行run,它默认会跑100个epoch,也可以自己设置。

这里就训练完了

上图告诉你 结果在runs\train\exp23那里,即最后最新跑的一次。

可见生成了权重文件和一些图片。

results.csv里面是一些标注和统计数据,至于生成的图片这里简单展示几个:

五、检测

进入detect.py 直接右键run的话,由于下载的yolov5-master的时候它自带测试图片和权重文件,也填写了默认路径,所以不会报错;

直接跑的话你会看到结果里:

这和我们刚刚train那步没有一点关系,都是它自带的一开始不用训练就能玩的。

我们活学活用,刚刚训练的是是否戴口罩,所以我们不妨也自己改一下参数:

其中 -- source 后可以是图片 视频 文件夹 路径url等

我这里让它测试有没有戴口罩,就用上面这两张图片的路径吧即不修改source了;

不过我在里面又加了两张图片

修改参数:

--weights ./runs/train/exp23/weights/best.pt

--conf 0.4

--data ./MaskDataSet/data.yaml

这里我修改了权重文件 毕竟之前用的是自带的yolov5s.pt,而这个best.pt是我们通过自己下载的预训练模型yolov5s.pt的基础上训练出来的用于检测是否带口罩了的权重文件。 conf是置信度,想改就改。

run完后发现实际效果还行,但黑人那里不行

不过毕竟我们训练的数据就100多张,里面我看了也没有黑人,情有可原,它可能在面部颜色差异上占比很大。

我又找了几张试了试 发现就是数据的问题

不过问题不大,我们本次的目的就是先学会简单使用他们的代码。

可以把source那里换成视频玩一玩试一试。

六、题外话

希望本篇文章能够对你有所帮助,如果你是连GPU版本的torch都还没下载过的小白建议一步步来。

大家也可以换点别的数据集、参数来自己跑一跑玩一玩,同时感兴趣的小伙伴也可以开始在了解其算法的情况下简单读读源码了,我下一期或许会写一篇V5的源码引导文章。

相关文章:

YOLO-V5轻松上手

之前介绍了YOLO-V1~V4版本各做了哪些事以及相较于之前版本的改进。有的人或许会想“直接学习最近版本的算法不好吗”,在我看来,每一个年代的版本/算法都凝聚着当年学术界的智慧,即便是它被淘汰了也依旧有值得思考的地方,或是可以使…...

CSS的优先级理解

权重 的 4个等级定义我们把特殊性分为4个等级,每一个等级代表一类选择器,每个等级的值相加得出选择器的权重。4个等级的定义如下:第一等级:代表内联样式,如style"",权值为 1000第二等级&#xff…...

前端工程师leetcode算法面试必备-二分搜索算法(中)

一、前言 二分搜索算法本身并不是特别复杂,核心点主要集中在: 有序数组:指的是一个递增或者递减的区间(特殊情况如:【852. 山脉数组的峰顶索引】); 中间数:用来确定搜索目标落在左…...

【数据库】MySQL 单表查询,多表查询

目录 单表查询 一,创建表worker 1,创建表worker的sql代码如下: 2,向worker表中插入信息 二, 按要求进行单表查询 1、显示所有职工的基本信息。 2、查询所有职工所属部门的部门号,不显示重复的部门号。 …...

【c++】vector实现(源码剖析+手画图解)

vector是我接触的第一个容器,好好对待,好好珍惜! 目录 文章目录 前言 二、vector如何实现 二、vector的迭代器(原生指针) 三、vector的数据结构 图解: 四、vector的构造及内存管理 1.push_back() …...

VScode查看python f.write()的文件乱码

VScode查看python f.write()的文件乱码 在使用 VScode 编写 python 代码, print(),汉字正常显示, 使用 with open()as f: f.write()文件后, 在 …...

excel应用技巧:如何用函数制作简易抽奖动图

利用INDEX函数和随机整数函数RANDBETWEEN配合,在Excel中做一个简单的抽奖器,可以随机抽取姓名或者奖品。有兴趣的伙伴可以做出来试试,撞撞2023年好运气。每次年会大家最期待的就是抽奖环节。为了看看自己今年运气怎么样,会不会获奖…...

CSI Tool 安装及配置记录

一、Ubuntu安装 1.下载Ubuntu 首先安装Ubuntu 14.04 LTS 64位下载地址(页面中第一个链接) 2.制作启动盘(注意备份) 可以使用官方的工具Rufus,下载地址:https://rufus.ie/ 打开Rufus,先备份…...

华为OD机试 - 最低位排序(Python)| 真题+思路+代码

最低位排序 题目 给定一个非空数组(列表),起元素数据类型为整型, 请按照数组元素十进制最低位从小到大进行排序, 十进制最低位相同的元素,相对位置保持不变, 当数组元素为负值时,十进制最低为等同于去除符号位后对应十进制值最低位。 输入 给定一个非空数组(列表) 其…...

C#开发的OpenRA使用TrimExcess方法

C#开发的OpenRA使用TrimExcess方法 当你在细看OpenRA的代码,就会发现在下面这段代码添加了一个方法: foreach (var nodes in levels) nodes.TrimExcess(); 在上面代码里遍历整个节点列表,把所有节点都调用TrimExcess方法处理一下, 这样做的意义何在?为什么我们在一般的代码…...

ImageMagick任意文件读取漏洞(CVE-2022-44268)

0x00 前提 前几天爆出一个 ImageMagick 漏洞 ,可以造成一个任意文件读取的危害比较可观,最近有时间来复现学习一下 主要是影响的范围很大,很多地方都有这个问题,需要来学习一下 0x01 介绍 ImageMagick 是一个免费的开源软件套…...

第十九篇 ResNet——论文翻译

文章目录 摘要1 引言2 相关工作3 深度残差学习3.1 残差学习3.2 快捷恒等映射3.3 网络架构3.4 实现4 实验4.1 ImageNet 分类4.2 CIFAR-10 和分析4.3 PASCAL 和 MS COCO 上的物体检测🐇🐇🐇🐇🐇🐇 🐇 欢迎阅读 【AI浩】 的博客🐇 👍 阅读完毕,可以动动小手赞一…...

RiProRiProV2主题美化顶部增加一行导航header导航通知

背景: 有些网站的背景顶部有一行罪行公告,样式不错,希望自己的网站也借鉴过来,本教程将指导如何操作,并调整成自己想要的样式。 比如网友搭的666资源站 xd素材中文网...

RT-Thread MSH_CMD_EXPORT分析

RT-Thread MSH_CMD_EXPORT分析 1. 源码分析 在rt-thread中,使用FinSH,可以支持命令行。在源码中,使用MSH_CMD_EXPORT导出函数到对应命令。 extern void rt_show_version(void); long version(void) {rt_show_version();return 0; } MSH_CM…...

电脑麦克风没声音怎么办?这3招就可以解决!

最近有用户在使用电脑麦克风进行视频录制时,发现麦克风没有声音。这是什么原因?电脑麦克风没有声音怎么办?关于解决方案,我专门整理了三种方法来帮你们,一起来看看吧! 操作环境: 演示机型&#…...

【C++】运算符重载

运算符重载 C为了增强代码的可读性引入了运算符重载,运算符重载是具有特殊函数名的函数,也具有其返回值类型,函数名以及参数列表。其返回值类型和参数列表与普通的函数类型。 函数名字为:关键字operator后面接需要重载的运算符号…...

什么是眼图?(扫盲向)

什么是眼图?(扫盲向) Ref: What’s eye diagram? 1 基础图示 眼图 2 用途 常用于评估差分链路中的信号传输质量 "眼睛"张得越开,链路信号质量越好 3 观测原理 眼图是传输信号序列在时域上的叠加 4 观测参数 4…...

【C++】类与对象(二)

前言 在前一章时我们已经介绍了类与对象的基本知识,包括类的概念与定义,以及类的访问限定符,类的实例化,类的大小的计算,以及C语言必须传递的this指针(C中不需要我们传递,编译器自动帮我们实现&…...

【软考】系统集成项目管理工程师(二十一)项目收尾管理

1. 项目验收2. 项目总结3. 系统维护4. 项目后评价补充:人员转移和资源遣散广义的系统集成项目收尾管理工作通常包含四类典型的工作:项目验收工作、项目总结工作、系统维护工作 以及 项目后评价工作,此外项目团队成员的后续工作也应在收尾管理时妥善安排;狭义的系统集成项目…...

关于公钥与私钥的一点看法

故事的起源 私密性 之前,用户a想给用户b发消息,a希望他自己发出现的消息,只能被b读懂。也就是说a希望发出去的数据是被加密过的,收到消息的人可以是b,c,d,e等等。但是只有b能被读懂。 这个需求…...

使用VSCode开发Django指南

使用VSCode开发Django指南 一、概述 Django 是一个高级 Python 框架,专为快速、安全和可扩展的 Web 开发而设计。Django 包含对 URL 路由、页面模板和数据处理的丰富支持。 本文将创建一个简单的 Django 应用,其中包含三个使用通用基本模板的页面。在此…...

高危文件识别的常用算法:原理、应用与企业场景

高危文件识别的常用算法:原理、应用与企业场景 高危文件识别旨在检测可能导致安全威胁的文件,如包含恶意代码、敏感数据或欺诈内容的文档,在企业协同办公环境中(如Teams、Google Workspace)尤为重要。结合大模型技术&…...

Spring Boot+Neo4j知识图谱实战:3步搭建智能关系网络!

一、引言 在数据驱动的背景下,知识图谱凭借其高效的信息组织能力,正逐步成为各行业应用的关键技术。本文聚焦 Spring Boot与Neo4j图数据库的技术结合,探讨知识图谱开发的实现细节,帮助读者掌握该技术栈在实际项目中的落地方法。 …...

【Java_EE】Spring MVC

目录 Spring Web MVC ​编辑注解 RestController RequestMapping RequestParam RequestParam RequestBody PathVariable RequestPart 参数传递 注意事项 ​编辑参数重命名 RequestParam ​编辑​编辑传递集合 RequestParam 传递JSON数据 ​编辑RequestBody ​…...

(转)什么是DockerCompose?它有什么作用?

一、什么是DockerCompose? DockerCompose可以基于Compose文件帮我们快速的部署分布式应用,而无需手动一个个创建和运行容器。 Compose文件是一个文本文件,通过指令定义集群中的每个容器如何运行。 DockerCompose就是把DockerFile转换成指令去运行。 …...

浅谈不同二分算法的查找情况

二分算法原理比较简单,但是实际的算法模板却有很多,这一切都源于二分查找问题中的复杂情况和二分算法的边界处理,以下是博主对一些二分算法查找的情况分析。 需要说明的是,以下二分算法都是基于有序序列为升序有序的情况&#xf…...

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

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

七、数据库的完整性

七、数据库的完整性 主要内容 7.1 数据库的完整性概述 7.2 实体完整性 7.3 参照完整性 7.4 用户定义的完整性 7.5 触发器 7.6 SQL Server中数据库完整性的实现 7.7 小结 7.1 数据库的完整性概述 数据库完整性的含义 正确性 指数据的合法性 有效性 指数据是否属于所定…...

深度剖析 DeepSeek 开源模型部署与应用:策略、权衡与未来走向

在人工智能技术呈指数级发展的当下,大模型已然成为推动各行业变革的核心驱动力。DeepSeek 开源模型以其卓越的性能和灵活的开源特性,吸引了众多企业与开发者的目光。如何高效且合理地部署与运用 DeepSeek 模型,成为释放其巨大潜力的关键所在&…...

向量几何的二元性:叉乘模长与内积投影的深层联系

在数学与物理的空间世界中,向量运算构成了理解几何结构的基石。叉乘(外积)与点积(内积)作为向量代数的两大支柱,表面上呈现出截然不同的几何意义与代数形式,却在深层次上揭示了向量间相互作用的…...