QCon北京「鸿蒙专场」火热来袭!即刻报名,与创新同行~ 了解详情
写点什么

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

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

    阅读完需:约 9 分钟

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

在本文的第 1 部分,我们为回收利用设施的分类机创建了一个图像分类模型,用来识别四种饮料容器。我们使用新的 AWS IoT Greengrass Image Classification 连接器来将其部署到我们的 AWS IoT Greengrass Core 设备上。借助在今年 re:Invent 大会上发布的 AWS IoT Greengrass 连接器,IoT Greengrass Core 设备无需编写代码即可连接到第三方应用程序、本地软件和 AWS 服务。在第 1 部分末尾,我们注意到我们对饮料包装容器的预测并不总是正确的或始终具有较高置信度。在第 2 部分中,我们将扩展我们的应用程序,上传超出预测置信度阈值的图像,标记这些图像,并重新训练我们的模型,然后再次将其部署到我们的 IoT Greengrass Core 设备。


注意:本博文中的信息在很大程度上依赖第 1 部分的内容。如果您尚未完成第 1 部分中的步骤,请先完成这些步骤,然后再继续。

概览

在本文中,通过在代码中添加一个额外步骤来检查捕获图像的预测置信度,我们将扩展在第 1 部分中创建的饮料包装容器分类器 Lambda 函数。将预测置信度低于最小阈值或高于最大阈值的图像上传至 Amazon S3,在那里我们可以手动标记这些图像,以便在将来的 Amazon SageMaker 模型训练作业中使用。换而言之,我们的 Amazon SageMaker 笔记本将下载这些新标记的图像,将它们与原始 Caltech 256 数据集结合,并创建一个结合新数据和原始数据的新模型。最后,我们将在我们的 IoT Greengrass 组连接器中更新模型并重新部署到 Greengrass Core 设备。


在第 2 部分末尾,我们将得到一个类似于此处所示的架构。您看到的数字用于显示重新训练模型的流程顺序。


先决条件

要从 Lambda 函数访问 Amazon S3,我们将使用适用于Python 的 AWS 开发工具包 (Boto3)。运行以下命令,以将其安装在您的 Raspberry Pi 上:


$ sudo pip install boto3
复制代码

扩展和测试应用程序

要将我们的图像上传到 S3,我们需要授予 Greengrass Core 设备访问 S3 存储桶的权限。

配置 S3 权限

在 AWS IoT 控制台的组设置页面上,记下组角色中的值。如果尚未为您的组配置角色,请参阅 AWS IoT Greengrass 开发人员指南中的配置 IAM 角色。


要授予组访问 S3 的权限,我们需要使用 IAM 控制台来将 AmazonS3FullAccess 策略添加到其角色中。在 IAM 控制台中,选择角色。查找并选择您为您的 IoT Greengrass 组确定的角色。在摘要页面上,选择附加策略。



搜索 AmazonS3FullAccess,选中复选框,然后选择附加策略。



部署到您的组。您的组现在将具有对 S3 的读取和写入权限。


有关与其他 AWS 服务交互的信息,请参阅 AWS IoT Greengrass 开发人员指南中的模块 6:访问 AWS 云服务。

扩展饮料包装容器分类器 Lambda 函数

在此步骤中,我们将扩展饮料包装容器分类器 Lambda 函数。新代码与 S3 集成。它提供了有关何时上传要标记并用作新训练数据的图像的逻辑。我们要上传以下图像:


  • 超过高阈值的图像,用作数据以验证我们置信度较低的预测。

  • 低于低阈值的图像,将被标记并合并到我们的数据集中。

  • 使用 GitHub 上发现的代码更新饮料包装容器分类器 Lambda 函数。


创建新部署。

收集字段中的数据

饮料分类器现在可以收集字段中的数据并将其上传到 S3 以进行手动标记。您现在应该可以在 S3 存储桶的 image-classification 文件夹中看到以下内容:



花些时间来使用更新的应用程序。尝试为五个类别中的每一个收集图像。在测试期间,我们为每个类别收集了 50 张额外的图像。我们对每个类别中的各种对象拍摄了不同角度的照片,以捕获大量的测试数据。请记住,您可以通过发布到 /request/classify/beverage_container 主题并订阅 /response/prediction/beverage_container 主题,在 AWS IoT 控制台的测试页面上对图像进行分类和查看结果,就像我们在第 1 部分中做的那样。


以下是我们捕获到的一些图像:









标记字段数据

要标记数据,我们需要查看 S3 存储桶中 raw_field_data 文件夹中的图像,并将它们移动到 labeled_field_data 文件夹中各自类别的文件夹中。我们建议您使用 AWS CLI 来执行此操作。


将 S3 存储桶同步到桌面上的某个文件夹:


aws s3 sync s3://[S3 Bucket]/image-classification/raw_field_data [local raw field data dir]aws s3 sync s3://[s3 Bucket]/image-classification/labeled_field_data [local labeled field data dir]
复制代码


浏览本地 raw_field_data 文件夹中的图像。查看每个图像并将其移动到本地 labeled_field_data 文件夹中各自的文件夹:



标记后,运行以下命令以更新 S3。此操作会将未标记的图像移动到正确标记的文件夹中。


aws s3 sync [local raw field data dir]  s3://[S3 Bucket]/image-classification/raw_field_dataaws s3 sync [local labeled field data dir] s3://[s3 Bucket]/image-classification/labeled_field_data
复制代码

重新训练您的模型

我们现在得到了可用于重新训练我们模型的新标记数据。返回到我们在第 1 部分中使用的 Amazon SageMaker 笔记本(从此处的笔记本复制)。按照笔记本中的步骤操作,到达最后时返回此处。


注意:您可以在添加训练数据时重新运行笔记本的第 2 部分。这样做会创建一个可以部署到您的 Greengrass Core 设备的新模型。

重新部署您的模型

我们现在拥有一个可以部署的经过重新训练的模型。返回您的 IoT Greengrass 组并编辑您在第 1 部分中创建的机器学习资源。在 Amazon SageMaker 训练作业的下拉菜单中,选择新的训练作业。选择保存,然后创建部署。部署完成后,Lambda 函数将使用您的新模型。

测试您的新模型

既然我们已经部署了新模型,我们可以测试看看它的表现。在测试中,我们看到我们的模型能力得以改进,能够始终如一地识别测试对象。试一试,看看您的模型表现如何。


有关测量模型性能的更多信息,请参阅 Amazon SageMaker 图像分类示例笔记本。

回顾

在本文的第 1 部分和第 2 部分中,我们创建了一个 AWS IoT Greengrass 应用程序,该应用程序使用新的 AWS IoT Greengrass Image Classification 连接器来识别几类饮料包装容器。我们在第 2 部分中扩展了该应用程序,以允许我们收集字段中的数据并重新训练我们在第 1 部分中创建的模型。


我们期待看到您构建的内容! 请关注 AWS IoT Greengrass 接下来推出的内容。

接下来的新尝试

如果您想继续使用本文中的示例,下面提供了几个想法,您接下来可以尝试一下。有关如何重新训练和改进模型的信息,请参阅 Amazon SageMaker 图像分类文档。


您可能还想尝试:


  • 使用 Amazon SageMaker Ground Truth。

  • 向模型中添加新类别。

  • 在 Amazon SageMaker 笔记本中试验训练参数,以提高模型的准确度。

  • 更新 AmazonSageMaker 笔记本中的训练配置,以使用迭代训练。请参阅 Amazon SageMaker 开发人员指南中的图像分类算法。

  • 添加缓冲机制以在 Core 设备离线时存储捕获到的图像,并在恢复与云的连接时上传到 S3。


相关文章:


https://aws.amazon.com/greengrass/


本文转载自 AWS 技术博客。


原文链接:


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


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

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

关注

评论

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

华为云专家出品《深入理解边缘计算》电子书上线

华为云PaaS服务小智

边缘计算 华为云 华为开发者联盟

Android SDK安全加固问题与分析

百度Geek说

android 安全加固 企业号 6 月 PK 榜 6 月 优质更文活动

如何使用 Terraform 和 Git 分支有效管理多环境?

SEAL安全

git Terraform

BI商业智能工具改变企业发展态势

对不起该用户已成仙‖

从“云原生”到“比Flink快十倍”:RisingWave的寻找自我认知之旅

吴英骏

数据库 sql 流处理

2023年,低代码秀起了肌肉

树上有只程序猿

一次搞懂线性稳压器/LDO的工作原理

元器件秋姐

物理 电路 元器件 PCB 稳压器

车联网 CAN Bus 协议介绍与数据实时流处理

EMQ映云科技

物联网 mqtt canbus

Flume简述

数新网络官方账号

数据采集 flume

预约直播 | 展心展力MetaApp:基于DeepRec的稀疏模型训练实践

阿里云大数据AI技术

人工智能 模型训练

一年省七位数,得物自建HFDS在 Flink Checkpoint 场景下的应用实践

得物技术

大数据 阿里云 成本优化

一名中级程序员应该具备的技能

树上有只程序猿

编程 程序员 低代码 职业生涯 JNPF

Kafka优化

数新网络官方账号

大数据 zookeeper

hive数据迁移

数新网络官方账号

大数据 hadoop hadoop spark hive

[NLP] langchain-ChatGLM 本地知识库

alexgaoyh

知识库 私有化部署 langchain ChatGLM-6B

k8s实战案例之部署redis单机和redis cluster

不在线第一只蜗牛

k8s

svn提交规范,与Git相得益彰

互联网工科生

git svn

通过腾讯云SES服务发送邮件

排骨虾

腾讯云 #go 邮件通知

这些面试技巧,助你升职加薪、迎娶白富美

伤感汤姆布利柏

拉链表的原理及简单实现

数新网络官方账号

大数据 拉链式散列表

香港云主机为你的业务注入强大的云端动力!

一只扑棱蛾子

香港云主机

AIGC+办公|大厂争先抢占高位的AI,开始“卷”打工人了吗?

TE智库

人工智能 办公 打工人 AIGC 生成式AI

鲸鸿动能荣获2023 TopDigital 3项大奖

最新动态

解读 RocketMQ 5.0 全新的高可用设计

阿里巴巴云原生

阿里云 RocketMQ 高可用 云原生

玖章算术与百度智能云达成合作,「NineData SQL 开发」成为百度智能云主推的数据库工具

NineData

数据库 百度智能云 云市场 玖章算术 NineData

华为云CodeArts TestPlan测试设计:守护产品开发质量之魂

华为云PaaS服务小智

云计算 软件开发 华为云 产品测试

9 个值得推荐的 VUE3 UI 框架

互联网工科生

Vue UI VUE 3.0 源码

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