第Y3周:yolov5s.yaml文件解读

目录

前言:

参数配置:

 anchors配置:

 backbone:

head:

 模型整体:

总结:


前言:

        YOLOv5配置了4种不同大小的网络模型,分别是YOLOv5s、YOLOv5m、YOLOv5l、YOLOv5x,其中YOLOv5s是网络深度和宽度最小但检测速度最快的模型,其他3中模型都是在YOLOv5s的基础上不断加深、加宽网络使得网络规模扩大,在增强模型检测性能的同时增加了计算资源和速度消耗。出于对检测精度、模型大小、检测速度的综合考量,本文选择YOLOv5s作为研究对象进行介绍。

        ./models/yolov5s.yaml文件是YOLOv5s网络结构的定义文件,如果你想改进算法的网络结构,需先修改该文件中的相关参数,然后再修改./models/common.py与./models/yolo.py中的相关代码。

  • 📌本周任务:将yolov5s网络模型中第4层的C32修改为C31第6层的C33修改我C32
  • 💫任务提示:仅需修改./models/yolov5s.yaml文件

 yolov5s.yaml主要由四部分组成:参数配置、anchors配置、backbone和head。

参数配置:

  • nc: 数据集类别数

  • depth_multiple: 模型层数因子,用于控制层的重复次数(Bottleneck个数)。通过深度参数depth gain 在搭建每一层的时候,子模块数量=int(number*depth),这样就起到了一个动态调整模型深度的作用。

  • width_multuple: 模型通道数因子, 控制Conv通道channel个数(卷积核数量)。在模型中间层的每一层卷积核=int(number*width),起到一个动态调整模型的作用。

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

 anchors配置:

 目标3组:[10, 13], [16, 30], [33, 23]
 目标3组:[30, 61], [62, 45], [59,119]
 目标3组:[116,90], [156,198], [373,326]

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

  • 尺度越大的feature map越靠前,相对原图的下采样率越小,感受野越小,则相对可以预测一些尺度比较小的物体,所有分配到定anchor越小;
  • 尺度越小的feature map越靠后,相对原图的下采样率越大,感受野越大,则相对可以预测一些尺寸比较大的物体,所有分配到的anchor也越大。
    即可以在小特征图(feature map)上检测大目标,也可以在大特征图上检测小目标。
    YOLOv5根据工程经验得到了这么3组anchors(9对尺寸参数),对于很多数据集而言已经很合适了。但也不能保证这3组anchor就适用于所有数据集,所以YOLOv5还有一个anchor进化的策略:使用k-means和遗传进化算法,找到与当前数据集最吻合的anchors。

k-means:对当前数据集中所有的标注信息中的目标框的尺寸做聚类,输出9对anchors的值。

 backbone:

这里我已经对yolov5s的网络模型做出了修改。

这是YOLOv5s的backbone,可以看到每一行是一个模块,每行都是由四个参数构成,分别是:

  • from: 表示当前模块的输入来自哪一层的输出,-1表示来自上一层的输出,层编号由0开始计数。
  • number: 表示当前模块的理论重复次数,实际的重复次数还要由上面的参数depth_multiple共同决定,该参数影响整体网络模型的深度。
  • module: 模块类名(也可以理解为模块的功能),通过这个类名在common.py中寻找相应的类,进行模块化的网络搭建。
  • args: 是一个list,对应到模块类搭建时需要的参数,主要是channel、kernel_size、stride、padding、bias等。

head:

这是YOLOv5s的head,数据格式和backbone一样。

 模型整体:

        在models文件夹下运行yolo.py文件后,我们就可以看到网络模型的输出。从下图就可以看到我们对模型做出的修改。

总结:

        在完成本次任务中我了解了yolov5s.yaml文件的各个部分的结构,通过对文件中参数的修改,让我对各部分的参数的作用也更加深刻。

  • 18
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值