TensorRT源码上提供了一些python的samples,但是说好的提供onnx_packnet这个sample是onnx2trt自定义op的示例,但却没有写完整,不熟悉的人很难看懂。但其实Python版本的onnx2trt自定义op很简单,过程如下:
- 找到一个需要自定义op的C++插件(或者自己写)如:grid_sampler
- 使用cmake将上述grid_sampler相关文件生成C++库文件
libtensorrtplugins.so - 在Python文件的最开头加上一句:
ctypes.CDLL("/home/tensorrt/libtensorrtplugins.so")
注意:模型中使用的不支持op的名字应该与注册的插件名字一致
如果不一致且模型难以重新训练,可直接对onnx模型里的node进行修改,或者修改插件注册名。

本文详细指导如何在TensorRT中使用Python实现自定义op,以GridSampler为例,包括C++插件的创建、库文件加载及模型中op名称与插件名称的对应。适合初学者理解自定义OP的实践过程。
1135

被折叠的 条评论
为什么被折叠?



