写点什么

边缘机器学习:借助 AWS IoT Greengrass 使用和重新训练图像分类模型

  • 2019-09-25
  • 本文字数:3688 字

    阅读完需:约 12 分钟

边缘机器学习:借助 AWS IoT Greengrass 使用和重新训练图像分类模型

随着 AWS IoT Greengrass 图像分类连接器在今年的 re:Invent 大会上推出,在边缘站点通过 AWS IoT Greengrass 使用图像分类变得比以往更加轻松。AWS IoT Greengrass 是驻留在本地设备上的软件,因此它可以分析更接近数据源(传感器等)的数据。通过使用 AWS IoT Greengrass 图像分类连接器,无需编写代码,即可将 AWS IoT Greengrass Core 设备连接到第三方应用程序、本地软件和 AWS 服务。AWS IoT Greengrass 图像分类连接器可以使 AWS IoT Greengrass Core 设备将图像分类为多个类别之一(例如,将工厂中的微芯片分类为有缺陷/无缺陷、对库存类型进行分类,或确定您在 Instagram 上关注的狗狗的种类)。这种预测被称为 推理。总之,图像分类和 AWS IoT Greengrass 使您即使在设备与云断开连接时也能够执行推理!


AWS IoT Greengrass 图像分类连接器在后台使用机器学习模型,该模型已经使用 Amazon SageMaker 中的图像分类算法进行训练。通过部署连接器,可以自动在 AWS IoT Greengrass Core 设备上拉取和配置进行预测所需的所有 Lambda 函数和机器学习库 (MXNet)。


在这两篇博文中,我们将介绍一个使用图像分类创建应用程序的端到端示例。在第 1 部分中,我们将在 Amazon SageMaker 中创建一个新的图像分类模型,并使用 AWS IoT Greengrass 图像分类连接器启动和运行该模型。在第 2 部分中,我们将收集现场数据,重新训练我们的模型,并观察推理结果的变化情况。

构建的对象

我们将解决一个可通过使用图像分类来解决的实际问题:在回收利用设施中对饮料包装容器进行分类。我们将训练我们的模型,确定图像中是否包含啤酒杯、酒瓶、咖啡杯或易拉罐。如果图像不属于其中的任何一类,我们还将包含杂类。


首先,我们将使用 Caltech 256 数据集构建图像分类模型。然后,我们将创建一个 AWS IoT Greengrass 图像分类连接器,并通过专门用于对饮料包装容器进行分类的 Lambda 函数与之交互。在第 1 部分末尾,我们将得到以下架构:


先决条件

要遵循本文中的说明,您需要:


  • Raspberry Pi 3 Model B

  • Raspberry Pi Camera Module V2 – 800 万像素,1080p

  • 请确保在运行 AWS IoT Greengrass Core v1.7.0 的 Raspberry Pi 中部署一个 Greengrass 组。请确保您的 Greengrass 组具有 IAM 组角色,该角色至少附加 AWSGreengrassResourceAccessRolePolicy 和 AWSGreengrassFullAccess 策略。您可以通过打开 AWS IoT 控制台并选择设置来执行此操作。有关使用 AWS IoT Greengrass 设置设备的信息,请访问 AWS IoT Greengrass 开发人员指南中的 AWS IoT Greengrass 入门。


要使用 IoT Greengrass 图像分类连接器,我们需要安装用于图像分类的机器学习库 MXNet 所需的依赖项。按照 图像分类连接器连接器文档中有关 ARMv7 概述的安装脚本进行操作。


注意:要在 Raspberry Pi 上安装依赖项,必须增加交换文件的大小。我们建议将大小设置为 1000。此安装最多可能需要 1 小时。


最后,按照 图像分类连接器文档中的故障排除部分,运行以下命令,以防止在部署期间出现特定 Raspberry Pi/opencv 的问题:


$ sudo ln /dev/null /dev/raw1394
复制代码


如果您在执行这些步骤时遇到了问题,请参阅 AWS IoT Greengrass 文档中的故障排除部分。

构建和测试应用程序

首先,我们将创建一个 Lambda 函数,该函数可以使用 Pi 摄像头拍照,并使用图像分类模型进行预测。

创建 Lambda 函数

创建 Lambda 函数。从 GitHub 将 beverageclassifier.py 下载到一个新目录中,然后将 AWS IoT Greengrass Machine Learning SDK 下载并解压到同一个位置。将该目录压缩到一个 .zip 文件中,并使用该文件在 AWS Lambda 控制台中创建一个 Lambda 函数。我们将 Lambda 函数命名为 beverage_classifier。在 AWS IoT 控制台中,将此 Lambda 函数添加到您的组,并将其配置为长期使用的 Lambda 函数,内存限制为 128MB,超时为 10 秒,如以下屏幕截图所示。有关创建和打包 Lambda 函数的更多信息,请参阅 AWS IoT Greengrass 开发人员指南中的创建和打包 Lambda 函数。


在 Raspberry Pi 上运行以下命令,以安装 AWS IoT Greengrass Core SDK:


$ pip install greengrasssdk
复制代码


要使用 Pi 摄像头,我们需要设置 Raspberry Pi 和一些本地资源。按照 AWS IoT Greengrass 开发人员指南中的配置 Rasberry Pi 和将资源添加到 Greengrass 组部分中的步骤进行操作。


请注意,与图像分类连接器的交互通过 AWS IoT Greengrass Machine Learning SDK 实现。


创建模型

我们将使用 Amazon SageMaker 来创建和训练我们的图像分类模型。在 Amazon SageMaker 控制台中,使用我们在 GitHub 上提供的示例创建笔记本。


遵循笔记本中针对第 1 部分的说明。完成后,您将拥有一个用于配置图像分类连接器的 Amazon SageMaker 训练作业。

配置图像分类连接器

现在我们有了训练作业,就可以设置连接器了。将连接器部署到我们的 Greengrass Core 设备后,我们的图像分类模型可以由我们在上一步中创建的 Lambda 函数在本地使用。


首先,在您的 Greengrass 组中创建机器学习资源。您可以在 AWS IoT 控制台的 Greengrass 组页面中找到您的组。在页面上的资源下,选择机器学习选项卡,然后选择添加机器学习资源。使用以下屏幕截图中的值填写字段。对于 SageMaker 模型,请务必选择我们在上一步中创建的 Amazon SageMaker 模型。



选择保存并创建部署。


现在我们准备创建连接器。导航到您的 Greengrass 组,选择连接器选项卡,然后选择添加连接器。我们会将此连接器部署到 Raspberry Pi,因此在选择连接器上,选择 Image Classification ARMv7 连接器。


在下一页,我们将为连接器配置一些参数。选择您在上一步中创建的机器学习资源。对于本地推理服务名称,请输入 beverage-classifier。当我们通过 AWS IoT Greengrass Machine Learning SDK 调用连接器时,此名称将用于我们的 Lambda 代码中。使用此屏幕截图中的值配置连接器的其余参数。



选择添加,然后创建新部署。我们的 Lambda 函数现在可以访问我们的图像分类模型了!


如果您在执行上述任一步骤时遇到了问题,请参阅 图像分类连接器文档中的故障排除部分

配置订阅

现在我们已经设置了连接器和 Lambda 函数,接下来我们创建一种与我们的应用程序交互的方法。在 AWS IoT 控制台中的测试页面中,我们将配置 AWS 云和 beverage_classifier Lambda 函数之间的订阅,以便我们可以触发设备捕获图像并在控制台中查看推理结果。实际上,任何 MQTT 消息都可以触发 beverage_classifier Lambda 函数。我们使用 AWS IoT 控制台来触发此示例的事件,因为该控制台提供了简单的调试反馈,此外,还可以使用其他方法触发这些事件。在生产环境中,您可以从其他设备或 Lambda 函数发送这些 MQTT 事件。(即使在 Greengrass Core 设备与云断开连接时,也可以在设备和 Greengrass Core 设备之间发送消息!) 根据您的使用案例,AWS IoT 作业提供了另一种与 Greengrass Core 设备交互的方式。


在 AWS IoT 控制台中,为您的组配置以下订阅:


  1. 关于 /request/classify/beverage_container(主题)的 AWS IoT Cloud(源)到 beverage_classifier Lambda(目标)。有关此主题的消息将触发 Lambda 代码。

  2. 关于 /response/prediction/beverage_container(主题)的 beverage_classifier Lambda(源)到 AWS IoT Cloud(源)。这些消息将出现在 AWS IoT 控制台并报告预测。

设置本地资源

为我们将存储所捕获图像的本地目录配置卷资源:



在部署之前,我们需要在设备上创建 /home/ggc_user/raw_field_data 目录。我们还需要为 ggc_user 提供读取和写入权限:


$ sudo mkdir -p /home/ggc_user/raw_field_data$ sudo chown -R ggc_user:ggc_group /home/ggc_user/raw_field_data/
复制代码


您也可以通过在饮料包装容器分类器 AWS IoT Greengrass Lambda 函数配置中设置运行为(Run as)字段来授予您自己的用户 ID/组 ID 权限。有关更多信息,请参阅 AWS IoT Greengrass 开发人员指南中的使用组特定配置控制 Greengrass Lambda 函数的执行


创建部署。

测试

所有内容都设置完后,我们就可以测试饮料包装容器分类器了。在 AWS IoT 控制台中,选择测试,并订阅主题 /response/prediction/beverage_container。发布到主题 /request/classify/beverage_container 后将捕获并对图像进行分类! 将咖啡杯、啤酒杯、酒瓶或易拉罐放在 Pi 摄像头前面,然后选择发布到主题。您的 Greengrass Core 设备将捕获图像、进行预测,并将结果发送回 AWS IoT 控制台:


小结

测试将证明 Caltech 256 数据集的局限性。您会注意到许多预测不正确或置信度很低。在测试中,除啤酒杯之外,我们发现其他对象的置信度较低或预测不正确:



预测:啤酒杯,置信度:40.38%



预测:啤酒杯,置信度:79.16%



预测:易拉罐,置信度:44.43%



预测:杂类,置信度:95.02%


如果我们的模型准确度能得以提升,这将会很棒。在第 2 部分中,我们将向您展示如何扩展此应用程序来收集您自己的图像并重新训练模型,尝试提高模型性能!


本文转载自博客 AWS。


原文链接:


https://amazonaws-china.com/cn/blogs/china/machine-learning-at-the-edge-using-and-retraining-image-classification-models-with-aws-iot-greengrass-part-1/


2019-09-25 15:49961
用户头像

发布了 1929 篇内容, 共 155.4 次阅读, 收获喜欢 81 次。

关注

评论

发布
暂无评论
发现更多内容

Global Tensor和实习总结|OneFlow学习笔记

OneFlow

深度学习 学习笔记 分布式训练 Global Tensor

聊聊 Kafka:Kafka 消息丢失的场景以及最佳实践

老周聊架构

kafka 4月月更 5月月更

MySQL存储过程批量生成假用户电话号码

芝士味的椒盐

MySQL MySQL 数据库 5月月更

一“碳”究竟:碳交易的生意经与飞轮“燃料”

脑极体

喜报!阿里云首个通过应用多活“先进级”能力评估

阿里巴巴云原生

阿里云 云原生 应用多活

CleanMyMac2022免费版Mac电脑清理软件功能

茶色酒

CleanMyMac2022 CleanMyMac

Nacos源码系列—关于服务注册的那些事

牧小农

源码 nacos

Flutter/Dart:生成最小值和最大值之间的随机数

坚果

5月月更

《对线面试官》Java注解

Java3y

Java 程序员 面试 编程语言 5月月更

在线时间戳格式化转换工具

入门小站

工具

Nginx 如何将所有 HTTP 的流量转移到 HTTPS

HoneyMoose

ssh常用命令总结

入门小站

SSH

低代码实现探索(四十一)未实现小目标

零道云-混合式低代码平台

python进阶-迭代器和生成器

AIWeker

Python 人工智能 5月月更

虎符交易所上线量化网格交易 同步开启活动三重奏

区块链前沿News

活动 虎符交易所

网站开发进阶(二十六)JavaScript 实现页面刷新方法汇总

No Silver Bullet

JavaScript 页面刷新 5月月更

时序数据库在水电站领域的应用

CnosDB

IoT 时序数据库 开源社区 CnosDB infra

IntelliJ IDEA 如何增加运行时候的内存

HoneyMoose

【Go实现】实践GoF的23种设计模式:建造者模式

元闰子

Go 设计模式 建造者模式

聊聊 C 语言和 ABAP 这两门编程语言的关系

汪子熙

编程语言 C语言 SAP abap 5月月更

五、高可用之全链路压测

穿过生命散发芬芳

5月月更

C语言_Linux基本命令与C语言基础

DS小龙哥

5月月更

无需修改代码,用 fcapp.run 运行你的 REST 应用

阿里巴巴云原生

阿里云 Serverless 云原生 函数计算

Django Model 如何返回空的 QuerySet

AlwaysBeta

django

MongoDB 入门教程系列之二:使用 Spring Boot 操作 MongoDB

汪子熙

node.js 数据库 mongodb 分布式数据库 5月月更

MongoDB 入门教程系列之三:使用 Restful API 操作 MongoDB

汪子熙

数据库 mongodb 分布式数据库 分布式数据库mongodb 5月月更

SpringSecurity认证流程分析

急需上岸的小谢

5月月更

10-2 5-2 查询至少生产两种不同的计算机(PC或便携式电脑)且机器速度至少为133的厂商 (20 分)(思路加详解+测试用例

爱好编程进阶

程序员 后端开发

闲置计费 | Serverless 冷启动与成本间的最优解

阿里巴巴云原生

阿里云 Serverless 云原生 函数计算

Docker下的Spring Cloud三部曲之一:极速体验

程序员欣宸

Java Spring Cloud 5月月更

从零构建物联网平台-给个理由先

老任物联网杂谈

物联网平台

边缘机器学习:借助 AWS IoT Greengrass 使用和重新训练图像分类模型_文化 & 方法_亚马逊云科技 (Amazon Web Services)_InfoQ精选文章