88 lines
5.9 KiB
YAML
88 lines
5.9 KiB
YAML
# YOLOv5 🚀 by Ultralytics, GPL-3.0 license
|
||
|
||
# Parameters
|
||
nc: 10 # number of classes code种类,不需要修改,会根据样本集yaml里的code数量修改
|
||
depth_multiple: 0.33 # model depth multiple 模型深度,
|
||
#depth_multiple表示channel的缩放系数,就是将配置里面的backbone和head部分有关通道的设置,全部乘以该系数即可
|
||
width_multiple: 0.50 # layer channel multiple 模型宽度
|
||
#width_multiple表示BottleneckCSP模块的层缩放系数,
|
||
#将所有的BottleneckCSP模块的number系数乘上该参数就可以最终的层个数;
|
||
#如果希望大一点,就把这个数字改大一点,网络就会按比例变深、变宽;如果希望小一点,就把这个数字改小一点,网络就会按比例变浅、变窄
|
||
anchors:
|
||
- [4,5, 8,10, 22,18] # P2/4
|
||
- [10,13, 16,30, 33,23] # P3/8
|
||
- [30,61, 62,45, 59,119] # P4/16
|
||
- [116,90, 156,198, 373,326] # P5/32
|
||
|
||
#
|
||
# 尺度越大的 feature map 越靠前,相对原图的下采样率越小,感受野越小, 所以相对可以预测一些尺度比较小的物体(小目标),分配到的 anchors 越小。
|
||
# 尺度越小的 feature map 越靠后,相对原图的下采样率越大,感受野越大, 所以可以预测一些尺度比较大的物体(大目标),所以分配到的 anchors 越大。
|
||
# 即在小特征图(feature map)上检测大目标,中等大小的特征图上检测中等目标, 在大特征图上检测小目标。
|
||
# YOLOv5 v6.0 backbone
|
||
backbone:
|
||
# [from, number, module, args]
|
||
# 第一个参数 from :从哪一层获得输入,-1表示从上一层获得,[-1, 6]表示从上层和第6层两层获得。
|
||
# 第二个参数 number:表示有几个相同的模块,如果为9则表示有9个相同的模块。
|
||
# 第三个参数 module:模块的名称,这些模块写在common.py中。
|
||
# 第四个参数 args:类的初始化参数,用于解析作为 moudle 的传入参数,即[ch_out(输出通道), kernel(卷积核尺寸), stride(步长), padding(池化), groups][输出通道数量,卷积核尺寸,步长,padding],这里连ch_in都省去了,因为输入都是上层的输出(初始ch_in为3)
|
||
#假设输入图片的尺寸为 [3(输入通道),640(输入高),640(输入宽)]
|
||
[[-1, 1, Conv, [64, 6, 2, 2]], #0 卷积层(foucus) 通道变为64,尺寸减半,则[64,320,320 ]
|
||
[-1, 1, Conv, [128, 3, 2]], #1 卷积层 通道变为128,尺寸减半,则[128,160,160]
|
||
[-1, 3, C3, [128]], #2 C3 通道变为128,尺寸不变,则[128,160,160],主要用于提取特征
|
||
|
||
[-1, 1, Conv, [256, 3, 2]], #3 卷积层 通道变为256,尺寸减半,则[256,80,80]
|
||
[-1, 6, C3, [256]], #4 C3 通道变为253,尺寸不变,则[256,80,80]主要用于提取特征
|
||
|
||
[-1, 1, Conv, [512, 3, 2]], #5 卷积层 通道变为512,尺寸减半,则[512,40,40]
|
||
[-1, 9, C3, [512]], #6 C3
|
||
|
||
[-1, 1, Conv, [1024, 3, 2]], #7 卷积层 通道变为1024,尺寸减半,则[512,20,20]
|
||
[-1, 3, C3, [1024]], #8 C3
|
||
[-1, 1, SPPF, [1024, 5]], #9 SPPF 将输入通过多个不同大小的MaxPool,然后做进一步融合,能在一定程度上解决目标多尺度问题
|
||
]
|
||
head:
|
||
#neck
|
||
#[512,20,20]
|
||
[[-1, 1, Conv, [512, 1, 1]], #10 卷积层 通道变为512,尺寸不变,则[512,20,20]
|
||
[-1, 1, nn.Upsample, [None, 2, 'nearest']], #11 上采样,通道数不变,尺寸翻倍,则[512,40,40]
|
||
[[-1, 6], 1, Concat, [1]], #12 Concat 特征融合,将上一层与第六层连接起来。通道翻倍,尺寸不变[1024,40,40]
|
||
[-1, 3, C3, [512, False]], #13 C3,不进行short cut 只改变通道数 [512,40,40]
|
||
|
||
[-1, 1, CBAM, [512]], # 14 CBAM
|
||
|
||
[-1, 1, Conv, [256, 1, 1]], #15 卷积层 通道变为256,尺寸不变,则[256,40,40]
|
||
[-1, 1, nn.Upsample, [None, 2, 'nearest']], #16 上采样,通道数不变,尺寸翻倍,则[256,80,80]
|
||
[[-1, 4], 1, Concat, [1]], #17 Concat 特征融合,将上一层与第4层连接起来。通道翻倍,尺寸不变[512,80,80]
|
||
#自己加的
|
||
[-1, 3, C3, [256, False]], #18 C3 不进行short cut 只改变通道数 [256,80,80]
|
||
|
||
[-1, 1, CBAM, [256]], # 19 CBAM
|
||
|
||
[-1, 1, Conv, [128, 1, 1]], #20 卷积层 通道变为128,尺寸不变,则[128,80,80 新加
|
||
[-1, 1, nn.Upsample, [None, 2, 'nearest']], #21 上采样,通道数不变,尺寸翻倍,则[256,160,160] 新加
|
||
[[-1, 2], 1, Concat, [1]], #22 Concat 特征融合,将上一层与第2层连接起来。通道翻倍,尺寸不变[512,160,160] 新加
|
||
#head
|
||
[-1, 3, C3, [128, False]], #23 C3 不进行short cut 只改变通道数 [128,160,160] 新加
|
||
|
||
[-1, 1, CBAM, [128]], # 24 CBAM
|
||
|
||
[-1, 1, Conv, [128, 3, 2]], #25 卷积层 通道变为128,尺寸减半,则[128,80,80] 新加
|
||
[[-1, 20], 1, Concat, [1]], #26 Concat 特征融合,将上一层与第18层连接起来。通道翻倍,尺寸不变[512,160,160] 新加
|
||
[-1, 3, C3, [256, False]], #27 C3 不进行short cut 只改变通道数 [256,160,160] 新加
|
||
|
||
[-1, 1, CBAM, [256]], # 28 CBAM
|
||
|
||
[-1, 1, Conv, [256, 3, 2]], #29 卷积层 通道变为256,尺寸减半,则[256,40,40]
|
||
[[-1, 15], 1, Concat, [1]], #30 Concat 特征融合,将上一层与第14层连接起来。通道翻倍,尺寸不变[512,160,160]
|
||
|
||
[-1, 3, C3, [512, False]], #31 C3 不进行short cut 只改变通道数 [512,40,40]
|
||
|
||
[-1, 1, CBAM, [512]], # 32 CBAM
|
||
|
||
[-1, 1, Conv, [512, 3, 2]], #33 卷积层 通道变为512,尺寸减半,则[512,20,20]
|
||
[[-1, 10], 1, Concat, [1]], #34 特征融合,将上一层与第10层连接起来。通道翻倍,尺寸不变[1024,20,20]
|
||
[-1, 3, C3, [1024, False]], #35 C3 不进行short cut 只改变通道数 [1027,20,20]
|
||
[[23, 27, 31, 35], 1, Detect, [nc, anchors]], # 将21, 24, 27, 30传入检测头
|
||
]
|
||
|