8月13日,Microsoft Azure联合NVIDIA企业开发者社区,举办了“Microsoft Azure IoT&NVIDIA Jetson开发者”活动。
本人有幸参加,在这里对讲解的部分理论基础进行了记录(没有代码相关哦)。٩(๑>◡<๑)۶

Azure IoT

IoT

物联网(Internet of Things,IoT)是通过信息传感设备,按照约定的协议,把任何物品与互联网连接起来进行信息交换和通信,以实现智能化识别、定位、跟踪、监控和管理的过程与技术。
如下图所示(来自本活动PPT),IoT跨过了早期市场与主流市场间的鸿沟,相信随着关键技术的发展,未来IoT将在各界大放异彩。

Azure

官网介绍,Microsoft Azure 是用于通过全球数据中心网络生成、部署和管理智能应用程序的云服务。Azure 云平台汇集了超过200种的产品和云服务,利用所选的工具和框架,可以在多个云中、本地以及在边缘生成、运行和管理应用程序,以实现对方案实现的支持。
在这里插入图片描述

Azure资源申请

演示实例:IoT Plug & Play

构建物联网需要大量设备连接到云平台,但设备间由于生产厂家或功能等的不同,存在种种差异,需要深入了解设备细节才能实现设备的接入与管理,这些使得设备与IoT方案的集成困难重重。
那么要怎样才能实现一个方案的快速搭建呢?
答案便是IoT Plug & Play~

在这里插入图片描述
如上图所示,整个IoT Plug & Play大致由三个关键要素构成。

  • Digital Twin Definition Language(DTDL)是用于描述设备的语言,可将设备能力进行建模。
  • 设备的模型由遥测、属性和命令三种元素定义。
    – 遥测是由设备发出的数据,包括常规读数流、偶发错误或信息消息。
    – 属性包括只读或可写两种属性。举例来说,只读属性有设备序列号等;可写属性有水位报警阈值、报告环境状况的时间间隔等。
    – 命令是对设备的操作和控制。例如关闭设备、控制设备进行灌溉等。
  • 最后是IoT Hub&IoT Central。IoT Hub用于保证 IoT 应用程序和设备之间双向通信的安全性。IoT Central 能自动加载经过认证的设备模型,并实现对设备状况的监控、设备和其相关数据的管理以及规则的自定义。

如此,有了设备模型,只需要知道设备具有哪些能力,不再需要了解设备接口和底层的具体细节,从而能减少针对设备特异性所需的个性化定制。再结合IoT Hub&IoT Central就可以轻松地连接、监控和管理设备了。^_^

在本次演示实验中,微软的熊宇老师使用连接了传感器和LED的M5Stack Core2简单演示了IoT Plug & Play快速搭建方案的过程。
在UIFlow图形化IDE中拖拽模块再填写相应参数即可完成对业务逻辑的设计。比如这里实现了每隔5s发送传感器获取到的温湿度压力值以及加速度值,还可通过IoT Central发出的命令实现对LED点亮颜色的控制。
在这里插入图片描述
通过生成API Token,UIFlow就可与对应的IoT Central相连。再在UIFlow中创建template和device,然后将程序烧录到设备中。这样就可以在IoT Central中查看到我们刚刚设计好业务逻辑的设备啦!(连接好的状态是Provisioned)
在这里插入图片描述
现在就能实现对设备的监控和命令了。
这里能看到前面所要求的每隔5s发送的数据。
在这里插入图片描述

这里是将设备上的1号LED小灯的光设置为了红色并点亮。
在这里插入图片描述

可以看出整个过程的操作十分简单,也无需自己写代码(当然有特殊的需求需要自己写)。

对更多详细信息感兴趣的小伙伴还可以戳这里→链接: 官方IoT Plug & Play介绍
(注:本小节所用图来自本活动PPT或直播截图

NVIDIA Jetson

Jetson

Jetson是NVIDIA推出的一系列面向边缘AI的高性能低功耗平台,包括Jetson Nano和Jetson Xavier NX等。平台包括 Jetson 模组(外形小巧的高性能计算机)、用于加速软件的 NVIDIA JetPack SDK,以及包含传感器、SDK、服务和产品的生态系统,上述软硬件与生态的支持使得开发过程更为容易。
在这里插入图片描述
相关硬件(看不清可以去官网)与软件说明截图如下:
在这里插入图片描述
在这里插入图片描述

利用TAO Toolkit实现模型的训练、调整与优化

TAO这三个大写字母即是来自Train(训练)、Adapt(调整)、Optimize(优化)的首字母。
TAO Toolkit是一个基于 python 的工具包,它使开发人员能够使用 NVIDIA 预先训练好的模型,并让开发人员能够使用流行的网络架构适配自己的数据来训练、调整、修剪和导出以进行部署。它拥有简单的接口和抽象,提高了深度学习训练工作流程的效率。
在这里插入图片描述使用的TAO Toolkit大致流程如下:
配置环境和路径→准备数据集和预训练模型→定义执行设置→训练模型→评估训练结果→(模型剪枝→重新训练剪枝后的模型→)模型导出。

利用TensorRT部署TAO训练的模型

TensorRT可在以下几个方面对模型的推理进行优化:

  • 精度校准:在尽量保证准确率的情况下,使用如FP16或INT8的低精度数据类型能使模型的体积更小,从而加速推理并减少延迟。
  • 动态显存:避免显存的重复申请以及浪费,如让使用完的显存及时释放。
  • 多流执行:并行处理多个输入流。
  • 网络层融合:纵向上可将结构和计算方式相同的层融合计算。横向上则可把卷积、偏置和激活层融合为一个CBR结构。这样能减少网络层数,优化对GPU显存和带宽的使用。
  • 内核自调整:以当前模型在目前所在GPU平台上达到最优性能为目的,调整算法并设置内核。

在这里插入图片描述
如上图所示,整个使用流程大致如下:
将训练好的网络优化得到推理引擎,并序列化到磁盘得到Plan文件→需要使用时对上述文件进行反序列化,生成可执行的引擎。

需要注意:生成的Plan文件不能跨硬件平台或软件版本使用!

(注:本节所用图来自本活动PPT或直播截图

总结

我们可以看到Azure丰富的资源以及其在IoT业务上的各种解决方案,Jetson软硬件与生态的支持也让边缘AI开发变得更为容易。
本次第二个动手实验也是首先使用Azure的资源获取训练数据,再使用Azure资源中的“自定义视觉”完成模型训练,最终导出模型上传至Jetson Nano实现了一个简单的口罩识别解决方案。
希望小伙伴们在这里可以找到自己感兴趣的东西(o´ω`o)ノ~

Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐