在YOLOv5的目录中,models文件夹里存储了YOLO的模型配置。
./models/yolov5.yaml
定义了YOLOv5s网络结构的定义文件
yaml的主要内容
参数配置
nc: 80
- 类别数量
depth_multiple: 0.33
- 模型深度缩放因子
width_multiple: 0.50
- 控制卷积特征图的通道个数
anchors配置
有三组数组,共9个尺度,分别对应了小目标,中等目标和大目标
另外YOLOv5在训练前使用K- means和遗传进化算法,找到与目前数据集的分布最吻合的anchors
backbone
定义了骨干网络的结构,其中第一个模块一行,每行四个参数构成。
- from
- 当前模块的输入来源,-1表示上一层
- number
- 模块的重复次数,是基准值,不同大小的模型(s,m,n,x,l)可能会对它应用不同的绽放因子
- module
- 模块类名,通过这个名字在common.py中寻找相应的类
- args
- 保存了需要传递给模块的参数
head
基本的逻辑和上面的backbone一样
问题
如果我们要将yolov5s网络模型中第4层C3*2修改为C3*1,第6层的C3*3修改为C3*2
解答
第4层的number原本是6,经过depth_multiple缩放后,得到结果为2,想把它的循环次数修改为1,就需要将number修改为3
第6层的number原本是9,经过depth_multiple缩放后,得到结果为3,想把它的循环次数修改为2,就需要将number修改为2