YOLOv8 : 网络结构

news/2025/1/13 8:28:04/

一. YOLOv8网络结构

1. Backbone

YOLOv8的Backbone同样参考了CSPDarkNet-53网络,我们可以称之为CSPDarkNet结构吧,与YOLOv5不同的是,YOLOv8使用C2f(CSPLayer_2Conv)代替了C3模块(如果你比较熟悉YOLOv5的网络结构,那YOLOv8的网络结构理解起来就easy了)。

如图1所示为YOLOv8网络结构图(引用自MMYOLO),对比图2的YOLOv5结构图,可以看到基本的架构是类似的。

这里值得注意的是,很多博文中写到YOLOv8使用了CSPDarkNet53作为backbone,当然是可以用的,但是官方代码中明显不是套用的CSPDarkNet53网络结构。事实上,YOLOv5的主干也并非是CSPDarkNet53网络。

图1 YOLOv8网络架构

图2 YOLOv5网络架构

2. Neck

YOLOv8的Neck使用的也是类似于YOLOv5的PAN-FPN,称作双流FPN,高效,速度快。

3. Head

与之前的YOLOv6,YOLOX类似,使用了Decoupled Head,YOLOv3、YOLOv4、YOLOv5均使用Coupled Head。

YOLOv8也使用3个输出分支,但是每一个输出分支又分为2部分,分别来分类和回归边框(参照图1的Decoupled Head)。

二. 细说Backbone

前面讲到,YOLOv8的Backbone类似于YOLOv5的Backbone,不同点是将C3换成了C2F,以及将第一个Convolution层设置为kernel size等于3,stride为2(YOLOv5的Kernel Size为6,padding为2)。

1. C2F与C3对比

那么C2F与C3单元相比,有什么优势呢?我们先上各自的网络结构图。如图3为C3结构图,图4为C2F结构图。

图4中,每一个Bottleneck的输入Tensor的Channel都只有上一级的0.5倍,因此计算量明显降低。从另一方面讲,梯度流的增加,也能够明显提升收敛速度和收敛效果。

图3 C3单元

图4 C2F单元

2. Bottleneck

YOLOv8的C2F使用了Bottleneck单元,但需要注意的是,Darknet所引入的Bottleneck不同于ResNet的Bottleneck。如图5和图6分别为Darknet的Bottleneck和ResNet的Bottelneck。

由图5和图6可以看出,Darknet的Bottleneck单元并未使用最后的1*1卷积进行通道的恢复,而是直接在中间的3*3卷积中进行了恢复。

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

图5 Darknet Bottleneck

图6 ResNet Bottleneck

三. Neck

YOLOv8的Neck采用了PANet结构。如图7为网络局部图。

由图7可以看出,Backbone最后经过了一个SPPF(SPP Fast,图示Layer9),之后H和W已经经过了32被的下采样。对应的,Layer4经过了8被下采样,Layer6经过了16背的下采样。设定输入为640*640,得到Layer4、Layer6、Layer9的分辨率分别为80*80、40*40和20*20。

Layer4、Layer6、Layer9作为PANnet结构的输入,经过上采样,通道融合,最终将PANet的三个输出分支送入到Detect head中进行Loss的计算或结果解算。

与FPN(单向,自上而下)不同,PANet是一个双向通路网络。与FPN相比,PANet引入了自下向上的路径,使得底层信息更容易传递到高层顶部(红色曲线标注路线)。

图7 YOLOv8 Neck(PANet)

四. Detect Head

YOLOv8采用了类似于YOLOX的Decoupled Head,将回归分支和预测分支进行分离。Decoupled Head的有点可以参考YOLOX的论文中提到的,收敛更快,效果更好。

需要特别提及的是,YOLOv8的Detect Head中,针对回归分支使用了DFL策略,之前的目标检测网络将回归坐标作为一个确定性单值进行预测,DFL将坐标转变成了一个分布。

DFL理论主要用来解决边界模糊的问题。详细了解可以参考论文“Generalized Focal Loss: Learning Qualified and Distributed Bounding Boxes for Dense Object Detection”。


http://www.ppmy.cn/news/1033640.html

相关文章

部署WMS仓储管理系统前要知道哪些关键点

随着物流行业的快速发展,WMS仓储管理系统解决方案已成为企业仓储管理的重要工具。然而,在部署WMS仓储管理系统之前,企业需要了解一些关键点,以确保系统的成功实施和高效运行。本文将介绍部署WMS前需要知道的关键点。 1、明确目标与…

企业数据库遭到360后缀勒索病毒攻击,360勒索病毒解密

在当今数字化时代,企业的数据安全变得尤为重要。随着数字化办公的推进,企业的生产运行效率得到了很大提升,然而针对网络安全威胁,企业也开始慢慢引起重视。近期,我们收到很多企业的求助,企业的服务器遭到了…

vueRouter回顾

关于vueRouter的两种路由模式 “history” 模式使用正常的 URL 格式,例如 https://example.com/path。“hash” 模式将路由信息添加到 URL 的哈希部分(#)后面,例如 https://example.com/#/path。 1、history模式:没有…

8.15号经典模型复习笔记

文章目录 Deep Residual Learning for Image Recognition(CVPR2016)方法 Densely Connected Convolutional Networks(CVPR2017)方法 EfficientNet: Rethinking Model Scaling for Convolutional Neural Networks(ICML2019)方法 Re…

echarts多条折线图

代码 <template><div><!-- 折线图 --><div id"average-score1" class"risk-percent" /></div> </template><script> import * as echarts from "echarts";export default {name: "StrategicRis…

Visual Studio 与QT ui文件

对.ui文件鼠标右键&#xff0c;然后单击 Open with…在弹出的窗口中&#xff0c;选中左侧的 Qt Designer&#xff0c;然后单击右侧的 Add 按钮&#xff0c;随后会弹出一个窗口&#xff0c;在 Program: 输入框中输入 Qt Designer 的路径&#xff0c;最后单击 OK找到 Qt Designer…

字节春招JAVA后端开发面试总结

春招的字节二面面经,岗位是后端开发。 一个编程语言都没问,都是问网络+项目+mysql+redis。 问题记录 使用消息中间件降低消息持久化的压力是怎么做的,为什么可以降低? 在突发大量消息的情况下可以做到流量削峰,在消费者消费能力达不到生产者产生消息的速度时也能够正常…

分割字符串的最大得分

题目&#xff1a; 给你一个由若干 0 和 1 组成的字符串 s &#xff0c;请你计算并返回将该字符串分割成两个 非空 子字符串&#xff08;即 左 子字符串和 右 子字符串&#xff09;所能获得的最大得分。 「分割字符串的得分」为 左 子字符串中 0 的数量加上 右 子字符串中 1 的…