Crea tu primer modelo de Machine Learning con NodeRED y Tensorflow.js

Introducción

Aplicación de reconocimiento de imagen.

Con este tutorial podrás crear tu primer modelo de Machine Learning con NodeRED y Tensorflow.js.

Node-Red

NodeRED es una herramienta de desarrollo basada en el flujo visual. Es una excelente herramienta para que tanto personas con poca experiencia como desarrolladores experimentados, puedan dar sus primeros pasos en ciencia de datos o construir flujos complejos usando IoT o inteligencia artificial. NodeRED fue desarrollado por IBM, pero fue donado en 2016 a la Fundación JS como un proyecto de código abierto.

Machine Learning

Machine Learning (ML) se define como un grupo de algoritmos que basan su comportamiento en los datos de entrada, lo que da a una computadora la capacidad de identificar patrones y crear predicciones.

Tensorflow.js

Tensorflow.js es una implementación de Javascript de la biblioteca de software Tensorflow opensource, desarrollada por Google, que permite a los desarrolladores y a cualquier persona interesada en el aprendizaje automático:

  • Crear modelos fácilmente y entrenarlos desde cero
  • Reutilizar modelos que han sido entrenados con anterioridad

Objetivos de aprendizaje

En esta guía, aprenderá a:

  • Crear un entorno de Node-Red en IBM Cloud
  • Añadir nodos pre-construidos al entorno de Node-Red
  • Crear un flujo simple en Node-Red para reconocer un objetar en una imagen.

Tiempo estimado: 30 minutos.

Requisitos previos

  • IBM Cloud Account: Debe tener una cuenta de IBM Cloud (lite, de prueba o de pago) para realizar esta guía
  • Organización de Cloud Foundry en su cuenta de IBM Cloud
  • Clave API de su cuenta de IBM Cloud

Tutorial

Configurar entorno Node-Red

Node-Red es capaz de ejecutarse localmente, en un dispositivo o en la nube. En esta guía de aprendizaje desplegaremos nuestro entorno Node-Red en IBM Cloud.

Paso 1. Encontrar Node-Red en el catálogo de IBM

1. En tu cuenta de IBM Cloud, Abre el catálogo y escribe en el buscador node-red.

Resultado de búsqueda en el catálogo de IBM Cloud

2. Haga clic en Node-Red-App.

Panel de descripción de Node Red

Paso 2. Crear la aplicación

1. Vaya a la pestaña «Crear» y utilice el nombre autogenerado o inserte el suyo propio (tiene que ser único). Seleccione el grupo de recursos que desea utilizar y, opcionalmente, puede dar etiquetas a su aplicación.

Panel de creación de la aplicación

2. La aplicación Node-Red requiere una instancia de Cloudant para almacenar la configuración de su aplicación. Seleccione la región en la que debe crearse el servicio y qué plan de precios debe utilizar.

Panel de confirmación de los detalles del servicio

3. Haga clic en Crear para continuar.

Paso 3. Desplegar la aplicación

Su aplicación se ha creado, pero aún no está desplegado, utilizaremos Cloud Foundry para este propósito.

1. Una vez que el servicio de cloudant esté suministrado, haga clic en Desplegar su aplicación para habilitar la entrega continua.

Panel de despliegue de la aplicación

2. Seleccione Cloud Foundry como opción de despliegue.

Seleccionar el servicio a utilizar desde el panel de despliegue

3. Escriba la clave de API de su cuenta de IBM Cloud para permitir que el proceso de despliegue acceda a sus recursos. Si no tiene una clave de API, puede crear una nueva clave utilizando el botón Nuevo.

4. Dejar en 1 el número de instancias. Asegúrese de utilizar al menos 256 MB de memoria (si queremos utilizar flujos más grandes y más nodos requeriría más memoria). Seleccione la misma Region que usó para su servicio de Cloudant, su organización y espacio. Escriba un nombre únicos para el host de la aplicación.

5. Haga clic en Siguiente.

Configurar la instancia de IBM Cloud

6. Configure la cadena de herramientas DevOps escribiendo un nombre y seleccionando la región, que debe coincidir con la región que ha seleccionado previamente.

7. Haga clic en Crear. Esto le llevará de nuevo a la página de detalles de la aplicación.

Panel de detalle de la instancia creada

8. Después de unos instantes, la sección Automatización de despliegue se actualizará con los detalles de su recién creado Delivery Pipeline. El estado cambiará a En curso, lo que significa que la aplicación se está construyendo y desplegando. Puede pulsar el botón Estado para ver los detalles del proceso.

Panel de detalle de la instancia creada 2

9. El despliegue tarda 5-10 minutos. Una vez hecho, el estado en la sección Delivery Pipeline mostrará Éxito.

Paso 4. Abrir y configurar la Aplicación de Node-Red

1. En la página de detalles de la aplicación, debe ver los campos URL de la aplicación, Fuente y Destino de despliegue.

Análisis de fase en el panel de detalle de la instancia

2. Haga clic en URL de la aplicación. Una nueva pestaña del navegador se abrirá con su aplicación de Node-Red.

Comienzo de la etapa de configuración de Node Red

3. Haga clic en Siguiente y proteja su aplicación de Node-Red proporcionando un nomre de usuario y contraseña, los cuáles se almacenarán en su base de datos Cloudant.

Iniciar sesión en el panel de Node Red

4. Haga clic en siguiente hasta que vea un resumen de la configuración que se ha hecho y finalmente haga clic en Finish.

Finalizar la instalación de la instancia de Node Red

5. Node-Red guardará la configuración y cargará la aplicación principal. Pulse Go to your Node-Red flow editor para abrir el editor.

Página principal de Node Red

6. Utilice el nomobre de usuario y contraseña previamente registrados para iniciar sesión.

Iniciar sesión con los datos generados anteriormente

7. Bienvenido a su editor de Node-Red.

Pantalla principal del editor de Node Red

Creación de un flujo de reconocimiento de imagen con Node-Red

Ahora que tenemos nuestro entorno Node-Red listo, es el momento de crear un flujo que reconozca objetos en una imagen. Para ello, utilizaremos una imagen como entrada, que será procesada por un Nodo de TensorFlow y devolverá el nombre del objeto identificado por el modelo y la misma imagen con el objeto resaltado.

Paso 1. Instalar TensorFlow.js, nodos de entrada y salida

La librería de Node-Red tiene varios nodos de TensorFlow.js. Para esta guía, utilizaremos node-red-contrib-tensorflow, que contiene modelos entrenados.

1. Vaya al menú superior derecho del editor y pulse Gestionar paleta.

Panel de despliegue en el editor de Node Red

2. Vaya a la pestaña Palette y luego a la pestaña Install, introduzca node-red-contrib-tensorflow en el campo de búsqueda y haga clic en install.

Configurar la paleta dentro del editor de Node Red

3. Una vez finalizada la instalación, compruebe la paleta del lado izquierdo y busque los nodos naranja Tensorflow.js en la categoría analysis. Cada nodo es un modelo de reconocimiento de imagen, pero también puede generar datos de imagen.

  • cocossd: devuelve el nombre del objeto en la imagen.
  • handpose: estima las posiciones de los dedos y las articulaciones de la mano en la imagen.
  • mobilenet devuelve el nombre del objeto en la imagen.
  • posenet: estima la posición de los brazos, la cabeza y las piernas de una persona en la imagen.

Editor de Node Red en blanco

4. Además, necesitaremos instalar los siguientes nodos para trabajar con datos de imagen:

  • node-red-contrib-browser-utils: Nodos que cargan archivos de imagen y archivos de audio del editor de flujo.
  • node-red-contrib-image-output: Un nodo que muestra una imagen en el editor de flujo.

Después de instalar estos nodos, debería ver las secciones input y output en la paleta del lado izquierdo.

Editor de Node Red en blanco con los cambios aplicados previamente

Paso 2. Crear el flujo

  1. Coloque en el editor un nodo amarillo file inject y un nodo marrón camera de la sección input de la paleta.
  2. Coloque en el editor un nodo naranja cocossd de la sección analysis de la paleta.
  3. Coloque en el editor dos nodos image nodos de la sección output de la paleta.
  4. Coloque en el editor un nodo debug de la sección common de la paleta.
  5. Conecte los nodos tal como se muestra en la imagen:

Primer ejemplo de flow aplicado

6. Todos los nodos permanecerán con sus valores predeterminados, a excepción de la vista previa de imagen a la derecha. Este nodo resaltará el objeto reconocido en la imagen. Haga doble clic en el nodo de vista previa de imagen para abrir las propiedades del nodo. Cambie msg.payload a msg.annotatedInput. Haga clic en Done

Ajustar las propiedades del flow desde el panel

7. Haga clic en el botón rojo Deploy en la esquina superior derecha.

Ejemplo del flow con los nuevos cambios aplicados

8. Haga clic en el lado izquierdo del archivo del nodo amarillo file inject para subir una imagen o el lado izquierdo del nodo marrón camera para tomar una imagen con la cámara. Y el nodo cocossd comenzará a analizar la imagen.

Ejemplo de imágenes aplicadas al flow

Una imagen con realse naranja en el avión se visualiza debajo del segundo nodo de image preview. Además, la pestaña debug* en el lado derecho muestra airplane.

Conclusiones

En esta guía de aprendizaje se muestra cómo crear un entorno de Node-Red y utilizarlo para crear un flujo de reconocimiento de imágenes con nodos de TensorFlow.js. Específicamente utilizamos nodos de node-red-contrib-tensorflow pero hay varios nodos de aprendizaje automático que puede utilizar para crear diferentes flujos e incluso puede crear y publicar sus propios nodos.

Colaborador