本系列文章将手把手介绍,如何借助 Jetson nano 设施,并配合 AWS 机器学习和 IoT 服务实现你本人的边缘智能。在上篇文章中,咱们曾经介绍了整个解决方案的根底概念,以及图片标注和模型训练与优化等工作,如果还没看过,倡议点击这里回看上篇内容。

本篇将重点介绍边缘环境的构建和边缘推理的执行。

一、回顾

本文上篇咱们通过 Amazon SageMaker 实现了边缘智能中的图像标注,模型训练和优化,最终将图像分类的 SageMaker Neo 模型导出到 S3 存储桶中。也就是说,咱们实现了下图流程中右下角局部的内容。

AWS EI image classification

本篇重点分为两大部分:

l 设施端,次要蕴含:装置Jetson nano镜像、SageMaker Neo runtime、Greengrass的部署、运行模型。

l 云端,次要蕴含:配置IoT core与Greengrass、开发与部署Lambda函数、model到设施端。

二、Jetson Nano 的镜像烧录

应用官网举荐的 Etcher 烧录镜像,不同操作系统对应不同操作方法,所以不再具体介绍,可参考这里。烧写胜利后是如下图所示的基于 aarch64-linux 的镜像:

另外在应用 CSI 接口的摄像头时排线不要插反,并倡议测试摄像头。

$ gst-launch-1.0 nvarguscamerasrc ! 'video/x-raw(memory:NVMM),width=3820, height=2464, framerate=21/1, format=NV12' ! nvvidconv flip-method=0 ! 'video/x-raw,width=960, height=616' ! nvvidconv ! nvegltransform ! nveglglessink -e

借此确保能够顺利关上摄像头。代码含意是应用 GStreamer 关上一个3820像素宽,2464像素高的相机数据流,并在一个960像素宽,616像素高的窗口中显示它。

CSI排线

三、应用AWS IoT Greengrass部署模型到Jetson Nano

这个步骤咱们将执行如下操作:

l 3.1 装置SageMaker Neo runtime

l 3.2 装置AWS IoT Greengrass

l 3.3 配置和部署AWS Lambda

l 3.4 设置机器学习模型部署环境

l 3.5 部署机器学习模型Sagemaker Neo到边缘

l 3.6 启动模型并测试

3.1 装置SageMaker Neo runtime

下载.whl 文件并装置,其中蕴含 SageMaker Neo 的一些依赖库来运行 model。能够点击这里下载。

对于 Jetson Nano 以外的设施,也能够通过SageMaker Neo git找到对应的 Device Name 下载。

下载实现后,SSH 到设施中,而后装置.whl 文件:

sudo apt-get install python3-pipsudo pip install dlr-1.0-py2.py3-none-any.whl

并装置 AWS Python SDK boto3:

sudo pip install boto3

3.2 装置 AWS IoT Greengrass

在 Jetson Nano 的零碎中运行如下命令创立 Greengrass user 和 group:

$ sudo adduser --system ggc\_user$ sudo addgroup --system ggc\_group

在AWS管制台上(北京cn-north-1)通过这里介绍的办法创立证书资源并SCP给Jetson Nano。

在Jetson Nano中下载AWS IoT Greengrass Core Software(v1.10)的aarch64 版本(留神版本,只有对应最新的大版本能力部署胜利)。

解压缩Greengrass core和刚下载的证书资源文件:

$ sudo tar -xzvf greengrass-linux-aarch64-1.10.0.tar.gz -C /

$ sudo tar -xzvf <hash>-setup.tar.gz -C /greengrass # these are the security keys downloaded above

下载AWS ATS终端根证书(CA):

$ cd /greengrass/certs/

$ sudo wget -O root.ca.pem https://www.amazontrust.com/r...

在Jetson Nano上启动Greengrass Core:

$ cd /greengrass/ggc/core/$ sudo ./greengrassd start

执行实现后终端会返回一个:

Greengrass successfully started with PID: XXXX

3.3 应用AWS Lambda配置推理代码

登录回控制台(北京cn-north-1),创立Lambda函数。先将GitHub中的aws-samples/aws-greengrass-samples中的hello-world-python下载下来并部署到AWS Lambda中,请点击这里下载。

而后替换hello-world-python的默认代码为这里的内容,但该代码须要引入一些模块入numpy、jetbot、cv2等,请确认Jetson Nano环境蕴含这些依赖。

import timeimport datetimeimport numpy as npimport cv2import boto3from jetbot import Camerafrom dlr import DLRModelimport greengrasssdk

3.4 设置机器学习模型部署环境

登录 AWS 治理控制台(cn-north-1),进入 Greengrass。

抉择并进入咱们在步骤2中所创立的 group。

抉择咱们在步骤3中创立的Lambda函数。

而后使此函数放弃沉闷并长时间运行,为其调配1000MB内存。具体可参阅这里,如下图所示:

放弃 Lambda 函数长时间生存

长时间生存(long-lived)的 Lambda 函数在 AWS IoT Greengrass 启动后函数会主动在本人的容器中放弃运行。这与按需Lambda函数相同,后者在调用时启动,并在没有要执行的工作时进行。无关更多信息,请参考Greengrass Lambda函数的生命周期配置。

在资源中增加 Machine Learning 模型,增加机器学习资源如下图所示,在模型源中抉择咱们上传过的 Sagemaker Neo 模型。本地门路设置为/ml_model。

增加本地资源,这里要留神的是回到 Jetson Nano 中查看/dev/下的文件是否与上面列出的门路对应,如果没有请创立并调配目录拥有者为ggc_user和ggc_group。例如:

/dev$ cd /$ sudo mkdir /nvmap$ sudo chown ggc\_user:ggc\_group \*


本地资源

在部署模型前还须要装置 Openjdk-8。这是 GGC v1.10新性能,用于本地解决数据流并主动将其导出到 AWS 云的流管理器。此性能须要 Greengrass 外围设施上的 Java 8。

sudo apt install openjdk-8-jdk

如果没有装置会报错如下图:

配置Greengrass role,咱们回到Greengrass Group中抉择设置(Settings),抉择Greengrass service role,而后跳转到AWS IAM控制台中增加Greengrass的角色所须要的权限:”AmazonS3fullAccess”、“CloudWatchFullAccess”、“AWSGreengrassResourceAccessRolePolicy”以及“AWSIoTFullAccess”。

Greengrass Service Role

3.5 部署SageMaker Neo训练的模型到边缘

最初,咱们须要把在终端图像分类后的音讯通过MQTT形式上报给云端的AWS IoT Core,所以还须要增加订阅操作,并进行部署。回到Greengrass Group中,左侧的工具栏中抉择订阅(subscription),而后抉择源(source)抉择咱们在步骤3.3中部署好的Lambda,指标抉择IoT Cloud,而后定义一个Topic,例如“dino-detect”。

配置实现后单击右上角的操作(Actions),抉择部署。部署胜利后如下图所示,如果部署失败请查找失败起因:

3.6 启动模型并测试

所有步骤都配置胜利后,就能够测试乐高恐龙的分类器了。在 AWS IoT 控制台中抉择测试,并订阅主题 dino-detect 或#,而后启用 Jetson Nano 的摄像头捕捉并对图像进行分类,最初将后果发送回 AWS IoT 控制台。

总结

再次回顾一下咱们的 Demo 流程图:

AWS EI Demo 流程图

咱们共同完成了边缘智能利用的所有步骤。

AIoT 或 EI 随着 AI 芯片低功耗和低成本使得越来越多的企业关注智联网这个畛域。边缘智能正在促成人工智能(AI)与物联网(IoT)的混合,AI 与 IoT 相辅相成:如果没有 AI,IoT 只是收集数据的传感器;如果没有 IoT,AI 也不会利用到边缘。

AIoT 我的项目的确比其余单纯的一个软件或硬件的研发更加简单,它是多学科或技术栈的交融。比方,数据的采集、剖析、展示可能须要大数据的技术,边缘逻辑的推理、判断须要机器学习的模型,对数据加工后又要与大数据联合去 ETL。云端的逻辑编写、OTA 降级、平安、设施治理也要与终端集成。另外,如果是视频流交互还波及到编解码、媒体等技术。

正是因为它的复杂性,咱们能够利用云计算提供的服务和接口来疾速原型和开发。

参考链接:

  1. Nvidia Jetson Nano 介绍
  2. Nvidia Jetson Nano 镜像烧录
  3. AWS IoT Greengrass
  4. NVIDIA Jetson Nano with AWS ML@Edge
  5. 《智联网・将来的将来》电子工业出版社 2018,6 彭昭

Amazon SageMaker Neo 模型下载