yolo_standard_libray/yolov8n.yaml
2025-03-07 11:35:40 +08:00

47 lines
7.6 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.

# Ultralytics YOLO 🚀, AGPL-3.0 license
# YOLOv8 object detection model with P3-P5 outputs. For Usage examples see https://docs.ultralytics.com/tasks/detect
# Parameters
nc: 2 # 类别数目nc代表"number of classes",即模型用于检测的对象类别总数。 80表示该模型配置用于检测80种不同的对象。由于默认使用COCO数据集这里nc=80
scales: # 模型复合缩放常数,用于定义模型的不同尺寸和复杂度。例如 'model=yolov8n.yaml' 将调用带有 'n' 缩放的 yolov8n.yaml
# [depth, width, max_channels]
n: [0.33, 0.25, 1024] # YOLOv8n概览225层, 3157200参数, 3157184梯度, 8.9 GFLOPs
# s: [0.33, 0.50, 1024] # YOLOv8s概览225层, 11166560参数, 11166544梯度, 28.8 GFLOPs
# m: [0.67, 0.75, 768] # YOLOv8m概览295层, 25902640参数, 25902624梯度, 79.3 GFLOPs
# l: [1.00, 1.00, 512] # YOLOv8l概览365层, 43691520参数, 43691504梯度, 165.7 GFLOPs
# x: [1.00, 1.25, 512] # YOLOv8x概览365层, 68229648参数, 68229632梯度, 258.5 GFLOPs
# YOLOv8.0n backbone 骨干层
backbone:
# [from, repeats, module, args]
- [-1, 1, Conv, [64, 3, 2]] # 0-P1/2 第0层-1代表将上层的输出作为本层的输入。第0层的输入是640*640*3的图像。Conv代表卷积层相应的参数64代表输出通道数3代表卷积核大小k2代表stride步长。卷积后输出的特征图尺寸为320*320*64长宽为初始图片的1/2
- [-1, 1, Conv, [128, 3, 2]] # 1-P2/4 第1层本层和上一层是一样的操作128代表输出通道数3代表卷积核大小k2代表stride步长。卷积后输出的特征图尺寸为160*160*128长宽为初始图片的1/4
- [-1, 3, C2f, [128, True]] # 第2层本层是C2f模块3代表本层重复3次。128代表输出通道数True表示Bottleneck有shortcut。输出的特征图尺寸为160*160*128。
- [-1, 1, Conv, [256, 3, 2]] # 3-P3/8 第3层进行卷积操作256代表输出通道数3代表卷积核大小k2代表stride步长输出特征图尺寸为80*80*256卷积的参数都没变所以都是长宽变成原来的1/2和之前一样特征图的长宽已经变成输入图像的1/8。
- [-1, 6, C2f, [256, True]] # 第4层本层是C2f模块可以参考第2层的讲解。6代表本层重复6次。256代表输出通道数True表示Bottleneck有shortcut。经过这层之后特征图尺寸依旧是80*80*256。
- [-1, 1, Conv, [512, 3, 2]] # 5-P4/16 第5层进行卷积操作512代表输出通道数3代表卷积核大小k2代表stride步长输出特征图尺寸为40*40*512卷积的参数都没变所以都是长宽变成原来的1/2和之前一样特征图的长宽已经变成输入图像的1/16。
- [-1, 6, C2f, [512, True]] # 第6层本层是C2f模块可以参考第2层的讲解。6代表本层重复6次。512代表输出通道数True表示Bottleneck有shortcut。经过这层之后特征图尺寸依旧是40*40*512。
- [-1, 1, Conv, [1024, 3, 2]] # 7-P5/32 第7层进行卷积操作1024代表输出通道数3代表卷积核大小k2代表stride步长输出特征图尺寸为20*20*1024卷积的参数都没变所以都是长宽变成原来的1/2和之前一样特征图的长宽已经变成输入图像的1/32。
- [-1, 3, C2f, [1024, True]] #第8层本层是C2f模块可以参考第2层的讲解。3代表本层重复3次。1024代表输出通道数True表示Bottleneck有shortcut。经过这层之后特征图尺寸依旧是20*20*1024。
- [-1, 1, SPPF, [1024, 5]] # 9 第9层本层是快速空间金字塔池化层SPPF。1024代表输出通道数5代表池化核大小k。结合模块结构图和代码可以看出最后concat得到的特征图尺寸是20*20*512*4经过一次Conv得到20*20*1024。
# YOLOv8.0n head 头部层
head:
- [-1, 1, nn.Upsample, [None, 2, 'nearest']] # 第10层本层是上采样层。-1代表将上层的输出作为本层的输入。None代表上采样的size=None输出尺寸不指定。2代表scale_factor=2表示输出的尺寸是输入尺寸的2倍。mode=nearest代表使用的上采样算法为最近邻插值算法。经过这层之后特征图的长和宽变成原来的两倍通道数不变所以最终尺寸为40*40*1024。
- [[-1, 6], 1, Concat, [1]] # cat backbone P4 第11层本层是concat层[-1, 6]代表将上层和第6层的输出作为本层的输入。[1]代表concat拼接的维度是1。从上面的分析可知上层的输出尺寸是40*40*1024第6层的输出是40*40*512最终本层的输出尺寸为40*40*1536。
- [-1, 3, C2f, [512]] # 12 第12层本层是C2f模块可以参考第2层的讲解。3代表本层重复3次。512代表输出通道数。与Backbone中C2f不同的是此处的C2f的bottleneck模块的shortcut=False。
- [-1, 1, nn.Upsample, [None, 2, 'nearest']] # 第13层本层也是上采样层参考第10层。经过这层之后特征图的长和宽变成原来的两倍通道数不变所以最终尺寸为80*80*512。
- [[-1, 4], 1, Concat, [1]] # cat backbone P3 第14层本层是concat层[-1, 4]代表将上层和第4层的输出作为本层的输入。[1]代表concat拼接的维度是1。从上面的分析可知上层的输出尺寸是80*80*512第6层的输出是80*80*256最终本层的输出尺寸为80*80*768。
- [-1, 3, C2f, [256]] # 15 (P3/8-small) 第15层本层是C2f模块可以参考第2层的讲解。3代表本层重复3次。256代表输出通道数。经过这层之后特征图尺寸变为80*80*256特征图的长宽已经变成输入图像的1/8。
- [-1, 1, Conv, [256, 3, 2]] # 第16层进行卷积操作256代表输出通道数3代表卷积核大小k2代表stride步长输出特征图尺寸为40*40*256卷积的参数都没变所以都是长宽变成原来的1/2和之前一样
- [[-1, 12], 1, Concat, [1]] # cat head P4 第17层本层是concat层[-1, 12]代表将上层和第12层的输出作为本层的输入。[1]代表concat拼接的维度是1。从上面的分析可知上层的输出尺寸是40*40*256第12层的输出是40*40*512最终本层的输出尺寸为40*40*768。
- [-1, 3, C2f, [512]] # 18 (P4/16-medium) 第18层本层是C2f模块可以参考第2层的讲解。3代表本层重复3次。512代表输出通道数。经过这层之后特征图尺寸变为40*40*512特征图的长宽已经变成输入图像的1/16。
- [-1, 1, Conv, [512, 3, 2]] # 第19层进行卷积操作512代表输出通道数3代表卷积核大小k2代表stride步长输出特征图尺寸为20*20*512卷积的参数都没变所以都是长宽变成原来的1/2和之前一样
- [[-1, 9], 1, Concat, [1]] # cat head P5 第20层本层是concat层[-1, 9]代表将上层和第9层的输出作为本层的输入。[1]代表concat拼接的维度是1。从上面的分析可知上层的输出尺寸是20*20*512第9层的输出是20*20*1024最终本层的输出尺寸为20*20*1536。
- [-1, 3, C2f, [1024]] # 21 (P5/32-large) 第21层本层是C2f模块可以参考第2层的讲解。3代表本层重复3次。1024代表输出通道数。经过这层之后特征图尺寸变为20*20*1024特征图的长宽已经变成输入图像的1/32。
- [[15, 18, 21], 1, Detect, [nc]] # Detect(P3, P4, P5) 第20层本层是Detect层[15, 18, 21]代表将第15、18、21层的输出分别是80*80*256、40*40*512、20*20*1024作为本层的输入。nc是数据集的类别数。