agender-mxnet 进行tensorrt部署遇到问题(已解决)

1.首先进行trtexec 进行转换(默认已经安装tensorrt)

首先进行 export PATH=/tensorrt路径/bin:$PATH   #这行防止使用trtexec 指令系统显示找不到指令

trtexec --onnx= 文件.onnx --saveEngine=保持名称.engine --verbose
--onnx=<onnx_file> \						#指定onnx模型文件
        	--minShapes=input:<shape_of_min_batch> \ 	#最小的batchsize x 通道数 x 输入尺寸x x 输入尺寸y
        	--optShapes=input:<shape_of_opt_batch> \  	#最佳输入维度,跟maxShapes一样就好
        	--maxShapes=input:<shape_of_max_batch> \ 	#最大输入维度 
        	--workspace=<size_in_megabytes> \ 			#设置工作空间大小单位是MB(默认为16MB)
        	--saveEngine=<engine_file> \   				#输出engine
        	--fp16   									#除了fp32之外,还启用fp16精度(默认=禁用)
 minShapes、optShapes、maxShapes 这三项是当onnx input输入显示是 batchsize 动态输入时需要指定batchsize大小进行推理。如果是固定输入则不需要这三项。

报错显示
在这里插入图片描述
这里报错查询资料显示:是因为源代码mxnet 网络进行激活层使用函数PRelu激活导致tensorrt不支持该算子操作。如下图所示
在这里插入图片描述
使用netron查看onnx也可知:
在这里插入图片描述
在这里插入图片描述

查询资料

在这里插入图片描述

解决办法1:更改python代码将PRelu替换成Relu。

具体可见该博客
转载:
在这里插入图片描述

解决方法2:未尝试TensorRT5.1.6加速PReLU,更改onnx-tensorrt 注册算子。

详见该博客
https://blog.csdn.net/tfu259/article/details/103520132

解决方法3:TensorRt - caffe中支持prelu

详见该博客
https://blog.csdn.net/qq_35759574/article/details/88415101
在这里插入图片描述

解决方法4:已解决 使用sim_onnx 进行 onnx 简化

从这个界面获取提示,报错是在节点PRelu 节点未定义shape,需要从新指定shape。
显示代码:

import onnx
from onnx import shape_inference

model = r'/home/ying/文档/工作交接/agender_sim.onnx'
#上一步保存好的onnx格式的模型路径
onnx.save(onnx.shape_inference.infer_shapes(onnx.load(model)), model)
#增加节点的shape信息

在这里插入图片描述
这里看到slope 节点 只有1024 一维信息,与输入1x1024x7x7 以及输出 1x1024x7x7 不匹配。需要转换

提示链接
在这里插入图片描述

import onnx
import onnx_graphsurgeon as gs
import numpy as np

graph = gs.import_onnx(onnx.load("/home/ying/文档/工作交接/agender_sim.onnx"))

for node in graph.nodes:
    if node.op == "PRelu":
        # Make the slope tensor broadcastable
        slope_tensor = node.inputs[1]
        slope_tensor.values = np.expand_dims(slope_tensor.values, axis=(0, 2, 3))

onnx.save(gs.export_onnx(graph), "/home/ying/文档/工作交接/agender_fixed.onnx")

这里可能会提示
在这里插入图片描述
可以在 (/home/ying/TensorRT-8.0.1.6)安装tensorrt目录下/ onnx_graphsurgeon/中找到whl文件进行安装。
最后使用netron打开生成onnx文件。
在这里插入图片描述
然后使用该onnx文件转换engine。

./build/parsers/onnx/onnx2trt /home/ying/文档/工作交接/agender_fixed.onnx -o /home/ying/文档/工作交接/agender.engine

在这里插入图片描述

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值