FastReid模型转为ONNX和TensorRT模型
Posted AI浩
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了FastReid模型转为ONNX和TensorRT模型相关的知识,希望对你有一定的参考价值。
文章目录
转onnx模型
安装pip库
pip install onnx-simplifier -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install onnxoptimizer -i https://pypi.tuna.tsinghua.edu.cn/simple
模型转化
python ./tools/deploy/onnx_export.py --config-file ./logs/market1501/bagtricks_R18/config.yml --name baseline_R18 --output outputs/onnx_model --opts MODEL.WEIGHTS ./logs/market1501/bagtricks_R18/model_best.pth
输出结果:
[11/16 16:25:42 fastreid.onnx_export]: Beginning ONNX file converting
Warning: ONNX Preprocess - Removing mutation from node aten::sub_ on block input: 'batched_inputs.1'. This changes graph semantics.
[11/16 16:25:45 fastreid.onnx_export]: Completed convert of ONNX model
[11/16 16:25:45 fastreid.onnx_export]: Beginning ONNX model path optimization
[11/16 16:25:45 fastreid.onnx_export]: Completed ONNX model path optimization
[11/16 16:25:46 fastreid.onnx_export]: ONNX model file has already saved to outputs/onnx_model\\baseline_R18.onnx!
看到这个结果说明转换成功了。
模型推理
执行命令:
python ./tools/deploy/onnx_inference.py --model-path outputs/onnx_model/baseline_R18.onnx --input ./tools/deploy/test_data/0022_c6s1_002976_01.jpg --output onnx_output
出现错误:
ValueError: This ORT build has ['TensorrtExecutionProvider', 'CUDAExecutionProvider', 'CPUExecutionProvider'] enabled. Since ORT 1.9, you are required to explicitly set the providers parameter when instantiating InferenceSession. For example, onnxruntime.InferenceSession(..., providers=['TensorrtExecutionProvider', 'CUDAExecutionProvider', 'CPUExecutionProvider'], ...)
参照:https://blog.csdn.net/hhhhhhhhhhwwwwwwwwww/article/details/122899728 解决。
然后再执行上面的命令。
输出结果:
0%| | 0/1 [00:00<?, ?it/s]./tools/deploy/test_data/0022_c6s1_002976_01.jpg
100%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 1.63it/s]
推理成功。
转TensorRT模型
安装pip文件
pip install pycuda -i https://pypi.tuna.tsinghua.edu.cn/simple
导出模型
cd ./tools/deploy
python trt_export.py --name baseline_R18 --output outputs/trt_model --mode fp32 --batch-size 1 --height 256 --width 128 --onnx-model ../../outputs/onnx_model/baseline_R18.onnx
输出结果:
[11/16 17:08:47 trt_export]: Create engine successfully!
[11/16 17:08:47 trt_export]: Saving TRT engine file to path outputs/trt_model\\baseline_R18.engine
[11/16 17:08:47 trt_export]: Engine file has already saved to outputs/trt_model\\baseline_R18.engine!
转换成功。
推理
python trt_inference.py --model-path outputs/trt_model/baseline_R18.engine --input test_data/0022_c6s1_002976_01.jpg --batch-size 1 --height 256 --width 128 --output trt_output
如果TensorRT的版本是8.X以上的,推理的时候会有一个错误:
AttributeError: ‘tensorrt.tensorrt.Builder‘ object has no attribute ‘build_cuda_engine‘
解决方法:https://wanghao.blog.csdn.net/article/details/127888740
输出结果:
[11/16/2022-17:23:56] [TRT] [W] The getMaxBatchSize() function should not be used with an engine built from a network created with NetworkDefinitionCreationFlag::kEXPLICIT_BATCH flag. This function will always return 1.
100%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 1/1 [00:00<00:00, 77.57it/s]
以上是关于FastReid模型转为ONNX和TensorRT模型的主要内容,如果未能解决你的问题,请参考以下文章
还在为模型加速推理发愁吗?不如看看这篇吧。手把手教你把pytorch模型转化为TensorRT,加速推理
ONNX 和 TensorRT 模型中的参数数量和 FLOPS
TensorRT onnx转engine报Assertion failed: dims.nbDims == 4 || dims.nbDims == 5
TensorRT onnx转engine报Assertion failed: dims.nbDims == 4 || dims.nbDims == 5