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

news2024/12/28 17:40:41

🍨 本文为🔗365天深度学习训练营 中的学习记录博客
🍖 原作者:K同学啊|接辅导、项目定制
● 难度:夯实基础⭐⭐
● 语言:Python3、Pytorch3
● 时间:5月8日-5月12日
🍺要求:
本周任务:将yolov5s网络模型中第4层的C32修改为C31,第6层的C33修改为C32。

目录

  • 一、参数配置
  • 二、Anchors配置
  • 三、backbone
  • 四、Head

一、参数配置

加粗样式

# YOLOv5 🚀 by Ultralytics, GPL-3.0 license

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

在yolov5s.yaml中,depth_multiple和width_multiple是非常重要的参数,yolov5相比于yolov4,在模型方面最大的特点是灵活,源于其引入了depth_multiple和width_multiple这两个系数,根据对它们值的大小设定,来得到yolov5不同大小模型:

yolov5s: 
    depth_multiple: 0.33
    width_multiple: 0.50
yolov5m: 
    depth_multiple: 0.67
    width_multiple: 0.75
yolov5l: 
    depth_multiple: 1.0
    width_multiple: 1.0

depth_multiple表示channel的缩放系数,就是将配置里面的backbone和head部分有关通道的设置,全部乘以该系数即可;

而width_multiple表示BottleneckCSP模块的层缩放系数,将所有的BottleneckCSP模块的number系数乘上该参数就可以最终的层个数;

可以发现通过这两个参数就可以实现不同大小不同复杂度的模型设计,因此yolov5比yolov4更加灵活;

二、Anchors配置

yolov5中增加了自适应锚定框(Auto Learning Bounding Box Anchors),而其他yolo系列是没有的。

anchors:
  - [10,13, 16,30, 33,23]  # P3/8
  - [30,61, 62,45, 59,119]  # P4/16
  - [116,90, 156,198, 373,326]  # P5/32

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

规则:

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

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

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

三、backbone

backbone:
  # [from, number, module, args]
  [[-1, 1, Conv, [64, 6, 2, 2]],  # 0-P1/2
   [-1, 1, Conv, [128, 3, 2]],  # 1-P2/4
   [-1, 3, C3, [128]],
   [-1, 1, Conv, [256, 3, 2]],  # 3-P3/8
   [-1, 3, C3, [256]],
   [-1, 1, Conv, [512, 3, 2]],  # 5-P4/16
   [-1, 6, C3, [512]],
   [-1, 1, Conv, [1024, 3, 2]],  # 7-P5/32
   [-1, 3, C3, [1024]],
   [-1, 1, SPPF, [1024, 5]],  # 9
  ]

这是yolov5s的backbone,可以看到每一个模块算一行,每行都由四个参数构成。分别是:
·from:表示当前模块的输入来自那一层的输出,-1表示来自上一层的输出。
·number:表示当前模块的理论重复次数,实际的重复次数还要由上面的参数depth_multiple共同决定,决定网络模型的深度。
·module:模块类名,通过这个类名去common.py中寻找相应的类,进行模块化的搭建网络。
·args:是一个1ist,模块搭建所需参数,channe1,kernel_size,stride,padding,bias等,会在网络搭建过程中根据不同层进行改变。

四、Head

# YOLOv5 v6.0 head
head:
  [[-1, 1, Conv, [512, 1, 1]],
   [-1, 1, nn.Upsample, [None, 2, 'nearest']],
   [[-1, 6], 1, Concat, [1]],  # cat backbone P4
   [-1, 3, C3, [512, False]],  # 13
 
   [-1, 1, Conv, [256, 1, 1]],
   [-1, 1, nn.Upsample, [None, 2, 'nearest']],
   [[-1, 4], 1, Concat, [1]],  # cat backbone P3
   [-1, 3, C3, [256, False]],  # 17 (P3/8-small)
 
   [-1, 1, Conv, [256, 3, 2]],
   [[-1, 14], 1, Concat, [1]],  # cat head P4
   [-1, 3, C3, [512, False]],  # 20 (P4/16-medium)
 
   [-1, 1, Conv, [512, 3, 2]],
   [[-1, 10], 1, Concat, [1]],  # cat head P5
   [-1, 3, C3, [1024, False]],  # 23 (P5/32-large)
 
   [[17, 20, 23], 1, Detect, [nc, anchors]],  # Detect(P3, P4, P5)
  ]

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

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

相关文章

电脑永久删除文件怎么找回来?分享一种数据恢复方法

电脑对于日常生活和工作都起着重要作用,但是在我们日常办公中,有时会误删除一些文档,甚至永久删除,当我们想找回的时候却手足无措,不知道该怎么办。同时在很多用户的观念里,当我们无法从回收站恢复时&#…

Openai+Coursera: ChatGPT Prompt Engineering(一)

想和大家分享一下最近学习的Coursera和openai联合打造ChatGPT Prompt Engineering在线课程,下面是通过API来访问ChatGPT的主要代码: import openaiopenai.api_key XXXXXXXXXdef get_completion(prompt, model"gpt-3.5-turbo"):messages [{&…

【OpenCV】学习课-图像裁剪与拼接(2)!

1. 图像的裁剪 cv2.selectROI() ###可以通过鼠标选择感兴趣的矩形区域(ROI) import cv2img cv2.imread("xxx.png", flags1) # flags1 读取彩色图像(BGR)roi cv2.selectROI(img, showCrosshairTrue, fromCenterFalse) xmin, ymin, w, h…

2022年平均工资出炉,IT行业又是第一

根据5月9日国家统计局最新资料显示,2022年,全国城镇非私营单位就业人员年平均工资为114029元,比上年增长6.7%,扣除通胀后实际增长4.6%。其中,行业间的差距相当明显。根据资料显示,2022年无论是在私营单位还…

ESP8266(1):搭建Linux环境ESP8266_RTOS_SDK,ESP8266使用GPIO控制继电器

0)准备工作,之前一直对esp8266不了解,现在想着给鱼缸加个定时打氧的程序,控制泵的工作。所以购买了一个esp8266 Relay,自己摸索写个简单程序。让泵工作一段时间,再休眠一段时间。 1)宿主机Ubuntu 20.04.5 …

Vue 项目利用 HBuilderX 打包 APP 流程

想要将 Vue 打包成 App,要借助一些插件工具,例如:Electron、Cordova 等,或者直接利用开发工具,例如:Android Studio、HBuilderX 等。本文的目的是带大家通过 HBuilder 开发工具对 Vue 项目进行打包。 一、…

MySQL-函数

1.什么是函数 函数在计算机语言的使用中贯穿始终,函数的作用是什么呢?它可以把我们经常使用的代码封装起来, 需要的时候直接调用即可。这样既 提高了代码效率 ,又 提高了可维护性 。在 SQL 中我们也可以使用函数 对检索出来的数据…

7.设计模式之责任链模式

前言 责任链,即将能够处理同一类请求的对象连成一条链,所提交的请求沿着链传递, 链上的对象逐个判断是否有能力处理该请求,如果能则处理,如果不能则传递给链上的下一个对象。为了避免请求发送者与多个请求处理者耦合在…

git如何将本地分支推送到远程(远程上没有该分支)

Author: wencoo Blog:https://wencoo.blog.csdn.net/ Date: 12/05/2023 Details:文章目录 正文 或 背景7.如果远程新建了一个分支,本地没有该分支。8.如果本地新建了一个分支 branch_name,但是在远程没有。报错解决 参考打赏 正文 或 背景 本…

Java8之Stream操作

Java8之Stream操作 stream干啥用的?创建流中间操作终结操作好文推荐----接口优化思想 stream干啥用的? Stream 就是操作数据用的。使用起来很方便 创建流 → 中间操作 → 终结操作 Stream的操作可以分为两大类:中间操作、终结操作 中间操作可…

【项目源码】采用UWB技术开发的定位系统源码,室内定位系统源码

UWB技术定位系统源码,高精度人员定位系统源码,智慧工厂人员定位系统源码,室内定位系统源码 技术架构:单体服务 硬件(UWB定位基站、卡牌) 开发语言:java 开发工具:idea 、VS Code…

字节小组长薪资被应届生员工倒挂7K,不把老员工当人?

一位字节跳动的小管理爆出,无意中看到了整个部门薪资,本以为自己算比较高的,但看完之后整个人都傻眼了。小组长的职位月薪28K,而手下组员却是35K,当天晚上抽了一包烟也没想明白是为什么。 楼主表示,自己是字…

基于java的闲置物品交易系统的设计与实现

项目描述 临近学期结束,还是毕业设计,你还在做java程序网络编程,期末作业,老师的作业要求觉得大了吗?不知道毕业设计该怎么办?网页功能的数量是否太多?没有合适的类型或系统?等等。这里根据你想解决的问题,今天给…

YOLOv5改进系列(4)——添加ECA注意力机制

【YOLOv5改进系列】前期回顾: YOLOv5改进系列(0)——重要性能指标与训练结果评价及分析 YOLOv5改进系列(1)——添加SE注意力机制 YOLOv5改进系列(2)——添加CBAM注意力机制

T265录制的rosbag拆包:拆IMU序列和图像序列方法以及如何制作双目euroc、双目tum数据集

目录 1.录制bag包 2.左右目图像的拆解 3.拆IMU数据 4.如何制作eruoc与tum数据集 4.1 eruoc数据集格式 4.2 对齐时间戳 4.3 编写imu.csv文件 4.4 生成索引文件 4.一个脚本完成拆包 1.录制bag包 这里推荐我的同学的博客,大家可以参考这篇博客录制T265的ros包并…

移动互联网市场是不需要Android 开发了吗?

就近有不少朋友在吐槽:如今Android工作真的难找!从年初找到了现在,是市场不需要Android 开发人才了,人都迷茫了,是不是应该考虑转行了? 其实这种情况往年也是有的,但是今年显得的更严重一些。我…

【el-select】多选的简单用法

即使element用了很久,还是会有新的东西没用过 el-select的多选和日期组件有范围的el-date-picker很相似,都是绑定数组,然后给需要的字段再赋值 加上multiple属性即可,collapse-tags看自己需不需要 这个时候v-model绑定的是数组 …

【C++初阶】C++模版(初阶)

文章目录 前言泛型编程函数模版函数模板概念函数模板格式函数模板的原理函数模板的实例化1.隐式实例化2.显式实例化 函数模版的匹配规则 类模版类模板的定义格式类模板的实例化 总结 前言 C的模版也是相较于C语言更有优势的地方,正是有了模版,才让C真正…

vue-admin-template 后台模版初始化及问题汇总

参考:https://segmentfault.com/a/1190000023185109?sortvotes 问题一:Unsupported engine 后来经过分析,发现,element-ui 的版本依赖锁定是在一个叫做package-locak.json 中,并且找到了相关配置。 package-lock.js…

C语言文件:数据文件a.txt中保存了若干个学生的学号、姓名和成绩。请编程读出显示文件内容并分类统计各等级人数,最后显示统计结果。

一、作者想先说一点废话(狗头表情) 想必经常看我博客的小伙伴们已经发现我最近的博客风格和以往有些不同。以往的博客都是“一本正经不敢胡来”,但近段时间,文章风格却变得“废话连篇放荡不羁”,究竟是为什么呢&#…