[YOLO专题-21]:YOLO V5 - ultralytics代码解析-网络配置文件与总体结构

Posted 文火冰糖的硅基工坊

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[YOLO专题-21]:YOLO V5 - ultralytics代码解析-网络配置文件与总体结构相关的知识,希望对你有一定的参考价值。

作者主页(文火冰糖的硅基工坊):文火冰糖(王文兵)的博客_文火冰糖的硅基工坊_CSDN博客

 本文网址:https://blog.csdn.net/HiWangWenBing/article/details/122369147


目录

第1章 YOLO的数据处理流程

第2章 YOLO V5支持的网络模型

第3章 YOLO V5网络的配置文件

3.1 网络配置文件的作用

3.2 模型配置文件的路径

3.3 模型配置文件的内容(yolov5s为例)

第4章 YOLO V5总体的网络结构


第1章 YOLO的数据处理流程

第2章 YOLO V5支持的网络模型

除了上述模型外,最新版本还支持了一个更小的网络模型YOLOv5n

 详解如下链接:

[YOLO专题-12]:YOLO V5 - ultralytics支持的5种不同规模的模型类型比较_文火冰糖(王文兵)的博客-CSDN博客作者主页(文火冰糖的硅基工坊):文火冰糖(王文兵)的博客_文火冰糖的硅基工坊_CSDN博客本文网址:目录1、概述2、不同模型性能比较3、典型规模的模型:4、模型规模的配置1、概述为了适应不同的应用场景,YOLO V5并不是采用单一规模的模型,而是采用多种规模的模型。不同的规模的模型,其速度、所需要的内存空间,mAP不尽相同。GitHub - ultralytics/yolov5: YOLOv5 ???? in PyTorch > ONNX > CoreML &https://blog.csdn.net/HiWangWenBing/article/details/122294915

第3章 YOLO V5网络的配置文件

3.1 网络配置文件的作用

为了使得网络的构建根据的灵活,YOLO V5采用了数据与代码分离的方式来实现。

把对网络的配置放置在模型配置文件*.yaml中。yolo v5的代码通过读取该配置文件,来构建网络。

3.2 模型配置文件的路径

3.3 模型配置文件的内容(yolov5s为例)

# YOLOv5 🚀 by Ultralytics, GPL-3.0 license

# Parameters
nc: 80  # number of classes
depth_multiple: 0.33  # model depth multiple
width_multiple: 0.50  # 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)
  ]

(1)配置参数

  • nc: 80  # number of classes                              =》 网络支持的最大分类数
  • depth_multiple: 0.33  # model depth multiple    =》网络的深度或层数的倍数,倍数越小,网络越浅,速度越高。
  • width_multiple: 0.50  # layer channel multiple   =》 卷积层的卷积核channel的倍数,倍数越小,卷积核越少,特征通道越少。
  • 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

YOLOv5n

微规模

YOLOv5s

小规模

YOLOv5m

中规模

YOLOv5l

大规模

YOLOv5x

超大规模

depth_multiple0.330.330.671.001.33
width_multiple0.250.500.751.001.25

(2)骨干网backbone

骨干网负责特征的提取,主要由三种类型的子网络组成

  • CONV:卷积网络( 关于CONV网络的原理,请参考卷积神经网络CNN)
  • CSPx3:CSPx3网络
  • SPPF:网络

(3)节点网络Head

(3-1)Nect网络:FPN + PAN => FPAN

  • CONV:卷积网络
  • concat:组合
  • Upsample:上采样

(3-2)结构化输出

  • Detect:目标检测输出 网络

第4章 YOLO V5总体的网络结构

 

 


作者主页(文火冰糖的硅基工坊):文火冰糖(王文兵)的博客_文火冰糖的硅基工坊_CSDN博客

本文网址:https://blog.csdn.net/HiWangWenBing/article/details/122369147

以上是关于[YOLO专题-21]:YOLO V5 - ultralytics代码解析-网络配置文件与总体结构的主要内容,如果未能解决你的问题,请参考以下文章

[YOLO专题-18]:YOLO V5 - ultralytics代码解析-总体架构

[YOLO专题-22]:YOLO V5 - ultralytics代码解析-超参数详解

[YOLO专题-19]:YOLO V5 - ultralytics代码解析-dataloader数据加载机制

[YOLO专题-16]:YOLO V5 - 如何把labelme json训练数据集批量转换成yolo数据集

[YOLO专题-17]:YOLO V5 - 如何把YOLO训练数据集批量转换成带矩形框的图片

[YOLO专题-13]:YOLO V5 - ultralytics制作自己的训练数据集