Implementación de IA perimetral con Nordic: Guía práctica de reconocimiento de gestos

Introducción a la IA perimetral de Nordic

Fundamentos de aprendizaje automático en dispositivos embebidos

El aprendizaje automático representa un enfoque donde los sistemas extraen patrones directamente de datos en lugar de seguir reglas programadas explícitamente. En el contexto de reconocimiento de gestos, esto contrasta marcadamente con métodos tradicionales: mientras una solución clásica requeriría codificar condiciones como "si la aceleración en X supera el umbral Y, entonces...", el enfoque de aprendizaje automático procesa volúmenes de datos etiquetados para descubrir automáticamente las características distintivas de cada movimiento.

Las redes neuronales artificiales constituyen la arquitectura predominante para estas tareas. Su funcionamiento se basa en transformaciones matemáticas secuenciales: cada capa recibe un vector de entrada, lo multiplica por una matriz de pesos sinápticos, suma un vector de sesgos, y aplica una función de activación no lineal. La composición de estas operaciones permite aproximar funciones complejas que relacionan señales sensoriales con categorías de gestos.

La fase de inferencia en el dispositivo implica evaluar esta red previamente entrenada. Para ocho categorías de gestos, la salida final es un vector de probabilidades que suman unidad, donde el índice de mayor valor indica la clasificación predicha.

Entrenamiento y optimización de modelos

El proceso de entrenamiento ajusta iterativamente los parámetros del modelo (pesos y sesgos) minimizando una función de pérdida que cuantifica la discrepancia entre predicciones y etiquetas verdaderas. Es fundamental reservar un subconjunto de datos como conjunto de prueba para evaluar la capacidad de generalización, detectando sobreajuste cuando el modelo memoriza ejemplos específicos sin capturar patrones generalizables.

Para despliegue en microcontroladores, se aplica cuantificación post-entrenamiento, reduciendo la precisión de representación de 32 bits en punto flotante a 8 bits enteros. Esta compresión sacrifica mínima precisión a cambio de reducciones sustanciales en latencia y consumo energético.

Ecosistema Nordic Edge AI

Nordic ofrece dos vías tecnológicas para implementación de inferencai en dispositivos de borde:

Plataforma Arquitectura Aplicaciones óptimas
Neuton CPU Cortex-M Series temporales de sensores inerciales, ambientales
Axon NPU Acelerador hardware (nRF54LM20B) Audio, video de baja resolución, flujos de alta frecuencia

Neuton emplea un algoritmo de crecimiento estructural que construye redes neuronales dispersas de manera automática, eliminando conexiones redundantes sin intervención manual de hiperparámetros. El resultado son topologías irregulares con conectividad cruzada entre capas no adyacentes, significativamente más compactas que arquitecturas densas convencionales.

Axon NPU proporciona aceleración hardware para operaciones tensoriales fundamentales: convoluciones, agrupamiento, transformadas FFT, y operaciones DSP vectoriales. El controlador principal configura el acelerador, despacha tareas de inferencia, y puede entrar en modo de bajo consumo mientras el NPU opera autónomamente mediante DMA. Rendimiento representativo: detección de palabras clave en 4.5 ms consumiendo ~40 µJ.

El Nordic Edge AI Lab (ai.lab.nordicsemi.com) funciona como plataforma de entrenamiento en la nube, procesando datasets en formato CSV para generar modelos optimizados para ambas arquitecturas.

Preparación del entorno de desarrollo

Requisitos de hardware

El tutorial emplea Nordic Thingy:53 (SoC nRF5340), integrando acelerómetro de tres ejes y giroscopio. Alternativas compatibles incluyen nRF54L15 TAG y nRF54LM20DK con placa de expansión de sensores.

Configuración del SDK

El Edge AI Add-on requiere nRF Connect SDK v3.3.0-preview2. Para entornos con conectividad limitada a GitHub, se recomienda instalación incremental sobre una versión base existente:

# Iniciar shell de herramientas Nordic
nrfutil toolchain-manager launch --ncs-version v3.2.4 --terminal

# Clonar repositorio del add-on
cd /ruta/ncs/v3.2.4
git clone -b v2.0.0 https://github.com/nrfconnect/sdk-edge-ai edge-ai

# Reconfigurar manifiesto de west
west config manifest.path edge-ai

# Sincronizar dependencias (repetir si falla por red)
west update

Tras completar la sincronización, renombrar el directorio para distinguirlo de instalaciones estándar de NCS.

Adquisición y preparación de datos

Firmware de captura

El ejemplo edge-ai/applications/gesture_recognition admite modo de recolección de datos mediante configuración específica:

# Crear configuración alternativa
cp configuration/thingy53_nrf5340_cpuapp/prj.conf \
   configuration/thingy53_nrf5340_cpuapp/prj_dc.conf

# Añadir al nuevo archivo:
# CONFIG_DATA_COLLECTION_MODE=y
# CONFIG_BLE_MODE_NONE=y

# Compilar
west build -d build_dc --pristine \
    --board thingy53/nrf5340/cpuapp \
    -- -DCONF_FILE="prj_dc.conf"

Tras programación, el dispositivo transmite por UART (115200 baudios) lecturas de seis canales a 100 Hz: accel_x,accel_y,accel_z,gyro_x,gyro_y,gyro_z.

Diseño del vocabulario de gestos

El sistema reconoce ocho categorías: seis gestos definidos, estado de reposo, y categoría residual para movimientos no clasificados.

Categoría Descripción
IDLE Dispositivo en reposo estable
UNKNOWN Movimientos fuera del vocabulario
Deslizar derecha Movimiento horizontal rápido →
Deslizar izquierda Movimiento horizontal rápido ←
Doble golpe Dos impactos consecutivos
Doble toque pulgar Taps articulares específicos
Rotación horaria Giro continuo en sentido horario
Rotación antihoraria Giro continuo en sentido antihorario

Protocolo de captura

Recomendaciones metodológicas:

  • Preceder cada gesto con 3-5 segundos de inactividad
  • Gestos discretos (deslizamientos, golpes): duración 1-2 segundos, separación 1 segundo
  • Gestos continuos (rotaciones): variar duración y velocidad angular
  • Diversificar intensidad, ángulo de ejecución, y condición de agarre
  • Acumular ~5 minutos por categoría

Los datos crudos se exportan desde terminal serial a archivos CSV individuales por categoría.

Etiquetado y estructuración

Cada archivo requiere preparación:

  1. Insertar encabezado: acc_x,acc_y,acc_z,gyro_x,gyro_y,gyro_z,etiqueta
  2. Poblar columna de etiqueta con índice numérico (0-7)
  3. Remover encabezados individuales antes de consolidación
  4. Concatenar todos los archivos manteniendo formato UTF-8 consistente

Segmentación de gestos discretos

Para gestos no continuos, es crítico alinear el pico de energía del movimiento con el centro de la ventana de análisis. Nordic proporciona utilidad de segmentación automatizada:

pip install -r requirements.txt
python segment_data_around_peaks.py

Parámetros configurables en el script:

  • TRAINING_WINDOW_SIZE: muestras por ventana (ej: 100 para 1 segundo a 100 Hz)
  • work_axis: canal sensorial para detección de picos
  • threshold_coef: multiplicador sobre media para umbral de detección

El algoritmo identifica regiones donde la amplitud RMS supera el umbral, extrayendo subsecuencias centradas en el máximo local.

Entrenamiento en plataforma cloud

Creación de proyecto

En Nordic Edge AI Lab:

  1. Registrar cuenta y autenticarse
  2. Crear nueva solución de tipo Clasificación
  3. Seleccionar framework Neuton
  4. Cargar dataset.csv consolidado
  5. Designar columna objetivo: class

Configuración de procesamiento de señal

Activar Signal Processing para habilitar ventaneo temporal:

Parámetro Entrenamiento Inferencia
Tamaño de ventana 100 muestras 100 muestras
Desplazamiento 100 (sin solapamiento) 30 (70% solapamiento)

El solapamiento en inferencia garantiza que gestos que cruzan límites de ventana no se fragmenten irrecuperablemente, a costa de mayor carga computacional.

Extracción de características

Para reducir dimensionalidad de 600 valores brutos (6 canales × 100 muestras) a vectores manejables:

Estadísticos temporales:

  • Desviación estándar: dispersión respecto a la media
  • Desviación absoluta media: robustez ante valores atípicos
  • Valor cuadrático medio (RMS): energía efectiva de la señal
  • Curtosis y asimetría: forma de la distribución de amplitudes

Características de cruce:

  • Tasa de cruce por cero: frecuencia de oscilación
  • Tasa de cruce por media: simetría temporal
  • Tasa de cruce por sigma: eventos de alta magnitud

Descriptores de forma:

  • Factor de cresta: relación pico-RMS
  • Mobilidad y complejidad de Hjorth: medidas de actividad e irregularidad
  • Autocorrelación: periodicidad inherente

Para análisis espectral, la ventana debe ser potencia de 2 entre 128 y 2048 muestras, habilitando:

  • Centroide espectral: frecuencia promedio ponderada por energía
  • Dispersión espectral: ancho de banda efectivo
  • Frecuencias dominantes: picos espectrales significativos

Parámetros de entrenamiento

Configuración Valor recomendado
Precisión de pesos Entero 16-bit con conciencia de cuantificación
Formato de salida Punto flotante 32-bit (probabilidades)
Detención temprana Precisión objetivo 0.99

Evaluación de resultados

La plataforma presenta:

  • Curvas de convergencia: evolución de precisión vs. épocas
  • Métricas de recursos: consumo de RAM y Flash por arquitectura objetivo
  • Matriz de confusión: tasa de acierto y confusiones entre clases
  • Importancia de características: contribución relativa de cada descriptor

Tras validación, descargar paquete con modelo y código de inferencia generado.

Integración y despliegue

Estructura del paquete generado

El archivo descargado contiene directorio nrf_edgeai_generated/ con:

  • Arreglos C con pesos cuantificados
  • Implementación de extracción de características
  • API de inferencia optimizada

Incorporación al firmware

En el proyecto base gesture_recognition:

gesture_recognition/
└── src/
    ├── nrf_edgeai_generated/    ← Reemplazar con descarga
    ├── main.c
    ├── inference_postprocessing.c
    └── inference_postprocessing.h

Si las categorías entrenadas difieren del ejemplo, actualizar definiciones en main.c y lógica de post-procesamiento en inference_postprocessing.c.

Operación del dispositivo

El firmware finalizado anuncia como dispositivo HID Bluetooth Low Energy. Tras emparejamiento, traduce gestos reconocidos a atajos de teclado:

Clase predicha: DESLIZAR DERECHA, probabilidad 99%
Tecla HID 32 enviada exitosamente
Clase predicha: ROTACIÓN HORARIA, probabilidad 93%
Tecla HID 1 enviada exitosamente

Ciclo de refinamiento

Para reducir falsos positivos:

  1. Identificar movimientos espurios que activan clasificaciones incorrectas
  2. Capturar ejemplos de estos movimientos
  3. Agregar a categoría UNKNOWN del dataset
  4. Reentrenar y redistribuir

Tipicamente 2-3 iteraciones producen modelos con robustez aceptable ante variaciones de usuario y entorno.

Etiquetas: Nordic Semiconductor Edge AI Neuton Axon NPU nRF5340

Publicado el 9-26 01:22