使用tensorrt自带的trtexec将onnx模型转换为trt模型

1.在官网下载好tensorrt,进入bin目录。(注意:在ubuntu上需要加上sudo,使用管理员权限。)

运行如下模型转换命令:

sudo ./trtexec --onnx=model_res512672_best.onnx --saveEngine=model_res512672_best.trt --workspace=1024 --iterations=1 --verbose

--workspace = 1024  以兆字节为单位设置工作区大小(默认 = 16)

--iterations  = 1 运行至少 N 次推理迭代(默认 = 10)

--verbose  使用详细日志记录 (默认 = false)

(注意:设置--workspace时需要先查看系统可用的内存。)

结果1:如果报错。需要尝试在/tensorrt/bin 目录下添加几个动态链接库。

例如在windows上:

加上:myelin64_1.dll;nvinfer.dll;nvinfer_plugin.dll;nvonnxparser.dll;nvparsers.dll。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
好的,以下是使用TensorRT 8对ONNX模型进行推理的Python代码示例: ```python import tensorrt as trt import numpy as np # Load ONNX model onnx_model_path = "/path/to/onnx/model.onnx" onnx_encoder = trt.OnnxParser(trt.Logger(trt.Logger.WARNING)) onnx_encoder.parse(open(onnx_model_path, 'rb').read()) # Set TensorRT builder parameters builder = trt.Builder(trt.Logger(trt.Logger.WARNING)) builder.max_workspace_size = 1 << 20 builder.max_batch_size = 1 # Set input and output shapes input_shape = (1, 3, 224, 224) output_shape = (1, 1000) builder.fp16_mode = True builder.strict_type_constraints = True network = builder.create_network() input_tensor = network.add_input(name="input", dtype=trt.float32, shape=input_shape) output_tensor = network.add_output(name="output", dtype=trt.float32, shape=output_shape) # Add ONNX model to TensorRT network onnx_tensor = {} for i in range(onnx_encoder.num_outputs): onnx_tensor[onnx_encoder.get_output_name(i)] = network.add_output( name=onnx_encoder.get_output_name(i), dtype=trt.float32, shape=onnx_encoder.get_output_shape(i)) onnx_tensor.update( {onnx_encoder.get_input_name(i): network.add_input( name=onnx_encoder.get_input_name(i), dtype=trt.float32, shape=onnx_encoder.get_input_shape(i)) for i in range(onnx_encoder.num_inputs)}) # Build TensorRT engine engine = builder.build_cuda_engine(network) context = engine.create_execution_context() # Generate random input data input_data = np.random.rand(*input_shape).astype(np.float32) # Allocate device memory for input and output data d_input = cuda.mem_alloc(input_data.nbytes) d_output = cuda.mem_alloc(output_shape[0] * np.dtype(np.float32).itemsize) # Copy input data to device memory cuda.memcpy_htod(d_input, input_data) # Do inference context.execute(1, [int(d_input), int(d_output)]) # Copy output data from device memory output_data = np.empty(output_shape, dtype=np.float32) cuda.memcpy_dtoh(output_data, d_output) # Print output data print(output_data) ``` 请注意,此示例假定您已经正确安装了TensorRT 8并且已经添加了必要的路径。如果您需要更多帮助,请参阅TensorRT文档和示例。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值