TensorRT是一个高性能的深度学习推理(Inference)优化器,可以为深度学习应用提供低延迟、高吞吐率的部署推理。TensorRT可用于对超大规模数据中心、嵌入式平台或自动驾驶平台进行推理加速。TensorRT现已能支持TensorFlow、Caffe、Mxnet、Pytorch等几乎所有的深度学习框架,将TensorRT和NVIDIA的GPU结合起来,能在几乎所有的框架中进行快速和高效的部署推理。(这段借鉴别人的文章)

但是,tensorRT真的对于所有的框架都一视同仁么,我们上一张图就知道到底是什么情况了。

这是tensorRT7.1的c++接口文档,针对于三种转换格式的定义的类的数量都明显不同。一般的转换路径有以下几种:tensorflow->onnx->tensorRT;tensorflow->uff->tensorRT;tensorflow->caffe->tensorRT(没有尝试过);pytorch->onnx->tensorRT。其他的转换路径还没了解。所以大部分都是从onnx和uff这两个中间载体转换的。但是可以发现caffe提供的类个数最多。而onnx最少还没有plugin的格式(onnx-tensorrt好像可以支持,还未仔细了解),uff只支持IPluginFactory和IPluginFactoryExt这两种。

对于绝大部分的非分类网络,肯定是需要一些自定义的插件来对tensorrt算子进行补充的。那么也就是说,官方文档中只有uff和caffe这两条路可以走通。本文中将详细说明tensorflow->uff->tensorRT这个路径下的模型转换,自定义插件的开发,最终部署这三个方面。

1,tensorflow->uff

tensorflow freeze的pb模型转换默认数据格式为NHWC,而在tensorRT中的数据格式默认为NCHW。但是不必担心,pb模型通过tensorRT转换工具转换后的uff模型,在解析阶段会自动解析为NCHW的算子。所以只需要将输入的格式设置成NCHW即可。

转换命令:

convert-to-uff frozen_inference_graph.pb -p config.py -t

转换的配置文件config.py中定义了网络中不支持的算子与自定义算子的对应关系:

import graphsurgeon as gs
import tensorflow as tfInput = gs.create_node("Input",op="Placeholder",dtype=tf.float32,shape=[1, 3, 224, 224])ResizeNearest = gs.create_node(name="ResizeNearest", op="BatchTilePlugin_TRT", dtype=tf.float32, axis=2)namespace_plugin_map = {"input_data": Input,"upsampled": ResizeNearest
}def preprocess(dynamic_graph):# Now create a new graph by collapsing namespacesdynamic_graph.collapse_namespaces(namespace_plugin_map, unique_inputs=True)

程序中重新定义了输入和upsample算子,并使用name_plugin_map重新进行了映射。

经过转换之后会生成frozen_inference_graph.uff的文件,使用Netron查看,对应的input与upsample的算子类型已经改变。

tensorrt轻松部署高性能dnn推理_部署环境之:tensorRT的插件相关推荐

  1. tensorrt轻松部署高性能dnn推理_实战教程:TensorRT中递归神经网络的介绍(中文字幕)...

    NVIDIA TensorRT是一个高性能的深度学习推理优化器和运行时,它提供低延迟和高吞吐量.TensorRT可以从每个深度学习框架导入经过训练的模型,从而轻松地创建可以集成到大型应用程序和服务中的 ...

  2. tensorrt轻松部署高性能dnn推理_基于TensorRT车辆实时推理优化

    基于TensorRT车辆实时推理优化 Optimizing NVIDIA TensorRT Conversion for Real-time Inference on Autonomous Vehic ...

  3. tensorrt轻松部署高性能dnn推理_NVIDIA Triton推理服务器助力深度学习推理

    NVIDIA Triton推理服务器(NVIDIA Triton Inference Server),此前称为TensorRT推理服务器(TensorRT Inference Server),现可通过 ...

  4. tensorrt轻松部署高性能dnn推理_NVIDIA TensorRT高性能深度学习推理

    NVIDIA TensorRT高性能深度学习推理 NVIDIA TensorRT™ 是用于高性能深度学习推理的 SDK.此 SDK 包含深度学习推理优化器和运行时环境,可为深度学习推理应用提供低延迟和 ...

  5. edas部署需要哪些参数_部署配置:通过EDAS部署

    一.概述 EDAS是阿里云上的一个服务,提供了中间件,部署,及运维等能力,详情见EDAS文档.云效对EDAS进行了集成,可以把在云效上打出来的war包或者jar包部署到EDAS中. 为了在云效上集成E ...

  6. edas部署需要哪些参数_部署无线AP 需要考虑哪些因素?

    AP覆盖面积: 室内容许最大覆盖距离为35~100米 室外容许最大距离100~400米 AP覆盖范围: 2.4G电磁波对于各种建筑材质的穿透损耗的经验值如下: A.水泥墙(15~25cm): 衰减10 ...

  7. tensorrt安装_基于TensorRT的BERT推断加速与服务部署

    BERT的出现真是广大NLPer的福音,在很多任务上能取得显著提升.不例外,作者在工作过程中也使用了BERT进行下游任务训练,但在感叹BERT真香的时候,它及其漫长的推断时间让人感到很为难.本文就记录 ...

  8. windows上配置TensorRT yolov5 -6.0部署 tensorrtx视频流推理

    目录 前言 前置环境 一,TensorRT下载安装 二,tensorrtx正常windows部署,图片推理 2.1 VS配置(这一步骤二和三通用) 2.2 导出wts模型 2.3 生成engine引擎 ...

  9. 【TensorRT】将 PyTorch 转化为可部署的 TensorRT

    文章目录 一.什么是 ONNX 二.PyTorch 转 ONNX 三.什么是 TensorRT 四.ONNX 转 TensorRT 在深度学习模型落地的过程中,会面临将模型部署到边端设备的问题,模型训 ...

最新文章

  1. 网络和大数据成为重要文化生产力
  2. 曹原获奖了,不是他终于有资格获奖,是奖终于有机会颁给他
  3. opencv 中affine函数实现旋转和平移
  4. VTK:PolyData之CurvaturesDemo
  5. 四种解法——求子序列的最大连续子序和(普通解法、求和解法、分治法、O(n)级解法)(面试经典题)
  6. 用doxygen自动生成文档
  7. 【IDEA】idea es 报错 Cause: invalid type code: 2D
  8. How to remove replication in Syteline
  9. @程序员,为你揭开直播技术的神秘面纱!
  10. C++随记总结(1)----关于C++中的大小端、位段(惑位域)和内存对齐
  11. 【C++编程技巧】函数多个返回值
  12. 按照软件的模板规范要求,修改了模板中的字体大小,为何展示时,字体并未发生变化?
  13. 人口流向数据_中国人口流动数据挖掘分析云平台
  14. Quartus 调试中的Nios 程序
  15. 安装Scylla之后出错ImportError: pycurl: libcurl link-time ssl...
  16. MyBatisPlus之SpringBoot集成
  17. 【2016江苏省小学生夏令营选拔】小 X 学游泳
  18. 移动端测试——adb命令
  19. JavaScript new Date 处理毫秒转换成时间
  20. html缩放背景不缩放_如何在缩放视频通话期间隐藏背景

热门文章

  1. Asp.net core应用在 Kubernetes上内存使用率过高问题分析
  2. .NET Core跨平台的奥秘[下篇]:全新的布局
  3. .NET Core+Selenium+Github+Travis CI =amp;gt; SiteHistory
  4. Identity Service - 解析微软微服务架构eShopOnContainers(二)
  5. 在CentOS上使用Jexus托管运行 ZKEACMS
  6. .NET Core跨平台:使用.NET Core开发一个初心源商城总括
  7. 开发composer包
  8. VS code 搭建Vue 项目
  9. 基于.NET的系统开发需要注意的问题总结
  10. 项目中使用CLR编程