Tiny Machine Learning (TinyML) es un campo de machine learning que busca correr modelos de machine learning en dispositivos de muy bajo consumo energético, como son los microcontroladores, bastante útil para integrarlo en sensores inteligentes o mejor aún a tus dispositivos de IoT como aspiradoras o focos inteligentes para que sean capaces de funcionar sin tener que enviar información un servidor privado en alguna parte del mundo para poder funcionar.
El término se popularizó por el libro TinyML de Pete Warden, quien trabajo en Google para el equipo encargado del desarrollo det TensorFlow lite, versión para correr TensorFlow en dispositivos pequeños, como las bocinas Google, las cuales tienen un modelo de TinyML corriendo todo el tiempo esperando a que digas “ok Google”, no sería eficiente (ni privado) que se estuviera enviando audio todo el tiempo a un servidor de Google para que detecte cuando alguien en el mundo dice el comando. Es mejor que corra localmente en el dispositivo, la tarea de Pete era optimizar estos modelos de ML para que una red neuronal pese tan solo 14 kB.
¿Qué necesitas para aprender TinyML?
El campo de TinyML es un campo muy interesante, haciendo TinyML vas a poder aprender sobre aprendizaje automatizado y también sobre sistemas embebidos. Aunque al empezar puede ser algo intimidante al inicio para algunos, la verdad es que haciendo proyectos aprendes muy bien los básicos y un montón más.
Conocimientos
Mucha gente se intimida al ver la lista de lo que se requiere para entender machine learning, mi recomendación es ir aprendiendo muchos de los conceptos sobre la marcha y si ves que en algún tema requieres un poco más, te enfocas en eso. Esta no es una lista exhaustiva ni absoluta:
- Probabilidad: Conceptos sobre distribuciones, independencias, Bayes, etc.
- Álgebra lineal: Sistemas lineales, operaciones de vectores y matrices.
- Programación: Estructuras de datos, lógica de programación, funciones, clases, etc.
- Estadística: Estadística descriptiva e inferencial (Gran parte de los modelos de ML son estadísticos o probabilísticos).
Software
- Python: Es el lenguaje de programación más utilizado para machine learning
- C++/Arduino: Para programar los microcontroladores se usa principalmente C++ o el lenguaje de Arduino, el cual está inspirado y es similar a C++
- Simulador (opcional): Si no tienes el hardware requerido se puede utilizar algún simulador como https://wokwi.com/ aunque lo más recomendable y “real” es comprarte un microcontrolador que no cueste más de 10 dólares
- Edge Impulse: Herramienta web que te permite entrenar modelos de machine learning para TinyML. Todo desde una interfaz gráfica.
Hardware
Si has trabajado en algún proyecto de IoT probablemente ya estés un poco familiarizado con el hardware que requieres, de no ser así no te preocupes, estas son mis recomendaciones de buenas placas para aprender
- Arduino BLE sense: Dispositivo utilizado en el libro de TinyML así que con esta placa ya tendrías una serie de tutoriales interesantes a seguir.
- ESP32: El ESP32 es un procesador, pero comúnmente lo mencionan como el nombre del microcontrolador, aquí hay algunos ejemplos de placas con las que yo he trabajado
- Seeed Xiao
- ESP32
- M5Stick
- Raspberry Pi Pico
Usos interesantes
Si después de haber visto los requerimientos sigues con interés de seguir adelante, aquí te platico un poco sobre los usos o proyectos en los que puedes trabajar (y unas ligas a algunos proyectos interesantes que he visto o en los que me he involucrado).
- Nariz inteligente: Proyecto que usa un sensor que mide la concentración de ciertos olores. Puedes entrenar un modelo que dados los datos del sensor, clasifique el olor.
- Entrenar un modelo de detección de objetos para avisarte cuando vea la presencia de algún objeto de tu interés, como detectar las placas de tu auto para saber si abrir la puerta o no
- Modelo de detección de objetos para poder controlar distintos dispositivos por medio de gestos con la mano (cof cof mi video cof cof).
- Entrenar tu propio detector de sonidos para notificarte cuando ocurra algún sonido como una ventana rompiéndose o un perro ladrando.
Estos son solo unos pocos ejemplos, lo importante es que hagas una lluvia de ideas sobre proyectos que te interesen y luego ir investigando que es lo que requieres (o si es posible realizarse, eso también es aprendizaje)