AWS IoT Greengrass Version 1 entrou na fase de vida útil prolongada em 30 de junho de 2023. Para obter mais informações, consulte política de manutenção do AWS IoT Greengrass V1. Após essa data, AWS IoT Greengrass V1 não lançaremos atualizações que forneçam recursos, aprimoramentos, correções de erros ou patches de segurança. Os dispositivos que funcionam AWS IoT Greengrass V1 não serão interrompidos e continuarão operando e se conectando à nuvem. É altamente recomendável que você migre para AWS IoT Greengrass Version 2, o que adiciona novos recursos significativos e suporte para plataformas adicionais.
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á.
Conector de detecção de objetos do ML
Atenção
Esse conector passou para a fase de vida útil estendida e AWS IoT Greengrass não lançará atualizações que forneçam atributos, aprimoramentos para atributos existentes, patches de segurança ou correções de erros. Para obter mais informações, consulte Política de manutenção do AWS IoT Greengrass Version 1.
Os conectores de detecção de objetos do ML fornecem um serviço de inferência de machine learning (ML), que é executado no núcleo AWS IoT Greengrass. Esse serviço de inferência local executa a detecção de objetos usando um modelo de detecção de objetos compilado pelo compilador de aprendizado profundo do SageMaker Neo. Dois tipos de modelos de detecção de objetos são compatíveis: Single Shot Multibox Detector (SSD) e You Only Look Once (YOLO) v3. Para obter mais informações, consulte Requisitos do modelo de detecção de objetos.
As funções do Lambda definidas pelo usuário usam o SDK AWS IoT Greengrass de machine learning para enviar solicitações de inferência ao serviço de inferência local. O serviço realiza a inferência local em uma imagem de entrada e retorna uma lista de previsões para cada objeto detectado na imagem. Cada previsão contém uma categoria de objeto, uma pontuação de confiança de previsão e coordenadas de pixels que especificam uma caixa delimitadora em torno do objeto previsto.
O AWS IoT Greengrass fornece conectores de objeto do ML para várias plataformas:
Conector |
Descrição e ARN |
---|---|
Detecção de objetos do ML Aarch64 JTX2 |
Serviço de inferência de detecção de objetos para NVIDIA Jetson TX2. Compatível com a aceleração de GPU. ARN: |
Detecção de objetos do ML x86_64 |
Serviço de inferência de detecção de objetos para plataformas x86_64. ARN: |
Detecção de objetos do ML ARMv7 |
Serviço de inferência de detecção de objetos para plataformas ARMv7. ARN: |
Requisitos
Esses conectores têm os seguintes requisitos:
-
Software Core AWS IoT Greengrass v1.9.3 ou posterior.
-
Python
, versão 3.7 ou 3.8, instalado no dispositivo de núcleo e adicionado à variável de ambiente PATH. nota
Para usar o Python 3.8, execute o comando a seguir para criar um symblink da pasta de instalação padrão do Python 3.7 para os binários instalados do Python 3.8.
sudo ln -s
path-to-python-3.8
/python3.8 /usr/bin/python3.7Isso configura seu dispositivo para atender ao requisito Python para AWS IoT Greengrass.
-
Dependências do runtime de aprendizado profundo do SageMaker Neo instaladas no dispositivo de núcleo. Para obter mais informações, consulte Instalar dependências do runtime de aprendizado profundo do Neo no núcleo do AWS IoT Greengrass.
-
Um recurso de ML no grupo do Greengrass. O recurso de ML deve fazer referência a um bucket do Amazon S3 que contém um modelo de detecção de objeto. Para obter mais informações, consulte Origem de modelo do Amazon S3.
nota
O modelo deve ser um tipo de modelo de detecção de objetos Single Shot Multibox Detector ou You Only Look Once v3. Ele deve ser compilado usando o compilador de aprendizado profundo do SageMaker Neo. Para obter mais informações, consulte Requisitos do modelo de detecção de objetos.
-
O conector de feedback do ML adicionado ao grupo do Greengrass e configurado. Isso será necessário somente se você quiser usar o conector para fazer upload de dados de entrada do modelo e publicar previsões em um tópico MQTT.
-
AWS IoT GreengrassA versão v1.1.0 do SDK de machine learning é necessária para interagir com esse conector.
Requisitos do modelo de detecção de objetos
Os conectores de detecção de objetos do ML oferecem suporte aos tipos de modelo de detecção de objetos Single Shot multibox Detector (SSD) e You Only Look Once (YOLO) v3. Você pode usar os componentes de detecção de objetos fornecidos pelo GluonCV
Seu modelo de detecção de objetos deve ser treinado com imagens de entrada 512 x 512. Os modelos pré-treinados do GluonCV Model Zoo já atendem a esse requisito.
Os modelos de detecção de objetos treinados devem ser compilados com o compilador de aprendizado profundo do SageMaker Neo. Ao compilar, verifique se o hardware de destino corresponde ao hardware do seu dispositivo de núcleo do Greengrass. Para obter informações, consulte SageMaker Neo no Guia do desenvolvedor do Amazon SageMaker.
O modelo compilado deve ser adicionado como um recurso de ML (origem de modelo do Amazon S3) ao mesmo grupo do Greengrass que o conector.
Parâmetros do conector
Esses conectores fornecem os parâmetros a seguir.
MLModelDestinationPath
-
O caminho absoluto para o bucket do Amazon S3 que contém o modelo de ML compatível com Neo. Esse é o caminho de destino especificado para o recurso de modelo de ML.
Nome de exibição no console AWS IoT: Caminho de destino do modelo
Obrigatório:
true
Digite:
string
Padrão válido:
.+
MLModelResourceId
-
O ID do recurso de ML que faz referência ao modelo de origem.
Nome de exibição no console AWS IoT: Recurso do ML do grupo do Greengrass
Obrigatório:
true
Digite:
S3MachineLearningModelResource
Padrão válido:
^[a-zA-Z0-9:_-]+$
LocalInferenceServiceName
-
O nome para o serviço de inferência local. As funções do Lambda definidas pelo usuário invocam o serviço passando o nome para a função
invoke_inference_service
do SDK AWS IoT Greengrass de Machine Learning. Para ver um exemplo, consulte Exemplo de uso.Nome de exibição no console AWS IoT: Nome do serviço de inferência local
Obrigatório:
true
Digite:
string
Padrão válido:
^[a-zA-Z0-9][a-zA-Z0-9-]{1,62}$
LocalInferenceServiceTimeoutSeconds
-
O tempo (em segundos) até que a solicitação de inferência seja encerrada. O valor mínimo é 1. O valor padrão é 10.
Nome de exibição no console AWS IoT: Tempo limite (segundos)
Obrigatório:
true
Digite:
string
Padrão válido:
^[1-9][0-9]*$
LocalInferenceServiceMemoryLimitKB
-
A quantidade de memória (em KB) que o serviço tem acesso. O valor mínimo é 1.
Nome de exibição no console AWS IoT: Limite de memória
Obrigatório:
true
Digite:
string
Padrão válido:
^[1-9][0-9]*$
GPUAcceleration
-
O contexto de computação CPU ou GPU (acelerada). Essa propriedade aplica-se somente ao conector Aarch64 JTX2 de classificação de imagens do ML.
Nome de exibição no console AWS IoT: Aceleração de GPU
Obrigatório:
true
Digite:
string
Valores válidos:
CPU
ouGPU
MLFeedbackConnectorConfigId
-
O ID da configuração de feedback a ser usada para fazer upload dos dados de entrada do modelo. Ele deve corresponder ao ID de uma configuração de feedback definida para o conector ML Feedback.
Esse parâmetro é necessário somente se você quiser usar o conector ML Feedback para fazer upload de dados de entrada do modelo e publicar previsões em um tópico MQTT.
Nome de exibição no console AWS IoT: ID de configuração do conector de feedback do ML
Obrigatório:
false
Digite:
string
Padrão válido:
^$|^[a-zA-Z0-9][a-zA-Z0-9-]{1,62}$
Exemplo de criação de conector (AWS CLI)
O seguinte comando da CLI cria um ConnectorDefinition
com uma versão inicial que contém um conector de detecção de objeto do ML. Este exemplo cria uma instância do conector ARMv7l detecção de objeto do ML.
aws greengrass create-connector-definition --name MyGreengrassConnectors --initial-version '{ "Connectors": [ { "Id": "MyObjectDetectionConnector", "ConnectorArn": "arn:aws:greengrass:
region
::/connectors/ObjectDetectionARMv7/versions/1", "Parameters": { "MLModelDestinationPath": "/path-to-model", "MLModelResourceId": "my-ml-resource", "LocalInferenceServiceName": "objectDetection", "LocalInferenceServiceTimeoutSeconds": "10", "LocalInferenceServiceMemoryLimitKB": "500000", "MLFeedbackConnectorConfigId" : "object-detector-random-sampling" } } ] }'
nota
A função do Lambda nesses conectores tem um ciclo de vida longo.
No console do AWS IoT Greengrass, você pode adicionar um conector na página Conectores do grupo. Para obter mais informações, consulte Conceitos básicos de conectores do Greengrass (console).
Dados de entrada
Esses conectores aceitam um arquivo de imagem como entrada. Os arquivos de imagem de entrada devem estar no formato jpeg
ou png
. Para obter mais informações, consulte Exemplo de uso.
Esses conectores não aceitam mensagens MQTT como dados de entrada.
Dados de saída
Esses conectores retornam uma lista formatada de resultados de previsão para os objetos identificados na imagem de entrada:
{ "prediction": [ [ 14, 0.9384938478469849, 0.37763649225234985, 0.5110225081443787, 0.6697432398796082, 0.8544386029243469 ], [ 14, 0.8859519958496094, 0, 0.43536216020584106, 0.3314110040664673, 0.9538808465003967 ], [ 12, 0.04128098487854004, 0.5976729989051819, 0.5747185945510864, 0.704264223575592, 0.857937216758728 ], ... ] }
Cada previsão na lista está contida entre colchetes e contém seis valores:
-
O primeiro valor representa a categoria de objeto prevista para o objeto identificado. As categorias de objetos e seus valores correspondentes são determinados ao treinar seu modelo de machine learning de detecção de objetos no compilador de aprendizado profundo do Neo.
-
O segundo valor é a pontuação de confiança para a previsão da categoria de objeto. Isso representa a probabilidade de a previsão estar correta.
-
Os últimos quatro valores correspondem às dimensões de pixels que representam uma caixa delimitadora em torno do objeto previsto na imagem.
Esses conectores não publicam mensagens MQTT como dados de saída.
Exemplo de uso
O exemplo de função do Lambda a seguir usa o SDK AWS IoT Greengrass de machine learning para interagir com um conector de detecção de objetos do ML.
nota
Você pode baixar o SDK na página de downloads do AWS IoT GreengrassSDK de Machine Learning.
O exemplo inicializa um cliente do SDK e de forma síncrona chama a função invoke_inference_service
do SDK para invocar o serviço de inferência local. Ela passa o tipo de algoritmo, o nome do serviço, o tipo de imagem e o conteúdo da imagem. Em seguida, o exemplo analisa a resposta do serviço para obter os resultados de probabilidade (previsões).
import logging from threading import Timer import numpy as np import greengrass_machine_learning_sdk as ml # We assume the inference input image is provided as a local file # to this inference client Lambda function. with open('/test_img/test.jpg', 'rb') as f: content = bytearray(f.read()) client = ml.client('inference') def infer(): logging.info('invoking Greengrass ML Inference service') try: resp = client.invoke_inference_service( AlgoType='object-detection', ServiceName='objectDetection', ContentType='image/jpeg', Body=content ) except ml.GreengrassInferenceException as e: logging.info('inference exception {}("{}")'.format(e.__class__.__name__, e)) return except ml.GreengrassDependencyException as e: logging.info('dependency exception {}("{}")'.format(e.__class__.__name__, e)) return logging.info('resp: {}'.format(resp)) predictions = resp['Body'].read().decode("utf-8") logging.info('predictions: {}'.format(predictions)) predictions = eval(predictions) # Perform business logic that relies on the predictions. # Schedule the infer() function to run again in ten second. Timer(10, infer).start() return infer() def function_handler(event, context): return
A função invoke_inference_service
do SDK AWS IoT Greengrass de machine learning aceita os seguintes argumentos.
Argumento |
Descrição |
---|---|
|
O nome do tipo de algoritmo a ser usado para inferência. No momento, só há compatibilidade com Obrigatório: Digite: Valores válidos: |
|
O nome do serviço de inferência local. Use o nome que você especificou para o parâmetro Obrigatório: Digite: |
|
O tipo de mime da imagem de entrada. Obrigatório: Digite: Valores válidos: |
|
O conteúdo do arquivo de imagem de entrada. Obrigatório: Digite: |
Instalar dependências do runtime de aprendizado profundo do Neo no núcleo do AWS IoT Greengrass
Os conectores de detecção de objetos do ML são empacotados com o runtime de aprendizado profundo (DLR) do SageMaker Neo. Os conectores usam o runtime para atender ao modelo de ML. Para usar esses conectores, você deve instalar as dependências do DLR no dispositivo de núcleo.
Antes de instalar as dependências do DLR, certifique-se de que as bibliotecas do sistema necessárias (com as versões mínimas especificadas) estejam presentes no dispositivo.
Registro em log e solução de problemas
Dependendo das suas configurações de grupo, os logs de erro e evento são gravados no CloudWatch Logs, no sistema de arquivos local, ou ambos. Os logs desse conector usam o prefixo LocalInferenceServiceName
. Se o conector se comportar de forma inesperada, verifique os logs do conector. Normalmente, eles contêm informações úteis de depuração, como uma dependência de biblioteca de ML ausente ou a causa de uma falha de startup do conector.
Se o grupo AWS IoT Greengrass estiver configurado para gravar logs locais, o conector grava arquivos de log em
. Para obter mais informações sobre o registro em log do Greengrass, consulte Monitoramento com logs do AWS IoT Greengrass.greengrass-root
/ggc/var/log/user/region
/aws/
Use as informações a seguir para ajudar a solucionar os problemas com os conectores de detecção de objetos do ML.
Bibliotecas do sistema necessárias
As guias a seguir listam as bibliotecas do sistema necessárias para cada conector de detecção de objetos do ML.
Problemas
Sintomas | Solução |
---|---|
Em um Raspberry Pi, a mensagem de erro a seguir será registrada em log e você não está usando a câmera: |
Execute o comando a seguir para desabilitar o driver:
Essa operação é efêmera. O symblink desaparece após a reinicialização. Consulte o manual de distribuição do seu sistema operacional para saber como criar o link automaticamente na reinicialização. |
Licenças
Os conectores de detecção de objetos do ML incluem o seguinte licenciamento/software de terceiros:
-
AWS SDK for Python (Boto3)
/Licença Apache 2.0 -
botocore
/Licença Apache 2.0 -
dateutil
/Licença PSF -
docutils
/Licença BSD, GNU Licença pública geral (GPL), Licença Python Software Foundation, Domínio público -
jmespath
/Licença MIT -
s3transfer
/Licença Apache 2.0 -
urllib3
/Licença MIT
-
Deep Learning Runtime
/Licença Apache 2.0 six
/MIT
Esse conector é liberado de acordo com o Contrato de licença de software do Greengrass Core