yolov5的pt权重转tensorrt的trt权重

yolov5的pt权重转tensorrt的trt权重

相信如何利用tensorrt进行加速会是大家提高网络速度的关键一环,实际步骤其实也只需 pt/pth 转到 onnx ,再onnx转trt即可。虽然只有两步,但确实会挺折磨人,在这我就浅浅分享一个大致的步骤,以yolov5为例,希望能给大家一点点启发。

pt转onnx

这一环,yolov5中自带的export.py可以很出色的帮助我们完成转换,只需要执行:

python export.py --weights E:\Torch2Trt\test.pt --img 640 --batch 1

就可以在pt文件同路径下生成onnx文件,如果希望迁移到大家自身的模型,个人觉得可以参考一下export.py中的代码。

onnx转trt

这一步需要大家提前把tensorrt下载并且编译好,这里我就不做过多描述大家可以参考网上他人写的安装教程,我这里下的是TensorRT-8.2.4.2,编译起来挺方便的。安装完成后大家需要切换到TensorRT-8.2.4.2下面的bin文件夹:
在这里插入图片描述
可以使用下述代码进行转换,具体的参数其实还挺多的,需要大家自己去了解了再使用。

trtexec --onnx=E:\Torch2Trt\TensorRT-8.2.4.2\bin\test.onnx --explicitBatch --saveEngine=E:\Torch2Trt\best.trt --workspace=1024 --best

但直接跑上面这段代码是走不通的,它会报错下面这段错误:Assertion failed: scales.is_weights() && “Resize scales must be an initializer!”
在这里插入图片描述
因为默认的yolov5的模型中upsample不是指定倍率进行放大的,我们需要修改models文件夹下的tf.py文件找到下述这段代码:
在这里插入图片描述
注释掉红色箭头所指的代码,消掉黄色箭头所指代码的注释符,然后保持重新训练得到新的模型再走上述的步骤就可以走得通了。大家在转换其它模型的时候,如果遇到类似的问题,但不是由Upsample引起的,可以参考这篇知乎文章
上面还总结了其它类似的错误。

  • 2
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值