yolov5数据强化方法并不是越多越好

最近刚刚更新的yolov5 3.1版本,里边封装了好多好多的数据强化方法,但是在实际训练中,并不是强化方法越多越好,下边主要是基于其中的三种方法做一下介绍:
1.mosaic
Mosaic简单的说就是把四张训练图片缩放拼成一张图,这样我们原本较大的目标在缩小大概一倍之后也会变成较小的目标,这样训练可以增强我们模型的检测小模型的能力。
但是如果我们的数据集本身就有很多的小目标,那么这个方法反而会导致本来较小的目标变得更小,导致模型的泛化能力变差。例如下边这张图是我自己正在做的一个目标检测项目训练集label分布:
yolov5数据强化方法并不是越多越好_第1张图片
我们可以发现,小目标非常多,因此在这里我们不在使用mosaic反而会增加我们模型的训练效果。(这张图在3.1版本的yolov5中会自己生成)

2.focal loss:这里不分析公式,感兴趣的同学可以自行查找。fl的作用有两个:解决正负样本失衡、挖掘困难样本,大家可以看到我的label类别分布第一个类别和第二个类别相差将近4倍,此时使用fl可以增加模型指标,但是乳很本身样本分布较为均匀,那就没有必要使用。

3.关于warmup的使用,这个因人而异吧,如果你对学习率这个指标比较敏感,也有较多的调参经验,那么就可以关闭warmup。但是如果不知道学习率怎么设置,可以打开warmup。warmup可以防止初始学习率较大导致模型训练效果越来越差。
至于warmup的实现方式,用一个通俗易懂的例子:开车进入一个新城市的时候,一开始总是要小心翼翼驾驶的,过一会了大致了解了周边环境了才能提速。
warmup会让学习率从一个很小的值开始上升,一直上升到你提前设定好的值再进行衰减
具体可参考

4.关于模型超参数的选择,yolov5中会自带一个hyp.finetune.yaml的文件,经过多个项目的测试,这样配置超参数训练效果很好。至于anchors的那个超参数是否使用你可以根据自己的数据决定。当你的数据ground truth之间差异较大(这里主要是只大小差异)时候,可以使用这个参数来增加每个检测头的anchor数量,当然了如果你觉得这还不够的话,可以使用yolov5中的6系列模型(就是models/hub中的l6或者m6模型),这个模型优四个检测头,分别对应8,16,32,64倍下采样,对于一些在途中比较大的目标,64倍下采样会有不错的效果。

你可能感兴趣的:(计算机视觉学习小记录)