FastReid模型转为ONNX和TensorRT模型

举报
AI浩 发表于 2023/01/11 10:43:16 2023/01/11
【摘要】 @[toc] 转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/dep...

@[toc]

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

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。