Conector de la clasificación de ML Image - AWS IoT Greengrass

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 la clasificación de ML Image

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 Image Classification 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 clasificación de imágenes mediante un modelo entrenado por el algoritmo de clasificación de imágenes de .SageMaker.

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 ejecuta la inferencia localmente y devuelve las probabilidades de que la imagen de entrada pertenezca a categorías específicas.

AWS IoT Greengrass proporciona las siguientes versiones de este conector, que está disponible para varias plataformas.

Version 2

Kinesis - S3

Descripción y ARN

Clasificación de imágenes de ML Aarch64 JTX2

Servicio de inferencia para clasificación de imágenes para NVIDIA Jetson TX2. Admite aceleración de GPU.

ARN: arn:aws:greengrass:region::/connectors/ImageClassificationAarch64JTX2/versions/2

Clasificación de imágenes de ML x86_64

Servicio de inferencia para clasificación de imágenes para plataformas x86_64.

ARN: arn:aws:greengrass:region::/connectors/ImageClassificationx86-64/versions/2

Clasificación de imágenes de ML ARMv7

Servicio de inferencia para clasificación de imágenes para plataformas ARMv7.

ARN: arn:aws:greengrass:region::/connectors/ImageClassificationARMv7/versions/2

Version 1

Kinesis - S3

Descripción y ARN

Clasificación de imágenes de ML Aarch64 JTX2

Servicio de inferencia para clasificación de imágenes para NVIDIA Jetson TX2. Admite aceleración de GPU.

ARN: arn:aws:greengrass:region::/connectors/ImageClassificationAarch64JTX2/versions/1

Clasificación de imágenes de ML x86_64

Servicio de inferencia para clasificación de imágenes para plataformas x86_64.

ARN: arn:aws:greengrass:region::/connectors/ImageClassificationx86-64/versions/1

Clasificación de imágenes de ML Armv7

Servicio de inferencia para clasificación de imágenes para plataformas Armv7.

ARN: arn:aws:greengrass:region::/connectors/ImageClassificationARMv7/versions/1

Para obtener información sobre los cambios de versión, consulte el Registro de cambios.

Requisitos

Estos conectores tienen los siguientes requisitos:

Version 2
  • 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.7

    Esto configura su dispositivo para que cumpla con el requisito de Python para AWS IoT Greengrass.

  • Dependencias para el marco de trabajo Apache MXNet instalado en el dispositivo de núcleo. Para obtener más información, consulte Instalación de dependencias de MXNet en el núcleo de AWS IoT Greengrass.

  • Un recurso ML en el grupo de Greengrass que hace referencia a un origen del modelo SageMaker. Este modelo debe ser entrenado por el algoritmo de clasificación de imágenes de SageMaker. Para obtener más información, consulte Algoritmo de clasificación de imágenes en la Guía para desarrolladores de Amazon SageMaker.

  • 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.

  • El rol del grupo de Greengrass configurado para permitir la acción sagemaker:DescribeTrainingJob en la tarea de entrenamiento de destino, tal y como se muestra en la siguiente política de IAM de ejemplo.

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "sagemaker:DescribeTrainingJob" ], "Resource": "arn:aws:sagemaker:region:account-id:training-job:training-job-name" } ] }

    Para el requisito de rol de grupo, debe configurar el rol para conceder los permisos necesarios y asegurarse de que el rol se ha añadido al grupo. Para obtener más información, consulte Administración del rol de grupo de Greengrass (consola) o Administración del rol de grupo de Greengrass (CLI).

    Puede conceder acceso granular o condicional a recursos (por ejemplo, utilizando un esquema de nomenclatura con comodín *) Si cambia el trabajo de entrenamiento de destino en el futuro, asegúrese de actualizar el rol de grupo.

  • Se requiere el SDK AWS IoT Greengrass de machine learning versión 1.1.0 para interactuar con este conector.

Version 1
  • Software AWS IoT Greengrass Core versión 1.7 o posterior.

  • Versión 2.7 de Python instalada en el dispositivo principal y añadida a la variable de entorno PATH.

  • Dependencias para el marco de trabajo Apache MXNet instalado en el dispositivo de núcleo. Para obtener más información, consulte Instalación de dependencias de MXNet en el núcleo de AWS IoT Greengrass.

  • Un recurso ML en el grupo de Greengrass que hace referencia a un origen del modelo SageMaker. Este modelo debe ser entrenado por el algoritmo de clasificación de imágenes de SageMaker. Para obtener más información, consulte Algoritmo de clasificación de imágenes en la Guía para desarrolladores de Amazon SageMaker.

  • El rol del grupo de Greengrass configurado para permitir la acción sagemaker:DescribeTrainingJob en la tarea de entrenamiento de destino, tal y como se muestra en la siguiente política de IAM de ejemplo.

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "sagemaker:DescribeTrainingJob" ], "Resource": "arn:aws:sagemaker:region:account-id:training-job:training-job-name" } ] }

    Para el requisito de rol de grupo, debe configurar el rol para conceder los permisos necesarios y asegurarse de que el rol se ha añadido al grupo. Para obtener más información, consulte Administración del rol de grupo de Greengrass (consola) o Administración del rol de grupo de Greengrass (CLI).

    Puede conceder acceso granular o condicional a recursos (por ejemplo, utilizando un esquema de nomenclatura con comodín *) Si cambia el trabajo de entrenamiento de destino en el futuro, asegúrese de actualizar el rol de grupo.

  • Se requiere el SDK de machine learning deAWS IoT Greengrass versión 1.1.0 para interactuar con este conector.

Parámetros de conector

Estos conectores proporcionan los siguientes parámetros.

Version 2
MLModelDestinationPath

Es la ruta local absoluta del recurso ML dentro del entorno de Lambda. Esta es la ruta de destino que se ha especificado para el recurso de aprendizaje automático.

nota

Si ha creado el recurso de aprendizaje automático en la consola, esta es la ruta local.

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 para mostrar en la consola AWS IoT: SageMaker job ARN resource

Obligatorio: true

Escriba: string

Patrón válido: [a-zA-Z0-9:_-]+

MLModelSageMakerJobArn

El ARN del trabajo de formación de SageMaker que representa el origen del modelo de SageMaker. El modelo debe ser entrenado por el algoritmo de clasificación de imágenes de SageMaker.

Nombre para mostrar en la consola AWS IoT: Recurso ARN del trabajo de SageMaker

Obligatorio: true

Escriba: string

Patrón válido: ^arn:aws:sagemaker:[a-zA-Z0-9-]+:[0-9]+:training-job/[a-zA-Z0-9][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

La cantidad de tiempo (en segundos) antes de que se termine la solicitud de inferencia. El valor mínimo es 1.

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 (KB)

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 o GPU

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

Obligatorio: false

Escriba: string

Patrón válido: ^$|^[a-zA-Z0-9][a-zA-Z0-9-]{1,62}$

Version 1
MLModelDestinationPath

Es la ruta local absoluta del recurso ML dentro del entorno de Lambda. Esta es la ruta de destino que se ha especificado para el recurso de aprendizaje automático.

nota

Si ha creado el recurso de aprendizaje automático en la consola, esta es la ruta local.

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 para mostrar en la consola AWS IoT: SageMaker job ARN resource

Obligatorio: true

Escriba: string

Patrón válido: [a-zA-Z0-9:_-]+

MLModelSageMakerJobArn

El ARN del trabajo de formación de SageMaker que representa el origen del modelo de SageMaker. El modelo debe ser entrenado por el algoritmo de clasificación de imágenes de SageMaker.

Nombre para mostrar en la consola AWS IoT: Recurso ARN del trabajo de SageMaker

Obligatorio: true

Escriba: string

Patrón válido: ^arn:aws:sagemaker:[a-zA-Z0-9-]+:[0-9]+:training-job/[a-zA-Z0-9][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

La cantidad de tiempo (en segundos) antes de que se termine la solicitud de inferencia. El valor mínimo es 1.

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 (KB)

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 o GPU

Ejemplo de creación de conector (AWS CLI)

El siguiente comando de la CLI crea un parámetro ConnectorDefinition con una versión inicial que contiene un conector Image Classification de ML.

Ejemplo: instancia de CPU

Este ejemplo crea una instancia del conector Image Classification de ML Armv7l.

aws greengrass create-connector-definition --name MyGreengrassConnectors --initial-version '{ "Connectors": [ { "Id": "MyImageClassificationConnector", "ConnectorArn": "arn:aws:greengrass:region::/connectors/ImageClassificationARMv7/versions/2", "Parameters": { "MLModelDestinationPath": "/path-to-model", "MLModelResourceId": "my-ml-resource", "MLModelSageMakerJobArn": "arn:aws:sagemaker:us-west-2:123456789012:training-job:MyImageClassifier", "LocalInferenceServiceName": "imageClassification", "LocalInferenceServiceTimeoutSeconds": "10", "LocalInferenceServiceMemoryLimitKB": "500000", "MLFeedbackConnectorConfigId": "MyConfig0" } } ] }'
Ejemplo: instancia de GPU

En este ejemplo se crea una instancia del conector Image Classification de ML Aarch64 JTX2, que admite la aceleración de GPU en una tarjeta NVIDIA Jetson TX2.

aws greengrass create-connector-definition --name MyGreengrassConnectors --initial-version '{ "Connectors": [ { "Id": "MyImageClassificationConnector", "ConnectorArn": "arn:aws:greengrass:region::/connectors/ImageClassificationAarch64JTX2/versions/2", "Parameters": { "MLModelDestinationPath": "/path-to-model", "MLModelResourceId": "my-ml-resource", "MLModelSageMakerJobArn": "arn:aws:sagemaker:us-west-2:123456789012:training-job:MyImageClassifier", "LocalInferenceServiceName": "imageClassification", "LocalInferenceServiceTimeoutSeconds": "10", "LocalInferenceServiceMemoryLimitKB": "500000", "GPUAcceleration": "GPU", "MLFeedbackConnectorConfigId": "MyConfig0" } } ] }'
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 predicción con formato para el objeto identificado en la imagen de entrada:

[0.3,0.1,0.04,...]

La predicción contiene una lista de valores que se corresponden con las categorías utilizadas en el conjunto de datos de entrenamiento durante la capacitación de modelos. Cada valor representa la probabilidad de que la imagen se encuentre dentro de la categoría correspondiente. La categoría con la mayor probabilidad es la predicción dominante.

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 Image Classification 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).

Python 3.7
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='image-classification', ServiceName='imageClassification', 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)) # The connector output is in the format: [0.3,0.1,0.04,...] # Remove the '[' and ']' at the beginning and end. predictions = predictions[1:-1] count = len(predictions.split(',')) predictions_arr = np.fromstring(predictions, count=count, sep=',') # Perform business logic that relies on the predictions_arr, which is an array # of probabilities. # Schedule the infer() function to run again in one second. Timer(1, infer).start() return infer() def function_handler(event, context): return
Python 2.7
import logging from threading import Timer import numpy import greengrass_machine_learning_sdk as gg_ml # The inference input image. with open("/test_img/test.jpg", "rb") as f: content = f.read() client = gg_ml.client("inference") def infer(): logging.info("Invoking Greengrass ML Inference service") try: resp = client.invoke_inference_service( AlgoType="image-classification", ServiceName="imageClassification", ContentType="image/jpeg", Body=content, ) except gg_ml.GreengrassInferenceException as e: logging.info('Inference exception %s("%s")', e.__class__.__name__, e) return except gg_ml.GreengrassDependencyException as e: logging.info('Dependency exception %s("%s")', e.__class__.__name__, e) return logging.info("Response: %s", resp) predictions = resp["Body"].read() logging.info("Predictions: %s", predictions) # The connector output is in the format: [0.3,0.1,0.04,...] # Remove the '[' and ']' at the beginning and end. predictions = predictions[1:-1] predictions_arr = numpy.fromstring(predictions, sep=",") logging.info("Split into %s predictions.", len(predictions_arr)) # Perform business logic that relies on predictions_arr, which is an array # of probabilities. # Schedule the infer() function to run again in one second. Timer(1, infer).start() infer() # In this example, the required AWS Lambda handler is never called. 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

AlgoType

El nombre del tipo de algoritmo que usar para la interferencia. En la actualidad, solo se admite image-classification.

Obligatorio: true

Escriba: string

Valores válidos: image-classification

ServiceName

El nombre del servicio de inferencia local. Utilice el nombre que especificó para el parámetro LocalInferenceServiceName al configurar el conector.

Obligatorio: true

Escriba: string

ContentType

El tipo mime de la imagen de entrada.

Obligatorio: true

Escriba: string

Valores válidos: image/jpeg, image/png

Body

El contenido del archivo de la imagen de entrada.

Obligatorio: true

Escriba: binary

Instalación de dependencias de MXNet en el núcleo de AWS IoT Greengrass

Para usar un conector Image Classification de ML debe instalar las dependencias para el marco de trabajo Apache MXNet del dispositivo de núcleo. Los conectores utilizan el marco de trabajo para servir al modelo de ML.

nota

Estos conectores están agrupados con una biblioteca MXNet precompilada, por lo que no tiene que instalar el marco de trabajo MXNet en sí en el dispositivo de núcleo.

AWS IoT Greengrass proporciona scripts para instalar las dependencias de las siguientes plataformas y dispositivos comunes (o para utilizarlos como referencia para instalarlos). Si utiliza una plataforma diferente o dispositivo diferentes, consulte la documentación de MXNet para su configuración.

Antes de instalar las dependencias de MXNet, asegúrese de que las bibliotecas del sistema requeridas (con la versiones mínimas especificadas) están presentes en el dispositivo.

NVIDIA Jetson TX2
  1. Instalación del conjunto de herramientas CUDA 9.0 y cuDNN 7.0. Puede seguir las instrucciones en Configuración de otros dispositivos en el tutorial de Introducción.

  2. Habilitar repositorios universales para que el conector pueda instalar software abierto mantenido por la comunidad. Para obtener más información, consulte Repositories/Ubuntu en la documentación de Ubuntu.

    1. Abra el archivo /etc/apt/sources.list.

    2. Asegúrese de que las siguientes líneas no tienen comentarios.

      deb http://ports.ubuntu.com/ubuntu-ports/ xenial universe deb-src http://ports.ubuntu.com/ubuntu-ports/ xenial universe deb http://ports.ubuntu.com/ubuntu-ports/ xenial-updates universe deb-src http://ports.ubuntu.com/ubuntu-ports/ xenial-updates universe
  3. Guarde una copia del siguiente script de instalación en un archivo llamado nvidiajtx2.sh en el dispositivo del núcleo.

    Python 3.7Python 2.7
    Python 3.7
    #!/bin/bash set -e echo "Installing dependencies on the system..." echo 'Assuming that universe repos are enabled and checking dependencies...' apt-get -y update apt-get -y dist-upgrade apt-get install -y liblapack3 libopenblas-dev liblapack-dev libatlas-base-dev apt-get install -y python3.7 python3.7-dev python3.7 -m pip install --upgrade pip python3.7 -m pip install numpy==1.15.0 python3.7 -m pip install opencv-python || echo 'Error: Unable to install OpenCV with pip on this platform. Try building the latest OpenCV from source (https://github.com/opencv/opencv).' echo 'Dependency installation/upgrade complete.'
    nota

    Si OpenCV no se instala correctamente con este script, puede intentar realizar la compilación desde el código fuente. Para obtener más información, consulte Instalación en Linux en la documentación de OpenCV o vea otros recursos online para su plataforma.

    Python 2.7
    #!/bin/bash set -e echo "Installing dependencies on the system..." echo 'Assuming that universe repos are enabled and checking dependencies...' apt-get -y update apt-get -y dist-upgrade apt-get install -y liblapack3 libopenblas-dev liblapack-dev libatlas-base-dev python-dev echo 'Install latest pip...' wget https://bootstrap.pypa.io/get-pip.py python get-pip.py rm get-pip.py pip install numpy==1.15.0 scipy echo 'Dependency installation/upgrade complete.'
  4. En el directorio en el que guardó el archivo, ejecute el siguiente comando:

    sudo nvidiajtx2.sh
x86_64 (Ubuntu or Amazon Linux)
  1. Guarde una copia del siguiente script de instalación en un archivo llamado x86_64.sh en el dispositivo del núcleo.

    Python 3.7Python 2.7
    Python 3.7
    #!/bin/bash set -e echo "Installing dependencies on the system..." release=$(awk -F= '/^NAME/{print $2}' /etc/os-release) if [ "$release" == '"Ubuntu"' ]; then # Ubuntu. Supports EC2 and DeepLens. DeepLens has all the dependencies installed, so # this is mostly to prepare dependencies on Ubuntu EC2 instance. apt-get -y update apt-get -y dist-upgrade apt-get install -y libgfortran3 libsm6 libxext6 libxrender1 apt-get install -y python3.7 python3.7-dev elif [ "$release" == '"Amazon Linux"' ]; then # Amazon Linux. Expect python to be installed already yum -y update yum -y upgrade yum install -y compat-gcc-48-libgfortran libSM libXrender libXext else echo "OS Release not supported: $release" exit 1 fi python3.7 -m pip install --upgrade pip python3.7 -m pip install numpy==1.15.0 python3.7 -m pip install opencv-python || echo 'Error: Unable to install OpenCV with pip on this platform. Try building the latest OpenCV from source (https://github.com/opencv/opencv).' echo 'Dependency installation/upgrade complete.'
    nota

    Si OpenCV no se instala correctamente con este script, puede intentar realizar la compilación desde el código fuente. Para obtener más información, consulte Instalación en Linux en la documentación de OpenCV o vea otros recursos online para su plataforma.

    Python 2.7
    #!/bin/bash set -e echo "Installing dependencies on the system..." release=$(awk -F= '/^NAME/{print $2}' /etc/os-release) if [ "$release" == '"Ubuntu"' ]; then # Ubuntu. Supports EC2 and DeepLens. DeepLens has all the dependencies installed, so # this is mostly to prepare dependencies on Ubuntu EC2 instance. apt-get -y update apt-get -y dist-upgrade apt-get install -y libgfortran3 libsm6 libxext6 libxrender1 python-dev python-pip elif [ "$release" == '"Amazon Linux"' ]; then # Amazon Linux. Expect python to be installed already yum -y update yum -y upgrade yum install -y compat-gcc-48-libgfortran libSM libXrender libXext python-pip else echo "OS Release not supported: $release" exit 1 fi pip install numpy==1.15.0 scipy opencv-python echo 'Dependency installation/upgrade complete.'
  2. En el directorio en el que guardó el archivo, ejecute el siguiente comando:

    sudo x86_64.sh
Armv7 (Raspberry Pi)
  1. Guarde una copia del siguiente script de instalación en un archivo llamado armv7l.sh en el dispositivo del núcleo.

    Python 3.7Python 2.7
    Python 3.7
    #!/bin/bash set -e echo "Installing dependencies on the system..." apt-get update apt-get -y upgrade apt-get install -y liblapack3 libopenblas-dev liblapack-dev apt-get install -y python3.7 python3.7-dev python3.7 -m pip install --upgrade pip python3.7 -m pip install numpy==1.15.0 python3.7 -m pip install opencv-python || echo 'Error: Unable to install OpenCV with pip on this platform. Try building the latest OpenCV from source (https://github.com/opencv/opencv).' echo 'Dependency installation/upgrade complete.'
    nota

    Si OpenCV no se instala correctamente con este script, puede intentar realizar la compilación desde el código fuente. Para obtener más información, consulte Instalación en Linux en la documentación de OpenCV o vea otros recursos online para su plataforma.

    Python 2.7
    #!/bin/bash set -e echo "Installing dependencies on the system..." apt-get update apt-get -y upgrade apt-get install -y liblapack3 libopenblas-dev liblapack-dev python-dev # python-opencv depends on python-numpy. The latest version in the APT repository is python-numpy-1.8.2 # This script installs python-numpy first so that python-opencv can be installed, and then install the latest # numpy-1.15.x with pip apt-get install -y python-numpy python-opencv dpkg --remove --force-depends python-numpy echo 'Install latest pip...' wget https://bootstrap.pypa.io/get-pip.py python get-pip.py rm get-pip.py pip install --upgrade numpy==1.15.0 picamera scipy echo 'Dependency installation/upgrade complete.'
  2. En el directorio en el que guardó el archivo, ejecute el siguiente comando:

    sudo bash armv7l.sh
    nota

    En una solución Raspberry Pi, el uso de pip para instalar dependencias de aprendizaje automático es una operación de uso intensivo de memoria que puede provocar que el dispositivo se quede sin memoria y deje de responder. Como alternativa, puede aumentar temporalmente el tamaño de intercambio:

    En /etc/dphys-swapfile, aumente el valor de la variable CONF_SWAPSIZE y, a continuación, ejecute el siguiente comando para reiniciar dphys-swapfile.

    /etc/init.d/dphys-swapfile restart

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 greengrass-root/ggc/var/log/user/region/aws/. Para obtener más información sobre los registros de Greengrass, consulte Monitorización con registros de AWS IoT Greengrass.

Utilice la siguiente información como ayuda para solucionar problemas con los conectores Image Classification de ML.

Bibliotecas del sistema obligatorias

Las siguientes pestañas muestran las bibliotecas del sistema necesarias para cada conector Image Classification de ML.

ML Image Classification Aarch64 JTX2
Library Versión mínima
ld-linux-aarch64.so.1GLIBC_2.17
libc.so.6GLIBC_2.17
libcublas.so.9.0no aplicable
libcudart.so.9.0no aplicable
libcudnn.so.7no aplicable
libcufft.so.9.0no aplicable
libcurand.so.9.0no aplicable
libcusolver.so.9.0no aplicable
libgcc_s.so.1GCC_4.2.0
libgomp.so.1GOMP_4.0, OMP_1.0
libm.so.6GLIBC_2.23
libpthread.so.0GLIBC_2.17
librt.so.1GLIBC_2.17
libstdc++.so.6GLIBCXX_3.4.21, CXXABI_1.3.8
ML Image Classification x86_64
Library Versión mínima
ld-linux-x86-64.so.2GCC_4.0.0
libc.so.6GLIBC_2.4
libgfortran.so.3GFORTRAN_1.0
libm.so.6GLIBC_2.23
libpthread.so.0GLIBC_2.2.5
librt.so.1GLIBC_2.2.5
libstdc++.so.6CXXABI_1.3.8, GLIBCXX_3.4.21
ML Image Classification Armv7
Library Versión mínima
ld-linux-armhf.so.3GLIBC_2.4
libc.so.6GLIBC_2.7
libgcc_s.so.1GCC_4.0.0
libgfortran.so.3GFORTRAN_1.0
libm.so.6GLIBC_2.4
libpthread.so.0GLIBC_2.4
librt.so.1GLIBC_2.4
libstdc++.so.6CXXABI_1.3.8, CXXABI_ARM_1.3.3, GLIBCXX_3.4.20

Problemas

Síntoma Solución

En una Raspberry Pi, se registra el siguiente mensaje de error y no está utilizando la cámara: Failed to initialize libdc1394

Ejecute el comando siguiente para deshabilitar el controlador:

sudo ln /dev/null /dev/raw1394

Esta operación es efímera y el enlace simbólico desaparecerá después del reinicio. Consulte el manual de su distribución de SO para obtener información acerca de cómo crear automáticamente el enlace al reiniciar.

Licencias

Los conectores Image Classification de ML incluyen las siguientes licencias y software de terceros:

Licencias de biblioteca de tiempo de ejecución Intel OpenMP. El tiempo de ejecución de Intel® OpenMP* dispone de licencia doble, con una licencia comercial (COM) como parte de los productos Intel® Parallel Studio XE Suite y una licencia de código abierto BSD (OSS).

Este conector se publica bajo el contrato de licencia de software de Greengrass Core.

Registro de cambios

La siguiente tabla describe los cambios en cada versión del conector.

Versión

Cambios

2

Se ha añadido el parámetro MLFeedbackConnectorConfigId para admitir el uso del conector de Feedback de ML para cargar datos de entrada del modelo, publicar predicciones en un tema de MQTT y publicar métricas en Amazon CloudWatch.

1

Versión inicial.

Un grupo de Greengrass solo puede contener una versión del conector a la vez. Para obtener información sobre cómo actualizar una versión de conector, consulte Actualización de versiones de los conectores.

Véase también