yolov5训练模型中断后的优化压缩

yolov5训练模型中断后的优化压缩

在训练yolov5模型时,会遇到后续的训练已经没有意义,这时候中断训练的话,最优模型往往没有去除各种参数信息,文件比较大,参考了yolov5源代码中的utils/general.py中的strip_optimizer()函数,进行了简单的改写,可以直接用命令行完成优化。代码如下:

import torch
import os
import sys

def strip_optimizer(f='best.pt', s=''):  
    # Strip optimizer from 'f' to finalize training, optionally save as 's'
    x = torch.load(f, map_location=torch.device('cpu'))
    if x.get('ema'):
        x['model'] = x['ema']  # replace model with ema
    for k in 'optimizer', 'best_fitness', 'ema', 'updates':  # keys
        x[k] = None
    x['epoch'] = -1
    x['model'].half()  # to FP16
    for p in x['model'].parameters():
        p.requires_grad = False
    torch.save(x, s or f)
    mb = os.path.getsize(s or f) / 1E6  # filesize
    print(f"保存优化后的模型 {s or f}, 大小为: {mb} MB")

if __name__ == "__main__":
    if len(sys.argv) < 2:
        print("使用方法: python3 optimizer_model.py <input_model.pt> [<output_model.pt>]")
        sys.exit(1)

    input_model = sys.argv[1]
    output_model = sys.argv[2] if len(sys.argv) > 2 else ''
    print("开始优化... ...")

    strip_optimizer(f=input_model, s=output_model)

如果要使用它,假设我们将它保存为optimizer_model.py,则使用如下命令:

python3 optimizer_model.py in.pt out.pt
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值