Como ejecutar algoritmos de IA en una RPI


Recientemente ha salido a la luz Roni Bandini, el programador, músico y escritor argentino de 49 años, que ha creado el ingenioso dispositivo Reggaeton Be Gone, diseñado para contrarrestar la música molesta de reguetón que reproduce el altavoz bluetooth de su vecino.

Utilizando inteligencia artificial y componentes de bajo costo, este dispositivo identifica y bloquea la música de reguetón enviada a través de altavoces bluetooth, generando interferencias que obligan al vecino a cambiar de ubicación (! o al menos esa era la idea hasta que su vecino cambió la ubicación de dicho altavoz!). Aunque reconocido localmente como un «héroe» por su invento, Bandini se muestra reticente a comercializarlo masivamente, prefiriendo compartir su conocimiento en talleres de contracultura maker pues además de este dispositivo, Bandini ha incursionado en la creación de otras máquinas innovadoras que fusionan literatura, tecnología y arte, como Rayuelomatic, BookSound y la expendedora de Literatura en Tickets.

El Reggaeton Be Gone utiliza inteligencia artificial, específicamente machine learning, para reconocer patrones sonoros y distinguir miles de canciones del género de reguetón. Su proyecto compuesto por componentes de bajo costo, como puede ser una raspberry pi , un receptor Bluetooth , un pulsador y una pequeña panta I2C, así como software de código abierto, monitorea la música que se está reproduciendo y la compara con un modelo previamente entrenado: si determina que la canción que esta «oyendo» es identificada como reguetón, intenta interferir con la señal enviada al altavoz bluetooth, con el objetivo de desconectar el altavoz o al menos dificultar la escucha para no ser molestado.

Al margen de que la idea nos pueda ser útil, sin duda al menos el concepto es claramente interesante porque nos acerca actual de como con un maquina tan limitada como puede ser un ESP32 o una Raspberry Pi (o incluso un smartphone antiguo), podemos ejecutar algoritmos de Deep Learning para cualquier cosa que se nos ocurra.

¿Como es posible ejecutar un algoritmo de IA en una maquina tan limitada?

Pues bien la clave está en Edge Impulse, una plataforma de desarrollo de aprendizaje automático (machine learning) y análisis de datos diseñada específicamente para dispositivos de «borde» o «edge» (como microcontroladores, dispositivos IoT, sensores, etc.), lo que se conoce como «TinyML«. Simplifica el proceso al permitir ingresar una base de datos, ajustar parámetros y entrenar el programa con diversos casos de implementación, lo cual elimina la necesidad de sumergirse profundamente en el desarrollo del código. La plataforma ofrece la posibilidad de realizar proyectos de detección de objetos, reconocimiento de voz, procesamiento de gestos de un acelerómetro, y más.

La plataforma permite a los desarrolladores recopilar datos de sensores, entrenar modelos de aprendizaje automático y desplegar estos modelos directamente en dispositivos de borde simplificando el desarrollo de aplicaciones de Machine Learning para dispositivos embebidos, ampliando las posibilidades de implementación en diversos campos.

Por cierto, Edge Impulse es una plataforma joven, pero grandes fabricantes de semiconductores respaldan su desarrollo. Por mencionar algunos están ARM, ST Electronics, Microchip, Nordic Semiconductor y Arduino. Podemos destacar sobre todo la colaboración con TinyML y Hackster.io. Con estos se implementan los algoritmos de aprendizaje máquina y se documentan los proyectos que se van desarrollando.

Implementación de algoritmos en minutos

Edge Impulse ofrece una plataforma intuitiva para implementar algoritmos de machine learning en cuestión de minutos, sin necesidad de ser un experto en la materia. La interfaz es muy amigable y es bastante intuitiva. Según la página oficial se puede implementar su proyecto en minutos (dejando de lado la etapa de aprendizaje).

¿Cómo funciona?

  1. Cree su cuenta: Regístrese en la plataforma Impulse y seleccione el tipo de proyecto que desea realizar :
    • Detección de objetos
    • Reconocimiento de voz ( que es el tipo de proyecto que ha usado Roni Bandini)
    • Procesamiento de gestos
    • Etc..
  2. Adquiera datos: Reúna o genere el conjunto de datos (dataset) que su proyecto necesita. En el caso de Roni Bandino por ejemplo han sido varios fragmentos de canciones. La plataforma le ofrece diversas opciones para obtener datos, como la carga de archivos CSV o la conexión a sensores en tiempo real.
  3. Cree un Impulse: Defina los parámetros de su modelo de machine learning y entrene el modelo con tu dataset utilizando la herramienta Impulse. La plataforma le guía a través del proceso con una interfaz amigable.
  4. Cargue el modelo: Descargue el modelo entrenado y cárguelo en su microcontrolador. Impulse le ofrece opciones para diferentes plataformas de hardware.

Ventajas:

  • Interfaz intuitiva: Fácil de usar, incluso para principiantes en machine learning.
  • Rápido y eficiente: Implementa algoritmos en minutos, sin necesidad de conocimientos avanzados de programación.
  • Versátil: Soporta diferentes tipos de proyectos de machine learning.
  • Flexible: Compatible con diversos microcontroladores y plataformas de hardware.

Ejemplos de proyectos:

  • Detección de objetos en imágenes
  • Reconocimiento de voz para control por voz
  • Clasificación de gestos con un acelerómetro
  • Análisis de datos de sensores en tiempo real

Impulse democratiza el acceso a la inteligencia artificial, permitiendo que cualquier persona pueda implementar algoritmos sofisticados en sus proyectos.

Otro ejemplo: clasificación de Movimientos con Edge Impulse con un Smartphone

Este tipo de proyectos explora la capacidad de Edge Impulse para tomar datos de sensores de movimiento en un smartphone y crear un modelo de machine learning

Concretaemente el proyecto que podemos ver en instructables se llevó a cabo utilizando la aplicación Edge Impulse en un smartphone, recopilando 50 rondas de 10 segundos para cada movimiento para clasificar tres movimientos cotidianos: sentadillas, peinarse y barrer.

Los datos se sincronizaron con la plataforma Edge Impulse para procesarlos, extraer características y entrenar un modelo de clasificación utilizando la función «Impulse Design«.

Se ajustaron los parámetros del modelo y se verificó su precisión en la sección «Model«. Luego, se probó el modelo en tiempo real seleccionando la opción «Switch to classification mode» en el smartphone, logrando una precisión del 100% en la clasificación de los movimientos. Los resultados demostraron la capacidad del modelo para identificar movimientos en vivo.

Destaca la sensibilidad del modelo a la posición del dispositivo durante las pruebas y pero el autor recomienda acciones para mejorar la robustez del modelo, experimentar con diferentes movimientos y considerar la implementación en una aplicación móvil para una interacción más intuitiva.

Con este sencillo proyecto vemos la utilidad de la plataforma para la creación de modelos de machine learning con smartphones.

Gran compatibilidad

Con Edge Impulse, los usuarios pueden capturar datos de sensores, etiquetarlos, entrenar modelos de aprendizaje automático utilizando técnicas como la visión por computadora, el procesamiento de señales y el análisis de audio, y luego implementar estos modelos en hardware de baja potencia. Esto permite la ejecución de inferencias

A medida que aumenta la popularidad de Edge Impulse se van agregando más tarjetas de desarrollo a la lista de sistemas compatibles. Esto permite que se pueda cargar fácilmente su modelo a tu plataforma final. Ya sea un móvil, una Raspberry Pi, un Arduino 33 BLE Sense o una OpenMV, podrá cargar su modelo. La lista es bastante extensa y si la pagina no tiene soporte nativo aún, puede convertir su modelo en una librería de C++ o Java. Esto le permitirá integrarlo a cualquier plataforma que desees, siempre que tenga la capacidad adecuada de procesamiento.

Referencias:

Uso de la IA en bibliometría y análisis de datos bibliográficos



La bibliometría es el estudio cuantitativo de la producción, comunicación y uso de la información científica y académica. Este estudio suele ser complejo necesitando además bastantes herramientas para obtener resultados fructuosos. Afortunadamente existe un paquete en R que nos facilita enormemente esta labor siendo además gratuito y verdaderamente potente, pasemos a ver de que se trata, como instalarlo y su funcionamiento básico.

Libro Subtilissimo por el qual by The Metropolitan Museum of Art is licensed under CC-CC0 1.0

Bibliometrix

Bibliometrix es una herramienta de software utilizada en la bibliometría y análisis de datos bibliográficos. a. Bibliometrix está diseñado para analizar y visualizar datos bibliográficos, como citas, coautorías, redes de colaboración, entre otros, con el fin de proporcionar información valiosa sobre la actividad científica en un campo específico o sobre un conjunto de publicaciones académicas.

Esta herramienta permite a los investigadores realizar análisis bibliométricos complejos y generar informes detallados sobre la producción científica, el impacto de las publicaciones, las tendencias de investigación y otros aspectos relevantes para evaluar la actividad investigadora y su relevancia en un campo determinado. Bibliometrix es útil tanto para académicos como para profesionales de la información que deseen comprender mejor el panorama científico en un área específica y tomar decisiones informadas sobre estrategias de investigación y publicación

Biblioshiny

Biblioshiny es una herramienta desarrollada en R que se utiliza para realizar análisis bibliométricos y visualización de datos bibliográficos de una manera interactiva y dinámica. Esta herramienta combina la funcionalidad de R, un lenguaje de programación estadística, con la interfaz de usuario Shiny, que permite crear aplicaciones web interactivas en R.

Con Biblioshiny, los usuarios pueden cargar sus datos bibliográficos en formato BibTeX o RIS, y luego realizar una variedad de análisis bibliométricos, como calcular citas, identificar tendencias de investigación, analizar redes de coautoría y más. La herramienta proporciona diversas opciones de visualización, como gráficos de barras, diagramas de dispersión, mapas de calor y redes de colaboración, que permiten a los usuarios explorar y comprender mejor sus datos.

Biblioshiny es útil para investigadores, bibliotecarios y profesionales de la información que deseen analizar y visualizar sus datos bibliográficos de manera rápida y eficiente, sin necesidad de tener experiencia en programación avanzada. Además, al ser una aplicación web, Biblioshiny facilita la colaboración y el intercambio de resultados entre diferentes usuarios.

INSTALACION BIBLIOSHINY

Utilizado por millones de personas cada semana, el entorno de desarrollo integrado (IDE) RStudio es un conjunto de herramientas creadas para ayudarle a ser más productivo con R y Python. Es importante saber que RStudio requiere un sistema operativo de 64 bits y por tanto una arquitectura de 64bits.

Es posible que los usuarios de Linux tengan que importar la clave pública de firma de código de Posit antes de la instalación, en función de la política de seguridad del sistema operativo. Estos son los pasos que tenemos que seguir en caso de una instalacion limpia:

1: Instale R : RStudio requiere R 3.3.0+. Elija una versión de R que coincida con el sistema operativo de su ordenador. https://cran.rstudio.com/

2: Instalar RStudio. https://download1.rstudio.org/electron/windows/RStudio-2023.12.1-402.exe

3-Instalar Bibliometrix (https://www.bibliometrix.org/home/index.php/download)

Esta es la versión estable publicada en el repositorio oficial de R (CRAN) y actualizada mensualmente. Esta versión se puede descargar de dos maneras:

1) Instalar R y digitar los siguientes códigos:

install.packages("bibliometrix")

2) Descargue la versión más reciente de RStudio(www.rstudio.com) y siga estos pasos:

  • Abra Rstudio y busque en el Menú: Herramientas -> Instalar paquetes...
  • Digite «bibliometrix» y marque la casilla «Instalar dependencias».
  • Haga clic en «Instalar»
  • Esperar finalize la instalación

4-Ejecutar bibilioshiny desde el interfaz de R-studio:

> bibliometrix::biblioshiny()

Se abrirá una nueva ventana en el navegador por defecto en :

http://127.0.0.1:6860

¿Y como lo probamos?

Bien, si ya hemos instalado R-Studio y los paquetes, nos vamos a cualquier Base de Datos bibliográfica, como por ejemplo Scopus para tener datos bibliográficos para probar este interesante paquete.

Tras la búsqueda inicial (en el ejemplo se ha buscado «Smart Meters» y se ha limitado los resultados a Ingeniería) exportamos los resultados al formato CSV seleccionado todas la columnas:

Ahora que tenemos el fichero CSV , nos podemos ir a R-Studio y desde ahí escribiremos en la consola > bibliometrix::biblioshiny()

Una vez estemos en Biblioshiny, en la parte derecha pulsaremos en Importar, seleccionamos «Import raw file(s)» , eligiendo como Database «Scopus» y finalmente seleccionaremos el fichero en formato csv que obtuvimos al exportar los resultados de Scopus.

Pulsaremos sobre el botón azul «Start», y tras un breve tiempo, tras exportar los datos nos devolverá un resumen del proceso, marcando en colores el estado de la exportación de los metadatos.

Vemos que la mayoría de los metadatos se han exportado excepto los metadatos de TC ( total citacion) y WC ( Science Categories).

En la parte inferior , se nos da una opción de obtener el detalle de los avisos en modo resumen( botón Advice), obtener este informe para añadirlo al informe fina salvar este resumen .

Terminado este paso ya podemos ir accediendo a la infinidad de opciones de análisis bibliográfico que nos ofrece este estupendo paquete, como por ejemplo en Network Approcach–> Co occurence Network ( no olvidar darle el botón azul de «play» en la parte superior).