前言
上一篇: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。
这几个候选框的参数都是可以改的,自己加也是可以的,当然原作者设置的这几个参数都是从数据集中按照一定算法提取出来的,更符合日常物体的通用尺寸。

最低0.47元/天 解锁文章
3720

被折叠的 条评论
为什么被折叠?



