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: Realización de una inferencia de clasificación de imágenes de muestra con TensorFlow Lite
En este tutorial, se muestra cómo usar 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 principal de Greengrass. Este componente incluye las siguientes dependencias de componentes:
-
Componente almacén de modelos de clasificación de imágenes de TensorFlow Lite
-
Componente de tiempo de ejecución de TensorFlow Lite
Cuando implementa el componente, este descarga un modelo MobileNet v1 previamente entrenado e instala el tiempo de ejecución de TensorFlow Liteml/tflite/image-classification. Para ver estos resultados de inferencia, utilice el cliente de MQTT AWS IoT de la consola de AWS IoT 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 que proporciona AWS IoT Greengrass. Después de completar este tutorial, puede completar Tutorial: Realización de una inferencia de clasificación de imágenes de muestra en imágenes de una cámara con TensorFlow Lite, que 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 de forma local en un dispositivo principal de Greengrass.
Para obtener más información acerca de machine learning en dispositivos de Greengrass, consulte Cómo realizar la inferencia de machine learning.
Temas
Requisitos previos
Necesitará lo siguiente para completar este tutorial:
-
Un dispositivo principal de Greengrass para Linux. 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 posterior instalado en el dispositivo. El sistema operativo Bullseye de Raspberry Pi incluye una versión anterior de NumPy, por lo que puede ejecutar el siguiente comando para actualizar NumPy en el dispositivo.
pip3 install --upgrade numpy -
La pila de cámara antigua habilitada en el dispositivo. El sistema operativo Bullseye de Raspberry Pi incluye una nueva pila de cámara que está habilitada de forma predeterminada y no es compatible, por lo que debe activar la pila de cámara antigua.
Cómo activar la pila de cámara antigua
-
Ejecute el siguiente comando para abrir la herramienta de configuración de Raspberry Pi.
sudo raspi-config -
Seleccione Opciones de interfaz.
-
Seleccione Cámara antigua para activar la pila de cámara antigua.
-
Reinicie el Raspberry Pi.
-
-
-
Paso 1: Suscribirse al tema de notificaciones predeterminado
En este paso, configura el cliente MQTT de AWS IoT en la consola AWS IoT 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. Consulte este tema antes de implementar el componente en el dispositivo principal de Greengrass para ver los resultados de la inferencia cuando el componente se ejecute por primera vez.
Cómo suscribirse al tema de notificaciones predeterminado
-
En el menú de navegación de la consola de AWS IoT
, seleccione Prueba, cliente de prueba de MQTT. -
En Suscripción a un tema, en el cuadro Nombre del tema, introduzca
ml/tflite/image-classification. -
Elija Suscribirse.
Paso 2: Implementar el componente de clasificación de imágenes de TensorFlow Lite
En este paso, se implementa el componente de clasificación de imágenes de TensorFlow Lite en su dispositivo principal:
-
En el menú de navegación de la consola de AWS IoT Greengrass
, elija Componentes. -
En la página Componentes, en la pestaña Componentes públicos, elija
aws.greengrass.TensorFlowLiteImageClassification. -
En la página aws.greengrass.TensorFlowLiteImageClassification, elija Implementar.
-
En Agregar a la implementación, elija una de las siguientes opciones:
-
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.
-
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.
-
-
En la página Especificar detalles, haga lo siguiente:
-
En Información de implementación, introduzca o modifique el nombre descriptivo de su implementación.
-
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.
-
-
En la página Seleccionar componentes, en Componentes públicos, compruebe que el componente
aws.greengrass.TensorFlowLiteImageClassificationesté seleccionado y elija Siguiente. -
En la página Configurar componentes, mantenga los ajustes de configuración predeterminados y seleccione Siguiente.
-
En la página Configurar ajustes avanzados, mantenga los ajustes de configuración predeterminados y seleccione Siguiente.
-
En la página Revisar, elija Implementar.
-
Cree un archivo
deployment.jsonpara definir la configuración de implementación 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 campo
targetArn, sustituyapor el Nombre de recurso de Amazon (ARN) del objeto o grupo de objetos a la que apunte la implementación, en el siguiente formato:targetArn-
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 de componente. En el objeto de componente
aws.greengrass.TensorFlowLiteObjectDetection, reemplaza la versión2.1.0para usar una versión diferente del componente de detección de objetos de TensorFlow Lite.
-
-
Ejecute el siguiente comando para implementar el componente de clasificación de imágenes de 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: Visualizar 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 el cliente de MQTT AWS IoT de la consola AWS IoT. Para suscribirse al tema sobre el que el componente publica los resultados de las inferencias, consulte Paso 1: Suscribirse al tema de notificaciones predeterminado.
-
Cliente de MQTT AWS IoT: para ver los resultados que publica el componente de inferencia sobre el tema de notificaciones predeterminado, complete los siguientes pasos:
-
En el menú de navegación de la consola de AWS IoT
, seleccione Prueba, cliente de prueba de MQTT. -
En Suscripciones, elija
ml/tflite/image-classification.Debería ver mensajes similares al 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 el dispositivo principal de Greengrass.
sudo tail -f/logs/aws.greengrass.TensorFlowLiteImageClassification.log/greengrass/v2Debería ver resultados similares al 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 falló o no llegó 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 su dispositivo principal para ver el archivo de registro del software AWS IoT Greengrass Core. Este archivo incluye registros del servicio de implementación del dispositivo principal de Greengrass.
sudo tail -f/logs/greengrass.log/greengrass/v2
Para obtener más información, consulte Resolución de problemas de inferencia de machine learning.
Pasos a seguir a continuación
Si tiene un dispositivo principal de Greengrass con una interfaz de cámara compatible, puede completar Tutorial: Realización de una inferencia de clasificación de imágenes de muestra en imágenes de una cámara con TensorFlow Lite, que 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 de configuración
InferenceIntervalpara cambiar la frecuencia con la que se ejecuta el código de inferencia. -
Modifique los parámetros de configuración
ImageNameyImageDirectoryen la configuración del componente de inferencia para especificar una imagen personalizada que se utilizará en la inferencia.
Para obtener más información sobre la personalización de la configuración de los componentes públicos o la creación de componentes de machine learning personalizados, consulte Personalización de sus componentes de machine learning.