yolov5训练时P、A、mAP一直在升高,loss一直在降低,就是不收敛是怎么回事?

之前是epoch是300,以为是小了,结果调成500重新跑除了mAP啥的更高了,没啥变化🚬🚬
谢谢🙏

img

已解决,我的数据集应该不算小有18000,但是有5k是空的,我把他们全部删除后就好了不少,谢谢各位的回答。

你说的收敛是指什么?是指map达到指定的值嘛,一般mAP不再升高,那就是收敛了。yolo v5训练还是很快的,一般不超过100次迭代。如果训练的mAP很高,测试时较低,那就是过拟合了,或者说,训练集和测试集有较大差异。如果这样的话,那就要丰富训练集了。

train loss 收敛慢,把learning_rate调高
train loss不下降:
1、观察数据中是否有异常样本或异常label导致数据读取异常
2、调小初始化权重,以便使softmax输入的feature尽可能变小
3、降低学习率,这样就能减小权重参数的波动范围,从而减小权重变大的可能性。这条也是网上出现较多的方法。

4、调大batch_size
5、如果有BN(batch normalization)层,finetune时最好不要冻结BN的参数,否则数据分布不一致时很容易使输出值变的很大。

6、神经网络不够深。

7、训练的epoch不够。

https://blog.csdn.net/u010159842/article/details/83614791

train loss 不断下降,test loss不断下降,说明网络仍在学习;

train loss 不断下降,test loss趋于不变,说明网络过拟合;

train loss 趋于不变,test loss不断下降,说明数据集100%有问题;

train loss 趋于不变,test loss趋于不变,说明学习遇到瓶颈,需要减小学习率或批量数目;

train loss 不断上升,test loss不断上升,说明网络结构设计不当,训练超参数设置不当,数据集经过清洗等问题。
https://www.cnblogs.com/Lee-yl/p/11120154.html

损失函数改了吗

建议使用预训练模型,epoch直接设置到2000,yolov5里面--patience参数就是多少个epoch没有提升会自动停止的。你这个曲线,数据集很小还是数据基本相似雷同,要不然曲线不可能这么好看