网上找了篇文章,用tensorrt自带转换工具trtexec转成engine格式的方法,网址如下:

https://www.cnblogs.com/xiaoxiaomajinjiebiji/p/14451398.html

文章中举例的转换指令为:

/usr/src/tensorrt/bin/trtexec --uff=/home/model/model.uff --uffInput=input_1,1,3,224,224 --output=softmax/Softmax --saveEngine=/home/model/model.engine --outputIOFormats=fp32:chw --buildOnly --useCudaGraph

其中--uffInput后面跟的是模型输入节点名称和训练模型的图像尺寸,但是中间多了个1不知道是啥意思

--output为模型的输出节点名称

--outputIOFormats=fp32:chwfp32为模型的精度,chw为模型输出的格式

所以根据上述指令说明,再按我的模型,我的转换指令:

trtexec --uff=REF-DEFECT_1-200-200__0810005631.uff --uffInput=InputNode,1,200,200 --output=score --saveEngine=REF-DEFECT_1-200-200__0810005631.engine --outputIOFormats=fp16:chw --buildOnly --useCudaGraph

其中为提高推理速度,模型输出精度我改成了fp16,测试了下,发现预测结果不正确

后面改成fp32,预测结果正确

最终正确转换指令为:

trtexec --uff=REF-DEFECT_1-200-200__0810005631.uff --uffInput=InputNode,1,200,200 --output=score --saveEngine=REF-DEFECT_1-200-200__0810005631.engine --outputIOFormats=fp32:chw --buildOnly --useCudaGraph

 

tensorrt版本为:TensorRT-8.0.3.4.Windows10.x86_64.cuda-11.3.cudnn8.2