当前位置: 首页 > article >正文

yolov5利用yaml文件生成模型

一、yolov5的yaml文件构成

yaml文件如下图

在这里插入图片描述

不论是backbone还是head,每一行都由一个列表组成,列表里面有四个元素,另外,还有两个参数depth和width。在搭建模型的时候,会利用每一行的信息生成一个模块,并按照顺序放进一个列表里面,这样子就得到一个模块列表

二、列表中每个元素的意义

[-1, 1, Conv, [128, 3, 2]]  
[[-1, 6], 1, Concat, [1]]

列表的第一个元素:

如果是一个-1,则不会用到其他层的信息,只做自己的前向传播就好,如果是一个列表,比如上面第二行代码,会将数字6保存下来,表示当前模块会用到模块列表中第六个模块的信息,那么在前向传播的时候第六个模块的输出将会被保存

列表的第二个元素:

把这个元素用n来表示,则n和上面提到的depth一起用来控制模型的深度,下面是代码

n = max(round(n * depth), 1) if n > 1 else n

通过上面的代码更新n的值,这个n将会被用来表示当前模块被重复的次数

列表的第三个元素:

这个元素用来实例化一个类,比如conv模块

class Conv(nn.Module):
    # Standard convolution
    def __init__(self, c1, c2, k=1, s=1, p=None, g=1, act=True):  # ch_in, ch_out, kernel, stride, padding, groups
        super(Conv, self).__init__()
        self.conv = nn.Conv2d(c1, c2, k, s, autopad(k, p), groups=g, bias=False)
        self.bn = nn.BatchNorm2d(c2)
        self.act = nn.ReLU() if act is True else (act if isinstance(act, nn.Module) else nn.Identity())

    def forward(self, x):
        return self.act(self.bn(self.conv(x)))

    def fuseforward(self, x):
        return self.act(self.conv(x))

列表的第四个元素:

这个会被作为参数输入到模块中,不过会被做一些处理,其中比较重要的是第一个元素将会乘以width参数作为这个模块的输出通道数,


http://www.kler.cn/a/144866.html

相关文章:

  • Python武器库开发-前端篇之CSS元素(三十二)
  • 佳易王各行业收银管理系统软件,企业ERP管理软件,企业或个体定制开发软件以及软件教程资源下载总目录,持续更新,可关注收藏查阅
  • Docker Remote API 使用详解
  • 【MySQL】数据库基础操作
  • 无人机电力巡检系统运行流程全解读
  • js无法请求后端接口,别的都可以?
  • 如何把自己银行卡里的钱转账充值到自己支付宝上?
  • tensorflow和pytorch都分别存在CPU和GPU版本
  • MongoDB的部署
  • SELinux零知识学习三十二、SELinux策略语言之角色和用户(3)
  • 深入浅出 Linux 中的 ARM IOMMU SMMU II
  • JAVA毕业设计112—基于Java+Springboot+Vue的宠物领养社区小程序(源码+数据库)
  • leetCode 1026. 节点与其祖先之间的最大差值 + 递归
  • OSS+CDN的资费和安全
  • 1000MW火电厂过热汽温控制系统设计及基于多目标优化的控制系统整定
  • 1.Linux基础命令
  • 两巨头Facebook 和 GitHub 联手推出 Atom-IDE
  • 【经验分享】开发问题记录总结(持续更新)
  • 备考雅思记录
  • MybatisPlus—自定义ID生成器