解决onnx转换成trt模型时遇到的问题
遇到的问题
onnx2trt_utils.cpp:377: Your ONNX model has been generated with INT64 weights, while TensorRT does not natively support INT64. Attempting to cast down to INT32.
- 遇到这个报错时,我的cuda版本是11.7, tensorrt版本是8.6.1.6,其实也不是报错,运行到这里就命令行就直接结束了
- 使用命令为
trtexec.exe --onnx=yolov8m.onnx --saveEngine=yolov8m_fp16.trt --fp16
解决办法
- 网上搜了一下,说是模型的问题,找了几个方法都尝试过,但是发现都无法成功,我自己导出的onnx模型和在官网下的模型都不能成功转换,后来在一个文章的评论区发现tensorrt版本要用8.4.2.4的
- yolo转换的命令我也修改了一下参数
yolo export model=yolov8n.pt format=onnx dynamic=True simplify=True
- 得到onnx模型,把模型复制到tensorrt目录下的bin文件夹里,使用命令
trtexec.exe --onnx=yolov8n.onnx --saveEngine=yolov8n.trt --buildOnly --minShapes=images:1x3x640x640 --optShapes=images:4x3x640x640 --maxShapes=images:8x3x640x640
- 问题解决,成功生成trt模型,放到自己的项目里去调用效果如下