Pytorch->ONNX->TensorRT

Pytorch分类/检测/分割模型转换到ONNX格式,最后转换成TensorRT Engine文件进行推理(Python)。

Pytorch2ONNX

Pytorch提供了转换函数torch.onnx.export进行模型格式转换,关键点在于是否指定动态批量大小。注意,低版本的TensorRT版本不一定适配于高等级的opset_version

ONNX2TensorRT

对于ONNX模型转换成TensorRT模型,需要设置好输入大小(固定还是动态)和精度(FP32/FP16)。除了调用API来手动转换外,TensorRT提供了命令行转换工具trtexec

1
2
3
4
# 固定批量大小
trtexec --onnx=resnet18_pytorch.onnx --saveEngine=resnet_engine_pytorch.trt --explicitBatch
# 半精度转换
trtexec --onnx=resnet18_pytorch.onnx --saveEngine=resnet_engine_pytorch_fp16.trt --explicitBatch --inputIOFormats=fp16:chw --outputIOFormats=fp16:chw --fp16

TensorRT

TensorRT不同版本的变化非常大,往往不能够兼容,所以转换和推理实现均在同一个TensorRT环境下实现。

1
2
# python -c "import tensorrt as trt; print(trt.__version__)"
7.2.2.1

相关实现

相关阅读