物体检测-系列教程18:YOLOV5 源码解析8 (配置文件:yolov5s.yaml)

😎😎😎物体检测-系列教程 总目录

有任何问题欢迎在下面留言
本篇文章的代码运行界面均在Pycharm中进行
本篇文章配套的代码资源已经上传
点我下载源码

12、配置文件解读

yolov3的配置文件真的十分复杂,光用鼠标翻完都要好久,竟然接近800行,而yolov5s却不到50行

在models文件夹中,有各个预训练的模型的配置文件,以5s模型的配置文件举例
# parameters
nc: 80  # number of classes
depth_multiple: 0.33  # model depth multiple
width_multiple: 0.50  # layer channel multiple

# anchors
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 backbone
backbone:
  # [from, number, module, args]
  [[-1, 1, Focus, [64, 3]],  # 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, 9, C3, [256]],
   [-1, 1, Conv, [512, 3, 2]],  # 5-P4/16
   [-1, 9, C3, [512]],
   [-1, 1, Conv, [1024, 3, 2]],  # 7-P5/32
   [-1, 1, SPP, [1024, [5, 9, 13]]],
   [-1, 3, C3, [1024, False]],  # 9
  ]

# YOLOv5 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)
  ]
  1. 首先看在parameters中的depth_multiple: 0.33,在backbone、head中的每一行第二个数字有1、3、9等数字,如果是1表示这里的层重复一次,如果不是1表示这里将重复 0.33 ∗ 3 = 1 0.33*3=1 0.333=1 0.33 ∗ 9 = 3 0.33*9=3 0.339=3次,在5x、5l、5m等更大的模型中depth_multiple的值也会更大一些
  2. 在parameters中的width_multiple: 0.50,在backbone、head中的每一行第3个数字有64、128、…、1024等数字,表示这里的卷积核的个数为 0.50 ∗ 64 = 32 0.50*64=32 0.5064=32 0.50 ∗ 128 = 64 0.50*128=64 0.50128=64,也就是输出通道数
  3. 在yolov5的预训练模型中,l、m、s、x这几个版本的配置参数,除了depth_multiple和width_multiple这两个参数不一样,其他都是完全一样的,也就是说,这几个模型大小不一样仅仅改这两个参数就可以了
  4. anchors参数,表示的是预选框的参数,即有9组不同尺寸的预选框参数,如 10 ∗ 13 10*13 1013 16 ∗ 30 16*30 1630 33 ∗ 23 33*23 3323
  5. backbone就是特征提取模块, [from, number, module, args],from表示当前这层的输入,-1则表示从上一层的结果直接输入到这层中;number在前面有过解释,就是这一层要重复几次;module表示这一层的模块或操作类型,比如Conv、C3等;args 是传递给该模块的参数列表,具体参数根据模块类型而定
  6. head就是网络输出和预测模块,每个参数代表的意义和backbone一致,在head中的from有时候存在两个参数

在最后的detect中,在17、20、23层的卷积3个输出中,这3个输出分别是对不同大小物体的检测

  • 19
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

机器学习杨卓越

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值