Por lo general al hablar de Inteligencia Artificial (IA) uno espera ver ordenadores gigantes con una gran capacidad de procesamiento y que necesitan conexión a internet. Pero ¿sabías qué es TinyML y cómo puede cambiar este panorama?
Los microcontroladores dotan de la capacidad de computo a los dispositivo electrónicos, desde recibir datos, procesarlos y enviarlos. En aplicaciones como el Internet de las Cosas estos datos van a través de Internet hasta un servidor en el que se pueden almacenar y analizar. La cantidad masiva de datos de las implementaciones de IoT son es adecuadas para usos con Inteligencia Artificial.
¿Qué es el Machine Learning?
El Machine Learning es una herramienta de la Inteligencia Artificial (IA) utilizada para que las máquinas aprendan en base a datos. El aprendizaje que obtienen estas máquinas puede ser utilizado para la predicción de eventos, clasificación de objetos, entre otros usos.
En 1950 el matemático Alan Turing planteaba la posibilidad de que las máquinas pudieran “pensar”. Sin embargo, la cantidad de datos y procesamiento necesarios para entrenar a las máquinas eran insuficientes. El panorama comenzó a cambiar a finales del siglo XX cuando el internet se convirtió en una fuente de datos masivos y los ordenadores eran cada vez más potentes.
En un programa habitual el programador suele conocer las variables que pueden desencadenar la respuesta del programa, al mismo tiempo las múltiples respuestas están limitadas a lo que el programador haya determinado. ¿Qué pasa si ocurre algo que no estaba previsto?
Al utilizar Machine Learning una máquina, o computadora, tiene la capacidad de responder a eventos con soluciones que puede crear por sí misma en base a experiencias de aprendizajes anteriores.
Por ejemplo, podríamos saber que condiciones son indicadores de fallas en una máquina industrial y usar un sistema embebido que lea y compare esos datos con las condiciones que establecimos para avisar de posibles fallas. Pero no todos los eventos son iguales, siempre existe la posibilidad de que los factores sean distintos a los incidentes anteriores. En cambio, si ese sistema embebido tiene la capacidad de aprender de cada falla que ocurre estará preparado ante nuevas situaciones y a la vez tendrá más opciones para comparar.
No necesariamente debemos exponernos a tener varias fallas para entrenar el sistema, sería contraproducente. Como mencionaremos más adelante hay formas de entrenar los modelos de IA a base de brindarle datos.
Formas de aprendizaje
Existen tres modos que se utilizan para entrenar a una máquina. Los cuales son:
Aprendizaje por refuerzo
En este modo de aprendizaje la máquina aprende en base a la prueba y error. Por ejemplo, se puede programar un IA que aprenda a pasar niveles de un videojuego, en los primeros intentos fallará, pero con el paso de las repeticiones hallará las formas de pasar los niveles y quizás crear nuevas técnicas.
Aprendizaje supervisado
La máquina recibe datos etiquetados. Por ejemplo, las fotografías pueden contener metadata (datos dentro de otros datos) como la descripción de lo que hay en ellas. Al dar suficiente imágenes una máquina puede aprender a diferenciarlas y agruparlas en base a las descripciones.
Aprendizaje no supervisado
En este método los datos no están etiquetados por lo que la máquina puede recurrir a encontrar patrones para organizar los datos. Un ejemplo de esto es el reconocimiento de rostros y objetos, en este proceso se analizan los rasgos en común que tienen las imágenes hasta que las coincidencias le indiquen a la máquina que se tratan de la misma persona u objeto.
TensorFlow
Una herramienta para el desarrollo de modelos de Inteligencia Artificial es TensorFlow. Esta es una biblioteca que incorpora Keras, la cual es una API usada para el entrenamiento de IA. TensorFlow es multiplataforma y hasta puede ejecutarse en los entornos de Google Colab.
TensorFlow permite el entrenamiento de modelos para principiantes y profesionales. Puedes utilizar Python, C++ y el entorno de JavaScript.
Para entrenar un modelo se realizan iteraciones o repeticiones, las iteraciones pueden ser checkpoints que al final se volverán parte del modelo final.
¿Qué es TinyML?
TinyML es la incorporación de la Inteligencia Artificial (IA) en los microcontroladores. Al estar en este entorno se entiende que se deben adaptar los procesos de IA para trabajar con menos poder de procesamiento, espacio reducido y consumiendo menos energía. En general se espera tener modelos que ronden los 30 KB y consumen miliwatts (mW) de energía.
En general las aplicaciones de Internet de las Cosas (IoT, por sus siglas en inglés) consisten en recolectar datos, enviarlos mediante internet a un entorno en el que se puedan analizar esos datos para ser analizados. Pero con la aplicación de TinyML podríamos realizar varios procesos de forma local.
Unas aplicaciones serían el reconocimiento facial a través de cámaras, predicción de clima, seguimiento de signos vitales, activación por voz y gestos.
También hay aplicaciones industriales para la detección y alerta temprana de fallos, detección de objetos, automatización de procesos y seguridad.
En resumen TinyML nos trae las siguientes ventajas:
- Menor consumo de energía al no requerir enviar la información.
- Trabajar con baja o nula cobertura de a internet.
- Menor latencia ya que todo se ejecuta de forma local.
- Respuestas ante eventos nuevos que no hayan sido programados previamente.
- Seguridad al mantener los datos de forma local.
TensorFlow Lite usado en TinyML
TensorFlow Lite es una ampliación para dispositivos móviles e incorporados, como los microcontroladores. Esta versión permite convertir los proyectos de TF a un tamaño adecuado para trabajar en TinyML.
TF Lite se condificó en C++ 11 y trabaja en microcontroladores de 32 bits. Los modelos compatibles son los que tienen la arquitectura de la serie ARM Cortex-M y también el ESP32.
A continuación una lista de modelos compatibles con enlaces a sus páginas oficiales:
- Arduino Nano 33 BLE Sense
- SparkFun Edge
- Kit de desarrollo STM32F746
- EdgeBadge de Adafruit
- Kit TensorFlow Lite de Adafruit para microcontroladores
- Circuit Playground Bluefruit de Adafruit
- ESP32-DevKitC de Espressif
- ESP-EYE de Espressif
- Wio Terminal: ATSAMD51
- Placa de desarrollo Himax WE-I Plus EVB Endpoint AI
- Plataforma de desarrollo de software Synopsys DesignWare ARC EM
- Sony Spresense
Los archivos de tienen la extensión .tflite. Pese a esto hay que aclarar que los modelos se entrenan en ordenadores de mayor potencia. Lo que obtenemos con TF Lite es un procesado de ese modelo adaptado para ejecutarse en un dispositivo de menor capacidad.
Conclusiones
La Inteligencia Artificial está presente en nuestras vidas. Desde nuestro correo electrónico siendo clasificado, la música y videos que nos recomiendan las plataformas de streaming, el reconocimiento de voz y la administración de energía de nuestro dispositivos móviles.
La IA, a diferencia del software tradicional, es entrenada mediante datos y resultados para generar instrucciones. La IA suele requerir de potentes ordenadores para ser entrenada y también ser ejecutada.
Sin embargo, las aplicaciones de TinyML nos permite tener modelos de IA ya entrenados que pueden ejecutarse en microcontroladores con menos potencia de procesamiento y menor consumo de energía.
Una herramienta con amplio soporte es TensorFlow. La cual es una librería multiplataforma que sirve para crear modelos de Aprendizaje Automatizado con mayor facilidad para principiantes y profesionales.
TensorFlow tiene una versión llamada TensorFlow Lite. Convierte los modelos de TF en formatos más pequeños capaces de ejecutarse en dispositivos móviles, microcontroladores y sistemas embebidos.
Te invitamos a tomar el curso de Introducción al ESP32: Introducción al ESP32 | TodoMaker’s School