Introducción
El Machine Learning (aprendizaje automático) es una aplicación de la inteligencia artificial (IA) que proporciona a los sistemas la capacidad de aprender y mejorar automáticamente a partir de la experiencia sin ser programados explícitamente.
TensorFlow es una plataforma integral de código abierto para el aprendizaje automático. Cuenta con un ecosistema completo y flexible de herramientas, librerías y recursos de la comunidad que permiten a los desarrolladores crear e implementar fácilmente aplicaciones basadas en ML.
En este post, vas a aprender a desarrollar proyectos de código abierto utilizando plataformas de código abierto, ¡como Node-RED y TensorFlow! ¡Vamos a empezar!
Enlaces relacionados
Requisitos
Tecnologías
Explicación
Instalación de los Nodos
Por defecto, en la familia de productos basados en Raspberry Pi, Node-RED ya está instalado. Puedes conectarte al Raspberry PLC industrial de forma remota poniendo la dirección IP en la sección URL de tu navegador. Conecta un cable Ethernet al puerto Ethernet de la Raspberry, y escribe lo siguiente:
http://10.10.10.20:1880/
La biblioteca de flujo Node-RED tiene varios nodos habilitados para TensorFlow.js. Uno de ellos es node-red-contrib-tensorflow, que contiene los modelos entrenados..
Para instalar el nodo, ves al menú superior derecho del editor de flujo > haz clic en "Manage Palette" > selecciona la pestaña Install > busca: node-red-contrib-tensorflow. > Haz clic en instalar.
Una vez completada la instalación, ves a la categoría Analysis y verás cuatro nodos node-red-contrib-tensorflow. Todos ellos son nodos de reconocimiento de imágenes, pero también pueden generar datos de imágenes con anotaciones y realizar otras funciones como el reconocimiento de imágenes, o fuera de línea, que es necesario para el análisis de bordes.
- Cocossd: Un nodo que devuelve el nombre del objeto en la imagen.
- Handpose: Un nodo que estima las posiciones de los dedos y las articulaciones a partir de una imagen de la mano.
- Mobilenet: El nodo que clasifica imágenes con MobileNet.
- Posenet: Un nodo que estima la posición de los brazos, la cabeza y las piernas a partir de la imagen de una persona.
Creando un flujo
En este post, se van a utilizar los nodos cocossd, handpose y posenet, porque lo que va a hacer nuestra aplicación, es tomar una foto, detectar los dedos de una mano y estimar la pose humana. Así, tomará una foto con nuestra cámara USB usando el comando fswebcam, nuestros nodos TensorFlow procesarán la información, y obtendrá los datos a través de nuestros nodos de depuración.
Luego, vas a agregar un nodo exec para ejecutar el comando fswebcam para que tome una foto:
fswebcam -r 1270x720 --no-banner {absolute-path}
Puedes ejecutar el comando así: fswebcam myimage.jpg
Vamos a nombrar las imágenes de la siguiente manera: image-{timestamp}.jpg, vas a añadir la marca de tiempo inyectándola desde un nodo inject como se muestra en las imágenes de abajo, y vas a establecer ese nombre a una variable de flujo llamada flow.image:
En el nodo de inyección, puedes inyectar una vez cada X segundos, y luego repetir cada X segundos para que la aplicación funcione en un intervalo de tiempo especificado.
Una vez tomada la imagen, vamos a obtener el flow.image y establecerlo en el msg.payload, para poder enviarlo a nuestros nodos TensorFlow. Sólo tienes que conectar un nodo de cambio a la salida estándar del nodo exec, establecer el msg.payload a flow.image, y conectar el cocossd, posenet y handpose después del nodo de cambio. Conecta tres nodos de depuración, cada uno al lado de los nodos de aprendizaje automático. Tu flujo debería ser algo así:
¿Por qué Raspberry PLC para el aprendizaje automático?
- Raspberry Pi OS with Debian (Linux).
- Python: The favorite programming language for machine learning.
- It has different Analog/Digital/Relay I/Os to receive and send the data from.
- Open solution: Open Source. Sin costes de licencia.
- Equipment designed and manufactured for industrial use at a lower price than competitive products.
- Modular solution: Product specifications can be scalable in the future.
Tutorial Node-RED: Desarrollar una aplicación IoT de machine learning con Raspberry PLC