jueves, 13 de enero de 2022

TinyML un caso práctico de detección de movimiento con Edge Impulse

INTRODUCCION

Decidí ingresar al mundo de TinyML como un mecanismo de poder llevar los conceptos de IA a la práctica de una forma sencilla, para lo cual inicié con unos cursos y herramientas que me están permitiendo dar mis primeros pasos en este mundo.

Dado que esto fue con el objetivo de ir a la práctica, qué mejor que dejar la teoría a un lado y mostramos desde un inicio un ejemplo concreto.


CASO DE USO

Este ejemplo puede desarrollarse para mantenimientos preventivos de equipos industriales, en donde sensores de movimiento tienen embebido un algoritmo que permite evaluar el movimiento de los equipos y detectar anomalías que puedan indicar una posible falla y así llevar adelante mantenimientos preventivos, evitando con estos altos costos de mantenimientos correctivos, así como una parada en la elaboración de productos y su consiguiente perdida de ingresos.


OBJETIVO DE LA PRUEBA

Implementar un proyecto de TinyML que permita detectar el estado en el que se encuentra una impresora mostrando  la probabilidad del estado y activando un led con un color específico que facilite visualizar el estado detectado.


FUENTE PARA LA ELABORACIÓN DEL EJERCICIO

* Introduction to Embedded Machine Learning (Introduction to Embedded Machine Learning | Coursera)

* The Future of ML is Tiny and Bright (Tiny Machine Learning (TinyML) Professional Certificate | edX)


ELEMENTOS AMBIENTE DE PRUEBA

Los elementos considerados para la prueba son solo para mostrar la funcionabilidad, como tal, el equipo microcontrolador o MCU utilizado cuenta con al menos 9 sensores de los cuales solo se utiliza el de movimiento para la prueba. Para efectos de implementación se debería seleccionar un equipo especializado (menos sensores más barato) el cual incluya también un mecanismo de comunicación como conectividad wifi para enviar las anomalías encontradas, que para este ejemplo se lo podría asociar como la visualización de un color en particular.



EPSON L375
Arduino Nano 33 BLE Sense



ESTADOS DE LA IMPRESORA A DETERMINAR

Los estados sobre los cuales se realizará el aprendizaje y luego la evaluación son: Apagado (azul), Prender (verde), Impresión (rojo). Los colores indicados son los que se utilizarán como diagnóstico al momento de la evaluación del estado.


PASOS

1. Creación de proyecto Edge Impulse y conexión de MCUProject - Motion Detection | Coursera




2. Recolección de datos

Se ubicó la unidad de MCU junto con su carcasa sobre la impresora y se lo conectó a la laptop a través del cable USB (omitido en la siguiente imagen).


Ubicación de MCU para recolección de datos

Datos de entrenamiento de modelo: se recolecto 6 minutos de pruebas repartiendo 2 minutos por cada estado (Apagado, Prender, Impresión), cada muestra tuvo una duración de 10 segundos.

Imagen de onda de sensor estado Apagado


Imagen de onda de sensor estado Prender


Imagen de onda de sensor estado Impresión


Datos para prueba de modelo: se capturaron 30 segundos por cada estado


3. Entrenamiento y generación de modelo: Se siguieron los pasos para el entrenamiento y desarrollo del modelo considerando los siguientes elementos



Al momento de evaluar la red neuronal, se observó un nivel de precisión bajo, por lo que se realizaron algunas pruebas, ajustando los hiperparámetros del algoritmo a fin de mejorar el nivel de precisión, analizando también para esto la matriz de confusión procurando un nivel mayor de casos positivos válidos para cada estado, sin embargo, considerando las posibles limitaciones de capacidad del MCU y con el fin de no exceder la misma, se optó por limitar la red a 4 capas, cada una de 80 neuronas, lo cual según las pruebas, daba un nivel de precisión del 78.3% del modelo, positivos válidos del 76.9% en el estado de Impresión y del 57.9% del estado Prender, como se muestra en la siguiente imagen.




4. Implementación: Para efectos de generar una fácil visualización del estado detectado, se agregó en el código de arduino la activación del led dependiendo de cada estado (Apagado=azul, Impresión=rojo, Prender=verde). Al inicio se puso un umbral del 85% para la activación de cada led, sin embargo se observó que el sensor no alcanzaba dicho umbral en el estado Prender por lo que se lo redujo a 60% con el fin de asegurar su activación (esto tiene relación con al matriz de confusión y la probabilidad positivos válidos mencionado anteriormente).




A continuación se muestra un video con el MCU configurado con el algoritmo de detección en donde el led permite ver como los sensores detectan cada uno de los movimientos previamente programados.


Como se puede observar en el video, al inicio se ve el led encedido de color azul, lo cual indica que el sensor detecta el estado de Apagado, cuando se prende la impresora se activa el color verde y en el momento de la impresión se visualiza el color rojo. Sin embargo, si se observa detenidamente, al momento de encender la impresora, unos segundos después del verde se activa el rojo, lo cual es una muestra que el algoritmo necesita de cierto afinamiento, lo cual es el resultado que se mostró en la matriz de confusión (falsos positivos) y que podría mejorarse ajustando más los hiperparámetros de la red neuronal.

Como parte de la ejecución se muestra a continuación una imagen del panel de monitoreo de arduino que revela el % de acertividad o precisión detectado para cada movimiento, enfaticé por colores según los leds 3 ejemplos para efectos de mejor visualización, la corrida de la prueba solo muestra una parte del monitoreo para efectos solo de muestra.


También se puede observar que el led queda encendido en color azul lo cual simboliza el estado de Apagado aún a pesar que la impresora sigue encendida, esto es debido a que en el proceso de aprendizaje no se relevaron datos que permita al sensor diferenciar el momento en que se enciende o apaga el equipo, sino que se asoció la falta de movimiento con el estado de Apagado.


CONCLUSIONES

Como se puede observar, este tipo de implementación se pueden llevar a cabo de manera sencilla y a costos muy bajos, logrando con esto llevar a la práctica los conceptos de IA que para este caso estaría asociado con la detección de anomalías en equipos con el fin de evitar la parada de los mismos y la reducción de costos de mantenimientos al tratarlos como preventivos en lugar de correctivos.

La parte de ingeniería y análisis recaería principalmente en la elaboración y definición del modelo, tomando en cuenta también que el nivel de precisión de los modelos deben ser revisados periódicamente a fin de realizar ajustes que pueden darse por cambio en condiciones en la toma de las muestras así como del ambiente en producción.







No hay comentarios:

Publicar un comentario