对YOLOv3训练出的权重文件做网络裁剪后的fine-tuning操作记录总结

1、使用darknet训练处的YOLOv3权重文件的大小一般在200M+左右,这对于在应用阶段做模型加载的时候时间非常的长,因此我们项目组打算对训练好的模型做裁剪,就是把一些不必要的卷积核及其参数删除掉,(删除的原则就是设置一阈值,当小于某一个阈值的时候踢出该卷积核和对应的参数),在此基础对裁剪完成后的权重文件重新fine-tuning,保持权重文件中参数的平衡,在模型缩小的情况下保持检测精度的基本不变性。

2、当同事给我修改好的权重文件后,我直接拿daknet对准备好数据修改的yolo.weight做fine-tuning后,发现每次都是一开始就结束了,并能够保存模型。原因是这些网络都是在imagenet上训练过,设置的迭代次数应该是远大于cfg中的max_batch或者其他参数,所以刚开始训练便达到了截止条件。不做fine-tuning,没有好的初始化又很难训练出好模型。因此需要重新提取基础特征提取层

./darknet partial cfg/yolov3-coco.cfg yolov.weights darknet53.conv.74 74

74表示提取yolov3前74层,从而得到darknet53.conv.74作为网络初始化的初始模型

3、2019年3月18日,用pruning对新训练出来的剪裁之后的权重进行新的论的剪裁10%,之前那次是20%。剪裁完成后计划用之前的partital完成提取网络权重然后训练。但现在对剪裁后的权重文件直接训练,设置学习率为初始学习率,0.001.设置最大迭代次数为10000200,居然能迭代起来,但是显示的当前的迭代次数与batch有关,这次修改了batch-128,之前等于64.因此显示了当前迭代次数为250100.对第一次裁剪后的网络迭代到了500200次,设置的参数与之前的无异。

Github上的两个对yolov3模型裁剪的开源代码:

https://github.com/Lam1360/YOLOv3-model-pruning

GitHub - talebolano/yolov3-network-slimming: yolov3 network slimming剪枝的一种实现

GitHub - violet17/yolov3-channel-pruning

  • 9
    点赞
  • 55
    收藏
    觉得还不错? 一键收藏
  • 43
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 43
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值