![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
trtONNX
文章平均质量分 71
库达ZT
这个作者很懒,什么都没留下…
展开
-
使用openvino进行onnx的模型推理过程
通过model = core.compile_model(xx.onnx)编译模型- 通过iq = model.create_infer_request()创建推理请求获取输入的tensor获取输出的tensor配置输入大小,因为是动态batch,需要先设置大小,此时会分配空间获取输入指针,必须set shape后才能获取数据指针,否则会存储空间没分配而异常- 把图像预处理并储存到 input_data_host- iq.infer() 执行推理步骤。原创 2023-07-26 15:42:07 · 1550 阅读 · 0 评论 -
TRT3-trt-basic - 6 Int8的量化
Int8量化类似于一个黑盒子,有一点蒸馏的感觉,用int8逼近fp32的推理结果。我们只需要按照步骤设定好参数之后set就可以,并不需要特别关注于他是怎么修改权重的量化就是将浮点数转为证书的过程比如有一个FP32的浮点型数字,然后我们需要把这个数变为整型,也就是要量化它,怎么搞。我们可以把这个数字乘上一个量化系数s,比如,那么量化后的值,然后我们对这个数字进行四舍五入(也就是round操作)最终为523。但这样就行了吗?523有点大啊。原创 2023-07-18 18:36:00 · 261 阅读 · 0 评论 -
TRT3-trt-basic - 5.1 封装插件
传入cu里的时候也是通过info传入,之后再通过config的读取就可以读取出来各种类型的文件,这样就不用再设置字符串类型还是float32类型。从导出的onnx文件也可以看出来,类型是plugin,name是MYSELU,剩下的都在info里。首先可以看到这次的g.op不再是MYSELU了,而是plugin,那为什么.cu还能识别出来呢?之前TRTbasic4是新增插件,这次我们看看不新增插件,仅凭封装可不可以达到一样的功能。而且在这里creator什么的用的都是默认的实现。原创 2023-07-18 14:16:51 · 299 阅读 · 0 评论 -
TRT3-trt-basic - 5 插件的编写
还是一模一样的genonnx.py但是不一样的是这里的激活算子改为了MYSELU其中这个MYSELUImpl就是咱们插件真正实现的一个类所有的插件都要继承于torch.autograd.Function其中MYSELUImpl.apply调用的就是forwardctx是上下文,x就是数据 , p就是parameter。但forward不会实际上生成节点,真正在onnx中生成节点的是g就是graph , x , p 就是参数了我们将这个模型导出:能看到,relu已经变成MYSELU了。原创 2023-07-17 19:59:30 · 213 阅读 · 0 评论 -
TRT3-trt-basic - 4 ONNX结构
1、ONNX的本质,是一种Protobuf格式文件2、Protobuf则通过onnx-ml.proto编译得到onnx-ml.pb.h和onnx-ml.pb.cc或onnx_ml_pb2.py3、然后用onnx-ml.pb.cc和代码来操作onnx模型文件,实现增删改4、onnx-ml.proto则是描述onnx文件如何组成的,具有什么结构,他是操作onnx经常参照的东西model:表示整个onnx的模型,包含图结构和解析器格式、opset版本、导出程序类型。原创 2023-07-17 16:49:24 · 125 阅读 · 0 评论