写点什么

边缘机器学习:借助 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:49896
用户头像

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

关注

评论

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

得物iOS函数调用栈及符号化调优实践|得物技术

得物技术

ios

离了大谱,和HR互怼后被开了!

王磊

有哪些常见的云桌面套餐比较推荐?

青椒云云电脑

云桌面 云桌面厂家 云桌面方案

什么样的云桌面套餐适合按需计费的用户?

青椒云云电脑

云桌面

一图为你揭秘云数据库GaussDB管理平台亮点

华为云开发者联盟

云原生 GaussDB 智能运维 数据库·

推荐给远程办公用户的云桌面服务

青椒云云电脑

云桌面 云桌面厂家 云桌面系统

k8s-NFS系统配置

不在线第一只蜗牛

Kubernetes 容器 云原生

淘宝 app 商品详情数据接口:让你轻松掌握优惠价、视频和到手价,助力电商决策

tbapi

淘宝商品详情接口 淘宝app详情接口 淘宝详情数据接口 淘宝优惠券接口 淘宝到手价接口

软件测试学习笔记丨宠物商店-接口自动化测试实战

测试人

软件测试

云桌面适合哪些类型的工作

青椒云云电脑

云桌面

云桌面解决方案:为何远程办公需要它们

青椒云云电脑

云桌面 云桌面系统 云桌面技术

AI+云原生时代,高校该如何创新教育模式

Tp_jh

云计算 软件工程 计算机 大学 #云原生

阿里云EMR StarRocks X Paimon创建 Streaming Lakehouse

Apache Flink

大数据 flink StarRocks EMR

大数据存储计算平台EasyMR:大数据集群动态扩缩容,快速提升集群服务能力

袋鼠云数栈

日志分析是什么?如何进行日志分析?

ServiceDesk_Plus

日志分析 日志采集 日志处理

顶级云桌面套餐:远程办公的终极指南

青椒云云电脑

云桌面 云桌面方案 云桌面系统

2024年最佳云桌面服务:为远程工作者量身定制

青椒云云电脑

云桌面 云桌面厂家

实操上手TinyEngine低代码引擎插件化开发

OpenTiny社区

开源 前端 插件化 OpenTiny 低代码引擎

【直播预约】下周四大咖云集,不见不散!运维生态直播之“可观测技术实践”等你来~

乘云数字DataBuff

可观测性 zabbix oceanbase 应用性能监控 一体化可观测平台Databuff

如何评估云桌面套餐的性价比?

青椒云云电脑

桌面云 云桌面 云桌面厂家 云桌面系统

全球CDN加速的优势与作用

HUODUNYUN

CDN CDN加速 CDN技术 CDN网络加速 全球CDN

Databend 产品月报(2024年9月)

Databend

实时语音交互的游戏队友——网易伏羲AI Agent创新应用 | DataFunSummit2024演讲实录

网易伏羲

人工智能 AI 语音 网易伏羲 游戏AI

IT行业还有未来吗?

程序员高级码农

程序员 互联网 计算机 #编程

淘宝商品详情数据接口:解锁电商数据分析新密码

tbapi

淘宝商品详情数据接口

公链技术开发之路:从概念到实现的公链开发全攻略

区块链软件开发推广运营

交易所开发 dapp开发 链游开发 代币开发 海外推广

有哪些常见的云桌面使用误区?

青椒云云电脑

云桌面 云桌面厂家 云桌面方案

什么政府网站一定要安装SSL证书吗?应该选择哪种SSL证书?

国科云

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