microcontroladores

Un microcontrolador ejecuta inteligencia artificial generativa

El proyecto Pico-Faces genera imágenes de rostros en el chip RP2350

Un desarrollador, identificado como Tim, ha logrado implementar un modelo de inteligencia artificial generativa para la creación de imágenes en un microcontrolador RP2350. Este chip, presente en la Raspberry Pi Pico 2 y con un coste aproximado de un dólar, cuenta con un procesador dual-core Cortex-M33 y solo 520 KB de SRAM, características que lo sitúan en las antípodas de los requisitos habituales para estas tareas.

El proyecto, denominado Pico-Faces, permite la generación de imágenes RGB de rostros humanos con una resolución de 128×128 píxeles. Según la información publicada en Hackster.io, el modelo más pequeño puede producir una imagen en tan solo cinco segundos, mientras que la versión más compleja requiere entre 10 y 20 segundos, dependiendo de su configuración.

Para conseguir este rendimiento en hardware tan limitado, el modelo de mayor tamaño, que incluye el motor de inferencia, se ha comprimido para ocupar únicamente 4 MB de memoria flash. Pico-Faces emplea un transformador de difusión de flujo latente (DiT) que opera sobre una representación latente comprimida de 16x16x8, que es decodificada posteriormente por un autoencoder variacional (VAE) entrenado por separado para generar la imagen RGB final.

Las adaptaciones incluyen un diseño del VAE donde el codificador es significativamente más grande que el decodificador, ya que el primero solo es relevante durante el entrenamiento y no se despliega en el microcontrolador. El decodificador VAE en el dispositivo contiene aproximadamente entre 116.000 y 493.000 parámetros, dependiendo de la versión del modelo. Además, se descubrió que un transformador ofrecía mejor rendimiento que una U-Net convolucional convencional en este tipo de hardware. Se incorporaron técnicas avanzadas como la guía sin clasificador (classifier-free guidance) y el condicionamiento AdaLN-Zero, este último simplificado mediante el precálculo y almacenamiento de valores en tablas de consulta.

En el plano técnico, los pesos se cuantificaron a INT8 y se transmiten desde la memoria flash utilizando acceso directo a memoria (DMA) durante la inferencia. Los dos núcleos Cortex-M33 del microcontrolador se overclockearon de 150 MHz a 300 MHz, y se emplearon instrucciones específicas del procesador para acelerar los cálculos de enteros. Las optimizaciones sucesivas, según el desarrollador, mejoraron la velocidad de inferencia en aproximadamente 15 veces respecto a la implementación inicial.

Para la demostración, un RP2350 en una placa Waveshare RP2350-Plus se conecta a una placa VGA de Pimoroni, mostrando los rostros generados en un monitor. No obstante, las imágenes también pueden transferirse a través de la conexión USB del RP2350. Los resultados obtenidos, aunque no se describen como perfectos, se consideran notables dado el entorno de hardware extremadamente restringido.

Fuente original: Hackster.io

Publicaciones Similares

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *