OLOv5-第Y2周:训练自己的数据集)
- 本文为365天深度学习训练营 中的学习记录博客
- 原作者:K同学啊
可以看到,yaml源文件主要分为4个部分的内容:Parameters、anchors、backbone和head。
这一部分是yolov5s.yaml,yolov5m.yaml,yolov5l.yaml,yolov5x.yaml几个文件之间主要的不同点,有不同的宽度与深度
nc:分类的数量,根据你自己训练的数据集当中的数量进行修改
depth__multiple:控制子模块的数量
width_multiple:控制卷积核的数量
通过depth__multiple和width_multiple就可以实现不同复杂度的模型设计。YOLOv5s 、 YOLov5m 、 YOLOv51 、 YOLOv5x四种模型的区别仅在于depth_multiple与width_multiple这个两个参数的不同。
anchor一共有三行,分别在图片当中大,中,小的目标进行计算,
第一行在最大特征图上,小数值检测大目标
第二行在图片第二大的特征图上
第三行在最小的特征图上,大数值检测小目标
YOLOv5初始化了9个anchors,在三个Detect层使用(3个feature map)中使用,每个featuremap的每个grid_cell都有三个anchor进行预测。分配的规则是:
尺度越大的feature map越靠前,相对原图的下采样率越小,感受野越小,所以相对可以预测一些尺度比较小的物体,所有分配到的 anchors越小;
尺度越小的 feature map越靠后,相对原图的下采样率越大,感受野越大,所以相对可以预测一些尺度比较大的物体,所有分配到的 anchors越大。
即可以在小特征图(feature map)上检测大目标,也可以在大特征图上检测小目标。
YOLOv5根据工程经验得到了这么3组anchors,对于很多数据集而言确实挺合适的。但是也不能保证这3组anchors就适用于所有的数据集,所有
这是YOLOv5s的head,数据格式和backbone一样
通过Y3学习,解读了yolov5s.yaml的源文件,学会了yolov5s.yaml的文件配置。