yolov8(yolov5)增量训练数据集的划分建议

对于yolo模型的训练,每次增加了数据集,希望利用上次训练的最好权重,作为初始化权重进行训练

这种做法被称为”增量训练”(Incremental Training),它有以下好处:

  1. 减少过拟合:使用上一次训练的权重作为初始化,可以继续在原有的模型基础上进行优化,避免模型快速过拟合新的训练集。

  2. 加速训练:使用预训练的模型权重,可以直接继续优化已有的网络结构,无需从随机初始化的权重开始训练,所以可以大大减少训练时间。

  3. 提高最终模型性能:通过多次增量训练,可以逐步优化模型,达到更好的性能。如果每次都从零开始训练,很难达到同样的效果。

结论

根据 https://github.com/ultralytics/yolov5/issues/6419
https://community.ultralytics.com/t/how-to-combine-weights-to-detect-from-multiple-datasets/38/54

的讨论,可以得出如下结论:

  • 增量训练的数据集需要包含原始数据样本和新增数据样本,而不只是新的样本,避免 Catastrophic interference(灾难遗忘)的出现

  • 如果有新增或减少类别(Classes),则最好重头开始训练

目录划分

根据以上结论,如果本次数据集配置为

1
2
3
4
5
6
7
path: ../datasets/coco128 
train:
- images/train2017
val:
- images/train2017
nc: 80
name : [ 80 classes ]

则增量训练配置

1
2
3
4
5
6
7
8
9
path: ../datasets/coco128   
train:
- images/train2017
- images/train # new class
val:
- images/train2017
- images/train # new class
nc: 81
name : [ 81 classes ]

也就是在数据集目录(上例中的/coco128/images)下,为每次增量训练的数据样本划分一个新的目录。

从而确保满足每次训练都包含原始和新增数据样本的要求。并且方便灵活调整本次新增样本中,训练样本和验证样本的划分比例 —— 由于样本划分对训练结果有一定的影响,可能需要多次调整尝试,对比结果保留最优的模型。

这样的好处是:可以确保每次迭代训练时,加入的训练集是相对最优的。同时,如果需要调整类别数,从头训练,使用的数据集依然是划分最合理的。减少从头训练导致的结果不确定性。

分享到:

评论完整模式加载中...如果长时间无法加载,请针对 disq.us | disquscdn.com | disqus.com 启用代理