计算机系统应用教程网站

网站首页 > 技术文章 正文

YOLOv10s训练代码解析3:模型构建

btikc 2024-09-12 11:49:33 技术文章 9 ℃ 0 评论

本专栏会手把手带你从源码了解YOLOv10(后续会陆续介绍YOLOv8、RTDETR等模型),尽可能地完整介绍整个算法,这个专栏会持续创作与更新,大家如果想要本文PDF和思维导图,后台私信我即可(创作不易,不喜勿喷),大家如果发现任何错误和需要修改的地方都可以私信我,我会统一修改。

YOLOv10DetectionModel继承自DetectionModel(ultralytics/nn/task.py第644行),在继续调用ultralytics/nn/task.py的第285行__init__函数,初始化模型信息,第295行根据yaml配置文件构建模型

首先看下YOLOv10s模型配置文件(ultralytics/cfg/models/v10/yolov10s.yaml):yolov10s模型配置(每行分别表示之前的层-1为上一层、模块数量(需要*尺度[0])、模块、模块的参数)

在ultralytics/nn/tasks.py的parse_model函数解析yaml到pytorch模型,yolov10的模块数量尺度因子为0.33,通道数深度尺度因子为0.5,最大通道数为1024

如下每层解析yaml配置文件,以第一层为例(m:conv;f:-1;n:1;args:[64, 3, 2])

在缩放通道宽度,添加模块个数(args:[3, 32, 3, 2])

最后m_:保存每个模块的信息;layers:列表保存所有模块的信息;save:保存模块先前层不为-1的

最后打印每一层的参数信息(下列这些模块都类似的过程:Classify, Conv, ConvTranspose, GhostConv, Bottleneck, GhostBottleneck, SPP, SPPF, DWConv, Focus, BottleneckCSP, C1, C2, C2f, RepNCSPELAN4, ADown, SPPELAN, C2fAttn, C3, C3TR, C3Ghost, nn.ConvTranspose2d, DWConvTranspose2d, C3x, RepC3, PSA, SCDown, C2fCIB)

对于nn.Upsample,只需上一层特征层通道数即可(对应于第933行)

对于Concat层:[[-1, 6], 1, Concat, [1]] ch列表:[32, 64, 64, 128, 128, 256, 256, 512, 512, 512, 512, 512]对应于先前模块的输出通道数(Conv、Conv、C2f、Conv、C2f、SCDown、C2f、SCDown、C2fCIB、SPPF、PSA。Upsample) Concat层维度相加:上一层特征以及第六层特征

对于v10Detect:[[16, 19, 22], 1, v10Detect, [nc]](获取检测特征图通道数)

最后打印的YOLOv10s模型的整体结构信息:

在第二幅图构建好模型之后,继续初始化一些信息,打印模型整体参数信息(YOLOv10s summary: 402 layers, 8128272 parameters, 8128256 gradients, 25.1 GFLOP)

之后跳转到ultralytics/models/yolov10/train.py,加载模型权重(调用BaseModel类的load方法(ultralytics/nn/tasks.py))

这部分关于模型构建的整体流程如下图所示,需要原图和思维导图的朋友关注我私信获取。

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表