在边缘使用 Amazon Lookout for Vision 识别异常位置,而无需使用 GPU PlatoBlockchain 数据智能。 垂直搜索。 哎。

在不使用 GPU 的情况下,在边缘使用 Amazon Lookout for Vision 识别异常位置

使用计算机视觉进行自动缺陷检测有助于提高质量并降低检测成本。 缺陷检测包括识别缺陷的存在、对缺陷类型进行分类以及确定缺陷的位置。 许多制造过程需要以低延迟、有限的计算资源和有限的连接性进行检测。

亚马逊Lookout for Vision 是一项机器学习 (ML) 服务,可使用计算机视觉帮助发现产品缺陷,从而自动执行生产线中的质量检查过程,无需 ML 专业知识。 Lookout for Vision 现在包括使用语义分割 ML 模型提供异常位置和类型的能力。 这些自定义的 ML 模型可以使用 云 API 或使用自定义边缘硬件 AWS IoT Greengrass. Lookout for Vision 现在支持在运行 Linux 的 x86 计算平台(有或没有 NVIDIA GPU 加速器)以及任何基于 NVIDIA Jetson 的边缘设备上进行推理。 这种灵活性允许检测现有或新硬件上的缺陷。

在这篇文章中,我们将向您展示如何使用在边缘设备上运行的 Lookout for Vision ML 模型检测有缺陷的零件,我们使用 亚马逊弹性计算云 (Amazon EC2) 实例。 我们将逐步训练新的语义分割模型,将它们导出为 AWS IoT Greengrass 组件,并使用 Python 示例代码在纯 CPU 模式下运行推理。

解决方案概述

在这篇文章中,我们使用了一组图片 玩具外星人 由正常和有缺陷的图像组成,例如缺失的四肢、眼睛或其他部分。 我们在云端训练 Lookout for Vision 模型来识别有缺陷的玩具外星人。 我们将模型编译到目标 X86 CPU,将经过训练的 Lookout for Vision 模型打包为 AWS IoT Greengrass 组件,然后使用 AWS IoT Greengrass 控制台将模型部署到没有 GPU 的 EC2 实例。 最后,我们演示了一个在 EC2 (C5a.2xl) 实例上运行的基于 Python 的示例应用程序,该实例从边缘设备文件系统中获取玩具外星人图像,使用 Lookout for Vision 模型运行推理 远程过程调用 接口,并将推理数据发送到 MQTT AWS 云中的主题。 脚本输出包含异常图像上缺陷的颜色和位置的图像。

下图说明了解决方案架构。 需要注意的是,对于要在本地化中检测的每种缺陷类型,训练中必须有 10 个标记的异常图像,测试数据中必须有 10 个标记的异常图像,总共 20 个该类型的图像。 在这篇文章中,我们搜索玩具上缺失的四肢。

该解决方案具有以下工作流程:

  1. 将训练数据集和测试数据集上传到 亚马逊简单存储服务 (亚马逊S3)。
  2. 使用新的 Lookout for Vision UI 添加异常类型并标记这些异常在训练和测试图像中的位置。
  3. 在云中训练 Lookout for Vision 模型。
  4. 将模型编译到目标架构 (X86) 并使用 AWS IoT Greengrass 控制台将模型部署到 EC2 (C5a.2xl) 实例。
  5. 来自本地磁盘的源图像。
  6. 通过 gRPC 接口对部署的模型运行推理,并检索覆盖在原始图像上的异常掩码图像。
  7. 将推理结果发布到边缘实例上运行的 MQTT 客户端。
  8. 接收关于某个主题的 MQTT 消息 AWS IoT核心 在 AWS 云中进行进一步监控和可视化。

步骤 5、6 和 7 与示例 Python 应用程序相协调。

先决条件

在开始之前,请完成以下先决条件。 在本文中,我们使用 EC2 c5.2xl 实例并在其上安装 AWS IoT Greengrass V2 以试用新功能。 如果您想在 NVIDIA Jetson 上运行,请按照我们上一篇文章中的步骤操作, Amazon Lookout for Vision 现在支持在边缘对产品缺陷进行目视检查.

  1. 创建一个AWS账户.
  2. 启动一个 EC2 实例,我们可以在其上安装 AWS IoT Greengrass 并使用新的 CPU-only 推理模式。您还可以使用具有 86 GB 或更多内存的 Intel X64 8 位机器(我们使用 c5a.2xl,但任何具有x8 平台上大于 86 GB 应该可以工作)运行 Ubuntu 20.04。
  3. 安装 AWS IoT Greengrass V2:
    git clone https://github.com/aws-samples/amazon-lookout-for-vision.git
    cd edge
    # be sure to edit the installation script to match your region, also adjust any device names and groups!
    vi install_greengrass.sh

  4. 安装所需的系统和 Python 3 依赖项(Ubuntu 20.04):
    # install Ubuntu dependencies on the EC2 instance
    ./install-ec2-ubuntu-deps.sh
    pip3 install -r requirements.txt
    # Replace ENDPOINT variable in sample-client-file-mqtt.py with the value on the AWS console AWS IoT->Things->l4JetsonXavierNX->Interact.  
    # Under HTTPS. It will be of type <name>-ats.iot.<region>.amazon.com 

上传数据集并训练模型

我们使用 玩具外星人数据集 演示解决方案。 数据集包含正常和异常图像。 以下是数据集中的一些示例图像。

下图显示了一个普通的玩具外星人。

在边缘使用 Amazon Lookout for Vision 识别异常位置,而无需使用 GPU PlatoBlockchain 数据智能。 垂直搜索。 哎。

下图显示了一个玩具外星人缺少一条腿。

在边缘使用 Amazon Lookout for Vision 识别异常位置,而无需使用 GPU PlatoBlockchain 数据智能。 垂直搜索。 哎。

下图显示了一个缺少头部的玩具外星人。

在边缘使用 Amazon Lookout for Vision 识别异常位置,而无需使用 GPU PlatoBlockchain 数据智能。 垂直搜索。 哎。

在这篇文章中,我们寻找缺失的肢体。 我们使用新的用户界面在我们的训练和测试数据中的缺陷周围绘制一个掩码。 这将告诉语义分割模型如何识别这种类型的缺陷。

  1. 首先通过 Amazon S3 或从您的计算机上传您的数据集。
  2. 将它们分类到标题为 normalanomaly.
  3. 创建数据集时,选择 根据文件夹名称自动在图像上附加标签.这使我们可以稍后整理异常图像并绘制要标记有缺陷的区域。
    在边缘使用 Amazon Lookout for Vision 识别异常位置,而无需使用 GPU PlatoBlockchain 数据智能。 垂直搜索。 哎。
  4. 尝试保留一些图像以供稍后测试 normalanomaly.
  5. 将所有图像添加到数据集中后,选择 添加异常标签.
  6. 通过选择开始标记数据 开始标记.
  7. 为了加快处理速度,您可以选择多个图像并将它们分类为 Normal or Anomaly.
    在边缘使用 Amazon Lookout for Vision 识别异常位置,而无需使用 GPU PlatoBlockchain 数据智能。 垂直搜索。 哎。
    如果除了对异常进行分类之外,还想突出显示异常,则需要突出显示异常所在的位置。
  8. 选择要注释的图像。
  9. 使用绘图工具显示部分主体缺失的区域,或在缺陷上绘制蒙版。
  10. 提交并关闭 保持这些变化。
    在边缘使用 Amazon Lookout for Vision 识别异常位置,而无需使用 GPU PlatoBlockchain 数据智能。 垂直搜索。 哎。
  11. 对所有图像重复此过程。
  12. 完成后,选择 保存 坚持你的改变。 现在你已经准备好训练你的模型了。
    在边缘使用 Amazon Lookout for Vision 识别异常位置,而无需使用 GPU PlatoBlockchain 数据智能。 垂直搜索。 哎。
  13. 火车模型.

完成这些步骤后,您可以导航到项目和 型号 页面来检查训练模型的性能。 训练模型后,您可以随时开始将模型导出到目标边缘设备的过程。

使用校正后的图像重新训练模型

有时异常标记可能不太正确。 你有机会帮助你的模型更好地学习你的异常。 例如,以下图像被识别为异常,但未显示 missing_limbs 标签。

在边缘使用 Amazon Lookout for Vision 识别异常位置,而无需使用 GPU PlatoBlockchain 数据智能。 垂直搜索。 哎。

让我们打开编辑器并修复它。

浏览你找到的任何这样的图像。 如果您发现它被错误地标记为异常,您可以使用橡皮擦工具删除不正确的标记。

在边缘使用 Amazon Lookout for Vision 识别异常位置,而无需使用 GPU PlatoBlockchain 数据智能。 垂直搜索。 哎。

您现在可以再次训练您的模型并获得更好的准确性。

将模型编译并打包为 AWS IoT Greengrass 组件

在本节中,我们将逐步完成将玩具外星人模型编译到目标边缘设备并将模型打包为 AWS IoT Greengrass 组件的步骤。

  1. 在 Lookout for Vision 控制台上,选择您的项目。
  2. 在导航窗格中,选择 边缘模型包.
  3. 创建模型打包作业.
  4. 针对 工作名称,输入名称。
  5. 针对 职位描述,输入可选说明。
  6. 浏览模型.
  7. 选择模型版本(上一节构建的玩具外星人模型)。
  8. .
    在边缘使用 Amazon Lookout for Vision 识别异常位置,而无需使用 GPU PlatoBlockchain 数据智能。 垂直搜索。 哎。
  9. 如果您在 Amazon EC2 或 X86-64 设备上运行它,请选择 目标平台 并选择 Linux, X86中央处理器.
    如果使用 CPU,如果您不确定并且没有 NVIDIA GPU,则可以将编译器选项留空。 如果您有一个支持 AVX512 的基于 Intel 的平台,您可以添加这些编译器选项来优化以获得更好的性能: {"mcpu": "skylake-avx512"}.
    在边缘使用 Amazon Lookout for Vision 识别异常位置,而无需使用 GPU PlatoBlockchain 数据智能。 垂直搜索。 哎。您可以看到您的工作名称和状态显示为 In progress. 模型打包作业可能需要几分钟才能完成。模型打包作业完成后,状态显示为 Success.
  10. 选择你的工作名称(在我们的例子中是 aliensblogcpux86) 查看工作详情。
    在边缘使用 Amazon Lookout for Vision 识别异常位置,而无需使用 GPU PlatoBlockchain 数据智能。 垂直搜索。 哎。
  11. 创建模型打包作业.
    在边缘使用 Amazon Lookout for Vision 识别异常位置,而无需使用 GPU PlatoBlockchain 数据智能。 垂直搜索。 哎。
  12. 输入详细信息 组件名称, 组件说明 (可选的), 组件版本组件位置.Lookout for Vision 将组件配方和工件存储在此 Amazon S3 位置。
  13. 继续在 Greengrass 中部署 将组件部署到目标边缘设备。
    在边缘使用 Amazon Lookout for Vision 识别异常位置,而无需使用 GPU PlatoBlockchain 数据智能。 垂直搜索。 哎。

AWS IoT Greengrass 组件和模型工件已在您的 AWS 账户中创建。

部署模型

在继续之前,请确保您的目标设备上为您的账户安装了 AWS IoT Greengrass V2。 有关说明,请参阅 安装 AWS IoT Greengrass Core 软件.

在本节中,我们将介绍使用 AWS IoT Greengrass 控制台将玩具外星人模型部署到边缘设备的步骤。

在边缘使用 Amazon Lookout for Vision 识别异常位置,而无需使用 GPU PlatoBlockchain 数据智能。 垂直搜索。 哎。

  1. 在 AWS IoT Greengrass 控制台上,导航到您的边缘设备。
  2. 部署 启动部署步骤。
  3. 选择 核心设备 (因为部署到单个设备)并输入一个名称 目标名称.目标名称与您在 AWS IoT Greengrass V2 安装过程中用于命名核心设备的名称相同。
  4. 选择您的组件。 在我们的例子中,组件名称是 aliensblogcpux86,其中包含玩具外星人模型。
  5. 下一页.
  6. 配置组件(可选)。
  7. 下一页.
  8. 扩大 部署策略.
  9. 针对 组件更新策略, 选择 通知组件.这允许已部署的组件(组件的先前版本)推迟更新,直到您准备好更新。
  10. 针对 故障处理策略, 选择 不要回滚.如果发生故障,此选项允许我们调查部署中的错误。
  11. 下一页.
  12. 查看将在目标(边缘)设备上部署的组件列表。
  13. 下一页.你应该看到消息 Deployment successfully created.
  14. 要验证模型部署是否成功,请在边缘设备上运行以下命令:
    sudo /greengrass/v2/bin/greengrass-cli component list

您应该会看到类似的输出运行 aliensblogcpux86 生命周期启动脚本:

目前在 Greengrass 中运行的组件:

Components currently running in Greengrass:
 
Component Name: aws.iot.lookoutvision.EdgeAgent
    Version: 0.1.34
    State: RUNNING
    Configuration: {"Socket":"unix:///tmp/aws.iot.lookoutvision.EdgeAgent.sock"}
 Component Name: aliensblogcpux86
    Version: 1.0.0
    State: RUNNING
    Configuration: {"Autostart":false}

在模型上运行推理

备注:如果您以不同于您登录的用户身份运行 Greengrass,您将需要更改文件的权限 /tmp/aws.iot.lookoutvision.EdgeAgent.sock:

chmod 666 /tmp/aws.iot.lookoutvision.EdgeAgent.sock

我们现在已准备好对模型进行推理。 在您的边缘设备上,运行以下命令来加载模型(替换 使用组件中使用的模型名称):

# run command to load the model# This will load the model into running state pass
# the name of the model component as a parameter.
python3 warmup-model.py <modelName>

要生成推理,请使用源文件名运行以下命令(替换 带有要检查和替换的图像的路径和文件名 使用您的组件的模型名称):

python3 sample-client-file-mqtt.py </path/to/images> <modelName>

start client ['sample-client-file.py', 'aliens-dataset/anomaly/1.png', 'aliensblogcpux86']
channel set
shape=(380, 550, 3)
Image is anomalous, (90.05860090255737 % confidence) contains defects with total area over .1%: {'missing_limbs': '#FFFFFF'}

该模型正确地将图像预测为异常(missing_limbs) 的置信度得分为 0.9996867775917053。 它告诉我们异常标签的掩码 missing_limbs 和百分比面积。 响应还包含位图数据,您可以对其找到的内容进行解码。

下载并打开文件 blended.png,如下图所示。 注意腿部周围缺陷突出显示的区域。

在边缘使用 Amazon Lookout for Vision 识别异常位置,而无需使用 GPU PlatoBlockchain 数据智能。 垂直搜索。 哎。

客户故事

借助 AWS IoT Greengrass 和 Lookout for Vision,您现在可以使用计算机视觉对质量控制和缺陷评估等流程进行自动化视觉检查,所有这些都在边缘实时进行。 您可以主动识别零件损坏(如凹痕、划痕或焊接不良)、产品组件缺失或生产线本身具有重复图案的缺陷等问题,从而节省您的时间和金钱。 像 Tyson 和 Baxter 这样的客户正在发现 Lookout for Vision 通过自动化视觉检测来提高质量和降低运营成本的能力。

“卓越运营是泰森食品公司的重中之重。 预测性维护是通过不断提高整体设备效率 (OEE) 来实现这一目标的重要资产。 2021 年,泰森食品启动了一个基于机器学习的计算机视觉项目,以识别生产过程中出现故障的产品载体,以防止它们影响团队成员的安全、运营或产品质量。 使用 Amazon Lookout for Vision 训练的模型表现良好。 引脚检测模型在两个类别中都达到了 95% 的准确率。 Amazon Lookout for Vision 模型经过调整,能够以 99.1% 的准确度执行失败的引脚检测。 到目前为止,该项目最令人兴奋的结果是开发时间的加快。 尽管该项目使用了两个模型和一个更复杂的应用程序代码,但开发人员完成的时间却减少了 12%。 使用 Amazon Lookout for Vision 等 AWS 托管服务在创纪录的时间内完成了这个用于监控 Tyson Foods 产品载体状况的项目。”

—Audrey Timmerman,泰森食品公司高级应用程序开发人员。

“延迟和推理速度对于我们制造过程的实时评估和关键质量检查至关重要。 CPU 设备上的 Amazon Lookout for Vision 边缘使我们能够在生产级设备上实现这一目标,使我们能够大规模提供具有成本效益的 AI 视觉解决方案。”

—AK Karan,Baxter International Inc. 全球高级总监 - 数字化转型、综合供应链

净化

完成以下步骤以从您的帐户中删除您创建的资产并避免任何持续计费:

  1. 在 Lookout for Vision 控制台上,导航到您的项目。
  2. 点击 行动 菜单,删除您的数据集。
    在边缘使用 Amazon Lookout for Vision 识别异常位置,而无需使用 GPU PlatoBlockchain 数据智能。 垂直搜索。 哎。
  3. 删除您的模型。
    在边缘使用 Amazon Lookout for Vision 识别异常位置,而无需使用 GPU PlatoBlockchain 数据智能。 垂直搜索。 哎。
  4. 在 Amazon S3 控制台上,清空您创建的存储桶,然后删除这些存储桶。
  5. 在 Amazon EC2 控制台上,删除您开始运行 AWS IoT Greengrass 的实例。
  6. 在 AWS IoT Greengrass 控制台上,选择 部署 在导航窗格中。
  7. 删除您的组件版本。
    在边缘使用 Amazon Lookout for Vision 识别异常位置,而无需使用 GPU PlatoBlockchain 数据智能。 垂直搜索。 哎。
  8. 在 AWS IoT Greengrass 控制台上,删除 AWS IoT 事物、组和设备。

结论

在这篇文章中,我们描述了使用缺陷定位在边缘进行工业缺陷检测的典型场景,并将其部署到仅 CPU 的设备上。 我们通过使用 Lookout for Vision 和 AWS IoT Greengrass 的端到端示例来了解云和边缘生命周期的关键组件。 借助 Lookout for Vision,我们使用 玩具外星人数据集,将模型编译为目标架构,并将模型打包为 AWS IoT Greengrass 组件。 借助 AWS IoT Greengrass,我们将模型部署到边缘设备。 我们演示了一个基于 Python 的示例应用程序,该应用程序从边缘设备本地文件系统中获取玩具外星人图像,使用 gRPC 接口在边缘的 Lookout for Vision 模型上运行推理,并将推理数据发送到 AWS 中的 MQTT 主题云。

在以后的文章中,我们将展示如何使用 GStreamer 媒体管道对实时图像流运行推理。

通过访问工业异常检测和识别开始您的旅程 亚马逊Lookout for VisionAWS IoT Greengrass 资源页面。


关于作者

在边缘使用 Amazon Lookout for Vision 识别异常位置,而无需使用 GPU PlatoBlockchain 数据智能。 垂直搜索。 哎。马尼什·塔雷哈 是 AWS 专业服务的高级工业 ML 实践经理。 他通过在 AWS 云上构建和构建使用 AWS ML 和 IoT 服务的创新解决方案来帮助 AWS 客户实现其业务目标。

在边缘使用 Amazon Lookout for Vision 识别异常位置,而无需使用 GPU PlatoBlockchain 数据智能。 垂直搜索。 哎。瑞恩范德沃夫 是 Amazon Web Services 的合作伙伴解决方案架构师。 他之前曾在 OCI 的 Grails 和 Micronaut 团队担任软件工程师,提供专注于 Java 虚拟机的咨询和项目开发。 他是 ReachForce 的首席架构师/产品总监,专注于为营销数据管理提供 AWS 云 SaaS 解决方案的软件和系统架构。 自 1996 年以来,Ryan 在金融、媒体、电信和电子学习公司等多个领域构建了多个 SaaS 解决方案。

在边缘使用 Amazon Lookout for Vision 识别异常位置,而无需使用 GPU PlatoBlockchain 数据智能。 垂直搜索。 哎。普拉卡什克里希南 是 Amazon Web Services 的高级软件开发经理。 他领导正在构建大规模分布式系统的工程团队,将快速、高效和高度可扩展的算法应用于基于深度学习的图像和视频识别问题。

时间戳记:

更多来自 AWS机器学习