YOLOv8网络结构介绍

将按照YOLOv8目标检测任务、实例分割任务、关键点检测任务以及旋转目标检测任务的顺序来介绍,主要内容也是在目标检测任务中介绍,其他任务也只是Head层不相同。

1.YOLOv8_det网络结构

首先,YOLOv8网络分成了三部分,分别是主干网络、Neck层网络还有一个是Head层网络,下面将按照这三个顺序来介绍下YOLOv8的网络结构,先以YOLOv8l的网络架构来说明。

主干网络是对输入图片进行特征提取的,主干网络主要由CBS模块、C2f模块和SPPF模块构成,其中CBS模块表示Conv、BN和SILU,一般用来对输入图像或者特征图进行卷积,卷积的结果是分辨率下降和通道数增加,由上图可以看到,一共有5个CBS模块,输入图像分辨率从640*640变成了20*20,输入通道数从3变成了512。

C2f是设计用来深度提取特征的一个模块,其输出特征图和输入特征图的大小保持不变,但是在他内部会有多个分支,如下图所示,torch.chunk将(1,128,160,160)特征图分成了两部分,前半部分,即(1,:64,160,160)输出为第一个分支;后半部分,即(1,32:,160,160)除了作为输出的第二个分支外,还会经过n个bottleneck模块,每经过一个Bottleneck都会输出一个通道为64的特征图,所以最后concat得到的通道数为0.5*in_ch*(n+2),其中in_ch表示输入的通道数,即128,n为bottleneck的个数,当n为3时,concat得到的通道数为320。

SPPF模块这里就看一下就行了,和YOLOv5中的是一样的,并且也是输出特征图和输入特征图的大小保持不变,详细可以看下图的shape表示。经过主干网络,会有三个不同尺度的特征图会输出给下一部分的Neck层网络,分别是80*80、40*40以及20*20。

Neck层网络是用来对主干网络输出的特征图进行特征融合的,也就是把这三个不同的尺度提取到的特征通过上采样的方式进行Concat,经过两次上采样后输出第一个特征图(80*80)给Head层,然后通过CBS模块对特征图进行下采样输出剩下两个特征图(40*40和20*20)给Head层。详细可以看YOLOv8网络结构图。

Head层网络是根据类别数来设计生成特定的特征图,YOLOv8采用的是解耦头的方式来生成,解耦的意思就是说分别生成用来预测CLs和Box的特征图,比如输入尺度为(1,256,80,80)特征图P3,生成Box预测特征图的分支会通过两个CBS模块以及一个Cov2d生成(1,64,80,80)的特征图,生成Cls预测特征图的分支会通过两个CBS模块以及一个Cov2d生成(1,nc,80,80)的特征图,nc表示预测的类别。经过Head层会生成3个预测Box的特征图(1,64,80,80)、(1,64,40,40)和(1,64,20,20);以及生成3个预测CLs的特征图(1,nc,80,80)、(1,nc,40,40)和(1,nc,20,20)。详细可以看YOLOv8网络结构图。

此外这里再说一下YOLOv8共提供了4个不同的版本,分别为n/s/m/l/x,n是最小的版本,x是最大的版本。这里和YOLOv5有一点区别,每个版本有一个max_channels 来控制输出特征图的最大值,比如YOLOv8l中,输出的三个特征图中通道数最大不能超过max_channels*Width,即512*1.00=512,YOLOv8x中最大不能超过512*1.25=640。Depth是用来控制主干网络中C2f中bottleneck的个数的,比如YOLOv8l的depth为1,那么主干网络中的4个C2f的bottleneck个数分别为(3,6,6,3),YOLOv8n的depth为0.33,那么其个数分别为(1,2,2,1)。

还有就是主干网络中的C2f和Neck中的C2f不一样,区别在于是否有残差连接。

2.YOLOv8_seg网络结构

实例分割的backbone网络和Neck网络完全一致,只是Head层会有区别,区别有两点:第一点, 三个尺度的特征图在head层除了生成3个预测Box的特征图(1,64,80,80)、(1,64,40,40)和(1,64,20,20);以及3个预测CLs的特征图(1,nc,80,80)、(1,nc,40,40)和(1,nc,20,20);还会另外生成3个通道数均为32用来当成Mask系数的特征图mask_coefficients(1,32,80,80)、(1,32,40,40)和(1,32,20,20);第二,还会通过80*80特征图生成一个大小为(1,32,80,80)Prototype Mask特征图,作为原生分割的特征图。

先来了解下mask_coefficients分支,也就是上图中浅紫色区域的分支头,由图可知,三个尺度的分支头通道数都是32,这个是和Prototype分支的通道数是保持一致的,并且也是通过两个卷积组和一个卷积层生成的。

然后Prototype层的结构如下所示,通过一个上采样,将特征图由80*80分辨率上采样得到160*160尺度。为什么要选择80*80尺度特征图,因为80*80相比其他尺度特征图更接近原图尺寸,上采样后能有更好的分割效果。

相关推荐
从懒虫到爬虫7 天前
yolov8划线计数脚本-可用于统计人流车流
yolo·机器学习·目标跟踪·yolov8·车辆行人计数
图灵追慕者12 天前
yolov8训练文件夹文件目录介绍及讲解
yolo·yolov8·训练信息
从懒虫到爬虫20 天前
yolov8摔倒检测(包含数据集+训练好的模型)
yolo·目标检测·yolov8·摔倒检测系统
weixin_3981877520 天前
YOLO v5与YOLO v8框图比较
yolo·yolov8
叶绿体不忘呼吸1 个月前
基于深度学习YOLOv8\YOLOv5的骨科骨折诊断检测系统设计
深度学习·yolo·yolov5·yolov8·pyside6·骨折检测·骨科诊断
秋山丶雪绪1 个月前
YOLOv8 多种任务网络结构详细解析 | 目标检测、实例分割、人体关键点检测、图像分类
目标检测·计算机视觉·图像分类·yolov8·实例分割
fengbingchun1 个月前
YOLOv8 segment介绍
yolov8
叶绿体不忘呼吸1 个月前
基于深度学习YOLOv8\YOLOv5的花卉识别鲜花识别检测分类系统设计
深度学习·yolo·yolov5·yolov8·花卉识别·检测分类·鲜花检测
迪菲赫尔曼1 个月前
不怕YOLOv10高歌猛进,我有YOLOv8稳扎稳打
yolo·yolov8·nms·yolov10
Stara05111 个月前
基于YOLOv8+PySide6的快递分类管理系统
人工智能·python·yolov8·pyside6