Y3、yolov5s.yaml文件解读

YOLOv5配置了4种不同大小的网络模型,分别是YOLOv5s、YOLOv5m、YOLOv5l、YOLOv5x,其中 YOLOv5s 是网络深度和宽度最小但检测速度最快的模型,其他3种模型都是在YOLOv5s的基础上不断加深、加宽网络使得网络规模扩大,在增强模型检测性能的同时增加了计算资源和速度消耗。出于对检测精度、模型大小、检测速度的综合考量,本文选择YOLOv5s作为研究对象进行介绍。
主要两个个任务:

  • 将yolov5s网络模型中第4层的C32修改为C31
  • 第6层的C33修改为C32
    其实也就是修改./models/yolov5s.yaml文件

yolov5s网络模型简览


参数文件

1、参数配置

# Parameters
nc: 80  # number of classes
depth_multiple: 0.33  # model depth multiple    控制模型深度
width_multiple: 0.50  # layer channel multiple  控制Conv通道channel个数(卷积核数量)

depth_multiple:控制子模块数量, = int(numberdepth)
width_multiple:控制卷积核的数量, = int(number
width)

通过这两个参数可以实现不同复杂度的模型设计。

2、参数详解

2.1 nc
nc就是学习的类别个数,一般和使用的数据集相互绑定

2.2 depth/width_multiple
depth/width_multiple分别代表了所用模型的深度和宽度因子,实际运行代码的时候所有的参数量会与这两个因子相乘

2.3 anchors
anchors代表了检测框的大小,在源代码中是针对coco数据集使用K++算法求解出的大、中、小三种大小检测框,如果是自己的数据集建议也是用K++算法进行求解。

2.4 backbone
YOLOv5的主干网络,主要作用是用于特征提取,可以替换为ResNet、ShuffleNet等

每一行参数意义分别是[和谁连接,使用个数,使用模块,模块中的参数]

2.5 head
head其实包括了Nec和head两个部分,一般在绘图时head都默认为是最后一行

调整模型

需要调整的地方主要是backbone部分

# 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, 3, C3, [256]], # 第4层改动
   [-1, 1, Conv, [512, 3, 2]],  # 5-P4/16
   [-1, 6, C3, [512]], # 第6层改动
   [-1, 1, Conv, [1024, 3, 2]],  # 7-P5/32
   [-1, 3, C3, [1024]],
   [-1, 1, SPPF, [1024, 5]],  # 9
  ]
posted @   CASTWJ  阅读(268)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示