DLR 对象检测 - AWS IoT Greengrass

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

DLR 对象检测

DLR 对象检测组件 (aws.greengrass.DLRObjectDetection) 包含示例推理代码,以使用深度学习运行时和示例预训练模型执行对象检测推理。此组件使用变体 DLR物体检测模型存储DLR 运行时 组件作为依赖关系来下载 DLR 和示例模型。

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

版本

此组件具有以下版本:

  • 2.1.x

  • 2.0.x

类型

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

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

操作系统

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

  • Linux

  • Windows

要求

此组件具有以下要求:

  • 在运行 Amazon 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.13 and 2.1.14

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

依赖关系 兼容版本 依赖关系类型
Greengrass Nucleus >=2.0.0 <2.13.0 软性
DLR 对象检测模型存储 ~2.1.0 硬性
DLR ~1.6.0 硬性
2.1.12

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

依赖关系 兼容版本 依赖关系类型
Greengrass Nucleus >=2.0.0 <2.12.0 软性
DLR 对象检测模型存储 ~2.1.0 硬性
DLR ~1.6.0 硬性
2.1.11

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

依赖关系 兼容版本 依赖关系类型
Greengrass Nucleus >=2.0.0 <2.11.0 软性
DLR 对象检测模型存储 ~2.1.0 硬性
DLR ~1.6.0 硬性
2.1.10

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

依赖关系 兼容版本 依赖关系类型
Greengrass Nucleus >=2.0.0 <2.10.0 软性
DLR 对象检测模型存储 ~2.1.0 硬性
DLR ~1.6.0 硬性
2.1.9

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

依赖关系 兼容版本 依赖关系类型
Greengrass Nucleus >=2.0.0 <2.9.0 软性
DLR 对象检测模型存储 ~2.1.0 硬性
DLR ~1.6.0 硬性
2.1.8

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

依赖关系 兼容版本 依赖关系类型
Greengrass Nucleus >=2.0.0 <2.8.0 软性
DLR 对象检测模型存储 ~2.1.0 硬性
DLR ~1.6.0 硬性
2.1.7

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

依赖关系 兼容版本 依赖关系类型
Greengrass Nucleus >=2.0.0 <2.7.0 软性
DLR 对象检测模型存储 ~2.1.0 硬性
DLR ~1.6.0 硬性
2.1.6

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

依赖关系 兼容版本 依赖关系类型
Greengrass Nucleus >=2.0.0 <2.6.0 软性
DLR 对象检测模型存储 ~2.1.0 硬性
DLR ~1.6.0 硬性
2.1.4 - 2.1.5

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

依赖关系 兼容版本 依赖关系类型
Greengrass Nucleus >=2.0.0 <2.5.0 软性
DLR 对象检测模型存储 ~2.1.0 硬性
DLR ~1.6.0 硬性
2.1.3

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

依赖关系 兼容版本 依赖关系类型
Greengrass Nucleus >=2.0.0 <2.4.0 软性
DLR 对象检测模型存储 ~2.1.0 硬性
DLR ~1.6.0 硬性
2.1.2

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

依赖关系 兼容版本 依赖关系类型
Greengrass Nucleus >=2.0.0 <2.3.0 软性
DLR 对象检测模型存储 ~2.1.0 硬性
DLR ~1.6.0 硬性
2.1.1

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

依赖关系 兼容版本 依赖关系类型
Greengrass Nucleus >=2.0.0 <2.2.0 软性
DLR 对象检测模型存储 ~2.1.0 硬性
DLR ~1.6.0 硬性
2.0.x

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

依赖关系 兼容版本 依赖关系类型
Greengrass Nucleus ~2.0.0 软性
DLR 对象检测模型存储 ~2.0.0 硬性
DLR ~1.3.0 软性

配置

此组件提供您可以在部署组件时自定义的以下配置参数。

2.1.x
accessControl

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

默认值:

{ "aws.greengrass.ipc.mqttproxy": { "aws.greengrass.DLRObjectDetection:mqttproxy:1": { "policyDescription": "Allows access to publish via topic ml/dlr/object-detection.", "operations": [ "aws.greengrass#PublishToIoTCore" ], "resources": [ "ml/dlr/object-detection" ] } } }
PublishResultsOnTopic

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

默认:ml/dlr/object-detection

Accelerator

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

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

默认:cpu

ImageDirectory

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

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

注意

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

ImageName

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

默认:objects.jpg

注意

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

InferenceInterval

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

默认:3600

ModelResourceKey

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

默认值:

{ "armv7l": "DLR-yolo3-armv7l-cpu-ObjectDetection", "aarch64": "DLR-yolo3-aarch64-gpu-ObjectDetection", "x86_64": "DLR-yolo3-x86_64-cpu-ObjectDetection", "windows": "DLR-resnet50-win-cpu-ObjectDetection" }
UseCamera

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

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

默认:false

注意

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

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

2.0.x
MLRootPath

(可选)Linux 核心设备上推理组件读取图像和写入推理结果的文件夹路径。可将此值修改为设备上运行此组件的用户具有读/写访问权限的任何位置。

默认:/greengrass/v2/work/variant.DLR/greengrass_ml

默认:/greengrass/v2/work/variant.TensorFlowLite/greengrass_ml

Accelerator

请勿修改。目前,加速器唯一支持的值是 cpu,因为依赖模型组件中的模型仅针对 CPU 加速器进行编译。

ImageName

(可选)推理组件用作预测输入的图像名称。该组件可在 ImageDirectory 中指定的文件夹中查找图像。默认位置是 MLRootPath/images。AWS IoT Greengrass 支持以下图像格式:jpegjpgpngnpy

默认:objects.jpg

InferenceInterval

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

默认:3600

ModelResourceKey

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

默认值:

{ armv7l: "DLR-yolo3-armv7l-cpu-ObjectDetection", x86_64: "DLR-yolo3-x86_64-cpu-ObjectDetection" }

本地日志文件

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

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

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

更改日志

下表介绍每个组件版本的更改。

版本

更改

2.1.14

对 Greengrass Nucleus 2.12.5 发布版进行了版本更新。

2.1.13

版本更新为 Greengrass Nucleus 版本 2.12.0 发布版。

2.1.12

版本更新为 Greengrass Nucleus 版本 2.11.0 发布版。

2.1.11

版本更新为 Greengrass Nucleus 版本 2.10.0 发布版。

2.1.10

对 Greengrass Nucleus版本 2.9.0 发行版进行了版本更新。

2.1.9

版本更新为 Greengrass Nucleus 版本 2.8.0 发布版。

2.1.8

版本更新为 Greengrass Nucleus 版本 2.7.0 发布版。

2.1.7

版本更新为 Greengrass Nucleus 版本 2.6.0 发布版。

2.1.6

版本更新为 Greengrass Nucleus 版本 2.5.0 发布版。

2.1.5

组件已在所有 AWS 区域 发布。

2.1.4

版本更新为 Greengrass Nucleus 版本 2.4.0 发布版。

此版本不适用于欧洲地区(伦敦)(eu-west-2)。

2.1.3

版本更新为 Greengrass Nucleus 版本 2.3.0 发布版。

2.1.2

错误修复和改进
  • 修复了导致示例 DLR 对象检测推理结果中边界框不准确的图像缩放问题。

2.1.1

新功能
  • 使用深度学习运行时 v1.6.0。

  • 添加了对于在 Armv8(AArch64)平台上进行示例对象检测的支持。这扩展了对运行 NVIDIA Jetson 的 Greengrass 核心设备(例如 Jetson Nano)的机器学习支持。

  • 启用摄像机集成以进行示例推理。使用新的 UseCamera 配置参数启用示例推理代码,以访问 Greengrass 核心设备上的摄像机,并在本地对捕获的图像运行推理。

  • 添加了对于将推理结果发布到 AWS Cloud 的支持。使用新的 PublishResultsOnTopic 配置参数以指定要向其发布结果的主题。

  • 添加了新的 ImageDirectory 配置参数,使您能够为要对其执行推理的映像指定自定义目录。

错误修复和改进
  • 将推理结果写入组件日志文件,而不是单独的推理文件。

  • 使用 AWS IoT Greengrass Core 软件日志记录模块记录组件输出。

  • 使用 AWS IoT Device SDK 读取组件配置并应用配置更改。

2.0.4

初始版本。