yolov5代码解读-网络架构

前言

上一篇:yolov5代码解读-dataset
下一篇:yolov5代码解读-训练
代码已上传到github,数据集和权重文件已上传到百度网盘(链接在github里),如需下载请移步:https://github.com/scc-max/yolov5-scc

数据处理好之后,就来具体看看网络模型是怎么搭建的吧。

网络架构可视化

可视化工具

网络架构可视化工具netron的安装参考:

(1)netron

可以看我之前写的netron安装和使用文章
也可以直接下面的netron网址:
https://lutzroeder.github.io/netron/
点击后直接就可以打开本地模型可视化,比如yolov5s.pt。
在这里插入图片描述

(2)onnx

但是.pt比较简单,细节不够。这时可以再安装一个onnx工具,方法是终端输入:pip install onnx
之后要做的是将pt文件转换成onnx文件。
这个在yolov5中,已经有写好的脚本了,在models下的export.py中。
设置好参数运行以后,会生成一个onnx的文件
在这里插入图片描述

打开上面那个网页版的netron地址,然后load生成的onnx文件在这里插入图片描述

配置文件解读

打开yolov5s.yaml,
nc是类别数量,我做的是矿山提取,只有矿山和背景两个类别。
后面的depth_multiple和width_multiple就体现除了s,m,l,x的区别了。
depth_multiple是指模块走的深度。0.33就是深度的1/3, 也就是所有模块走的次数除以1/3次(最小保留1)。
width_multiple是卷积核的个数,原理同上。在这里插入图片描述

5m的yaml文件
在这里插入图片描述

5x
在这里插入图片描述

5l
在这里插入图片描述

总结规律就是l是1,往前的m,s深度依次减1/3, 卷积核个数减1/4,而x则是加。
红色这一列就是要压缩(膨胀)的参数,如果是5s,那深度(即该模块重复次数)为1的保持不变,3和9就被压缩成1和3了。
橙色的部分就是卷积核的个数了,也是要压缩(或膨胀)的。在这里插入图片描述

上面说了橙色框是卷积核个数,红色框是当前模块执行次数。
第一列,即全是-1的这一列,代表输入层,如果是-1就代表是上一层。而Focus这一列是模块的名字,卷积核个数后面分别是卷积核尺寸和降采样尺寸。在这里插入图片描述

head也是一样,只是连接更复杂了。
在这里插入图片描述
anchors是候选框,每一行是3个候选框,宽高各不相同,为了提取不同比例的物体,如车和行人,一共有3行,代表大小不同,为了提取尺寸不同的物体,对应的是不同的网格大小的head。
这几个候选框的参数都是可以改的,自己加也是可以的,当然原作者设置的这几个参数都是从数据集中按照一定算法提取出来的,更符合日常物体的通用尺寸。

YOLOv5是一种单阶段目标检测算法,它在YOLOv4的基础上添加了一些新的改进思路,从而大大提升了速度和精度。其中的主要改进思路包括对输入端的改进,在模型训练阶段提出了一些新的思路。 对于YOLOv5代码解读,我们可以从以下几个方面来理解: 1. 模型架构和配置:YOLOv5提供了不同模型对应的yml配置文件,例如yolov5l.yml和yolov5m.yml,这些文件定义了模型的架构、anchor(锚点)的设置、类别数以及模型的宽度和深度。在训练模型时,只需要修改类别数即可。要了解YOLOv5模型架构的设计和不同大小模型之间的区别,可以参考相关博客或文档,这些资料会提供详细而清晰的解释。 2. 训练代码解读:训练代码解读可以包括读取图片的标签和坐标,并进行错误检查。例如,每张图片对应的标签文件(txt文件)应该包含5列,第一列为对应的类别(0,1...),后四列为对应的坐标。如果标签文件的列数超过或不足5列,就会报错。此外,对于第一列的标签,它只能为正数,如果为负数也会报错。对于后四列的坐标,它们是相对于整张图的比值,所以它们应该小于1,如果大于1也会报错。如果没有标签文件或标签文件为空,对应的标签和坐标会被设置为空集。这样可以增加没有标签的数据作为负样本。 综上所述,通过对YOLOv5代码进行解读,我们可以了解其模型架构和配置以及训练代码中的一些细节,从而更好地理解和使用YOLOv5目标检测算法。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [YOLOV5+源码详细解读资源合集](https://download.csdn.net/download/Rocky006/87898393)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [yolov5 代码内容解析](https://blog.csdn.net/qq_40629612/article/details/124107843)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值