yolov3模型微调相关

首次训练都会加载预训练模型darknet53.conv.74,假如首次训练出了模型1,要在模型1的基础上finetuning模型2,当然前提是模型2与模型1之间网络结构没有发生变化,类别也没有增加.(类别增加的话我暂时还不太清楚)这个时候有两种解决方法:

1. 使用-clear命令

通过模型1训练出的backup或者final.weights文件代替预训练模型darknet53.conv.74,并在训练命令的末尾加上-clear命令,这样模型的训练会从初始状态开始,比如:

  
  
./darknet cfg/yolo.data cfg/yolo.cfg backup/model_pre.backup -clear

这样重新训练的模型2就是在模型1微调的基础上训练的结果,如下图所示,这样模型的收敛速度较快,迭代次数将从0开始计算.

2. 不使用-clear命令

不用-clear命令,训练则不会从初始状态开始,读取模型1的backup的时候也会读取其中的迭代次数及learning rage.比如模型1的迭代次数微40000次,最终的学习率为0.00001,那么模型2训练的时候也会从40000次开始迭代,并从0.00001的学习率开始,那么此时就需要修改cfg文件的max_batches以及learning rate .

比如我的模型1的cfg是这样的,初始learning rate为0.001:

 

那么模型2如果想迭代30000次,并有初始0.001的学习率你需要修改max_batches和steps:

 

 

比较推荐通过-clear的方式来做微调,会方便一点.