YOLOv5白皮书-第Y3周:yolov5s.yaml文件解读

YOLOv5白皮书-第Y3周:yolov5s.yaml文件解读

  • YOLOv5白皮书-第Y3周:yolov5s.yaml文件解读
    • 一、前言
    • 二、我的环境
    • 三、yolov5s.yaml源文件内容
    • 四、Parameters
    • 五、anchors配置
    • 六、backbone
    • 七、head
    • 八、总结

OLOv5-第Y2周:训练自己的数据集)

YOLOv5白皮书-第Y3周:yolov5s.yaml文件解读

一、前言

  • 🍨 本文为🔗365天深度学习训练营 中的学习记录博客
  • 🍖 原作者:K同学啊

二、我的环境

  • 电脑系统:Windows 10
  • 语言环境:Python 3.8.5
  • 编译器:colab在线编译
  • 深度学习环境:PyTorch

三、yolov5s.yaml源文件内容

在这里插入图片描述
可以看到,yaml源文件主要分为4个部分的内容:Parametersanchorsbackbonehead

四、Parameters

这一部分是yolov5s.yaml,yolov5m.yaml,yolov5l.yaml,yolov5x.yaml几个文件之间主要的不同点,有不同的宽度与深度

nc: 20 #80  # number of classes
depth_multiple: 0.33  # model depth multiple
width_multiple: 0.50  # layer channel multiple

nc:分类的数量,根据你自己训练的数据集当中的数量进行修改
depth__multiple:控制子模块的数量
width_multiple:控制卷积核的数量

通过depth__multiplewidth_multiple就可以实现不同复杂度的模型设计。YOLOv5s 、 YOLov5m 、 YOLOv51 、 YOLOv5x四种模型的区别仅在于depth_multiple与width_multiple这个两个参数的不同。

五、anchors配置

在这里插入图片描述
anchor一共有三行,分别在图片当中大,中,小的目标进行计算,

第一行在最大特征图上,小数值检测大目标
第二行在图片第二大的特征图上
第三行在最小的特征图上,大数值检测小目标

YOLOv5初始化了9个anchors,在三个Detect层使用(3个feature map)中使用,每个featuremap的每个grid_cell都有三个anchor进行预测。分配的规则是:

尺度越大的feature map越靠前,相对原图的下采样率越小,感受野越小,所以相对可以预测一些尺度比较小的物体,所有分配到的 anchors越小;

尺度越小的 feature map越靠后,相对原图的下采样率越大,感受野越大,所以相对可以预测一些尺度比较大的物体,所有分配到的 anchors越大。

即可以在小特征图(feature map)上检测大目标,也可以在大特征图上检测小目标。

YOLOv5根据工程经验得到了这么3组anchors,对于很多数据集而言确实挺合适的。但是也不能保证这3组anchors就适用于所有的数据集,所有

六、backbone

在这里插入图片描述

  • from:表示当前模块的来源取自于哪一层的输出,比如-1表示取自上一层的输出
  • number:表示当前选择的模块需要重复的次数,比如3就是要重复3次,但这只是理论上的重复次数,具体还要看depth_multiple共同决定网络模型的深度
  • module:模块类名,根据给到的类名到common.py当中寻找相应的类进行模块化的搭建网络
  • args:是一个list,模块搭建所需要的参数,channel(通道数),bias(偏差,残差)等
  • Focus:对特征图进行切片操作,[64,3]得到[3,32,3],即输入channel=3(RGB),输出为64*0.50(width_multiple)=32,3为卷积核尺
  • Conv:nn.conv(kenel_size=1,stride=1,groups=1,bias=False)+Bn+Leaky_ReLu.[-1, 1, Conv, [128, 3, 2]]具体主要含义是指输入来自上一层,模块数量(number)为1个,子模块为Conv,网络中最终有128*0.5=32个卷积核,卷积核尺寸为3,stride=2。
  • BottleNeckCSP:借鉴CSPNet网络结构,由3个卷积层和X个残差模块Concat组成,若有False,则没有残差模块,那么组成结构为nn.conv+Bn+Leaky_ReLu
  • SPP:[-1, 1, SPP, [1024, [5, 9, 13]]]表示5×5,9×9,13×13的最大池化方式,进行多尺度融合

七、head

在这里插入图片描述这是YOLOv5s的head,数据格式和backbone一样

八、总结

通过Y3学习,解读了yolov5s.yaml的源文件,学会了yolov5s.yaml的文件配置。

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

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

相关文章

从MySQL到TiDB:兼容性全解析

MySQL 在高并发和大数据量场景下,单个实例的扩展性有限。而 TiDB 作为一款分布式NewSQL数据库,设计之初就支持水平扩展(Scale-Out),通过增加节点来线性提升处理能力和存储容量,能够很好地应对大规模数据和高…

机器学习——绪论总结

目录 一、引入 二、基本术语 三、假设空间与归纳偏 四、模型选择 一、引入 机器学习:通过计算手段,得出具有能够自我修改、完善能力的模型,利用经验改善系统自身性能。算法使用数据得到模型的过程即称为学习,或训练 流程&…

Framework - ActivityThread 应用启动UI渲染流程

一、概念 ActivityThread拥有 main(String[] agrs) 方法,作为程序的入口,是应用程序的初始化类。(ActivityThread不是主线程,它在 main() 方法中实例化,是运行在主线程中。)ApplicationThread是 ActivityT…

【Nginx】Ubuntu如何安装使用Nginx反向代理?

文章目录 使用Nginx反向代理2个web接口服务步骤 1:安装 Nginx步骤 2:启动 Nginx 服务步骤 3:配置 Nginx步骤 4:启用配置步骤 5:检查配置步骤 6:重启 Nginx步骤 7:访问网站 proxy_set_header 含义…

海外IP代理:解锁网络边界的实战利器

文章目录 引言:正文:一、Roxlabs全球IP代理服务概览特点:覆盖范围:住宅IP真实性:性价比:在网络数据采集中的重要性: 二、实战应用案例一:跨境电商竞品分析步骤介绍:代码示…

分公司的投标之路:探索与实践

在商海的波涛中,分公司作为母公司延伸的触角,常常在招投标的舞台上扮演着重要角色。然而,分公司能否独立参与投标,这是一个值得深入探讨的话题。 一、分公司的定义与地位 首先,我们需要明确什么是分公司。分公司是母公…

使用nodejs和html布局一个简单的视频播放网站,但是使用localhost:端口访问html无法加载视频

js代码: // app.js const express require(express); const path require(path); const app express();// 设置静态文件目录,这里假设你的视频文件在public/videos/目录下 app.use(express.static(path.join(__dirname, )));// 设置主页路由&#xf…

LeetCode--189

189. 轮转数组 提示 给定一个整数数组 nums,将数组中的元素向右轮转 k 个位置,其中 k 是非负数。 示例 1: 输入: nums [1,2,3,4,5,6,7], k 3 输出: [5,6,7,1,2,3,4] 解释: 向右轮转 1 步: [7,1,2,3,4,5,6] 向右轮转 2 步: [6,7,1,2,3,4,5] 向右轮转…

Ingress

文章目录 环境准备什么是 Ingress认识 Ingress 资源Ingress 控制器(controller)Ingress 规则pathType 路径类型多重匹配Ingress 类TLS生成证书创建密钥 环境准备 下面的 yaml 文件内容,是使用 sts 创建两个 web 服务,并配置对应的 servcie。web 服务的首…

Python进行数据分析||AIGC生成的Python-Pandas库的一些主要函数及其使用实例来进行数据分析

在Python的Pandas库中,有许多函数可以用来进行数据分析。以下是一些主要函数及其使用实例: read_csv():这个函数用于从CSV文件中读取数据。例如,如果你有一个名为"my_data.csv"的文件,你可以使用以下代码来读取它:import pandas as pd data = pd.read_csv(&quo…

微信小程序(三十三)promise异步写法

注释很详细&#xff0c;直接上代码 上一篇 新增内容&#xff1a; 1.promise异步与普通异步的写法区别 2.promise异步的优势 源码&#xff1a; index.wxml <view class"preview" bind:tap"onChoose"><image src"{{avatar}}" mode"…

PyCharm常用快捷键和设置

Ctrl Space 基本的代码完成&#xff08;类、方法、属性&#xff09; Ctrl Alt Space 快速导入任意类 Ctrl Shift Enter 语句完成 Ctrl P 参数信息&#xff08;在方法中调用参数&#xff09; Ctrl Q 快速查看文档 F1 外部文档 Shift F1 外部文档…

网络时间协议NTP工作模式

单播服务器/客户端模式 单播服务器/客户端模式运行在同步子网中层数较高层上。这种模式下,需要预先知道服务器的IP地址。 客户端:运行在客户端模式的主机(简称客户端)定期向服务器端发送报文,报文中的Mode字段设置为3(客户端模式)。当客户端接收到应答报文时,客户端会…

area_center

*模板匹配 gen_rectangle2 (Rectangle1, 1558, 1148, 0, 222, 322) reduce_domain (ImageAffinTrans, Rectangle1, ImageReduced) binary_threshold (ImageReduced, Region, max_separability, dark, UsedThreshold) connection (Region, ConnectedRegions) select_shape (Conn…

【Redis】--RedissonClient的Lock锁详解

目录 一、前言二、Lock源码解析2.1、lock()源码2.2、lock(long leaseTime,TimeUnit unit)源码2.3、trylock()源码2.4、trylock(long waitTime, long leaseTime, TimeUnit unit)源码2.5、trylock(long waitTime,TimeUnit unit)源码2.6、unlock()源码三、Lock相关代码示例一、前言…

Z字型遍历二叉树

编码过程 掏出Deque&#xff0c;先写从左往右遍历 class Solution {public List<List<Integer>> zigzagLevelOrder(TreeNode root) {Deque<TreeNode> deque new ArrayDeque<>();deque.offer(root);while (!deque.isEmpty()) {int n deque.size();f…

Chapter One - The History of Computers

Chapter One - The History of Computers 第一章 - 计算机的历史 I. Reading Material I. 阅读材料 My friends, let’s embark on an enlightening journey through the captivating history of computers, unraveling the intricate threads that have woven the technolog…

DockerCompose+SpringBoot+Nginx+Mysql实践

DockerComposeSpringBootNginxMysql实践 1、Spring Boot案例 首先我们先准备一个 Spring Boot 使用 Mysql 的小场景&#xff0c;我们做这样一个示例&#xff0c;使用 Spring Boot 做一个 Web 应 用&#xff0c;提供一个按照 IP 地址统计访问次数的方法&#xff0c;每次请求时…

linux交叉编译方法——虚拟机编译,在树莓派平台上运行

一、 交叉编译是什么 交叉编译 是在一个平台上生成另一个平台上的可执行代码。 我们再windows上面编写C51代码&#xff0c;并编译成可执行代码&#xff0c;如xx.hex, 是在c51上面运行&#xff0c;不是在windows上面运行 我们在ubuntu上面编写树…

Python实用库记录

本文主要记录一些自己遇到的一些实用的Python库&#xff0c;今日开文&#xff0c;后面会不断积累 关于Python内置知识的记录可点击 Python内置知识记录 random 作用&#xff1a;生成随机数 random.randint(a, b) 生成 [ a , b ] [a, b] [a,b] 范围内随机的整数random.unifo…