修改yolov5训练出的模型,得到可用于迁移学习的预训练模型

本文介绍了在训练 yolov5 模型后,如何将其转换为适用于迁移学习的预训练模型。作者发现直接使用训练得到的 best.pt 文件存在训练计数、结果记录和保存策略的问题。通过研究发现 .pt 文件包含 epoch、best_fitness、training_results、model 和 optimizer 等信息。为了仅保留模型,作者移除了不必要的部分,并分享了实现代码。实验表明,这一操作对模型性能精度影响很小,而模型从 FP32 转为 FP16 影响微乎其微。
摘要由CSDN通过智能技术生成

笔者最近训练了一个yolov5的模型,想作为预训练模型,对另外一个更为复杂的数据集进行迁移学习。但是直接使用训练得到的best.pt出现了以下问题:

1.训练epoch计数从best.pt对应的epoch开始,而不是从0开始

2.生成的result.txt记录了best.pt对应的epoch以及之前的训练结果。

3.迁移学习训练只保存last.pt,不再保存best.pt

为了解决以上问题,查阅资料得知:训练保存的pytorch文件(.pt)里面包含的不仅仅是模型与参数,还包含了其他的东西。

使用torch.load读取pytorch文件,发现.pt文件是一个字典,包含五个key:

    # epoch——当前模型对应epoch数;

    # best_fitness——模型性能加权指标,是一个值;

    # training_results——每个epoch的mAP、loss等信息;

    # model——保存的模型

    # optimizer——优化信息,一般占.pt文件一半大小。用于迁移学习的话,实测保不保留优化信息无影响

best_fitness代码(在train.py里):

# Update best mAP
fi = fitness(np.array(results).reshape(1, -1))  # fitness_i = weighted combination of [P, R, mAP, F1]
if fi > best_fitness:
    best_fitness = fi

 

我们

  • 7
    点赞
  • 111
    收藏
    觉得还不错? 一键收藏
  • 37
    评论
评论 37
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值