TensorFlow 精简版图像分类 - AWS IoT Greengrass

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

TensorFlow 精简版图像分类

TensorFlow Lite 图像分类组件 (aws.greengrass.TensorFlowLiteImageClassification) 包含示例推理代码,用于使用 TensorFlow Lite 运行时和样本预训练的 MobileNet 1.0 量化模型执行图像分类推理。此组件使用变体TensorFlow 精简版图像分类模型存储TensorFlow 精简版运行时组件作为依赖项来下载 TensorFlow Lite 运行时和示例模型。

要将此推理组件与自定义训练的 TensorFlow Lite 模型一起使用,请创建依赖模型存储组件的自定义版本。要使用自己的自定义推理代码,您可以使用此组件的配方作为模板来创建自定义推理组件。

版本

此组件有以下版本:

  • 2.1.x

类型

组件是一个通用组件 (aws.greengrass.generic)。Greengrass 核心运行组件的生命周期脚本。

有关更多信息,请参阅 组件类型

操作系统

此组件可以安装在运行以下操作系统的核心设备上:

  • Linux

  • Windows

要求

此组件具有以下要求:

  • 在运行亚马逊 Linux 2 或 Ubuntu 18.04 的 Greengrass 核心设备上,设备上安装了 GNU C 库 (glibc) 2.27 或更高版本。

  • 在 armv7L 设备上,例如 Raspberry Pi,设备上安装了 OpenCV-Python 的依赖关系。运行以下命令安装依赖项。

    sudo apt-get install libopenjp2-7 libilmbase23 libopenexr-dev libavcodec-dev libavformat-dev libswscale-dev libv4l-dev libgtk-3-0 libwebp-dev
  • 运行 Raspberry Pi OS Bullseye 的 Raspberry Pi 设备必须满足以下要求:

    • NumPy 设备上安装了 1.22.4 或更高版本。Raspberry Pi OS Bullseye 包含的早期版本 NumPy,因此你可以运行以下命令在设备 NumPy 上升级。

      pip3 install --upgrade numpy
    • 设备上已启用旧版相机堆栈。Raspberry Pi OS Bullseye 包含一个新的相机堆栈,该堆栈默认处于启用状态且不兼容,因此您必须启用旧版相机堆栈。

      启用旧版相机堆栈
      1. 运行以下命令打开 Raspberry Pi 配置工具。

        sudo raspi-config
      2. 选择接口选项

      3. 选择旧版相机以启用旧版相机堆栈。

      4. 重启 Raspberry Pi。

依赖项

部署组件时, AWS IoT Greengrass 还会部署其依赖项的兼容版本。这意味着您必须满足组件及其所有依赖项的要求才能成功部署该组件。本节列出了此组件已发布版本的依赖关系以及定义每个依赖项的组件版本的语义版本限制。您还可以在AWS IoT Greengrass 控制台中查看组件每个版本的依赖关系。在组件详细信息页面上,查找 “依赖关系” 列表。

2.1.11 and 2.1.12

下表列出了此组件版本 2.1.11 和 2.1.12 的依赖关系。

依赖关系 兼容版本 依赖关系类型
Greengrass 核 >=2.0.0 <2.13.0 软性
TensorFlow 精简版图像分类模型存储 >=2.1.0 <2.2.0 硬性
TensorFlow 精简版 >=2.5.0 <2.6.0 硬性
2.1.10

下表列出了此组件版本 2.1.10 的依赖关系。

依赖关系 兼容版本 依赖关系类型
Greengrass 核 >=2.0.0 <2.12.0 软性
TensorFlow 精简版图像分类模型存储 >=2.1.0 <2.2.0 硬性
TensorFlow 精简版 >=2.5.0 <2.6.0 硬性
2.1.9

下表列出了此组件版本 2.1.9 的依赖关系。

依赖关系 兼容版本 依赖关系类型
Greengrass 核 >=2.0.0 <2.11.0 软性
TensorFlow 精简版图像分类模型存储 >=2.1.0 <2.2.0 硬性
TensorFlow 精简版 >=2.5.0 <2.6.0 硬性
2.1.8

下表列出了此组件版本 2.1.8 的依赖关系。

依赖关系 兼容版本 依赖关系类型
Greengrass 核 >=2.0.0 <2.10.0 软性
TensorFlow 精简版图像分类模型存储 >=2.1.0 <2.2.0 硬性
TensorFlow 精简版 >=2.5.0 <2.6.0 硬性
2.1.7

下表列出了此组件版本 2.1.7 的依赖关系。

依赖关系 兼容版本 依赖关系类型
Greengrass 核 >=2.0.0 <2.9.0 软性
TensorFlow 精简版图像分类模型存储 >=2.1.0 <2.2.0 硬性
TensorFlow 精简版 >=2.5.0 <2.6.0 硬性
2.1.6

下表列出了此组件版本 2.1.6 的依赖关系。

依赖关系 兼容版本 依赖关系类型
Greengrass 核 >=2.0.0 <2.8.0 软性
TensorFlow 精简版图像分类模型存储 >=2.1.0 <2.2.0 硬性
TensorFlow 精简版 >=2.5.0 <2.6.0 硬性
2.1.5

下表列出了此组件版本 2.1.5 的依赖关系。

依赖关系 兼容版本 依赖关系类型
Greengrass 核 >=2.0.0 <2.7.0 软性
TensorFlow 精简版图像分类模型存储 >=2.1.0 <2.2.0 硬性
TensorFlow 精简版 >=2.5.0 <2.6.0 硬性
2.1.4

下表列出了此组件版本 2.1.4 的依赖关系。

依赖关系 兼容版本 依赖关系类型
Greengrass 核 >=2.0.0 <2.6.0 软性
TensorFlow 精简版图像分类模型存储 >=2.1.0 <2.2.0 硬性
TensorFlow 精简版 >=2.5.0 <2.6.0 硬性
2.1.3

下表列出了此组件版本 2.1.3 的依赖关系。

依赖关系 兼容版本 依赖关系类型
Greengrass 核 >=2.0.0 <2.5.0 软性
TensorFlow 精简版图像分类模型存储 >=2.1.0 <2.2.0 硬性
TensorFlow 精简版 >=2.5.0 <2.6.0 硬性
2.1.2

下表列出了此组件版本 2.1.2 的依赖关系。

依赖关系 兼容版本 依赖关系类型
Greengrass 核 >=2.0.0 <2.4.0 软性
TensorFlow 精简版图像分类模型存储 >=2.1.0 <2.2.0 硬性
TensorFlow 精简版 >=2.5.0 <2.6.0 硬性
2.1.1

下表列出了此组件版本 2.1.1 的依赖关系。

依赖关系 兼容版本 依赖关系类型
Greengrass 核 >=2.0.0 <2.3.0 软性
TensorFlow 精简版图像分类模型存储 >=2.1.0 <2.2.0 硬性
TensorFlow 精简版 >=2.5.0 <2.6.0 硬性
2.1.0

下表列出了此组件版本 2.1.0 的依赖关系。

依赖关系 兼容版本 依赖关系类型
Greengrass 核 >=2.0.0 <2.2.0 软性
TensorFlow 精简版图像分类模型存储 >=2.1.0 <2.2.0 硬性
TensorFlow 精简版 >=2.5.0 <2.6.0 硬性

配置

此组件提供以下配置参数,您可以在部署该组件时对其进行自定义。

accessControl

(可选)包含授权策略的对象,该策略允许组件向默认通知主题发布消息。

默认值:

{ "aws.greengrass.ipc.mqttproxy": { "aws.greengrass.TensorFlowLiteImageClassification:mqttproxy:1": { "policyDescription": "Allows access to publish via topic ml/tflite/image-classification.", "operations": [ "aws.greengrass#PublishToIoTCore" ], "resources": [ "ml/tflite/image-classification" ] } } }
PublishResultsOnTopic

(可选)您要发布推理结果的主题。如果您修改此值,则还必须修改accessControl参数resources中的值以匹配您的自定义主题名称。

默认:ml/tflite/image-classification

Accelerator

你要使用的加速器。支持的值为 cpugpu

依赖模型组件中的示例模型仅支持 CPU 加速。要在不同的自定义模型中使用 GPU 加速,请创建一个自定义模型组件来覆盖公共模型组件。

默认:cpu

ImageDirectory

(可选)设备上推理组件读取图像的文件夹路径。您可以将此值修改为设备上您有权读/写访问的任何位置。

默认:/greengrass/v2/packages/artifacts-unarchived/component-name/image_classification/sample_images/

注意

如果将的值设置UseCameratrue,则忽略此配置参数。

ImageName

(可选)推理组件用作预测输入的图像的名称。该组件将在中指定的文件夹中查找图像ImageDirectory。默认情况下,该组件使用默认图像目录中的示例图像。 AWS IoT Greengrass 支持以下图像格式:jpegjpgpng、和npy

默认:cat.jpeg

注意

如果将的值设置UseCameratrue,则忽略此配置参数。

InferenceInterval

(可选)推理代码每次预测之间的时间(以秒为单位)。示例推理代码无限期运行,并在指定的时间间隔内重复其预测。例如,如果您想使用摄像机拍摄的图像进行实时预测,则可以将其更改为较短的间隔。

默认:3600

ModelResourceKey

(可选)在依赖的公共模型组件中使用的模型。仅当使用自定义组件覆盖公共模型组件时,才修改此参数。

默认值:

{ "model": "TensorFlowLite-Mobilenet" }
UseCamera

(可选)字符串值,用于定义是否使用连接到 Greengrass 核心设备的摄像机的图像。支持的值为 truefalse

将此值设置为时true,示例推理代码将访问设备上的摄像头,并在本地对捕获的图像运行推理。ImageNameImageDirectory参数的值将被忽略。确保运行此组件的用户对相机存储捕获图像的位置具有读/写权限。

默认:false

注意

当您查看此组件的配方时,UseCamera配置参数不会出现在默认配置中。但是,在部署组件时,可以在配置合并更新中修改此参数的值。

如果设置为 UseCameratrue,则还必须创建符号链接,以使推理组件能够从运行时组件创建的虚拟环境中访问您的摄像头。有关使用带有示例推理组件的摄像头的更多信息,请参阅更新组件配置

本地日志文件

此组件使用以下日志文件。

Linux
/greengrass/v2/logs/aws.greengrass.TensorFlowLiteImageClassification.log
Windows
C:\greengrass\v2\logs\aws.greengrass.TensorFlowLiteImageClassification.log
查看此组件的日志
  • 在核心设备上运行以下命令以实时查看此组件的日志文件。将/greengrass/v2C:\greengrass\v2 替换为 AWS IoT Greengrass 根文件夹的路径。

    Linux
    sudo tail -f /greengrass/v2/logs/aws.greengrass.TensorFlowLiteImageClassification.log
    Windows (PowerShell)
    Get-Content C:\greengrass\v2\logs\aws.greengrass.TensorFlowLiteImageClassification.log -Tail 10 -Wait

更改日志

下表描述了该组件的每个版本中的更改。

版本

更改

2.1.12

Greengrass nucleus 2.12.5 版本的版本已更新。

2.1.11

Greengrass nucleus 版本 2.12.0 版本的版本已更新。

2.1.10

Greengrass nucleus 版本 2.11.0 版本的版本已更新。

2.1.9

Greengrass nucleus 版本 2.10.0 版本的版本已更新。

2.1.8

Greengrass nucleus 版本 2.9.0 版本的版本已更新。

2.1.7

Greengrass nucleus 版本 2.8.0 版本的版本已更新。

2.1.6

Greengrass nucleus 版本 2.7.0 版本的版本已更新。

2.1.5

Greengrass nucleus 版本 2.6.0 版本的版本已更新。

2.1.4

Greengrass nucleus 版本 2.5.0 版本的版本已更新。

2.1.3

Greengrass nucleus 版本 2.4.0 版本的版本已更新。

2.1.2

Greengrass nucleus 版本 2.3.0 版本的版本已更新。

2.1.1

Greengrass nucleus 版本 2.2.0 版本的版本已更新。

2.1.0

初始版本。