【yolov5 v6.0】中断以后重新训练,增加epochs,冻结层

中断以后重新训练

有个resume的参数,将default从False改成True,然后他就会自己去找最新的权重继续训练了。
然后有个需要注意的点就是,不要为了想要备份最新的权重,然后把它复制一份出来,这样子,好像会造成路径的错乱,然后报错了很久哈哈哈(最后把复制出来的weights的文件夹删掉才好的)

增加训练的epochs

就是训练完了以后发现还没有收敛,想要继续增加epochs。我做的改动

  1. 修改resume参数
  2. 把epochs的参数修改成你需要的次数
  3. 在train文件夹里面加入语句,ckpt[‘epoch’] = 上一次训练的最后一个的次数
    【yolov5 v6.0】中断以后重新训练,增加epochs,冻结层_第1张图片
    如果没有改的话可能会报错,大概的意思是说已经训练完了,不需要再继续训练了。
  4. 我还改了/runs/exp3中的opt.yaml文件中的epochs的个数,修改成了300,但是不知道这个有没有用处

训练的结果

tensorboard的使用

  1. 先在对应的环境下安装这个库
  2. 然后输入tensorboard --logdir=【event文件所在的文件夹路径】
  3. 然后在对应的端口打开
    在这里插入图片描述
  4. 如果打开网页以后没有响应,或者找不到网页的话,那么就需要在xshell中把对应的端口弄到本地服务器上面。
  5. 【yolov5 v6.0】中断以后重新训练,增加epochs,冻结层_第2张图片
  6. 然后再打开就好了
  7. 【yolov5 v6.0】中断以后重新训练,增加epochs,冻结层_第3张图片
  8. 最后我的训练结果如上,虽然loss会突然增加,但是最后的趋势好像也和之前是一致的,初步判断,这样子增加训练的epochs是可行的。

冻结层

主要是对应一个freeze参数,这个参数默认是0,也就是不冻结的意思
在这里插入图片描述
在这里插入图片描述
对应的freeze的层数的代码主要是上面那样子的
freeze是一个列表,如果列表的长度大于1的话,那么freeze就是对应列表里面的数字的层数
例如输入的freeze为[0,9],那么对应的freeze=['model.0,model.9] 两层
如果输入的列表里面只有一个数字的话,那么对应的就是range(freeze[0])的层,如果输入的是10的话,那么对应的就是前10层['model.0, …, model.9] ,如果是默认输入的0的话,对应的freeze=[],没有需要冻结的层

那么对应的,可以考虑先冻结一部分层,再在这个基础上对后面的层进行修改的话,应该可以结合上面说到的几种方法进行测试?

你可能感兴趣的:(YOLO,人工智能,深度学习)