AWS IoT Greengrass Version 1 entró en la fase de vida útil prolongada el 30 de junio de 2023. Para obtener más información, consulte la política de mantenimiento de AWS IoT Greengrass V1 Después de esta fecha, AWS IoT Greengrass V1 no se publicarán actualizaciones que proporcionen funciones, mejoras, correcciones de errores o parches de seguridad. Los dispositivos que se ejecuten AWS IoT Greengrass V1 no se verán afectados y seguirán funcionando y conectándose a la nube. Le recomendamos encarecidamente que migre a AWS IoT Greengrass Version 2, ya que añade importantes funciones nuevas y es compatible con plataformas adicionales.
Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Conector de detección de ML Object
aviso
Este conector ha pasado a la fase de vida útil prolongada y AWS IoT Greengrass no lanzará actualizaciones que proporcionen funciones, mejoras de las funciones existentes, parches de seguridad o correcciones de errores. Para obtener más información, consulte AWS IoT Greengrass Version 1política de mantenimiento.
Los conectores Object Detection de ML proporcionan un servicio de inferencia de machine learning (ML) que se ejecuta en el núcleo de AWS IoT Greengrass. Este servicio de inferencia local realiza el recopilado por el compilador de aprendizaje profundo SageMaker Neo. Se admiten dos tipos de modelos de detección de objetos: Single Shot Multibox Detector (SSD) y You Only Look Once (YOLO) v3. Para obtener más información, consulte Requisitos del modelo de detección de objetos.
Las funciones de Lambda definidas por el usuario utilizan el SDK de AWS IoT Greengrass de machine learning para enviar solicitudes de inferencia al servicio de inferencia local. El servicio realiza la inferencia local en una imagen de entrada y devuelve una lista de predicciones para cada objeto detectado en la imagen. Cada predicción contiene una categoría de objeto, una puntuación de confianza de predicción y coordenadas de píxeles que especifican un cuadro delimitador alrededor del objeto previsto.
AWS IoT Greengrass proporciona conectores de detección de objetos de ML para múltiples plataformas:
Kinesis - S3 |
Descripción y ARN |
---|---|
Detección de objetos de ML Aarch64 JTX2 |
Servicio de inferencia de detección de objetos para NVIDIA Jetson TX2. Admite aceleración de GPU. ARN: |
Detección de objetos de ML x86_64 |
Servicio de inferencia de detección de objetos para plataformas x86_64. ARN: |
Detección de objetos de ML ARMv7 |
Servicio de inferencia de detección de objetos para plataformas ARMv7. ARN: |
Requisitos
Estos conectores tienen los siguientes requisitos:
-
Software AWS IoT Greengrass Core versión 1.9.3 o posterior.
-
Python
versión 3.7 o 3.8 instalado en el dispositivo principal y añadido a la variable de entorno PATH. nota
Para usar Python 3.8, ejecute el siguiente comando para crear un enlace simbólico desde la carpeta de instalación predeterminada de Python 3.7 a los binarios de Python 3.8 instalados.
sudo ln -s
path-to-python-3.8
/python3.8 /usr/bin/python3.7Esto configura su dispositivo para que cumpla con el requisito de Python para AWS IoT Greengrass.
-
Dependencias del tiempo de ejecución del aprendizaje profundo Sagemaker Neo instalado en el dispositivo del núcleo. Para obtener más información, consulte Instalación de las dependencias del entorno de ejecución de aprendizaje profundo de Neo en el núcleo de AWS IoT Greengrass.
-
Un recurso de ML en el grupo de Greengrass. El recurso de ML debe hacer referencia a un bucket de Amazon S3 que contenga un modelo de detección de objetos. Para obtener más información, consulte Orígenes del modelo Amazon S3.
nota
El modelo debe ser un tipo de modelo de detección de objetos Single Shot Multibox Detector o You Only Look Once v3. Debe compilarse con el compilador de aprendizaje profundo Sagemaker Neo. Para obtener más información, consulte Requisitos del modelo de detección de objetos.
-
El conector de Feedback de ML añadido al grupo de Greengrass y configurado. Solo es necesario si desea utilizar el conector para cargar datos de entrada del modelo y publicar predicciones en un tema de MQTT.
-
Se requiere el SDK AWS IoT Greengrass de machine learning versión 1.1.0 para interactuar con este conector.
Requisitos del modelo de detección de objetos
Los conectores de Detección de objetosde ML admiten los tipos de modelos de detección de objetos Single Shot multibox Detector (SSD) y You Only Look Once (YOLO) v3. Puede utilizar los componentes de detección de objetos proporcionados por GluonCV
El modelo de detección de objetos debe entrenarse con imágenes de entrada de 512 x 512. Los modelos entrenados previamente de GluonCV Model Zoo ya cumplen este requisito.
Los modelos de detección de objetos entrenados deben compilarse con con el compilador de aprendizaje profundo SageMaker Neo. Al compilar, asegúrese de que el hardware de destino coincida con el hardware del dispositivo de Greengrass Core. Para obtener más información, consulte SageMaker Neo en la Guía para desarrolladores de Amazon SageMaker.
El modelo compilado debe añadirse como un recurso de ML (origen del modelo de Amazon S3) al mismo grupo de Greengrass que el conector.
Parámetros de conector
Estos conectores proporcionan los siguientes parámetros.
MLModelDestinationPath
-
La ruta absoluta al bucket de Amazon S3 que contiene el modelo de ML compatible con Neo. Esta es la ruta de destino que se ha especificado para el recurso del modelo de aprendizaje automático.
Nombre que mostrar en la consola AWS IoT: Ruta de destino del modelo
Obligatorio:
true
Escriba:
string
Patrón válido:
.+
MLModelResourceId
-
El ID del recurso de aprendizaje automático que hace referencia al modelo de origen.
Nombre que mostrar en la consola AWS IoT: Recurso de ML del grupo Greengrass
Obligatorio:
true
Escriba:
S3MachineLearningModelResource
Patrón válido:
^[a-zA-Z0-9:_-]+$
LocalInferenceServiceName
-
El nombre del servicio de inferencia local. Las funciones de Lambda definidas por el usuario invocan el servicio pasando el nombre a la función
invoke_inference_service
del SDK de machine learning de AWS IoT Greengrass. Para ver un ejemplo, consulte Ejemplo de uso.Nombre que mostrar en la consola AWS IoT: Nombre del servicio de inferencia local
Obligatorio:
true
Escriba:
string
Patrón válido:
^[a-zA-Z0-9][a-zA-Z0-9-]{1,62}$
LocalInferenceServiceTimeoutSeconds
-
El tiempo (en segundos) antes de que se termine la solicitud de inferencia. El valor mínimo es 1. El valor predeterminado es 10.
Nombre que mostrar en la consola AWS IoT: Tiempo de espera (segundo)
Obligatorio:
true
Escriba:
string
Patrón válido:
^[1-9][0-9]*$
LocalInferenceServiceMemoryLimitKB
-
La cantidad de memoria (en KB) a la que el servicio tiene acceso. El valor mínimo es 1.
Nombre que mostrar en la consola AWS IoT: Límite de memoria
Obligatorio:
true
Escriba:
string
Patrón válido:
^[1-9][0-9]*$
GPUAcceleration
-
El contexto de informática de la CPU o GPU (acelerada). Esta propiedad se aplica al solo al conector Image Classification de ML Aarch64 JTX2.
Nombre que mostrar en la consola AWS IoT: Aceleración de la GPU
Obligatorio:
true
Escriba:
string
Valores válidos:
CPU
oGPU
MLFeedbackConnectorConfigId
-
El ID de la configuración de retroalimentación que se va a utilizar para cargar los datos de entrada del modelo. Debe coincidir con el ID de una configuración de comentarios definida para el conector de comentarios de aprendizaje automático.
Este parámetro solo es necesario si desea utilizar el conector de comentarios de aprendizaje automático para cargar datos de entrada del modelo y publicar predicciones en un tema de MQTT.
Nombre que mostrar en la consola AWS IoT: ID de configuración del conector de ML Feedback connector
Obligatorio:
false
Escriba:
string
Patrón válido:
^$|^[a-zA-Z0-9][a-zA-Z0-9-]{1,62}$
Ejemplo de creación de conector (AWS CLI)
El siguiente comando de la CLI crea una ConnectorDefinition
con una versión inicial que contiene un conector Object Detection de ML. Este ejemplo crea una instancia del conector Object Detection de ML ARMv7l.
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
La función de Lambda de estos conectores tiene un ciclo de vida prolongado.
En la consola AWS IoT Greengrass, puede añadir un conector desde la página de Conectores del grupo. Para obtener más información, consulte Introducción a los conectores de Greengrass (consola).
Datos de entrada
Estos conectores aceptan un archivo de imagen como entrada. Los archivos de imagen de entrada deben tener el formato jpeg
o png
. Para obtener más información, consulte Ejemplo de uso.
Estos conectores no aceptan mensajes MQTT como datos de entrada.
Datos de salida
Estos conectores devuelven una lista con formato de resultados de predicciones para los objetos identificados en la imagen 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 predicción de la lista está incluida entre corchetes y contiene seis valores:
-
El primer valor representa la categoría de objeto prevista para el objeto identificado. Las categorías de objetos y sus valores correspondientes se determinan al entrenar el modelo de machine learning de detección de objetos en el compilador de aprendizaje profundo Neo.
-
El segundo valor es la puntuación de confianza para la predicción de categorías de objetos. Esto representa la probabilidad de que la predicción sea correcta.
-
Los cuatro últimos valores se corresponden con dimensiones de píxeles que representan un cuadro delimitador alrededor del objeto previsto en la imagen.
Estos conectores no publican mensajes MQTT como datos de salida.
Ejemplo de uso
El siguiente ejemplo de función de Lambda utiliza el SDK de Machine Learning AWS IoT Greengrass para interactuar con un conector de detección de objetos de ML.
nota
Puede descargar el SDK desde la página de descargas del SDK de machine learning de AWS IoT Greengrass.
En el ejemplo se inicializa un cliente SDK y de forma sincrónica llama a la función invoke_inference_service
del SDK para invocar el servicio de inferencia local. Pasa el tipo de algoritmo, el nombre del servicio, el tipo de imagen y contenido de imágenes. A continuación, el ejemplo analiza la respuesta del servicio para obtener los resultados de probabilidad (predicciones).
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
La función invoke_inference_service
en el SDK de machine learning de AWS IoT Greengrass acepta los argumentos siguientes.
Argumento |
Descripción |
---|---|
|
El nombre del tipo de algoritmo que usar para la interferencia. En la actualidad, solo se admite Obligatorio: Escriba: Valores válidos: |
|
El nombre del servicio de inferencia local. Utilice el nombre que especificó para el parámetro Obligatorio: Escriba: |
|
El tipo mime de la imagen de entrada. Obligatorio: Escriba: Valores válidos: |
|
El contenido del archivo de la imagen de entrada. Obligatorio: Escriba: |
Instalación de las dependencias del entorno de ejecución de aprendizaje profundo de Neo en el núcleo de AWS IoT Greengrass
Los conectores de detección de objetos de ML vienen incluidos en el tiempo de ejecución del aprendizaje profundo (DLR) de Sagemaker Neo. Los conectores utilizan el tiempo de ejecución para ofrecer el modelo de ML. Para utilizar estos conectores, debe instalar las dependencias para el DLR en su dispositivo principal.
Antes de instalar las dependencias de DLR, asegúrese de que las bibliotecas del sistema requeridas (con la versiones mínimas especificadas) están presentes en el dispositivo.
Registro y solución de problemas
En función de su configuración del grupo, los registros de evento y error se escriben en el registro de CloudWatch, el sistema de archivos local o ambos. Los registros de este conector utilizan el prefijo LocalInferenceServiceName
. Si el conector se comporta de forma inesperada, compruebe los registros del conector. Estos suelen contener información de depuración útil, como, por ejemplo, que falta una dependencia de biblioteca de ML o la causa de un error de inicio del conector.
Si el grupo AWS IoT Greengrass está configurado para escribir registros locales, el conector escribe los archivos de registro en
. Para obtener más información sobre los registros de Greengrass, consulte Monitorización con registros de AWS IoT Greengrass.greengrass-root
/ggc/var/log/user/region
/aws/
Utilice la siguiente información como ayuda para solucionar problemas con los conectores de la Detection de objetos de ML.
Bibliotecas del sistema obligatorias
Las siguientes pestañas muestran las bibliotecas del sistema necesarias para cada conector Object Detection de ML.
Problemas
Síntoma | Solución |
---|---|
En una Raspberry Pi, se registra el siguiente mensaje de error y no está utilizando la cámara: |
Ejecute el comando siguiente para deshabilitar el controlador:
Esta operación es efímera. El enlace simbólico desaparece después de reiniciar. Consulte el manual de su distribución de SO para obtener información sobre cómo crear automáticamente el enlace al reiniciar. |
Licencias
Los conectores Object Detection de ML incluyen las siguientes licencias y software de terceros:
-
AWS SDK for Python (Boto3)
/Apache License 2.0 -
botocore
/Apache License 2.0 -
dateutil
/PSF License -
docutils
/BSD License, GNU General Public License (GPL), Python Software Foundation License, Public Domain -
jmespath
/MIT License -
s3transfer
/Apache License 2.0 -
urllib3
/MIT License
-
Tiempo de ejecución de aprendizaje profundo
/Licencia Apache 2.0 six
/MIT
Este conector se publica bajo el contrato de licencia de software de Greengrass Core
Véase también
-
Integración con servicios y protocolos mediante conectores de Greengrass
-
Algoritmo de detección de objetos en la Guía para desarrolladores de Amazon SageMaker