domingo, 23 de enero de 2022

Identificación de audio a través de TinyML con Edge Impulse

 INTRODUCCIÓN

Este es otro ejemplo sencillo de TinyML llevado a la práctica, considerando la utilización de sensores de audio para la identificación de objetos o tipos de sonidos con técnicas de machine learning.


CASO DE USO

Al igual que el caso anterior de detección de movimiento, este tipo de sensores puede ser utilizado también para mantenimientos preventivos, los cuales al juntarse podrían lograr un mejor resultado al identificar inconvenientes. 

Otro caso particular, es el reconocimiento de voz,  que es utilizado en equipos como Alexa o en smartphones iphone al utilizar Siri y de "Ok Google" en androids, con la diferencia que estos necesitan permanentemente una conexión a internet, es decir, la inteligencia para la identificación de los sonidos no está en el celular sino en un servidor a miles de kilómetros, mientras que para el caso del microcrontrolador (MCU) no requiere de la conexión de internet para la identificación (una de las características de las soluciones de TinyML que profundizaremos posteriormente). A continuación un link con varios casos de uso de reconocimiento de voz Top 10 Voice Recognition Applications for Business (aimultiple.com), algunos de los cuales podrían beneficiarse de la tecnología TinyML.


CONFIGURACIÓN DE LA PRUEBA

Para este tipo de caso, uno de los temas que considero podría tener un gran impacto es el ruido de fondo, que puede alterar los resultados, por lo que el desarrollo del modelo en el ambiente en donde se requiera la detección podría ser un tema crítico, considerando esto, he aprovechado un ambiente ruidoso que tengo a la mano, una peluquería de mascotas donde mi esposa es la propietaria.

En una peluquería de mascotas tenemos muchos sonidos, el agua de la bañera, la secadora de pelo, el sonido de las tijeras, ladridos de las mascotas, conversaciones del personal, una llamada telefónica, entre otros.

Para efectos de facilitar la prueba y entendiendo que puedo hacer uso de algunos conjuntos de datos públicos, como por ejemplo de ladridos de perros (encontré también uno de conversaciones de personas, pero desistí de utilizarlo cuando vi que el tamaño era de 3.9G, lo cual implicaría más tiempo empezando solo por la descarga de datos), he considerado la identificación del sonido de la secadora de cabello, ladrido de perros y el resto lo considero como ruido.

Aprovecharé los leds del MCU para mostrar el sonido que ha logrado identificar, con lo cual la identificación quedaría de la siguiente forma:






ELEMENTOS

Por temas de movilización y reducir la dependencia del computador para la identificación de los sonidos para la fase de identificación (es decir, posteriormente al modelado), voy a usar solo al MCU y conectándolo a una toma dentro de la peluquería, con lo que dejaré de lado la carcasa de Arduino.



Secador de Grooming

Arduino Nano 33 BLE Sense



El componente de desarrollo del modelo es la plataforma de programación ML de borde denominada Edge Impulse facilita el desarrollo al implementar un esquema de selección de opciones muy amigable eliminando con esto el uso de programación (como python por ejemplo) permitiendo que nos podamos enfocar en otros elementos como las características de las variables, el modelo y sus hiperparámetros, lo cual reduce el tiempo de realización de la prueba.


FUENTE TEÓRICA 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)


PASOS

1. Creación de proyecto Edge Impulse y conexión MCU: Tomamos como guía el modelo desarrollado en el curso de introducción de machine learning embebida de Coursera / Edge Impulse.











2. Recolección de datos: Se recopiló un total de 21 minutos de sonidos para el entrenamiento, de los cuales 10 minutos de ruido y 3 de la secadora en funcionamiento se lo hizo con el MCU directamente, los otros 7 de ladridos de perros a través de la fuente previamente indicada.













3. Entrenamiento y generación de modelo: Siguiendo la guía de Coursera, se probaron 2 tipos de bloques de procesamiento a fin de ver cuál de ellos nos muestra un mejor desempeño del modelo.

El primero que se probó fue MFCC como se muestra a continuación:











Y el nivel de precisión luego de la fase de modelamiento fue del 87.4% como se muestra en la siguiente imagen:






El otro bloque de procesamiento fue Spectrogram, como se observa a continuación:













Y el nivel de precisión con este bloque de procesamiento fue del 99%, que se muestra a continuación:





















Como se observa hay una mejora del 11.6% al utilizar el bloque Spectrogram versus el MFCC que es muy significativa por lo que utilizamos el segundo bloque mencionado para la implementación del modelo.


4. Implementación

Para esta fase, agregamos al código elaborado por la herramienta Edge Impulse, la parte correspondiente que asocia según el porcentaje de identificación detectado por cada tipo de sentido un color y cargamos en el MCU el código correspondiente.

Conectamos el MCU a una toma eléctrica dentro de la peluquería y validamos el comportamiento, lo cual se muestra a continuación en un video que hemos recortado para efectos de muestra:




Ruido ambiente (verde)


Secadora (azul)



Ladrido (rojo)



CONCLUSIONES

Como se puede observar, este es otro sencillo ejemplo de cómo se puede utilizar la tecnología de TinyML para detección en este caso de sonidos, que podría ser utilidad para el mantenimiento preventivo de equipos, así como de reconocimiento de voz. Recordemos que esta identificación no depende de una conexión a internet (a diferencia de nuestros celulares) y el dispositivo puede utilizar una pila sencilla para operar lo cual hace que pueda ser ubicado en lugares de difícil acceso y que el resultado de la identificación de sonido genere una acción que podría ser como la generación de una señal (alarma por ejemplo), apertura de alguna puerta o cualquier otra acción. 

Debido al ruido de ambiente, puede que sea conveniente integrar otros sensores como el de movimiento a fin de lograr una mayor precisión para la identificación de equipos que requieren mantenimiento.

Pero a más de ello, las herramientas de desarrollo como la plataforma de Edge Impulse facilitan mucho el análisis e integración de las diferentes variables que podrían profundizarse a fin de lograr una mayor precisión.

Finalmente a continuación un link con un caso real de mantenimiento preventivo.









No hay comentarios:

Publicar un comentario