0


最详细的YOLO-V5模型配置文件yaml结构理解

文章目录


前言

YOLO-V5(GIT链接):https://github.com/ultralytics/yolov5


一、yolov5配置yaml文件

# YOLOv5 🚀 by Ultralytics, GPL-3.0 license# Parameters
nc:80# number of classes
depth_multiple:1.0# model depth multiple
width_multiple:1.0# layer channel multiple
anchors:-[10,13,16,30,33,23]# P3/8-[30,61,62,45,59,119]# P4/16-[116,90,156,198,373,326]# P5/32# YOLOv5 v6.0 backbone
backbone:# [from, number, module, args][[-1,1, Conv,[64,6,2,2]],# 0-P1/2[-1,1, Conv,[128,3,2]],# 1-P2/4[-1,3, C3,[128]],[-1,1, Conv,[256,3,2]],# 3-P3/8[-1,6, C3,[256]],[-1,1, Conv,[512,3,2]],# 5-P4/16[-1,9, C3,[512]],[-1,1, Conv,[1024,3,2]],# 7-P5/32[-1,3, C3,[1024]],[-1,1, SPPF,[1024,5]],# 9]# YOLOv5 v6.0 head
head:[[-1,1, Conv,[512,1,1]],[-1,1, nn.Upsample,[None,2,'nearest']],[[-1,6],1, Concat,[1]],# cat backbone P4[-1,3, C3,[512,False]],# 13[-1,1, Conv,[256,1,1]],[-1,1, nn.Upsample,[None,2,'nearest']],[[-1,4],1, Concat,[1]],# cat backbone P3[-1,3, C3,[256,False]],# 17 (P3/8-small)[-1,1, Conv,[256,3,2]],[[-1,14],1, Concat,[1]],# cat head P4[-1,3, C3,[512,False]],# 20 (P4/16-medium)[-1,1, Conv,[512,3,2]],[[-1,10],1, Concat,[1]],# cat head P5[-1,3, C3,[1024,False]],# 23 (P5/32-large)[[17,20,23],1, Detect,[nc, anchors]],# Detect(P3, P4, P5)]

先分段介绍一下上面代码中一些参数表示的意思。

# Parameters
nc:80# number of classes
depth_multiple:1.0# model depth multiple
width_multiple:1.0# layer channel multiple
anchors:-[10,13,16,30,33,23]# P3/8-[30,61,62,45,59,119]# P4/16-[116,90,156,198,373,326]# P5/32

**

Parameters

为一些超参数的设置内容。其中,**

  1. nc表示类别的数量,由于默认使用COCO数据集,这里nc=80
  2. depth_multiple表示深度因子,用来控制一些特定模块的数量的,模块数量多网络深度就深;
  3. width_multiple表示宽度因子,用来控制整个网络结构的通道数量,通道数量越多,网络就看上去更胖更宽;
  4. anchors表示预先设置的anchor框大小,由于有3个检测输出头位置,因此有3行。
# YOLOv5 v6.0 backbone
backbone:# [from, number, module, args][[-1,1, Conv,[64,6,2,2]],# 0-P1/2[-1,1, Conv,[128,3,2]],# 1-P2/4[-1,3, C3,[128]],[-1,1, Conv,[256,3,2]],# 3-P3/8[-1,6, C3,[256]],[-1,1, Conv,[512,3,2]],# 5-P4/16[-1,9, C3,[512]],[-1,1, Conv,[1024,3,2]],# 7-P5/32[-1,3, C3,[1024]],[-1,1, SPPF,[1024,5]],# 9]

**这里就是开始构建整体的网络中各个模块的结构,都用

list

的格式表示为

[from, number, module, args]

。其中,**

  1. from表示该模块的输入来源,如果为-1则表示来自于上一个模块中,如果为其他具体的值则表示从特定的模块中得到输入信息;
  2. number表示建立number个该模块叠加起来,后期将简写成nn=1表示这个模块就放了一个;
  3. module表示具体的模块名称,具体可以看YOLOV5项目代码中common.py文件。(不嫌弃的话,手画了一张图放在下面,简单看看)
  4. args表示该模块具体的参数设置,不同的模块是不同的参数设置,在后面的图里会详细说的。

在这里插入图片描述

二、模型结构详解图

**在深度因子

depth_multiple

与宽度因子

width_multiple

都为

1.0

的情况下,我们绘制了如下图的模型解释表,

Layer_ID

表示这个层的ID位置,方便后面

from

调用的查看,

output_FM_size

表示该层输出的特征图大小(这里假设输入图片为

640x640x3

)。**

在这里插入图片描述

上图中有些符号与颜色解释一下:

  1. 灰色背景字表示模型的Concat操作位置;
  2. 绿色背景字表示模型的检测输出头位置;
  3. 黄色五角星表示模型中被其他层通过from调用的层结构位置;
  4. 红色圈是深度因子控制下的叠加层数量,当深度因子为1.0时,依次为3、6、9、3、3、3;当深度因子为0.33时,乘上0.33,依次为1、2、3、1、1、1
  5. 红色框是宽度因子控制下的通道数量,当宽度因子为1.0时,依次为3、64、128...;当深度因子为0.50时,乘上0.50,依次为3、32、64...

下图是YOLO-V5的实际结构图,可以与上图中的信息对应着看。其中,

  1. 红色实线箭头表示与上图Layer_ID一致的结构构造流程;
  2. 模块右上角红字表示该模块的Layer_ID,仅标注了一些与结构相关的重要模块;
  3. 黄色五角星表示被其他模块通过from调用的模块位置,与上图中的黄色五角星对应;
  4. 灰色底矩形表示Concat操作模块,与上图中的灰色背景字对应;
  5. 绿色底矩形表示检测输出头,与上图中的绿色背景字对应。

在这里插入图片描述


总结

本文仅表示个人理解,如果有错误欢迎指出。


本文转载自: https://blog.csdn.net/weixin_47691066/article/details/128031201
版权归原作者 Prymce-Q 所有, 如有侵权,请联系我们删除。

“最详细的YOLO-V5模型配置文件yaml结构理解”的评论:

还没有评论