一、yolov8.yaml

YOLOv8详解 【网络结构+代码+实操】:

YOLOv8详解 【网络结构+代码+实操】-CSDN博客文章浏览阅读10w+次,点赞559次,收藏2.9k次。YOLOv8 算法的核心特性和改动可以归结为如下:提供了一个全新的 SOTA 模型,包括 P5 640 和 P6 1280 分辨率的目标检测网络和基于 YOLACT 的实例分割模型。和 YOLOv5 一样,基于缩放系数也提供了 N/S/M/L/X 尺度的不同大小模型,用于满足不同场景需求Backbone骨干网络和 Neck 部分可能参考了 YOLOv7 ELAN 设计思想,将 YOLOv5 的C3结构换成了梯度流更丰富的C2f结构,并对不同尺度模型调整了不同的通道数。_yolov8https://blog.csdn.net/zyw2002/article/details/128732494

YOLOv8源码逐行解读(yolov8.yaml):

YOLOv8源码逐行解读(yolov8.yaml)(更新中)-CSDN博客

yolov8官方文档:

主页 -Ultralytics YOLOv8 文档

yolov8.yaml是一个用于目标检测的模型配置文件,使用了YOLOv8算法。

该文件定义了网络的结构、超参数、输入输出等信息。

nc指定了目标检测任务中要识别的物体类别数,

scales定义了不同规模的模型参数,

backbone定义了模型【主干网络结构】,

head定义了目标检测任务的【头部网络结构】,

最后通过Detect函数输出检测结果。

这个模型可以根据不同的scale参数选择不同大小的模型进行训练和预测。

1、backbone

骨干网络和 Neck 部分可能参考了 YOLOv7 ELAN 设计思想,将 YOLOv5 的 C3 结构换成了梯度流更丰富的 C2f 结构,并对不同尺度模型调整了不同的通道数。

  # [from, repeats, module, args] 

from本层的来源,也就是输入。-1表示将上层的输出作为本层的输入。

repeats本层的重复次数。

module本层的名称。

args本层的参数。

Backbone和Neck的具体变化

a) 第一个卷积层的 kernel 从 6x6 变成了 3x3

b) 所有的 C3 模块换成 C2f,结构如下所示,可以发现多了更多的跳层连接和额外的 Split 操作

(1)特征图(计算公式)

(2)9层操作——卷积、C2f、SPPF

(2)C2f 

去掉了 Neck 模块中的 2 个卷积连接层

 

Bottleneck

YOLOv8的C2F使用了Bottleneck单元,但需要注意的是,Darknet所引入的Bottleneck不同于ResNet的Bottleneck。

此处大家记住一点即可,Bottleneck可以大大减少参数,降低计算量。

(2)SPPF

暂无

2、head

(1)10~21层

(1)22层——detect层

[15, 18, 21]代表将第15、18、21层的输出(分别是80*80*256、40*40*512、20*20*1024)作为本层的输入。

nc是数据集的类别数。

3、scales

4、网络模型解析

(1)Conv

  • 功能: 标准的卷积
  • 参数:输入通道数(c1), 输出通道数(c2), 卷积核大小(k,默认是1), 步长(s,默认是1), 填充(p,默认为None), 组(g, 默认为1), 扩张率(d,默认为1), 是否采用激活函数(act ,默认为True, 且采用SiLU为激活函数)

(1)Loss

Loss 计算过程包括 2 个部分: 正负样本分配策略和 Loss 计算。

笔记下载

https://wwm.lanzout.com/isyZD1p3puyj
密码:hoab

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐