首页IT科技yolo模型使用(最详细的YOLO-V5模型配置文件yaml结构理解)

yolo模型使用(最详细的YOLO-V5模型配置文件yaml结构理解)

时间2025-09-17 11:39:32分类IT科技浏览9233
导读:前言 YOLO-V5(GIT链接):https://github.com/ultralytics/yolov5...

前言

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为一些超参数的设置内容                          。其中                   ,

nc表示类别的数量                          ,由于默认使用COCO数据集        ,这里nc=80; depth_multiple表示深度因子              ,用来控制一些特定模块的数量的                           ,模块数量多网络深度就深; width_multiple表示宽度因子            ,用来控制整个网络结构的通道数量         ,通道数量越多                            ,网络就看上去更胖更宽; 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]              。其中                    ,

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

二                           、模型结构详解图

在深度因子depth_multiple与宽度因子width_multiple都为1.0的情况下            ,我们绘制了如下图的模型解释表         ,Layer_ID表示这个层的ID位置                            ,方便后面from调用的查看                ,output_FM_size表示该层输出的特征图大小(这里假设输入图片为640x640x3)         。

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

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

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

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

总结

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

声明:本站所有文章                ,如无特殊说明或标注    ,均为本站原创发布                    。任何个人或组织                            ,在未征得本站同意时                    ,禁止复制                、盗用                           、采集          、发布本站内容到任何网站            、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理                        。

创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!

展开全文READ MORE
js遍历对象的所有属性(js中遍历对象数组并获取对象相应的属性值) 苹果官网怎样分12期(苹果官网iPhone SE和6S分期购买的方法)