![cover](https://img-blog.csdnimg.cn/img_convert/a207abb8f4884e9e932676849d81856b.png)
yolov8学习笔记(一)网络结构
关于 yolo v8 模型的解析,主要包括了它的配置文件 yolov8.yaml 中 backbone、head、scales 等部分的详细解释,以及网络模型中的 Conv 和 Loss 层的解析。通过这篇笔记,读者可以了解 yolo v8 模型的结构和运作方式。
一、yolov8.yaml
YOLOv8详解 【网络结构+代码+实操】:
YOLOv8源码逐行解读(yolov8.yaml):
YOLOv8源码逐行解读(yolov8.yaml)(更新中)-CSDN博客
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](https://devpress.csdnimg.cn/79de2bf0b7994defa4242ef90d5513fa.jpg)
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)