YOLOv8架构详解

铁佛  论坛元老 | 2024-6-15 00:26:36 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 1823|帖子 1823|积分 5469

在视觉深度学习中,通常将模子分为 2~3 个组成部门:backbone、neck(可选) 和 head。


  • Backbone(主干网络)负责从输入图像中提取特性,将图像转化为具有丰富语义信息的特性表示。
  • Neck(颈部,毗连部)是一个中心层,用于对来自 backbone 的特性进行融合,以提升模子的性能。
  • Head(任务头)是模子的最后一层,其结构会根据不同的任务而有所不同。比方,在图像分类任务中,我们通常会使用 softmax 分类器作为 Head,而在目标检测任务中,我们则可能会使用边界框回归器和分类器作为 Head。
YOLOv8 架构图

关于下面经典的架构图的扼要阐明:


  • 图的上面部门为 YOLOv8 架构的概要图(包括 Backbone,Head)。YOLOv8 没有使用Neck 这个概念,但其架构图中 Head 中类似 PANet 功能的部门也可以归为 Neck。
  • 图右中位置 Detail 为各个组件的详细架构示例,另阐明了不同模子大小的参数选择。
  • 图左 + 图下部门,以分步的方式列出了完整的数据流。
  • 每个框的右上角的数字为层的编号,可以和背面的示例输出 1 对照看。
可以看出,YOLOv8 Backbone 为 0~9 层,10~21 层为 YOLOv8 Head。


YOLOv8 Backbone部门

见图中第 0~9 层。分别为


  • Conv + Conv + C2f
  • Conv + C2f(对齐特性金字塔 P3)
  • Conv + C2f(对齐特性金字塔 P4)
  • Conv + C2f + SPPF(对齐特性金字塔 P5)
YOLOv8 Head部门

Neck和Head结构

   第一种表明:
  在YOLOv8 的yaml文件中并没有显示地划分出Neck部门,实际上Neck网络结构就是其Head 网络结构中部门的前半部门。
head部门团体图:

  1. head:
  2.   ###neck###
  3.   - [-1, 1, nn.Upsample, [None, 2, 'nearest']]
  4.   - [[-1, 6], 1, Concat, [1]]  # cat backbone P4
  5.   - [-1, 3, C2f, [512]]  # 12
  6.   - [-1, 1, nn.Upsample, [None, 2, 'nearest']]
  7.   - [[-1, 4], 1, Concat, [1]]  # cat backbone P3
  8.   - [-1, 3, C2f, [256]]  # 15 (P3/8-small)
  9.   ###########
  10.   
  11.   - [-1, 1, Conv, [256, 3, 2]]
  12.   - [[-1, 12], 1, Concat, [1]]  # cat head P4
  13.   - [-1, 3, C2f, [512]]  # 18 (P4/16-medium)
  14.   - [-1, 1, Conv, [512, 3, 2]]
  15.   - [[-1, 9], 1, Concat, [1]]  # cat head P5
  16.   - [-1, 3, C2f, [1024]]  # 21 (P5/32-large)
  17.   - [[15, 18, 21], 1, Detect, [nc]]  # Detect(P3, P4, P5)
复制代码
yaml设置文件中,解释段落即为Neck结构

   第二种表明:
  1. head:
  2.   ###neck###
  3.   - [-1, 1, nn.Upsample, [None, 2, 'nearest']]
  4.   - [[-1, 6], 1, Concat, [1]]  # cat backbone P4
  5.   - [-1, 3, C2f, [512]]  # 12
  6.   - [-1, 1, nn.Upsample, [None, 2, 'nearest']]
  7.   - [[-1, 4], 1, Concat, [1]]  # cat backbone P3
  8.   - [-1, 3, C2f, [256]]  # 15 (P3/8-small)
  9.   
  10.   - [-1, 1, Conv, [256, 3, 2]]
  11.   - [[-1, 12], 1, Concat, [1]]  # cat head P4
  12.   - [-1, 3, C2f, [512]]  # 18 (P4/16-medium)
  13.   - [-1, 1, Conv, [512, 3, 2]]
  14.   - [[-1, 9], 1, Concat, [1]]  # cat head P5
  15.   - [-1, 3, C2f, [1024]]  # 21 (P5/32-large)
  16.   ###########
  17.   
  18.   - [[15, 18, 21], 1, Detect, [nc]]  # Detect(P3, P4, P5)
复制代码
yaml设置文件中,解释段落即为Neck结构,即除去检测头别的部门都是Neck部门
   分清楚Neck和Head 部门,可以很方便的对YOLOv8不同部门进行改进,实现任务涨点!
  
整理不易

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

铁佛

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表