yolov5之yaml文件解析

前言

学了yolov5很长时间了,但是突然看yaml文件还有一些不懂。现在弄明白了,写一篇记录一下,也跟大家分享一下。非常享受知识传播的快乐,虽然我写的不咋滴哈哈😊
从三个部分对yolov5s.yaml文件进行解读,分别是parametersbackbonehead这三部分。

Parameters

nc: 6  # number of classes
depth_multiple: 0.33  # model depth multiple #控制模型的深度
width_multiple: 0.50  # layer channel multiple #控制Conv的通道数
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

nc:是你数据集里面被检测的物体类别数。(这里我的数据集中物体类别是6)
depth_multiple:控制网络模型的深度(模块数和层数),相当于整体缩放因子。比如depth_multiple = 0.5,则模型所以的模块数和层数都减半。
width_multiple:控制卷积层的通道数,相当于通道数缩放因子。同理,width_multiple=0.5,则模型中的所有卷积层通道数都将减半。
anchors: 设定的初始锚框的大小,分别对应大、中、小目标,三个不同大小的特征图。每一行有六个数字,每两个数字表示一个锚框的宽和高。
注: depth_multiple和width_multiple可以用于控制模型大小和速度之间的平衡。较大的值会增加模型的大小和精度,但会增加计算量和推理时间。较小的值会减小模型的大小和精度,但会减少计算量和推理时间。

Backbone

  [[-1, 1, Conv, [64, 6, 2, 2]],  # 0-P1/2
   [-1, 1, Conv, [128, 3, 2]],  # 1-P2/4 #128个卷积核 3*3的卷积核 stride=2
   [-1, 3, C3, [128]],
   [-1, 1, Conv, [256, 3, 2]],  # 3-P3/8
   [-1, 6, 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, 3, C3, [1024]],
   [-1, 1, SPPF, [1024, 5]],  # 9
  ]

-1 : 表示该层的输入尺寸,-1表示该层的输入是根据上一层输出来计算的
1 : 表示该层的输出通道数,即卷积核的数量。举个例子,比如第三行的 [-1, 3, C3, [128]],其中的3 表示有3个C3结构,但是体现在网络模型中并不是3个。而是,3*depth_multiple
Conv : 表示该层使用的是卷积操作
C3 :表示该层是C3的模块,SPFF同理
[128, 3, 2] :是一个包含3个参数的列表,表示卷积核数量、卷积核大小、步长
具体如下:

  • 128 :表示卷积核的数量或通道数
  • 3 : 表述卷积核的大小或卷积窗口大小,这里是3*3的卷积核
  • 2 : 表示卷积的步长,即卷积核每次移动的像素数
  • 除了这些,还可以设置以下参数,padding激活函数权重初始化权重衰减批量归一化

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)
  ]

head部分和backbone很多重复了,这里就介绍一些没有重复的。
Concat :特征图的拼接操作,比如,[[-1, 6], 1, Concat, [1]],意思即为,该层和第6层的输出拼接起来。
nn.Upsample :上采样操作,可以使输入数据的宽和高扩大相应的倍数
Detect :检测头中的输出层,用于输出目标框和类别。
[[17, 20, 23], 1, Detect, [nc, anchors]] :表示在把17层、20层、23层作为检测头的输出层

总结

关于yolov5s.yaml文件的解析基本写完了,我觉得写的还是比较全面的🔋

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值