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

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

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

abad36198a443b91558d016643061406.png

这是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的算子类型已经改变。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/305078.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux网卡驱动 pdf,Linux下网卡驱动程序.pdf

zekairecv 于 2015-10-04 00:58:57发表:谢谢weilee1 于 2015-04-19 17:41:05发表:看看雪语阑风 于 2014-12-04 11:03:39发表:楼主好人Doctor易 于 2014-10-08 13:06:25发表:也不说网卡型号吗wzj3521787 于 2014-09-12 11:12:10发表:这是指网卡驱动编程还是编译lcdstrongman_hw …

python数学计算_初学者Python学习笔记--数学计算

四则运算 加减乘除 1 2 3 10 - 6 4 5 * 5 25 20 / 5 4.0 3 ** 3 27 取整计算 13//3 4 取余数计算 13%3 1 计算顺序,括号>乘除>加减 4 5 - (36) * 2 -9 特殊赋值,可以用_来分割数字,简便识别 num 111_222_333 num 111222333 四舍五入…

做一个网站多少钱?

「一辆车子多少钱?一个房子多少钱?」 这问题在工程师或设计师的眼里就如「一辆车子多少钱?一个房子多少钱?」,这个问题实在空泛到一个让人无法言语的境界,这也是我最常被问到的问题「做一个网站多少钱?」。…

[Abp 源码分析]多租户体系与权限验证

点击上方蓝字关注我们0.简介承接上篇文章我们会在这篇文章详细解说一下 Abp 是如何结合 IPermissionChecker 与 IFeatureChecker 来实现一个完整的多租户系统的权限校验的。1.多租户的概念多租户系统又被称之为 Saas ,比如阿里云就是一个典型的多租户系统&#xff0…

python中csv文件把成绩加入_【学习笔记】python3中csv文件使用

1. readercsv.reader(f, delimiter,):按行读取数据,reader为生成器,读取的每行数据为列表格式,可以通过delimiter参数指定分隔符。import csvwith open(data.csv, encodingutf-8) as f:reader csv.reader(f)header next(reader)…

生存是一种毅力

三月初回到成都,出站时还是凌晨5点多,第一次这么早站在成都的火车站,拥挤的人群和车辆,我的神志却异常的清醒,坚持不要母亲来接我. 到家洗漱后到头就睡,一觉醒来10点多,中午的成都虽不像北京那么阳光普照但也感觉暖暖的.想起在北京训练营的日子,"枯藤老树昏鸦"每天伴…

linux truncate文件,linux系统编程:用truncate调整文件大小

truncate的使用非常简单:int truncate(const char *path, off_t length);参数1:文件名参数2: 文件需要被调整的大小length 大于 文件大小, 文件后面会填充空白字节或者空洞length 小于 文件大小, 文件多出的部分,会被…

python数据分析与展示 pdf课件_python数据分析与展示 课件 相关实例(示例源码)下载 - 好例子网...

开发语言:Python | 大小:9.84KB | 发布时间:2020-05-13 | 立即下载 开发语言:Python | 大小:0.24M | 发布时间:2019-09-09 | 立即下载 开发语言:Python | 大小:0.15M | 发布时间&…

如何在 ASP.Net Core 中使用 SignalR

SignalR for ASP.Net Core 是 SignalR 的浴火重生版,允许你在 ASP.Net Core 中实现实时通讯,这里的 实时 意味着双方都能快速的感知对方发来的消息,比如:一旦 server 端有需要推送的内容将会直接 push 到 client,这和原…

搞笑动图:这些痛,只有程序员懂…

“代码上线后又追加了新特性” “在生产环境做 hotfix” “刚调稳定的系统,公司叕空降了一位架构师,叕要重构现有系统…… ” “当程序员听客户说还在用 IE 时” “当黑客拿到 root 权限之后” “代码进入循环分支后” “项目交接,客户要求开…

python中闭包不是立刻执行_一道神奇的Python面试题,你会吗?

无意间,看到这么一道Python面试题:以下代码将输出什么?def testFun():temp [lambda x : i*x for i in range(4)]return tempfor everyLambda in testFun():print (everyLambda(2))脑中默默一想,这还用说么,肯定是&…

.net 中通用的formatstring格式符整理

格式化日期和数字的字符串经常要用到这个, 就把帮助里面的东西大概整理了一些列在这里了. 下表描述了用来格式化 DateTime 对象的标准格式说明符。 格式说明符名称说明d短日期模式显示由与当前线程关联的 DateTimeFormatInfo.ShortDatePattern 属性定义的模式或者由指定格式提供…

linux内核分为子系统,Linux内核内存管理子系统分析【转】

还是那张熟悉的老图:Linux内核子系统简介(由七个部分组成)Linux内存管理模型:1. 内存管子系统职能:1> 管理虚拟地址与物理地址的映射2> 管理物理内存的分配2. 地址映射管理1> 虚拟地址空间分布:linux采用的是一种虚拟地…

python打包成安装包_把 python 程序打包成 egg 或者 whl 安装包

1.1 安装setuptools 首先要安装setuptools工具。Debian/Ubuntu下可以直接使用apt安装: $ sudo apt-get install python-setuptools 或者通过pip安装: $ pip install setuptools 更新setuptools: $ pip install --upgrade setuptools 或者下载…

关于C#事件处理函数中的参数(object sender, EventArgs e)

1、是事件源,表示触发事件的那个组件 如(button/label/listview...),比如说你单击button,那么sender就是button2、EventArgs是事件参数,它用来辅助你处理事件比如说你用鼠标点击窗体,那么EventArgs是会包含点击的位置…

spss22.0统计分析从入门到精通_数据分析最全资料:SPSS/MATLAB/SQL/SAS/EXCEL经典教材+视频教程,快速入门!...

可以说当今社会数据就是力量。数据分析能力已经成为各个行业必备的技能,如果能熟练掌握数据分析技能,不管是留学申请还是以后的就业,都会是一个很大的加分项。但是目前国内很少有高校专门开设数据分析课程,想要掌握技能大部分要靠…

可反复擦写5万次的手写板,竟然还能用橡皮擦能清除屏幕!

作为一名文艺青年,平时写字画画是我的一大爱好。 心情不错,来个创作! 还记得我们之前介绍过的Boogie Board电子手写板吗? 小木用的就是它。 虽然好用,只不过有时候不小心画错了,只能重新来。 伤心啊…… 不…

普通用户杜绝不请自来的邮件对策

1、给自己的信箱起个“复杂用户名”:许多人习惯用自己姓名的拼音作为用户名,但一般过于简单,这样被垃圾邮件制造者捕捉到的机率很高。因此在申请邮箱时,不妨起个保护性强一点的用户名,比如英文和数字的组合,尽量长一点…

[Abp 源码分析]权限验证

点击上方蓝字关注我们0.简介Abp 本身集成了一套权限验证体系,通过 ASP.NET Core 的过滤器与 Castle 的拦截器进行拦截请求,并进行权限验证。在 Abp 框架内部,权限分为两块,一个是功能(Feature),一个是权限项(Permissio…

cocoscreator editbox 只允许数字_《Cocos Creator游戏实战》做一个数字调节框

当玩家购买道具的时候,一个个买可能会比较麻烦,用数字调节框的话玩家一次性就可以买好几十个了(钱够的话)。运行效果如下:Cocos Creator版本:2.2.0公号"All Codes"后台回复"数字调节框",获取该项目…