Enseña a tu BME688 a oler

Una guía completa sobre cómo entrenar su sensor BME688

¡Hola amigos entusiastas de la tecnología! Bosch ha lanzado el BME688Un nuevo e impresionante sensor que puede distinguir hasta cuatro olores diferentes. Esta guía explicará todos los detalles para enseñar a tu BME688 a distinguir olores. No te preocupes si eres nuevo en la IA o en Python. Esta guía es adecuada para principiantes.

Así que, vamos a saltar a la derecha.

Requisitos previos

Pasos

  1. Elija su aplicación
  2. Registrar datos
  3. Entrenar el algoritmo
  4. Detectar olores

1. Elija su aplicación

El primer paso es elegir su aplicación. Para esta guía voy a utilizar la carne y el queso como ejemplos. Pero hay un abanico infinito de posibilidades. Puedes distinguir las frutas de las verduras o los productos de limpieza de los perfumes. También se puede intentar determinar cuándo la comida se ha estropeado.

Hay ciertas cosas que debe tener en cuenta a la hora de elegir una aplicación. Necesitas muchos ejemplares para cada clase que quieras distinguir, para asegurarte de que el algoritmo sea robusto. Para empezar, debe elegir algo que sea barato y esté ampliamente disponible. También hay que tener en cuenta que es aconsejable utilizar el aire normal como una de las clases, ya que casi siempre estará presente.

Para crear un algoritmo robusto debe utilizar al menos media hora de datos de medición para cada espécimen. Por lo tanto, los especímenes que producen un olor constante son una buena elección. Asegúrese también de utilizar una amplia gama de especímenes. Si, por ejemplo, sólo utiliza naranjas, limones y limas para su clase de fruta, el sensor podría no clasificar una frambuesa como fruta, porque es demasiado diferente de los especímenes que utilizó para el entrenamiento. Cuanto más especímenes diferentes se utilicen, mejor.

Una vez que hayas finalizado tu elección, es el momento de crear un nuevo proyecto de AI Studio. Abre AI Studio y pulsa el botón Crear un proyecto ... Botón. Pulse Configurar la placa BME si desea registrar datos con una configuración específica.

2. Registrar los datos

Este proceso varía, dependiendo de si se utiliza el Placa de interconexión BME688 o Kit de desarrollo del sensor de gas BME688 de Bosch (más placa lanzadera). La placa shuttle es más fácil de usar y capturará los datos ocho veces más rápido que la placa breakout, pero es mucho más cara. En las siguientes secciones explicaré en detalle ambos métodos.

Nota: El sensor BME688 necesita algo de tiempo para adaptarse al entorno y quemarse. Asegúrate de dejarlo funcionando durante al menos 24 horas antes de registrar los datos de tu entrenamiento

Grabación de datos con la tarjeta BME688 Shuttle Board

BOSCH equipó la placa de la lanzadera con ocho sensores BME688, por lo que produce ocho veces más datos en el mismo tiempo. Todo el software está ya instalado y está listo para salir de la caja. Ver este video tutorial de Bosch para conocer el proceso de medición.

Si grabas muchos especímenes en una sola sesión, es posible que quieras anotar la secuencia de los especímenes para evitar confusiones. Siempre puedes recortar los datos en AI Studio más tarde, así que no tengas miedo de capturar muchos datos.

Registro de datos con la placa de circuito impreso BME688

Si está utilizando el Placa de interconexión BME688 Aún así te aconsejo que veas el Tutorial de Bosch porque proporciona información útil sobre el proceso de entrenamiento en AI Studio. Pero para registrar los datos de entrenamiento se requieren algunos pasos adicionales.

Nosotros, en pi3g ha creado una biblioteca de python para los sensores BME68X, que se puede actualizar con Bosch BSEC 2.0. Por lo tanto, es útil si tienes algo de experiencia en python, pero no es necesario.

Nota: Consulte las instrucciones de instalación y uso directamente en nuestro GitHub.

Comience por clonar nuestro bme68x-python-library. Esto puede hacerse ejecutando el siguiente comando en un terminal bash.

git clone https://github.com/pi3g/bme68x-python-library.git

Ahora necesitas construir e instalar el módulo python bme68x. El BSEC 2.0 es un software propietario, por lo que debes descargar la versión 2.0.6.1 directamente de Bosch y aceptar su licencia. Descomprímelo en la carpeta bme68x-python-library y procede con estos comandos.

cd ruta/para/bme68x-biblioteca-python
sudo python3 setup.py install

Ahora puede ejecutar el bmerawdata.py con la configuración por defecto.

cd herramientas/bmerawdata
python3 bmerawdata.py

El script mostrará los datos registrados después de cada medición. Finalice el script y guarde los datos en un archivo compatible con AI Studio pulsando Ctrl+c.

3. Entrenar el algoritmo

Importar datos

Independientemente de si se utiliza el Placa de interconexión BME688 o el Kit de desarrollo del sensor de gas BME688 de BoschEl siguiente paso es importar los datos a AI Studio. Pulse el botón Importar datos y seleccione su archivo .bmerawdata.

Diálogo de importación de datos

Su sesión necesita un nombre significativo. Es conveniente elegir una enumeración de los ejemplares.

Puede ver un gráfico de sus datos, por ejemplo del canal de datos de gas, como se muestra a continuación.

Canal de datos del gas

Si los datos proceden de la placa del transbordador, se puede alternar entre los datos de los ocho sensores. Cada una de las líneas de color representa un paso del perfil del calentador que se utilizó para capturar los datos.

Nota: En la mayoría de los casos, sólo debe utilizar el canal de datos de gas para el entrenamiento.

Ahora tenemos que etiquetar nuestros especímenes. Si grabaste los datos con la placa de lanzadera y utilizaste los botones de a bordo para marcar los especímenes, ya podrás ver una plantilla para cada uno de ellos. También puedes recortar los especímenes y crear otros nuevos (por ejemplo, si grabaste varios especímenes con la placa de la lanzadera).

Etiquetas de muestra y sellos de tiempo

Cuando haya terminado de editar la sesión, pulse la tecla Importar datos en la esquina inferior derecha del diálogo.

Una vez importados y etiquetados todos los especímenes, es el momento de crear y entrenar el algoritmo.

Crear el algoritmo

Seleccione Mis algoritmos en la parte superior y haga clic en + Nuevo Algoritmo . Dale a tu algoritmo un nombre que represente lo que se supone que debe hacer, en mi caso AirMeatCheese. A continuación, añadir las clases. Yo he llamado a mis clases AireNormal, Carne y Queso. Seleccione qué especímenes pertenecen a cada clase y elija un color para cada clase.

Nombre de su algoritmo
Nombre de su algoritmo
Edite sus clases
Edite sus clases

Para añadir o eliminar especímenes puede hacer clic en una de las clases. Este es un ejemplo de lo que el Carne clase parece.

Vista de la clase de carne
Vista de la clase de carne

Debajo de las clases puedes ver algunos datos adicionales sobre el algoritmo.

Datos adicionales del algoritmo
Datos adicionales del algoritmo

El balance de datos muestra la duración total de la medición de cada clase. Para garantizar el mejor rendimiento, la duración de la medición de cada clase debe ser igual. Si la duración de la medición de una de las clases es mucho mayor, podría experimentar un sesgo del algoritmo hacia esa clase. Observe también el botón de signo de interrogación que se encuentra delante de cada epígrafe. Púlselo para obtener información más detallada.

Nota: Asegúrate de consultar la documentación de BME688 AI Studio para obtener más información.

En los canales de datos puede seleccionar cuál de las cuatro salidas de los sensores quiere utilizar para su algoritmo. Recomiendo utilizar sólo el canal de datos de gas, ya que los otros canales dependen principalmente del entorno y no del espécimen. Una vez que hayas configurado todo, es el momento de entrenar.

Formación y exportación

Entrene su algoritmo
Entrene su algoritmo

Aquí puede seleccionar el método de entrenamiento, las rondas máximas y la división de datos. Si eres nuevo en el mundo de las redes neuronales, deberías dejar todo en la configuración por defecto. No obstante, intentaré explicar brevemente cada uno de esos ajustes.

El único método de entrenamiento disponible en el momento en que escribo esto es el optimizador ADAM. Se trata de una forma específica de encontrar un mínimo en la función de error (menos error significa predicciones más precisas). Se pueden seleccionar diferentes tamaños de lote para mejorar la velocidad y la estabilidad del entrenamiento.

Aumentar el número máximo de rondas de entrenamiento es otra forma de mejorar el rendimiento del algoritmo. En cada ronda (a menudo denominada época), AI Studio alimenta todo el conjunto de datos de entrenamiento a través de la red neuronal. Esto significa que un mayor número de rondas máximas aumentará el tiempo de entrenamiento del algoritmo. La mayoría de las veces, AI Studio detectará si se alcanza un mínimo y terminará el entrenamiento antes de que se alcancen las rondas máximas. Esto reduce el tiempo de entrenamiento y evita el sobreajuste.

La sobreadaptación significa que la red neuronal se ha ajustado demasiado a los datos de entrenamiento. Si el algoritmo obtiene una precisión muy alta en el entrenamiento, pero su rendimiento es pobre en las pruebas de la vida real, es posible que desee disminuir las rondas máximas de entrenamiento.

La configuración de la división de los datos le permite seleccionar qué parte de los datos registrados se utiliza para el entrenamiento y qué parte se utiliza para la prueba. Debe evitar utilizar más de un tercio de los datos para las pruebas. Como su nombre indica, el algoritmo sólo utilizará los datos de entrenamiento para la formación. Una vez finalizado el entrenamiento, AI Studio evaluará el algoritmo utilizando los datos de prueba, que nunca ha visto antes.

Pulse Entrenar la red neuronal para iniciar el entrenamiento. Verá el tiempo de entrenamiento restante estimado y el gráfico de líneas de la precisión y la pérdida.

Progreso de la formación
Progreso de la formación

Con cada epoch la Precisión y la Precisión de Validación deberían mejorar, mientras que la Pérdida y la Pérdida de Validación deberían disminuir. Espere a que termine el entrenamiento.

Una vez terminado el entrenamiento, compruebe la matriz de confusión. Contiene información importante sobre los resultados del entrenamiento. La estadística más interesante es la precisión, pero si los datos de entrenamiento están distribuidos de forma desigual, la puntuación F1 podría ser una métrica mejor.

Matriz de confusión y resultados del entrenamiento
Matriz de confusión y resultados del entrenamiento

Rara vez se conseguirá una precisión superior a 90%, por lo que si la precisión es superior a 80% se debe exportar el algoritmo para probarlo. Detectaremos los olores utilizando nuestro PiCockpit interfaz web. Asegúrese de exportar el algoritmo para la versión 2.0.6.1 de BSEC ya que PiCockpit sólo es compatible con esta versión hasta ahora.

Nota: En la mayoría de los casos, la formación terminará antes de alcanzar la duración estimada.

4. Detectar olores

Para detectar los olores basta con instalar el PiCockpit y conéctalo a tu cuenta. Si no tiene PiCockpit pero sólo tienes que registrarte gratuitamente y seguir las instrucciones que allí se indican. Nuestra aplicación Digital Nose le permite cargar su algoritmo entrenado y ver las predicciones en vivo a través de la interfaz web. Consulte la Ayuda para la nariz digital para obtener una explicación completa sobre el uso de la aplicación.

Otra forma de detectar los olores es utilizando nuestro BME68X Extensión Python. Esto requiere algo de codificación en python, pero ofrece más control y le permite crear sus propias aplicaciones utilizando su algoritmo. Consulte el README.mdEl Documentación.md y el ejemplos para aprender a instalar y utilizar la extensión.

Así que ahí lo tienes. Ahora debería ser capaz de registrar datos, entrenar su algoritmo y detectar olores. Por favor, hazme saber si has encontrado esta guía útil o si has experimentado algún problema al seguir esta guía.

Póngase en contacto conmigo en nathan@pi3g.com

8 Comentarios

  1. Siroj42 el marzo 30, 2022 a las 8:14 am

    Para mí, el entrenamiento del algoritmo no funciona. En su lugar, el software muestra el error "El algoritmo no pudo ser entrenado. Parece que faltan datos de entrenamiento o de prueba". Sin embargo, he capturado alrededor de una hora de datos para cada una de mis clases utilizando la placa de ruptura BME688. ¿Tienes alguna idea de lo que podría estar haciendo mal?

    • Nathan Busler el marzo 31, 2022 a las 10:09 am

      Parece que el archivo .bmerawdata podría estar dañado. Podrías intentar echar un vistazo al archivo, para ver si hay algún valor malo contenido. Está en formato json

    • tomm el abril 11, 2022 a las 3:13 pm

      ¿has encontrado una solución para esto?

  2. Thomas el abril 10, 2022 a las 4:51 pm

    Hola Nathan
    También acabo de probar tu código y me da el mismo error al hacer un algoritmo.
    " Parece que faltan datos de entrenamiento o de prueba".

    ¿hay algún problema en su código maby?

    • Nathan Busler el abril 14, 2022 a las 1:00 pm

      Hola Thomas
      Todavía no he podido recrear el error.
      ¿Qué versión de AI Studio utilizas? El script fue probado con la versión 1.6.0 de AI Studio

      • Thomas el abril 14, 2022 a las 9:11 pm

        Hola Nathan
        He utilizado la versión más reciente (1.6.0) y te he enviado un correo electrónico al respecto, ¿quieres que te envíe los archivos de muestra?
        He intentado muchas pruebas pero el mismo error cada vez 🙁

      • Thomas el abril 17, 2022 a las 6:28 pm

        Sí, también estoy usando la versión 1.6.0. Por favor, compruebe estos archivos de recogida de datos, uno de ellos es el de los humos y el otro es el del aire normal. https://we.tl/t-PwfkYXjnGP

Deja un comentario