从零开始学习YOLOv5 保姆级教程

news2025/1/13 17:27:26

一、前言

YOLO系列是one-stage且是基于深度学习的回归方法,而R-CNN、Fast-RCNN、Faster-RCNN等是two-stage且是基于深度学习的分类方法。

YOLOv5是一种单阶段目标检测算法,该算法在YOLOv4的基础上添加了一些新的改进思路,使其速度与精度都得到了极大的性能提升
 

Input: 输入部分是YOLOv5的起点,接收输入图像并将其进行预处理,将图像大小调整为模型所需的输入尺寸。

Backbone: 骨干网络是YOLOv5的核心组成部分,负责从输入图像中提取特征。YOLOv5使用的骨干网络是一种轻量级的卷积神经网络,如CSPDarknet53或Swin-Transformer,具有良好的特征提取能力。

Neck: Neck部分是YOLOv5中的特征融合模块,用于融合不同层级的特征图。常用的脖子结构包括特征金字塔网络(FPN),用于增强目标的多尺度表示和语义信息的融合。

Output: 输出部分是YOLOv5的最终预测结果生成模块,通过在不同尺度的特征图上应用一系列卷积层和激活函数,输出目标的位置坐标、类别概率和置信度。根据预测结果进行后处理,如非极大值抑制(NMS),用于过滤和合并重叠的边界框,得到最终的检测结果。

源码下载地址

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

二.环境配置

最新Anaconda安装-保姆级教程

Pytorch安装教程:最新保姆级教程

完全零基础的可以先看下博主的这两篇文章先做好基础准备

2.1.创建环境

打开命令行,输出cmd,在终端输入一下命令

conda create -n yolov5 python=3.8 

   # yolov5为所创建虚拟环境名称;python版本可以更换

推荐用3.8,不容易报错。

第一次建可能需要一些时间

2.2环境内配置pytorch

激活环境

conda activate yolov5

 配置pytorch

pip install torch==1.8.1+cu111 torchvision==0.9.1+cu111 torchaudio==0.8.1 -f https://download.pytorch.org/whl/torch_stable.html -i https://pypi.tuna.tsinghua.edu.cn/simple

这是换好源的下载链接,如果20分钟内没有下载完,需要考虑是不是有地方出错了,正常10分钟左右搞定。

验证是否成功

python
import torch
print(torch.__version__)
print(torch.cuda.is_available())

 输出为 ture就成功了 

2.3.环境依赖安装

yolov5 依赖包和环境一键安装

如果你的电脑里有多个requirements.txt文件,需要cd 到指定的文件夹下载之星以下命令。

pip install -r requirements.txt -i https://pypi.mirrors.ustc.edu.cn/simple/

 这时你打开你下载的YOLOv5的模型应该就能跑了。

三.运行YOLOv5

 打开detect.py

 

parser.add_argument('--weights', nargs='+', type=str, default=ROOT / 'yolov5s.pt', help='model path or triton URL')
parser.add_argument('--source', type=str, default=ROOT / 'data/images', help='file/dir/URL/glob/screen/0(webcam)')

只需要注意这两个参数:如下图所以,正常情况是不需要动的

source :指向的是图片地址

weights:是权重参数

yolov5s.pt文件需要去官网下载  

 官网的界面往下翻

 点击你想下载的权重文件,这边可以直接下载yolov5s就可以了

 下载完直接放在最外边就可以了,如果读取不了,就用绝对路径。

 run 运行 

按照提示找到保存图片的地方

 

 

 至此,yolov5版的hello world就成功了

有遇到问题的小伙伴,欢迎评论区留言

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

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

相关文章

【C++】vector类的模拟实现(SGI版本)

🏖️作者:malloc不出对象 ⛺专栏:C的学习之路 👦个人简介:一名双非本科院校大二在读的科班编程菜鸟,努力编程只为赶上各位大佬的步伐🙈🙈 目录 前言一、vector类的模拟实现1.1 vect…

SpringCloud Alibaba实战和源码(7)Skywalking

什么是SkyWalking Skywalking是由国内开源爱好者吴晟开源并提交到Apache孵化器的产品,它同时吸收了Zipkin /Pinpoint /CAT 的设计思路。特点是:支持多种插件,UI功能较强,支持非侵入式埋点。目前使用厂商最多,版本更新较…

水溶性焊锡丝非水溶焊锡丝

Sn63Pb37,无FLUX,水清洗;A可理解为余量或者国标A类标准1% Sn63Pb37,FLUX 1.8% 焊锡膏 焊锡丝 焊锡丝,英文名称:solder wire,由锡合金和助剂两部分组成,合金成份分为锡铅、无铅助剂均…

PX4使用esp8266

文章目录 前言一、给esp8266下载固件接线下固件 二、配置esp8266 前言 硬件: esp01s(esp01好像有些问题,不建议用) usb转串口模块 pix飞控 软件: qgc PX4 参考: https://docs.px4.io/main/en/telemetry/esp8266_wifi_module.html…

1.4亿X区城市运行“一网统管”体系建设项目项目招标WORD

导读:原文《1.4亿X区城市运行“一网统管”体系建设项目项目招标WORD》(获取来源见文尾),本文精选其中精华及架构部分,逻辑清晰、内容完整,为快速形成售前方案提供参考。 部分内容: 各部分需求…

VS code 设置 资源管理器 对齐线

点击左上角的File --> Preformences --> Settings 然后搜索 workbench,把workbench.tree.renderIndentGuides选成always,这样会一直显示对齐的竖线。 找到workbench.tree.indent,这个值就是缩进的像素数量,值越大&#xff0…

electron+vue3全家桶+vite项目搭建【16.1】electron多窗口,pinia状态同步,扩展store方法,主动同步pinia的状态【推荐】

文章目录 引入实现效果如下实现步骤1.自定义pinia插件2.主进程补充同步处理 引入 demo项目地址 我们之前写了一个自动同步pinia状态的插件,可以参考如下文章 electronvue3全家桶vite项目搭建【16】electron多窗口,pinia状态无法同步更新问题解决 这里…

WinPlan经营大脑:专注企业经营分析预测的垂直大模型

目录 一、WinPlan的核心功能与优势 二、WinPlan的应用场景与案例 三、数利得的团队与未来发展 四、投资方观点 随着科技的不断进步和市场竞争的日益激烈,企业数字化转型已成为提高经营效率和管理水平的关键。然而,许多企业在经营决策过程中仍面临许多问题,尤其在管理层的…

2023年国赛 高教社杯数学建模思路 - 案例:随机森林

文章目录 1 什么是随机森林?2 随机深林构造流程3 随机森林的优缺点3.1 优点3.2 缺点 4 随机深林算法实现 建模资料 ## 0 赛题思路 (赛题出来以后第一时间在CSDN分享) https://blog.csdn.net/dc_sinor?typeblog 1 什么是随机森林&#xff…

免费开源大型商城系统_支持商用_无需授权_OctShop

一、OctShop免费开源大型商城系统,支持商用 OctShop是一个免费开源的大型商城系统,无需官方授权就可以直接商用,商城系统集B2B2C和O2O模式于一体。采用前后端分离 八大数据库 分布式系统 微服务架构,支持高并发,非…

Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(31,2)

[ 3.405676] No filesystem could mount root, tried: squashfs [ 3.411546] Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(31,2)可能的原因之一: uboot中rootfs分配的大小不够 解决: 修改root到一个合适的大小…

基于启扬RK3399核心板消防控制图形显示装置的解决方案

在我们日常生活中,火灾的发生是不可避免的风险之一,为了能及时发现火灾,并能够迅速采取措施进行灭火和救援,消防系统起着至关重要的作用。而在消防系统中,消防控制室图形显示装置是其中的重要组成部分之一。 消防控制图…

javaScript:七夕特辑-对象的认识与应用(包含日期对象及相关案例)

目录 一.前言 二.认识对象 在js中声明对象的方法 1.直接使用{}声明对象 2.使用构造函数创建对象 获取属性的值 执行对象方法 解释 三.对象的应用 代码 效果图 ​编辑 四.日期对象 1.Date 日期对象 2. getFullYear() 获取当前年份 3.getMonth() 获取当前日期对象…

ethers.js2:provider提供商

1、Provider类 Provider类是对以太坊网络连接的抽象,为标准以太坊节点功能提供简洁、一致的接口。在ethers中,Provider不接触用户私钥,只能读取链上信息,不能写入,这一点比web3.js要安全。 除了之前介绍的默认提供者d…

DataSecurity Plus:守护企业数据安全的坚实屏障

在数字化时代,数据被誉为企业最重要的资产之一。然而,随着大数据的兴起和信息的日益增长,企业面临着前所未有的数据安全挑战。为了应对这些挑战,数据安全管理变得至关重要。在这个领域,ManageEngine的DataSecurity Plu…

TCP滑动窗口

为什么会有滑动窗口 在计算机网络中,数据通常被分成小块(也叫数据段)在网络中传输(为什么会被分成小块,请了解拥塞窗口和流量控制)。这些小块可能会在传输的过程中遇到延迟、丢失或乱序等问题。为了保证数据…

学习ts(六)数据类型(元组、枚举、Symbol、never)与类型推论

1.元组 元组(Tuple)是固定数量的不同类型的元素的组合。是数组的变种。 元组与集合的不同之处在于,元组中的元素类型可以是不同的,而且数量固定。元组的好处在于可以把多个元素作为一个单元传递。如果一个方法需要返回多个值&…

适配器模式实现stack和queue

适配器模式实现stack和queue 什么是适配器模式?STL标准库中stack和queue的底层结构stack的模拟实现queue的模拟实现 什么是适配器模式? 适配器是一种设计模式(设计模式是一套被反复使用的、多数人知晓的、经过分类编目的、代码设计经验的总结)&#xff…

微信小程序最新获取头像和昵称的方法 直接用!

调整背景 微信小程序获取用户头像和昵称一个开放接口是wx.getUserInfo,2021年4月5日被废弃,原因是很多开发者在打开小程序时就通过组件方式唤起getUserInfo弹窗,如果用户点击拒绝,无法使用小程序,这种做法打断了用户正…

Camunda_4:监听器相关

Camunda的监听器非常之多,常见的如任务监听与执行监听。我们可以实现相关监听器进行相关操作。 首先明确的是,当执行到某一个节点时,会先进入执行监听,然后进入任务监听。 执行监听和任务监听主要监听以下阶段。 然后我们就能去…