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

本专栏会手把手带你从源码了解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))

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

  • 17
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值