前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >边缘计算笔记(一): Jetson TX2上从TensorFlow 到TensorRT

边缘计算笔记(一): Jetson TX2上从TensorFlow 到TensorRT

作者头像
GPUS Lady
发布2019-06-18 21:03:56
4.6K0
发布2019-06-18 21:03:56
举报
文章被收录于专栏:GPUS开发者GPUS开发者

NVIDIA去年发布了一个线上讲座,题目是《 AI at the Edge TensorFlow to TensorRT on Jetson 》。

我们将视频翻译并用笔记的方式分享给大家。

完整内容主要介绍使用TensorFlow开发的深度神经网络如何部署在NVIDIA Jetson上,并利用TensorRT加速到5倍。

您将了解到:

1.TensorFlow性能如何与使用流行模型(如Inception和MobileNet)的TensorRT进行比较

2在Jetson上运行TensorFlow和TensorRT的系统设置

3 如何检查TensorFlow graph 以获得TensorRT兼容性

4.将TensorFlow图像分类模型转换为TensorRT的工作流程

5. 如何在Jetson TX2上执行TensorRT图像分类模型

由于这是一个大约1个小时的视频,篇幅有限,所以我们将利用三天的时间重现整个笔记内容。

注意今天是第一部分。

今天,我主要讨论如何在jetson嵌入式深度学习平台上部署tensorflow模型。在开始之前,我将简要介绍深度学习在许多高级人工智能应用程序中的作用,以及Nvidia Jetson最适合解决的一类应用程序,然后,我将讨论各种使开发人员使用的深度学习的软件框架,重点讨论由谷歌发布的流行开源框架tensorflow。

我还将介绍用于深度学习模型的推理加速器tensorRT,您将了解将模型从tensorflow转换为tensorRT以部署在Judson TX2上所获得的性能优势。然后,我将提出一个使用tensorRT预训练的tensorflow模型进行图像分类的项目,这个项目可以在github上查看。

我们还会讲解使用Jetpack 3.2运行代码示例,最后,我将讨论将tensorflow模型转换为tensorRT的工作流。并非tensorRT开发人员指南中记录的所有工作流都支持jetson,因此了解应用于jetson的流程非常重要。

在我们开始讨论如何将tensorflow模型转换为tensorRT之前,我想介绍一下深度学习。

深度学习是机器学习的一个分支,其特点是使用几个,有时上百个功能层。深度学习已经从能够进行线性分类的感知器发展到添加多层来近似更复杂的函数。加上卷积层使得小图像的处理性能有了提升,可以识别一些手写数字。现在,随着大型图像数据集的可用性和高性能并行计算卷积网络正在大规模图像上得到应用,从而实现了以前不实用的广泛应用。

在这里,我们看到一些实际应用的深度学习是如何被使用的。

深度学习擅长的一个领域是图像分类和目标检测,可以用于机器人和自动车辆以及其他一些应用程序。对于机器人来说,目标检测是很重要的,因为它使机器人智能地使用视觉信息与环境交互。深度学习也用于人脸识别,可以通过视觉来验证个人的身份信息,常见于智能手机。但深度学习不仅仅是图像处理,还可以用来做自然语言处理,比如智能音箱和语音辅助搜索。其他应用还包括医学图像、解释地震图像判读和内容推荐系统。

很多应用可以利用云端强大的性能,但有些应用就不能,比如一些应用程序需要低延迟,如机器人或自动汽车,响应时间和可靠性是至关重要的。还有应用程序需要高带宽,比如视频分析,我们不断地流数据从几个摄像机传输给远程服务器是不实际的。还有些应用比如医疗成像,涉及到病人数据的隐私。另外对于无人飞机,也无法使用云。对于这些应用我们需要在传感器本身或者附近,就近处理,这就是为什么NVIDIA Jetson平台是一个很好的边缘计算平台。

典型的Jetson平台的工作流程是在GPU服务器或者工作站上进行训练, 然后将训练的数据模型在Jetson上做边缘推理。Nvidia通过为所有主要的深度学习软件框架集成CUDA加速,使得训练模型变得容易。这些软件框架简化了开发和部署深度学习应用程序的过程。

这些框架大多有细微的差别,但每个框架通常都提供了构建神经网络的方法和训练神经网络的算法。虽然有许多不同的框架,每个框架都有自己的好处,但本次讲座我们将把tensorflow作为讨论的主题

TensorFlow是种流行的深度学习框架,由谷歌公司开源。在TensorFlow里,神经网络被定义成一系列相关的操作构成的图,这些操作可能是卷积,也可能是矩阵乘法,还可能是其它的任意对每层的元素进行变换的操作。虽然在训练的过程中,网络层中的参数会发生变化,但网络结构不会。

在典型的工作流程中,开发人员通过在Python中进行tensorflow API调用来定义计算图形,Python调用创建一个图形数据结构,完全定义神经网络,然后开发人员可以使用明确定义的图形结构来编写训练或推理过程。

例如,在一个称为监督学习的过程中,开发人员通过输入数千甚至数百万个要学习的数据样本来训练网络,在该图中,网络被训练以对猫和狗进行分类,图像通过网络向前馈送 ,使用可用于Tensorflow的训练算法,缩小到只有两个节点,其输出值对应于每个类标签的得分,我们调整网络的参数,使预测的输出更好地匹配所需的输出。监督学习还可用于其他任务,如对象检测和图像分割。

除了定义新的神经网络之外,很容易重新使用已经由其他开发人员或研究人员定义和训练的现有网络,这些所谓的预训练网络可以按原样使用重新用于新任务,叫迁移学习。 在迁移学习的情况下,开发人员将从已保存的文件中加载预先训练的参数,然后使用新数据集运行训练过程,这种技术通常会导致更高的准确度,因为训练样本少于从头开始训练网络。

一旦网络完成,就可以直接部署模型。然而,如果模型使用tensorRT进行优化,那么通常会有显着的性能优势。TensorRT是由nvidia提供的,是一种优化神经网络推理的加速器,与tensorflow和其他框架不同,tensorRT不用于训练深度学习模型,而是在你完成训练时 使用tensorRT优化模型以进行部署,转换过程重新构建模型以利用高度优化的GPU操作,从而降低延迟并提高吞吐量。

通过使用tensorRT优化Tensorflow模型并在Jetson tx2上进行部署,在相同配置下测试的每个模型在使用张量RT进行优化时执行的速度超过两倍,从而实现了性能改进.

作为我们在github上发布的开源项目的一部分,这个github项目是在Jetson tx2上使用TensorRT优化Tensorflow模型的有价值的参考,除了基准测试脚本之外,我们还包括一个使用示例程序对图像进行分类 预先训练的模型和在Jetson tx2上安装tensorflow和tensorRT的说明,强烈建议大家上去看看以获取任何细节.

所以让我们开始讨论如何使用tensorRT优化Tensorflow模型,如前所述,tensorRT是一个深度学习推理加速器,我们使用Tensorflow或其他框架定义和训练神经网络,然后使用tensorRT优化模型以产生我们称之为的引擎这个优化过程可能需要一些时间,特别是在Jetson TX 2上,但是一旦优化完成,引擎可以保存到磁盘并稍后加载以进行推理。 一旦我们创建了tensorRT,引擎执行就相当简单,但是从Tensoflow模型创建引擎可能需要一些努力。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-06-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 GPUS开发者 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
边缘可用区
腾讯云边缘可用区(TencentCloud Edge Zone,TEZ)是腾讯云的本地扩展,适用于解决计算、存储和服务可用性问题。腾讯云边缘可用区可为您带来云的诸多优势,例如弹性、可扩展性和安全性。借助腾讯云边缘可用区,您可以在靠近最终用户的地理位置运行对延迟敏感的应用程序,基本消除延迟问题。腾讯云边缘可用区提供与中心节点一致的体验,助力业务下沉,具备更低延时、更广覆盖、更少成本等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档