每次YOLOv5训练结束后,保存两个模型文件:last.pt
和best.pt
。我知道:
last.pt
为模型最新保存的检查点。这将在每个epoch之后更新。best.pt
是目前为止验证损失最小的检查点。当模型适应度提高时,它会被更新。
适应度定义为mAP@0.5
和mAP@0.5:0.95
指标的加权组合:
def fitness(x):
# Returns fitness (for use with results.txt or evolve.txt)
w = [0.0, 0.0, 0.1, 0.9] # weights for [P, R, mAP@0.5, mAP@0.5:0.95]
return (x[:, :4] * w).sum(1)
我的问题是,如果训练持续了太多的epoch(并且last.pt
因此是过拟合的),那么best.pt
是从训练尚未过拟合时开始的检查点吗?换句话说,best.pt
是否控制过拟合?
我们可以假设当模型进行正则化时,best.pt
对于非训练数据具有良好的性能。然而,我看到一些研究人员选择了一个在验证损失限制方面没有最好结果的模型。
如果你没有很多成本来训练你的模型,你可以考虑我提到的选项,否则,你可以选择best.pt
。
此外,我们选择了一些模型来集成它们。这可以与第一个,第二个等协作,尽管模型的验证损失有轻微的差异,但它们可以产生比仅使用最佳模型更好的性能。