首先说明一下环境:
- PyTorch 1.9 +CUDA 11
- GPU NVIDIA GeForce RTX 3090 数量: 1 显存: 24 GB
- CPU Intel Xeon Gold 6130H 内核: 8核
- 实例内存: 63G
- 硬盘 20.0G SSD
- 训练集2800张
- 验证集1200张
- 测试集600张
最近用yolov5跑项目,但是发现多次实验结果无法复现(同一个机器,同一份代码,同样超参数,但是验证集结果不同),在测试集上跑的结果准确率可以偏差20%,其中认为可能的问题是出在以下几点:
1.Pytorch 的随机种子 设置问题,但是Yolov5 的模型初始化时已经固定了随机种子。
2.因为是在云GPU上进行训练模型,所以可能会存在硬件不同的情况,硬件不同那随机的参数肯定也不同同。
3.训练集验证集与测试集之间关联性低
4.模型本身泛化能力不好
5.训练存在欠拟合
经过一个多礼拜的调试和实验,认为主要问题是出在模型本身参数太少了导致影响了多次训练后的模型推理精度。实验设计是yolov5n、yolov5s、yolov5m等多次训练查看方差(我测试了上百次T T),模型参数越大,结果越稳定,其中yolov5m测试10多次的精度差距在3%内。