windturbine_yolo/models/yolov5s_4ceng_BiFPN.yaml

74 lines
5.7 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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尺寸减半,则[64320320 ]
[-1, 1, Conv, [128, 3, 2]], #1 卷积层 通道变为128尺寸减半,则[128160160]
[-1, 3, C3, [128]], #2 C3 通道变为128尺寸不变,则[128160160],主要用于提取特征
[-1, 1, Conv, [256, 3, 2]], #3 卷积层 通道变为256尺寸减半,则[2568080]
[-1, 6, C3, [256]], #4 C3 通道变为253尺寸不变,则[2568080]主要用于提取特征
[-1, 1, Conv, [512, 3, 2]], #5 卷积层 通道变为512尺寸减半,则[5124040]
[-1, 9, C3, [512]], #6 C3
[-1, 1, Conv, [1024, 3, 2]], #7 卷积层 通道变为1024尺寸减半,则[5122020]
[-1, 3, C3, [1024]], #8 C3
[-1, 1, SPPF, [1024, 5]], #9 SPPF 将输入通过多个不同大小的MaxPool然后做进一步融合能在一定程度上解决目标多尺度问题
]
head:
#neck
#[5122020]
[[-1, 1, Conv, [512, 1, 1]], #10 卷积层 通道变为512尺寸不变,则[5122020]
[-1, 1, nn.Upsample, [None, 2, 'nearest']], #11 上采样,通道数不变,尺寸翻倍,则[5124040]
[[-1, 6], 1, BiFPN_Add2, [256, 256]], #12 Concat 特征融合,将上一层与第六层连接起来。通道翻倍,尺寸不变[10244040]
[-1, 3, C3, [512, False]], #13 C3不进行short cut 只改变通道数 [5124040]
[-1, 1, Conv, [256, 1, 1]], #14 卷积层 通道变为256尺寸不变,则[2564040]
[-1, 1, nn.Upsample, [None, 2, 'nearest']], #15 上采样,通道数不变,尺寸翻倍,则[2568080]
[[-1, 4], 1, BiFPN_Add2, [128, 128]], #16 Concat 特征融合将上一层与第4层连接起来。通道翻倍尺寸不变[5128080]
#自己加的
[-1, 3, C3, [256, False]], #17 C3 不进行short cut 只改变通道数 [2568080]
[-1, 1, Conv, [128, 1, 1]], #18 卷积层 通道变为128尺寸不变,则[1288080 新加
[-1, 1, nn.Upsample, [None, 2, 'nearest']], #19 上采样,通道数不变,尺寸翻倍,则[256160160] 新加
[[-1, 2], 1, BiFPN_Add2, [64, 64]], #20 Concat 特征融合将上一层与第2层连接起来。通道翻倍尺寸不变[512160160] 新加
#head
[-1, 3, C3, [128, False]], #21 C3 不进行short cut 只改变通道数 [128160160] 新加
[-1, 1, Conv, [256, 3, 2]], #22 卷积层 通道变为128尺寸减半,则[1288080] 新加
[[-1, 17, 4], 1, BiFPN_Add3, [128, 128]], #23 Concat 特征融合将上一层与第18层连接起来。通道翻倍尺寸不变[512160160] 新加
[-1, 3, C3, [256, False]], #24 C3 不进行short cut 只改变通道数 [256160160] 新加
[-1, 1, Conv, [512, 3, 2]], #25 卷积层 通道变为256尺寸减半,则[2564040]
[[-1, 13, 6], 1, BiFPN_Add3, [256, 256]], #26 Concat 特征融合将上一层与第14层连接起来。通道翻倍尺寸不变[512160160]
[-1, 3, C3, [512, False]], #27 C3 不进行short cut 只改变通道数 [5124040]
[-1, 1, Conv, [512, 3, 2]], #28 卷积层 通道变为512尺寸减半,则[5122020]
[[-1, 10], 1, BiFPN_Add2, [256, 256]], #29 特征融合将上一层与第10层连接起来。通道翻倍尺寸不变[10242020]
[-1, 3, C3, [1024, False]], #30 C3 不进行short cut 只改变通道数 [10272020]
[[21, 24, 27, 30], 1, Detect, [nc, anchors]], # 将21, 24, 27, 30传入检测头
]