模型训练通用规则:
- 如果 train 效果挺好, 但test或predict效果较差, 说明 overfit 了. 原因有: (1)模型太复杂了, 这时候应该减少epoch 或者使用更小scale的模型. (2) train数据集太小, 这时候需要增加训练数据
- 如果 train 效果不佳, 可以使用更大规模的模型, 或者增加训练数据, 或者增大 epoch.
- 计算过程中不用关心 loss 是否太大, 重要的是loss 是否可以收敛. 如果始终不收敛, 尝试调整优化器类型或降低学习率.
- from scratch 训练模型需要足够的算力和数据集, 以及强大的调参能力, 否则毫无意义.
- 调整神经网络结构. 选择合适的模型规格( n/s/m/l/x 以及 p2/p6), 增加网络深度和宽度可以增强模型的表达能力.
- 数据集应该大于 500, 否则效果很难上来.
- 数据集应有较高质量, 标签不能错误, box边框要准确, 正负样本要平衡, 增加数据多样性.
- 调整预测的阈值, 降低conf阈值可以提升recall, 提高conf阈值可以提升precision.
- 调整超参, 学习率/batch/优化器/epoch 等参数
yolov8 参数设置技巧:
- train/val/test/predict 超参最好要一致, 不一致的参数有可能会引起predict显著变化.
- task 参数默认为 detect, 可以传递 task 如:[detect、classify、segment]
- mode 参数默认为train, train模式下默认包含 val, ,mode 有:[train、predict、val、export] <