AICon 上海站|日程100%上线,解锁Al未来! 了解详情
写点什么

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

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

关注

评论

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

新赛季集结!“百度AI创意派”正在寻找有创意的你

科技热闻

Nocalhost 亮相 CD Foundation 国内首届 Meetup,Keith Chan 将出席致辞

CODING DevOps

Linux Nocalhost Meetup CDF

解决大数据分布式计算痛点:腾讯正式开源分布式远程Shuffle服务Firestorm

科技热闻

git submodule 添加/删除

webrtc developer

如果明天交任务,自己做今晚能完成,而让下属做需要一周时间,怎么办?

石云升

职场经验 11月日更

融合通信技术趋势和演进方向

网易云信

云通信 通信云 传输协议

浪潮云说丨GPU云服务器,助力AI计划轻松实现

云计算

杨冰:OceanBase助力数字化转型,原生分布式数据库成核心系统首选

OceanBase 数据库

数据库 开源 分布式 云栖大会 核心系统

出自清华大牛之手的Redis源码核心手册,已被列为GitHub首推书籍

Java redis 编程 程序员

CVE-2017-10271漏洞复现与分析

喀拉峻

网络安全 信息安全 渗透测试

13 高可用的服务,字节跳动今日学习内容

Java 程序员 后端

SAP x EMQ 碳中和方案亮相进博会,数据基础设施支撑低碳发展

EMQ映云科技

物联网 IoT mqtt 进博会 SAP

Python代码阅读(第55篇):获取字典的所有键或所有值的列表

Felix

Python 编程 阅读代码 字典 Python初学者

杨传辉:深挖 OceanBase 背后的技术逻辑,助力数据库核心系统升级

OceanBase 数据库

数据库 开源 分布式 数字化转型 核心系统

12 高可用的应用,微众银行java面试

Java 程序员 后端

腾讯架构师推荐架构电子书:多线程+JVM+Nginx+Redis+SpringBoot

nginx redis 程序员 Spring Boot JVM

开源项目|Go 开发的一款分布式唯一 ID 生成系统

AlwaysBeta

golang 开源 Go 语言

去年今日我凭借这份文档,摇身一变成了被BAT大牛们看中的幸运儿

Java spring 程序员 JVM Kakfa

腾讯大数据全场景在离线混部系统Caelus正式开源

科技热闻

加速拥抱支持开源生态 | OceanBase 开源版3.1.1正式发布

OceanBase 数据库

数据库 开源 开发者 成绩单 DTCC

周傲英:替代工程只是契机,转型升级才是大势所驱

OceanBase 数据库

数据库 开源 数字化转型 云栖大会

“你好,天津”网络短视频大赛月内启动

InfoQ 天津

OpenMLDB v0.3.0 正式发布,支持快速部署使用的单机模式

第四范式开发者社区

开源 第四范式 OpenMLDB

互联网+质量基础设施服务平台,NQI一站式服务平台搭建

电微13828808271

13万字!腾讯高工手写JDK源码笔记 带你飙向实战,linux高级教程

Java 程序员 后端

京东三面(后端)凭借这份Java面试复盘手册,已斩获60K*15offer

Java spring 程序员 算法 JVM

18 应用服务器集群的伸缩性设计,java面试多线程和分布式

Java 程序员 后端

个人项目管理软件解决方案

低代码小观

项目管理 管理系统 企业管理系统 项目管理工具 企业管理工具

共筑数据库未来 | 2021 OceanBase 原生分布式数据库论坛回顾

OceanBase 数据库

开源 分布式 #数据库 云栖大会 圆桌论坛

OceanBase 3.2 正式发布 | 更硬核的 HTAP,TPC-H 性能提升6倍!

OceanBase 数据库

数据库 分布式 云栖大会 核心系统 一体化架构

OceanBase 创始人阳振坤 | 十余年打磨 国产数据库之路砥砺前行

OceanBase 数据库

数据库 开发者 趋势 1024 CSDN

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