La empresa china Sipeed fabrica y comercializa distintas líneas de placas de bajo costo especialmente preparadas para desarrollar aplicaciones de Tiny Machine Learning, sobre todo en el área de procesamiento de imágenes. En este artículo te muestro algunas de ellas y te cuento cuales son sus características para que puedas elegir la mas apropiada para tu próximo proyecto.
Placas para Tiny Machine Learning
En un artículo anterior, en el que hice una breve introducción al Machine Learning y en particular a Tiny ML, te contaba que prácticamente cualquier placa puede ejecutar una aplicación de este tipo. Sin embargo, la complejidad del problema que pueda abordar dependerá de su potencia y características.
Es posible correr un modelo de ML en un Arduino UNO, pero con tan poca memoria y poder de procesamiento, la capacidad de dicho modelo se verá severamente limitada y no podrás emplearlo para tareas complejas.
Para poder utilizar modelos sofisticados que resuelvan problemas complejos, debes contar con placas que tengan procesadores potentes y rápidos, así como mucha memoria. Generalmente, esto significa precios altos y, además, un elevado consumo de energía.
A modo de referencia, la siguiente imagen de la firma Arducam clasifica las aplicaciones de ML en cinco categorías de complejidad creciente, indicando de manera aproximada las necesidades de memoria para cada una de ellas y algunas placas que se pueden emplear para cada caso.
Sin embargo, el empleo de procesadores que incluyen módulos de hardware dedicados al tratamiento de imágenes o audio y al cálculo de operaciones matemáticas, como las que se emplean en el Machine Learning, permite producir placas de costo moderado y bajo consumo de energía. Esto las hace sumamente interesantes para aplicaciones de Tiny ML.
Este el caso de la empresa Sipeed, que tiene un portfolio, una oferta de cuatro familias de placas especialmente preparadas para este tipo de aplicaciones.
Sipeed
Sipeed es una empresa de origen chino que diseña y fabrica varias líneas de placas para distintas aplicaciones, algunas de ellas especialmente orientadas al campo del ML a un costo interesante. En la actualidad, la oferta de Sipeed incluye las siguientes líneas de placas:
- Maix AI: Placas para ML
- LicheePi: Placas SBC (PC en una placa) con procesadores RISC-V y ARM Cortex.
- Tang FPGA: Placas de desarrollo con FPGAs
- Maix Sense: Módulos de sensores inteligentes
Como en esta ocasión nos interesan sólo las aplicaciones específicas de ML, en lo que sigue me ocuparé sólo de la línea de placas Maix-AI y haré un resumen de sus principales características.
Placas Maix AI
Maix-AI es el nombre de la línea de placas Sipeed dedicadas a aplicaciones de AI o mas precisamente al Machine Learning. Existen cinco familias, que emplean distintas plataformas de hardware, lo que define sus capacidades y aplicaciones:
Maiz-Zero
Placas de muy bajo costo construidas alrededor de los chips BL702 y BL616 de la empresa Bouffalo Lab, procesadores RISC-V de bajo consumo que incluyen soporte para Bluetooth y Zigbee orientados a aplicaciones de IoT.
Algunas placas de esta familia traen incluidos sensores como micrófono, acelerómetro y conexión para pantalla LCD pero no tienen módulos especiales para ML.
Estas placas se pueden programar en C o usando PykaPython
Maix-I
La familia Maix-I contiene a su vez dos grupos de placas: las basadas en los móduos M1, M1w y M1n que contienen un procesador Kendryte K210 de Canaan Technology y las que están construidas alrededor del módulo M1s, que tiene un procesador BL808 de Bouffalo Lab.
Los módulos M1, M1w y M1n que integran el K210 cuentan además con 16 MB de memoria Flash. El M1w adicionalmente contiene un chip ESP8285 y un conector de antena que añaden conectividad Wifi. Los módulos M1 y M1w tienen un encapsulado metálico mientras que el M1n tiene un conector de borde que permite su integración en otras placas.
El Kendryte K210 es un SoC (System On Chip) que incluye un procesador de arquitectura RISC-V de 64 bits a una velocidad de 400 MHz y dos núcleos, cada uno de los cuales cuenta con su propia FPU (unidad de punto flotante).
El K210 está optimizado para aplicaciones de procesamiento de video y audio gracias a sus módulos integrados: KPU dedicado al procesamiento de redes neuronales, APU para el tratamiento de señales de audio provenientes de varios micrófonos y FFT para resolver transformadas rápidas de Fourier y acelerar los algoritmos de tratamiento de señales.
También incluye 8 MB de memoria RAM, módulos dedicados a la seguridad y varios tipos de periféricos tradicionales como UART, SPI, I2C, etc.
Lo destacable de este SoC es que a pesar de esta capacidad de procesamiento especializado, el consumo se puede mantener tan bajo como 0,3W, según el fabricante, un valor inferior al que pueden mostrar otros procesadores con características equivalentes.
Por otro lado, algunas placas de esta familia incluyen un módulo M1s, que es mas moderno. Este módulo contiene 3 núcleos: El BL808 que es una CPU RISC-V de 32 bits con conectividad Wifi, BT, BLE y Zigbee, el de multimedia con otra CPU RISC-V de 64 bits que integra módulos de procesamiento de video y la NPU (Neural Processing Unit) BLAI-100 para detección y reconocimiento de audio y video.
Veamos ahora algunas de las placas mas destacadas que podemos encontrar dentro de la familia Maix-I.
Maix Bit
Esta placa, basada en el K210, incluye un led RGB, un micrófono MEMS, conector para cámara OV2640, conector para LCD, ranura para una tarjeta micro SD y conector USB para alimentación y programación.
Además, tiene dos hileras de pines en los bordes lo que permite su inserción en una protoboard, simplificando la construcción de prototipos.
Maixduino
La placa Maixduino es una placa de desarrollo en formato Arduino basada en el módulo M1. Cuenta con una entrada de alimentación entre 6 y 12V, conector USB tipo C, conector para cámara, conector para LCD, micrófono MEMS, salida para un máximo de 3 parlantes, ranura para tarjeta micro SD y conectores compatibles con el formato de Arduino. Además, integra un ESP32 con antena integrada por si es necesaria la conexión Wifi o Bluetooth.
Maix Nano
La Nano está construida empleando un módulo M1n insertado sobre una “placa base”. Tiene características similares a la Maix Bit y se destaca por su pequeño tamaño.
Maix Amigo y Maix Cube
Estos son dos kits que vienen armados y listos para usar, algo muy conveniente para comenzar a experimentar con ML sin las complicaciones que implica el armado de un circuito básico con algunas de las otras placas. El modelo Cube es el mas antiguo y mas básico, mientras que el Amigo tiene mas funciones, como el agregado de una segunda cámara.
Los dos emplean módulos basados en el K210.
Maix M1s dock
Esta placa, financiada a través de una campaña de crowfunding, es mas nueva que las anteriores y emplea el módulo M1s. Incluye conector para cámara y LCD, conectividad Wifi, BT y BLE, un micrófono analógico y una ranura para tarjeta SD.
Herramientas de desarrollo
Las placas basadas en el chip K210 pueden ser programadas en C/C++. También está disponible un core para poder utilizarlas en el IDE de Arduino. Sin embargo, la forma mas simple de crear aplicaciones es empleando MaixPy, un fork o derivado de Micropython que soporta las características y módulos adicionales del K210, aprovechando todas su potencia y capacidades particulares.
Para las placas construidas alrededor del módulo M1s en cambio Sipeed ofrece una herramienta de desarrollo (SDK) basada en C/C++ o PikaPython.
Adicionalmente Sipeed también mantiene la plataforma MaixHub, donde pone a nuestra disposición herramientas, modelos preentrenados para distintas placas y la posibiidad de entrenar un modelo con nuestros propios datos. También funciona como una comunidad donde los participantes pueden compartir sus trabajos con otros usuarios.
Maix-II
Las placas de la familia Maix-II están basadas en el SoC V831 de Allwinner, diseñado especialmente para su uso en aplicaciones de video, como cámaras inteligentes. Integra un procesador Cortex A7 y corre una versión de Linux.
El desarrollo de aplicaciones se puede hacer en C/C++ o empleando MaixPy3, una adaptación de Python desarrollada por Sipeed en combinación con Jupyter Notebook, una aplicación muy popular en el trabajo con modelos de ML.
Maix-III
También llamadas Axera-Pi, estas placas utilizan el SoC Axera AX620A que contiene un procesador ARM Cortex-A7 de cuatro núcleos a una velocidad de 1 GHz, una VPU (Vision Processing Unit) y una NPU (Unidad de Procesamiento Neural) que le permiten obtener un gran rendimiento en aplicaciones de procesamiento de imágenes.
Maix-IV
Esta es la familia mas nueva de Sipeed y utiliza una actualización de las placas AXera (AXeraPi Pro).
Donde comprar las placas Sipeed?
Sipeed tiene su propia tienda en Aliexpress y también se los puede adquirir a través de Seeed Studio.
Conclusiones
La familia de placas Maix-I equipadas con el K210 es la mejor combinación de costos y facilidad de uso, haciéndola ideal si quieres aprender a utilizar las técnicas de ML. Dentro de esta familia, los kits Amigo y Cube te permiten comenzar a programar y desarrollar aplicaciones sin necesidad de ocuparte del hardware y las conexiones, así que puede ser una primera opción para comenzar a aprender.
Si quieres ir más allá y desarrollar un proyecto que incluya hardware adicional, la mejor opción es la Maix Bit, que puede utilizarse con una protoboard o la Maixduino, que también permite prototipar con facilidad y emplea un formato muy conocido.
Como ventaja adicional, estas placas pueden programarse usando MaixPy, la versión de Micropython de Sipeed para el K210, lo que permite desarrollar aplicaciones sencillas con muy pocas líneas de código.
Espero que esta información te haya resultado útil para iniciarte en el fascinante mundo del Machine Learning con las placas Sipeed. Como siempre, si tienes alguna sugerencia o duda, puedes escribirla en la sección de comentarios. En próximos artículos te mostraré algunos proyectos concretos realizados con algunos modelos de estas placas.