YOLOv8 : 网络结构

news/2024/7/10 1:21:17 标签: YOLO, 计算机视觉, 目标检测

一. 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.niftyadmin.cn/n/4949874.html

相关文章

3 Python的数据类型

概述 在上一节,我们介绍了Python的基础语法,包括:编码格式、标识符、关键字、注释、多行、空行、缩进、引号、输入输出、import、运算符、条件控制、循环等内容。Python是一种动态类型的编程语言,这意味着当你创建一个变量时&…

php base64转图片保存本地

调用函数 public function base64(){$img $this->request->param(img);$img data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEAkACQAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIy…

Java云原生框架Quarkus初探

Java云原生框架Quarkus初探 Quarkus 介绍 Quarkus 是一个云原生,容器优先的Java应用框架,它号称是超音速和亚原子的框架,主要特点是构建速度、启动速度快和占用资源少等特点。它为OpenJDK HotSpot和GraalVM量身定制, 根据Java库和…

8 种主流数据迁移工具技术选型

前言 最近有些小伙伴问我,ETL数据迁移工具该用哪些。 ETL(是Extract-Transform-Load的缩写,即数据抽取、转换、装载的过程),对于企业应用来说,我们经常会遇到各种数据的处理、转换、迁移的场景。 今天特地给大家汇总了一些目前…

Compose - 修饰符 Modifier

一、概念 四大使用场景: 修改外观(尺寸、样式、布局、行为)。添加额外信息(如无障碍标签)。添加交互功能(点击、滚动、拖拽、缩放)。处理用户输入。 1.1 为组合函数添加 Modifier 参数 任何一…

学校信息管理系统说明文档

目录 0学生信息管理系统体验教程. 4 0.0Student management异地打开方法:. 4 1. 管理系统设计需求分析. 6 1.1 需求介绍. 6 1.2功能需求. 6 1.2.1 学生信息录入. 6 1.2.2 学生信息查询. 6 1.2.3 权限管理. 6 1.2.4 添加学生信息验证. 6 2.功能介绍. 7 2.1…

图数据库_Neo4j_Centos7.9安装Neo4j社区版3.5.4_基于jdk1.8---Neo4j图数据库工作笔记0011

首先上传安装包,到opt/soft目录 然后看一下jdk安装的是什么版本的,因为在neo4j 4以后就必须要用jdk11 以上的版本,我这里还用着jdk1.8 所以 我这里用3.5.4的版本 关于下载地址: https://dist.neo4j.org/neo4j-community-3.5.4-unix.tar.gz 然后再去解压到/opt/module目录下 …

时序结构重要性加权图卷积网络用于时序知识图谱补全

目录 摘要部分 四元数 时间戳 时间信息对四元数的影响 知识图谱里的结构信息 时序注意模块 重要性加权的图卷积网络 引言部分 现有方法的不足 本文主要贡献 准备工作 问题定义 大部分方法的缺陷 本文方法 框架 时序注意模块 实体分类 带有注意力机制的双向长短…