Tutorial: Realice una inferencia de clasificación de imágenes de muestra con Lite TensorFlow - AWS IoT Greengrass

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.

Tutorial: Realice una inferencia de clasificación de imágenes de muestra con Lite TensorFlow

En este tutorial se muestra cómo utilizar el componente de inferencia de clasificación de imágenes de TensorFlow Lite para realizar una inferencia de clasificación de imágenes de muestra en un dispositivo central de Greengrass. Este componente incluye las siguientes dependencias de componentes:

  • TensorFlow Componente de tienda de modelos de clasificación de imágenes Lite

  • TensorFlow Componente de tiempo de ejecución Lite

Al implementar este componente, descarga un modelo MobileNet v1 previamente entrenado e instala el motor de ejecución de TensorFlow Lite y sus dependencias. Este componente publica los resultados de las inferencias sobre el tema. ml/tflite/image-classification Para ver estos resultados de inferencia, utilice el cliente AWS IoT MQTT de la AWS IoT consola para suscribirse a este tema.

En este tutorial, implementará el componente de inferencia de muestra para realizar la clasificación de imágenes en la imagen de muestra proporcionada por. AWS IoT Greengrass Después de completar este tutorial, puede completarloTutorial: Realice una inferencia de clasificación de imágenes de muestra en imágenes de una cámara con Lite TensorFlow , que le muestra cómo modificar el componente de inferencia de muestras para realizar la clasificación de imágenes en las imágenes de una cámara local en un dispositivo central de Greengrass.

Para obtener más información sobre el aprendizaje automático en los dispositivos Greengrass, consulte. Cómo realizar la inferencia de machine learning

Requisitos previos

Necesitará lo siguiente para completar este tutorial:

  • Un dispositivo central de Linux Greengrass. Si no dispone de una, consulte Tutorial: Introducción a AWS IoT Greengrass V2. El dispositivo principal debe cumplir los siguientes requisitos:

    • En los dispositivos principales de Greengrass que ejecutan Amazon Linux 2 o Ubuntu 18.04, se instala en el dispositivo la versión 2.27 o posterior de la Biblioteca C GNU (glibc).

    • En los dispositivos ARMv7L, como Raspberry Pi, las dependencias para OpenCV-Python están instaladas en el dispositivo. Ejecute el siguiente comando para instalar las dependencias.

      sudo apt-get install libopenjp2-7 libilmbase23 libopenexr-dev libavcodec-dev libavformat-dev libswscale-dev libv4l-dev libgtk-3-0 libwebp-dev
    • Los dispositivos Raspberry Pi que ejecutan el sistema operativo Bullseye de Raspberry Pi deben cumplir los siguientes requisitos:

      • NumPy 1.22.4 o una versión posterior instalada en el dispositivo. Raspberry Pi OS Bullseye incluye una versión anterior de NumPy, por lo que puede ejecutar el siguiente comando para actualizar NumPy el dispositivo.

        pip3 install --upgrade numpy
      • La pila de cámaras antigua habilitada en el dispositivo. El Raspberry Pi OS Bullseye incluye una nueva pila de cámaras que está habilitada de forma predeterminada y no es compatible, por lo que debes activar la pila de cámaras antigua.

        Para activar la pila de cámaras antigua
        1. Ejecute el siguiente comando para abrir la herramienta de configuración de Raspberry Pi.

          sudo raspi-config
        2. Seleccione Opciones de interfaz.

        3. Seleccione Cámara antigua para activar la pila de cámaras antiguas.

        4. Reinicie el Raspberry Pi.

Paso 1: Suscríbase al tema de notificaciones predeterminado

En este paso, configura el cliente AWS IoT MQTT de la AWS IoT consola para ver los mensajes MQTT publicados por el componente de clasificación de imágenes de TensorFlow Lite. De forma predeterminada, el componente publica los resultados de las inferencias sobre el tema. ml/tflite/image-classification Suscríbase a este tema antes de implementar el componente en su dispositivo principal de Greengrass para ver los resultados de la inferencia cuando el componente se ejecute por primera vez.

Para suscribirse al tema de notificaciones predeterminado
  1. En el menú de navegación de la AWS IoTconsola, elija Test, MQTT test client.

  2. En Suscribirse a un tema, en el cuadro Nombre del tema, escribaml/tflite/image-classification.

  3. Elija Suscribirse.

Paso 2: Implemente el componente de clasificación de imágenes TensorFlow Lite

En este paso, implementará el componente de clasificación de imágenes TensorFlow Lite en su dispositivo principal:

  1. En el menú de navegación de la AWS IoT Greengrassconsola, elija Componentes.

  2. En la página Componentes, en la pestaña Componentes públicos, elija aws.greengrass.TensorFlowLiteImageClassification.

  3. En la página aws.greengrass.TensorFlowLiteImageClassification, elija Implementar.

  4. En Añadir al despliegue, elija una de las siguientes opciones:

    1. Para combinar este componente con una implementación existente en el dispositivo de destino, elija Agregar a la implementación existente y, a continuación, seleccione la implementación que desee revisar.

    2. Para crear una nueva implementación en el dispositivo de destino, elija Crear nueva implementación. Si tiene una implementación existente en su dispositivo, al elegir este paso se reemplaza la implementación existente.

  5. En la página Especificar detalles, haga lo siguiente:

    1. En Información de implementación, introduzca o modifique el nombre descriptivo de su implementación.

    2. En Objetivos de implementación, seleccione un objetivo para su implementación y elija Siguiente. No puede cambiar el objetivo de implementación si está revisando una implementación existente.

  6. En la página Seleccionar componentes, en Componentes públicos, compruebe que el aws.greengrass.TensorFlowLiteImageClassification componente esté seleccionado y elija Siguiente.

  7. En la página Configurar componentes, conserve los valores de configuración predeterminados y seleccione Siguiente.

  8. En la página Configurar ajustes avanzados, mantenga los ajustes de configuración predeterminados y seleccione Siguiente.

  9. En la página de revisión, elija Implementar

  1. Cree un deployment.json archivo para definir la configuración de despliegue del componente de clasificación de imágenes de TensorFlow Lite. Este archivo debería tener el siguiente aspecto:

    { "targetArn":"targetArn", "components": { "aws.greengrass.TensorFlowLiteImageClassification": { "componentVersion": 2.1.0, "configurationUpdate": { } } } }
    • En el targetArn campo, targetArnsustitúyalo por el nombre de recurso de Amazon (ARN) de la cosa o grupo de cosas a la que apunte la implementación, en el siguiente formato:

      • Cosa: arn:aws:iot:region:account-id:thing/thingName

      • Grupo de cosas: arn:aws:iot:region:account-id:thinggroup/thingGroupName

    • Este tutorial utiliza la versión 2.1.0 del componente. En el objeto aws.greengrass.TensorFlowLiteObjectDetection componente, sustituya la 2.1.0 por una versión diferente del componente de detección de objetos TensorFlow Lite.

  2. Ejecute el siguiente comando para implementar el componente de clasificación de imágenes TensorFlow Lite en el dispositivo:

    aws greengrassv2 create-deployment \ --cli-input-json file://path/to/deployment.json

La implementación puede tardar varios minutos en completarse. En el siguiente paso, compruebe el registro de componentes para comprobar que la implementación se ha completado correctamente y para ver los resultados de la inferencia.

Paso 3: Ver los resultados de la inferencia

Tras implementar el componente, puede ver los resultados de la inferencia en el registro del componente de su dispositivo principal de Greengrass y en AWS IoT el cliente MQTT de la consola. AWS IoT Para suscribirse al tema sobre el que el componente publica los resultados de las inferencias, consulte. Paso 1: Suscríbase al tema de notificaciones predeterminado

  • AWS IoTCliente MQTT: para ver los resultados que publica el componente de inferencia sobre el tema de notificaciones predeterminado, complete los siguientes pasos:

    1. En el menú de navegación de la AWS IoTconsola, elija Test, MQTT test client.

    2. En Suscripciones, elijaml/tflite/image-classification.

      Deberías ver mensajes similares a los del siguiente ejemplo.

      { "timestamp": "2021-01-01 00:00:00.000000", "inference-type": "image-classification", "inference-description": "Top 5 predictions with score 0.3 or above ", "inference-results": [ { "Label": "cougar, puma, catamount, mountain lion, painter, panther, Felis concolor", "Score": "0.5882352941176471" }, { "Label": "Persian cat", "Score": "0.5882352941176471" }, { "Label": "tiger cat", "Score": "0.5882352941176471" }, { "Label": "dalmatian, coach dog, carriage dog", "Score": "0.5607843137254902" }, { "Label": "malamute, malemute, Alaskan malamute", "Score": "0.5450980392156862" } ] }
  • Registro de componentes: para ver los resultados de la inferencia en el registro de componentes, ejecute el siguiente comando en su dispositivo principal de Greengrass.

    sudo tail -f /greengrass/v2/logs/aws.greengrass.TensorFlowLiteImageClassification.log

    Debería ver resultados similares a los del siguiente ejemplo.

    2021-01-01 00:00:00.000000 [INFO] (Copier) aws.greengrass.TensorFlowLiteImageClassification: stdout. Publishing results to the IoT core.... {scriptName=services.aws.greengrass.TensorFlowLiteImageClassification.lifecycle.Run.script, serviceName=aws.greengrass.TensorFlowLiteImageClassification, currentState=RUNNING} 2021-01-01 00:00:00.000000 [INFO] (Copier) aws.greengrass.TensorFlowLiteImageClassification: stdout. {"timestamp": "2021-01-01 00:00:00.000000", "inference-type": "image-classification", "inference-description": "Top 5 predictions with score 0.3 or above ", "inference-results": [{"Label": "cougar, puma, catamount, mountain lion, painter, panther, Felis concolor", "Score": "0.5882352941176471"}, {"Label": "Persian cat", "Score": "0.5882352941176471"}, {"Label": "tiger cat", "Score": "0.5882352941176471"}, {"Label": "dalmatian, coach dog, carriage dog", "Score": "0.5607843137254902"}, {"Label": "malamute, malemute, Alaskan malamute", "Score": "0.5450980392156862"}]}. {scriptName=services.aws.greengrass.TensorFlowLiteImageClassification.lifecycle.Run.script, serviceName=aws.greengrass.TensorFlowLiteImageClassification, currentState=RUNNING}

Si no puede ver los resultados de la inferencia en el registro de componentes o en el cliente MQTT, significa que la implementación ha fallado o no ha llegado al dispositivo principal. Esto puede ocurrir si el dispositivo principal no está conectado a Internet o no tiene los permisos adecuados para ejecutar el componente. Ejecute el siguiente comando en el dispositivo principal para ver el archivo de registro del software AWS IoT Greengrass principal. Este archivo incluye registros del servicio de despliegue del dispositivo principal de Greengrass.

sudo tail -f /greengrass/v2/logs/greengrass.log

Para obtener más información, consulte Solución de problemas de inferencia de aprendizaje automático.

Siguientes pasos

Si tiene un dispositivo central Greengrass con una interfaz de cámara compatible, puede completarTutorial: Realice una inferencia de clasificación de imágenes de muestra en imágenes de una cámara con Lite TensorFlow , que le muestra cómo modificar el componente de inferencia de muestras para clasificar las imágenes de una cámara.

Para explorar más a fondo la configuración del componente de inferencia de clasificación de imágenes de TensorFlow Lite de muestra, pruebe lo siguiente:

  • Modifique el parámetro InferenceInterval de configuración para cambiar la frecuencia con la que se ejecuta el código de inferencia.

  • Modifique los parámetros ImageName y los parámetros de ImageDirectory configuración en la configuración del componente de inferencia para especificar una imagen personalizada que se utilizará en la inferencia.

Para obtener información sobre la personalización de la configuración de los componentes públicos o la creación de componentes de aprendizaje automático personalizados, consulte. Personalice sus componentes de aprendizaje automático