Classificação de imagens DLR - AWS IoT Greengrass

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Classificação de imagens DLR

O componente de classificação de imagem DLR (aws.greengrass.DLRImageClassification) contém exemplos de código de inferência para realizar inferência de classificação de imagens usando modelos Deep Learning Runtime e resnet-50. Esse componente usa a variante Armazenamento de modelos de classificação de imagens DLR e os Tempo de execução do DLR componentes como dependências para baixar o DLR e os modelos de amostra.

Para usar esse componente de inferência com um modelo DLR personalizado, crie uma versão personalizada do componente de armazenamento de modelos dependente. Para usar seu próprio código de inferência personalizado, você pode usar a receita desse componente como modelo para criar um componente de inferência personalizado.

Versões

Esse componente tem as seguintes versões:

  • 2.1.x

  • 2.0.x

Tipo

Este componente é um componente genérico (aws.greengrass.generic). O núcleo do Greengrass executa os scripts do ciclo de vida do componente.

Para ter mais informações, consulte Tipos de componentes.

Sistema operacional

Esse componente pode ser instalado em dispositivos principais que executam os seguintes sistemas operacionais:

  • Linux

  • Windows

Requisitos

Esse componente tem os seguintes requisitos:

  • Nos principais dispositivos do Greengrass que executam o Amazon Linux 2 ou o Ubuntu 18.04, a GNU C Library (glibc) versão 2.27 ou posterior está instalada no dispositivo.

  • Em dispositivos ARMv7L, como o Raspberry Pi, dependências do OpenCV-Python instaladas no dispositivo. Execute o comando a seguir para instalar as dependências.

    sudo apt-get install libopenjp2-7 libilmbase23 libopenexr-dev libavcodec-dev libavformat-dev libswscale-dev libv4l-dev libgtk-3-0 libwebp-dev
  • Os dispositivos Raspberry Pi que executam o Raspberry Pi OS Bullseye devem atender aos seguintes requisitos:

    • NumPy 1.22.4 ou posterior instalado no dispositivo. O Raspberry Pi OS Bullseye inclui uma versão anterior do NumPy, então você pode executar o seguinte comando para atualizar NumPy o dispositivo.

      pip3 install --upgrade numpy
    • A pilha de câmeras antiga ativada no dispositivo. O Raspberry Pi OS Bullseye inclui uma nova pilha de câmeras que é ativada por padrão e não é compatível, portanto, você deve habilitar a pilha de câmeras antiga.

      Para habilitar a pilha de câmeras antiga
      1. Execute o comando a seguir para abrir a ferramenta de configuração do Raspberry Pi.

        sudo raspi-config
      2. Selecione Opções de interface.

      3. Selecione Câmera antiga para ativar a pilha de câmeras antigas.

      4. Reinicie o Raspberry Pi.

Dependências

Quando você implanta um componente, AWS IoT Greengrass também implanta versões compatíveis de suas dependências. Isso significa que você deve atender aos requisitos do componente e de todas as suas dependências para implantá-lo com êxito. Esta seção lista as dependências das versões lançadas desse componente e as restrições de versão semântica que definem as versões dos componentes para cada dependência. Você também pode visualizar as dependências de cada versão do componente no AWS IoT Greengrass console. Na página de detalhes do componente, procure a lista de dependências.

2.1.13 and 2.1.14

A tabela a seguir lista as dependências das versões 2.1.13 e 2.1.14 desse componente.

Dependência Versões compatíveis Tipo de dependência
Núcleo Greengrass >=2.0.0 <2.13.0 Flexível
Armazenamento de modelos de classificação de imagens DLR ~2.1.0 Rígido
DLR ~1.6.0 Rígido
2.1.12

A tabela a seguir lista as dependências da versão 2.1.12 desse componente.

Dependência Versões compatíveis Tipo de dependência
Núcleo Greengrass >=2.0.0 <2.12.0 Flexível
Armazenamento de modelos de classificação de imagens DLR ~2.1.0 Rígido
DLR ~1.6.0 Rígido
2.1.11

A tabela a seguir lista as dependências da versão 2.1.11 desse componente.

Dependência Versões compatíveis Tipo de dependência
Núcleo Greengrass >=2.0.0 <2.11.0 Flexível
Armazenamento de modelos de classificação de imagens DLR ~2.1.0 Rígido
DLR ~1.6.0 Rígido
2.1.10

A tabela a seguir lista as dependências da versão 2.1.10 desse componente.

Dependência Versões compatíveis Tipo de dependência
Núcleo Greengrass >=2.0.0 <2.10.0 Flexível
Armazenamento de modelos de classificação de imagens DLR ~2.1.0 Rígido
DLR ~1.6.0 Rígido
2.1.9

A tabela a seguir lista as dependências da versão 2.1.9 desse componente.

Dependência Versões compatíveis Tipo de dependência
Núcleo Greengrass >=2.0.0 <2.9.0 Flexível
Armazenamento de modelos de classificação de imagens DLR ~2.1.0 Rígido
DLR ~1.6.0 Rígido
2.1.8

A tabela a seguir lista as dependências da versão 2.1.8 desse componente.

Dependência Versões compatíveis Tipo de dependência
Núcleo Greengrass >=2.0.0 <2.8.0 Flexível
Armazenamento de modelos de classificação de imagens DLR ~2.1.0 Rígido
DLR ~1.6.0 Rígido
2.1.7

A tabela a seguir lista as dependências da versão 2.1.7 desse componente.

Dependência Versões compatíveis Tipo de dependência
Núcleo Greengrass >=2.0.0 <2.7.0 Flexível
Armazenamento de modelos de classificação de imagens DLR ~2.1.0 Rígido
DLR ~1.6.0 Rígido
2.1.6

A tabela a seguir lista as dependências da versão 2.1.6 desse componente.

Dependência Versões compatíveis Tipo de dependência
Núcleo Greengrass >=2.0.0 <2.6.0 Flexível
Armazenamento de modelos de classificação de imagens DLR ~2.1.0 Rígido
DLR ~1.6.0 Rígido
2.1.4 - 2.1.5

A tabela a seguir lista as dependências das versões 2.1.4 a 2.1.5 desse componente.

Dependência Versões compatíveis Tipo de dependência
Núcleo Greengrass >=2.0.0 <2.5.0 Flexível
Armazenamento de modelos de classificação de imagens DLR ~2.1.0 Rígido
DLR ~1.6.0 Rígido
2.1.3

A tabela a seguir lista as dependências da versão 2.1.3 desse componente.

Dependência Versões compatíveis Tipo de dependência
Núcleo Greengrass >=2.0.0 <2.4.0 Flexível
Armazenamento de modelos de classificação de imagens DLR ~2.1.0 Rígido
DLR ~1.6.0 Rígido
2.1.2

A tabela a seguir lista as dependências da versão 2.1.2 desse componente.

Dependência Versões compatíveis Tipo de dependência
Núcleo Greengrass >=2.0.0 <2.3.0 Flexível
Armazenamento de modelos de classificação de imagens DLR ~2.1.0 Rígido
DLR ~1.6.0 Rígido
2.1.1

A tabela a seguir lista as dependências da versão 2.1.1 desse componente.

Dependência Versões compatíveis Tipo de dependência
Núcleo Greengrass >=2.0.0 <2.2.0 Flexível
Armazenamento de modelos de classificação de imagens DLR ~2.1.0 Rígido
DLR ~1.6.0 Rígido
2.0.x

A tabela a seguir lista as dependências da versão 2.0.x desse componente.

Dependência Versões compatíveis Tipo de dependência
Núcleo Greengrass ~2.0.0 Flexível
Armazenamento de modelos de classificação de imagens DLR ~2.0.0 Rígido
DLR ~1.3.0 Flexível

Configuração

Esse componente fornece os seguintes parâmetros de configuração que você pode personalizar ao implantar o componente.

2.1.x
accessControl

(Opcional) O objeto que contém a política de autorização que permite que o componente publique mensagens no tópico de notificações padrão.

Padrão:

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

(Opcional) O tópico no qual você deseja publicar os resultados da inferência. Se você modificar esse valor, também deverá modificar o valor de resources no accessControl parâmetro para corresponder ao nome do tópico personalizado.

Padrão: ml/dlr/image-classification

Accelerator

O acelerador que você deseja usar. Os valores compatíveis são cpu e gpu.

Os modelos de amostra no componente do modelo dependente oferecem suporte somente à aceleração da CPU. Para usar a aceleração de GPU com um modelo personalizado diferente, crie um componente de modelo personalizado para substituir o componente de modelo público.

Padrão: cpu

ImageDirectory

(Opcional) O caminho da pasta no dispositivo em que os componentes de inferência leem imagens. Você pode modificar esse valor para qualquer local em seu dispositivo ao qual tenha acesso de leitura/gravação.

Padrão: /greengrass/v2/packages/artifacts-unarchived/component-name/image_classification/sample_images/

nota

Se você definir o valor de UseCamera paratrue, esse parâmetro de configuração será ignorado.

ImageName

(Opcional) O nome da imagem que o componente de inferência usa como entrada para uma previsão de criação. O componente procura a imagem na pasta especificada emImageDirectory. Por padrão, o componente usa a imagem de amostra no diretório de imagens padrão. AWS IoT Greengrass suporta os seguintes formatos de imagem: jpeg jpgpng,, npy e.

Padrão: cat.jpeg

nota

Se você definir o valor de UseCamera paratrue, esse parâmetro de configuração será ignorado.

InferenceInterval

(Opcional) O tempo em segundos entre cada previsão feita pelo código de inferência. O código de inferência de amostra é executado indefinidamente e repete suas previsões no intervalo de tempo especificado. Por exemplo, você pode alterar isso para um intervalo menor se quiser usar imagens tiradas por uma câmera para previsão em tempo real.

Padrão: 3600

ModelResourceKey

(Opcional) Os modelos usados no componente de modelo público dependente. Modifique esse parâmetro somente se você substituir o componente do modelo público por um componente personalizado.

Padrão:

{ "armv7l": "DLR-resnet50-armv7l-cpu-ImageClassification", "aarch64": "DLR-resnet50-aarch64-cpu-ImageClassification", "x86_64": "DLR-resnet50-x86_64-cpu-ImageClassification", "windows": "DLR-resnet50-win-cpu-ImageClassification" }
UseCamera

(Opcional) Valor da string que define se as imagens de uma câmera conectada ao dispositivo principal do Greengrass devem ser usadas. Os valores compatíveis são true e false.

Quando você define esse valor comotrue, o código de inferência de amostra acessa a câmera no seu dispositivo e executa a inferência localmente na imagem capturada. Os valores dos ImageDirectory parâmetros ImageName e são ignorados. Certifique-se de que o usuário que está executando esse componente tenha acesso de leitura/gravação ao local em que a câmera armazena as imagens capturadas.

Padrão: false

nota

Quando você visualiza a receita desse componente, o parâmetro de UseCamera configuração não aparece na configuração padrão. No entanto, você pode modificar o valor desse parâmetro em uma atualização de mesclagem de configuração ao implantar o componente.

Ao definir como UseCameratrue, você também deve criar um link simbólico para permitir que o componente de inferência acesse sua câmera a partir do ambiente virtual criado pelo componente de tempo de execução. Para obter mais informações sobre o uso de uma câmera com os componentes de inferência de amostra, consulteAtualizar configurações de componentes.

2.0.x
MLRootPath

(Opcional) O caminho da pasta nos dispositivos principais do Linux em que os componentes de inferência leem imagens e gravam resultados de inferência. Você pode modificar esse valor em qualquer local em seu dispositivo no qual o usuário que está executando esse componente tenha acesso de leitura/gravação.

Padrão: /greengrass/v2/work/variant.DLR/greengrass_ml

Padrão: /greengrass/v2/work/variant.TensorFlowLite/greengrass_ml

Accelerator

O acelerador que você deseja usar. Os valores compatíveis são cpu e gpu.

Os modelos de amostra no componente do modelo dependente oferecem suporte somente à aceleração da CPU. Para usar a aceleração de GPU com um modelo personalizado diferente, crie um componente de modelo personalizado para substituir o componente de modelo público.

Padrão: cpu

ImageName

(Opcional) O nome da imagem que o componente de inferência usa como entrada para uma previsão de criação. O componente procura a imagem na pasta especificada emImageDirectory. O local padrão éMLRootPath/images. AWS IoT Greengrass suporta os seguintes formatos de imagem: jpeg jpgpng,, npy e.

Padrão: cat.jpeg

InferenceInterval

(Opcional) O tempo em segundos entre cada previsão feita pelo código de inferência. O código de inferência de amostra é executado indefinidamente e repete suas previsões no intervalo de tempo especificado. Por exemplo, você pode alterar isso para um intervalo menor se quiser usar imagens tiradas por uma câmera para previsão em tempo real.

Padrão: 3600

ModelResourceKey

(Opcional) Os modelos usados no componente de modelo público dependente. Modifique esse parâmetro somente se você substituir o componente do modelo público por um componente personalizado.

Padrão:

armv7l: "DLR-resnet50-armv7l-cpu-ImageClassification" x86_64: "DLR-resnet50-x86_64-cpu-ImageClassification"

Arquivo de log local

Esse componente usa o seguinte arquivo de log.

Linux
/greengrass/v2/logs/aws.greengrass.DLRImageClassification.log
Windows
C:\greengrass\v2\logs\aws.greengrass.DLRImageClassification.log
Para ver os registros desse componente
  • Execute o comando a seguir no dispositivo principal para visualizar o arquivo de log desse componente em tempo real. Substitua /greengrass/v2 ou C:\greengrass\v2 pelo caminho para a pasta AWS IoT Greengrass raiz.

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

Changelog

A tabela a seguir descreve as alterações em cada versão do componente.

Version (Versão)

Alterações

2.1.14

Versão atualizada para a versão 2.12.5 do Greengrass nucleus.

2.1.13

Versão atualizada para a versão 2.12.0 do Greengrass nucleus.

2.1.12

Versão atualizada para a versão 2.11.0 do Greengrass nucleus.

2.1.11

Versão atualizada para a versão 2.10.0 do Greengrass nucleus.

2.1.10

Versão atualizada para a versão 2.9.0 do Greengrass nucleus.

2.1.9

Versão atualizada para a versão 2.8.0 do Greengrass nucleus.

2.1.8

Versão atualizada para a versão 2.7.0 do Greengrass nucleus.

2.1.7

Versão atualizada para a versão 2.6.0 do Greengrass nucleus.

2.1.6

Versão atualizada para a versão 2.5.0 do Greengrass nucleus.

2.1.5

Componente lançado em todos Regiões da AWS.

2.1.4

Versão atualizada para a versão 2.4.0 do Greengrass nucleus.

Esta versão não está disponível na Europa (Londres) (eu-west-2).

2.1.3

Versão atualizada para a versão 2.3.0 do Greengrass nucleus.

2.1.2

Versão atualizada para a versão 2.2.0 do Greengrass nucleus.

2.1.1

Novos atributos
  • Use o Deep Learning Runtime v1.6.0.

  • Adicione suporte para classificação de imagens de amostra nas plataformas Armv8 (AArch64). Isso amplia o suporte ao aprendizado de máquina para os principais dispositivos do Greengrass que executam o NVIDIA Jetson, como o Jetson Nano.

  • Ative a integração da câmera para inferência de amostras. Use o novo parâmetro de UseCamera configuração para permitir que o código de inferência de amostra acesse a câmera em seu dispositivo principal do Greengrass e execute a inferência localmente na imagem capturada.

  • Adicione suporte para publicação de resultados de inferência no Nuvem AWS. Use o novo parâmetro de PublishResultsOnTopic configuração para especificar o tópico no qual você deseja publicar os resultados.

  • Adicione o novo parâmetro de ImageDirectory configuração que permite especificar um diretório personalizado para a imagem na qual você deseja realizar a inferência.

Correções de erros e melhorias
  • Grave os resultados da inferência no arquivo de log do componente em vez de em um arquivo de inferência separado.

  • Use o módulo de registro do software AWS IoT Greengrass Core para registrar a saída do componente.

  • Use o AWS IoT Device SDK para ler a configuração do componente e aplicar as alterações na configuração.

2.0.4

Versão inicial.