FastReid模型转为ONNX和TensorRT模型

文章目录

  • 转onnx模型
    • 安装pip库
    • 模型转化
    • 模型推理
  • 转TensorRT模型
    • 安装pip文件
    • 导出模型
    • 推理

转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 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]

你可能感兴趣的:(目标跟踪,python,linux,windows)