共计 4031 个字符,预计需要花费 11 分钟才能阅读完成。
本系列文章将手把手介绍,如何借助 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-pip
sudo 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 time
import datetime
import numpy as np
import cv2
import boto3
from jetbot import Camera
from dlr import DLRModel
import 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 降级、平安、设施治理也要与终端集成。另外,如果是视频流交互还波及到编解码、媒体等技术。
正是因为它的复杂性,咱们能够利用云计算提供的服务和接口来疾速原型和开发。
参考链接:
- Nvidia Jetson Nano 介绍
- Nvidia Jetson Nano 镜像烧录
- AWS IoT Greengrass
- NVIDIA Jetson Nano with AWS ML@Edge
- 《智联网・将来的将来》电子工业出版社 2018,6 彭昭
Amazon SageMaker Neo 模型下载