TensorRT
文章平均质量分 54
Ehrich wen
人工智能、算法集成、TensorRT、OpenVINO、TNN&MNN、C++后端开发
展开
-
TensorRT 3D反卷积不支持非对称padding
转trt模型时报错: ASSERT(begPadding == endPadding && “TensorRT does not support asymmetrical padding for 3D deconvolutions!”, ErrorCode::kUNSUPPORTED_NODE);原因:TensorRT目前还不支持3D反卷积非对称padding解决方法:找到源码TensorRT/parsers/onnx/builtin_op_importers.cpp文件,找到Con原创 2022-01-26 16:32:31 · 3330 阅读 · 0 评论 -
TensorRT动态卷积转置(ConvTranspose)自定义op(动态反卷积/权重动态反卷积)
随着算法模型的不断演变,常规的模型结构已经不能满足算法人员的需求,于是衍生出形色各异的op,比如动态卷积转置,即前向传播过程中,weight也会随着输入的不同而发生改变。声明:所谓动态卷积转置指在前向传播过程中weight发生变化此处的动态卷积转置只是笔者对该op的一种称呼本文ConvTranspose只支持2D目前发现只在TensorRT中存在动态的问题,其他如onnx、OpenVINO不存在该问题动态卷积转置大概长下面这个样子。其中input是输入,weight也是输入。weight根据前原创 2022-01-10 11:39:50 · 1048 阅读 · 0 评论 -
TensorRT动态卷积自定义op(多输入卷积/权重动态卷积)
随着算法模型的不断演变,常规的模型结构已经不能满足算法人员的需求,于是衍生出形色各异的op,比如动态卷积,即前向传播过程中,weight也会随着输入的不同而发生改变。声明:所谓动态卷积指在前向传播过程中weight发生变化此处的动态卷积只是笔者对该op的一种称呼TensorRT通过ConvMultiInput来实现这种卷积(多输入卷积),但是只支持INT8显式量化目前发现只在TensorRT中存在动态的问题,其他如onnx、OpenVINO不存在该问题动态卷积大概长下面这个样子。其中inpu原创 2022-01-06 17:38:51 · 2252 阅读 · 8 评论 -
解决TensorRT报错:Assertion Error in trtSmToCask: 0 (Unsupported SM.)
错误信息:E20211126 11:55:13.654 140412916315904 tensorrt.cpp:10] …/rtSafe/cuda/caskUtils.cpp (98) - Assertion Error in trtSmToCask: 0 (Unsupported SM.)原因:TensorRT版本与cuda或者cudnn版本不匹配,如笔者的TensorRT版本为7.2.1,而cuda为最新的11.5版本,其中cuda版本过高无法适配:解决:重装cuda或者TensorRT原创 2021-11-27 10:01:58 · 2539 阅读 · 0 评论 -
TensorRT动态输入尺寸下的自定义op巨坑
首先,关于自定义插件基本问题,这里我就不再赘述了如何写一个插件:参考此处如何在python 或 C++中使用自定义插件:参考此处自定义op需要编写:getOutputDimensions,我们会根据inputs来推断output dimensions,如:nvinfer1::DimsExprs DReflectPadPlugin::getOutputDimensions(int outputIndex, const nvinfer1::DimsExprs *inputs, int nbInputs,原创 2021-11-19 17:06:41 · 1424 阅读 · 0 评论 -
onnx转TensorRT推理自定义插件(op)的方式,Python&C++
首先,无论是python还是C++,我们都要写一个自己的plugin,一般的不支持op网上都有参考的版本,写plugin的参考教程:如何写好一个opC++实现和使用过程:下载TensorRT官网源码, 进入plugin可以看到许多已经定义好的插件可以参考,照着写就行,以ScatterND为例。先写好自己的plugin,如名为:myplugin注意:此处plugin代码里面不能包含REGISTER_TENSORRT_PLUGIN(MyPluginCreator)代码,不然会导致重复注册的问题。在p原创 2021-11-08 15:19:45 · 3773 阅读 · 2 评论 -
基于python实现onnx转TensorRT自定义op
TensorRT源码上提供了一些python的samples,但是说好的提供onnx_packnet这个sample是onnx2trt自定义op的示例,但却没有写完整,不熟悉的人很难看懂。但其实Python版本的onnx2trt自定义op很简单,过程如下:找到一个需要自定义op的C++插件(或者自己写)如:grid_sampler使用cmake将上述grid_sampler相关文件生成C++库文件libtensorrtplugins.so在Python文件的最开头加上一句:ctypes.CDLL("原创 2021-09-15 21:47:32 · 847 阅读 · 0 评论 -
使用python进行onnx转trt(TensorRT)模型,简单有效
运行环境python 3.6.9tensorrt 7.1.3.4简单代码实现import tensorrt as trtimport sysimport osTRT_LOGGER = trt.Logger(trt.Logger.WARNING)EXPLICIT_BATCH = 1 << (int)(trt.NetworkDefinitionCreationFlag.EXPLICIT_BATCH)def printShape(engine): for i in r.原创 2021-07-24 10:08:30 · 5457 阅读 · 14 评论