Historia
La agricultura es uno de los pilares de la civilización humana, pero su industrialización ha permitido que las plagas se propaguen como nunca antes. Las plagas destruyen nuestros cultivos de muchas maneras: Comiendo hojas de plantas de cultivo Succionando jugos de plantas Perforando hojas, raíces y tallos Propagando patógenos de plantas Alimentando fibras naturales Estas acciones dañan la madera (nuestro material de construcción más esencial), contaminan los cultivos almacenados y aceleran la descomposición de las plantas. Como resultado, alrededor del 40% de los cultivos alimentarios caen cada año a causa de plagas y enfermedades causadas por plagas. Este desperdicio contribuye a la escasez de alimentos y perjudica sobre todo a las comunidades rurales pobres. Por supuesto, también causan daño directo a los humanos a través de mordeduras, picaduras, enfermedades y molestias generales.
Nuestra solución
En este proyecto, vamos a utilizar nuestro modelo de clasificación de audio para clasificar plagas o insectos voladores. Reconoce tres tipos de insectos o plagas según su sonido, como mosquitos, abejas y moscas. A lo largo de este proyecto, describiré cómo se utilizaron Edge Impulse y Nordic Thing:53 para lograr este objetivo. Edge Impulse https://www.edgeimpulse.com/ es una plataforma web de software como servicio (SaaS) que permite a los desarrolladores implementar modelos de ML potentes en dispositivos de borde sin poseer un conocimiento profundo de programación o conceptos de IA y ML.
A continuación, se muestra un adelanto de lo que está por suceder:
- Recopilación de sonido de audio para el entrenamiento
- Carga del conjunto de datos a Edge Impulse para entrenar el modelo.
- Extracción de características
- Entrenamiento del modelo
- Implementación en Nordic Thingy:53
- Evaluación y prueba de datos en tiempo real mediante la interfaz de aplicaciones
¡Comencemos!
Entrenar el modelo en Edge Impulse
Edge Impulse es una herramienta basada en la web que nos ayuda a crear modelos de IA de forma rápida y sencilla que luego se pueden utilizar en todo tipo de proyectos. Podemos crear modelos de aprendizaje automático en unos pocos pasos sencillos y los usuarios pueden crear clasificadores de datos personalizados con nada más que un navegador web. Al igual que con cualquier tarea de aprendizaje profundo o aprendizaje automático, la primera tarea más importante es preparar el conjunto de datos. Preparamos el conjunto de datos utilizando Nordic Thingy:53 (ya que tiene un micrófono para capturar datos de audio). Capturar el sonido real de los mosquitos es demasiado complicado. En este proyecto, utilizamos sonido disponible gratuitamente de fuentes de Internet, YouTube, etc. como nuestro conjunto de datos. Se utiliza una computadora portátil para reproducir esos sonidos y Nordic Thingy:53 junto con nRF Edge Impulse (aplicación móvil) se utilizan para capturar y enviar datos a la plataforma Edge Impulse (plataforma web).
La cuenta Edge Impulse es obligatoria para este proyecto. Si no tiene ninguna, simplemente cree una.
Ahora, vamos a utilizar la aplicación móvil nRF Edge Impulse para recopilar y transferir datos a Edge Impulse.
Abra las aplicaciones móviles e inicie sesión en Edge Impulse. Cree un nuevo proyecto y póngale un nombre.
Encienda el Nordic Thingy :53 y conéctelo con su aplicación móvil a través de Bluetooth. Navegue hasta la pestaña de datos, haga clic en registrar nuevos datos, seleccione la categoría como entrenamiento y etiquétela como abejas, moscas o mosquitos y elija el sensor como micrófono
- Haga clic en el botón Registrar nuevos datos para recopilar datos de muestra.
- Necesitamos repetir este proceso varias veces para recopilar varios datos de muestra.
Los datos se cargan automáticamente en Edge Impulse (el teléfono móvil debe estar conectado a Internet). A continuación se muestra un breve video tutorial.
Reenvío de datos al impulso de borde desde Nordic Thingy: 53
El conjunto de datos tiene tres (03) clases: abejas, mosquitos y moscas. Se vería así:
Recopilamos una cantidad muy pequeña de datos de cada clase, lo que realmente afecta el resultado. Aquí, se toman alrededor de 13 muestras de cada clase para el entrenamiento.
Después de cargar los datos de audio para cada clase, pasaremos al proceso de división. Cualquier procedimiento de entrenamiento de aprendizaje automático implica dividir primero los datos aleatoriamente en dos conjuntos. Puede hacerlo utilizando la función Realizar división de entrenamiento/prueba disponible en Edge Impulse. Navegue hasta la sección Panel de control y seleccione Realizar división de entrenamiento/prueba. Esto dividirá automáticamente sus datos entre una clase de entrenamiento (80 %) y una clase de prueba (20 %).
Una vez que haya configurado todas sus clases y esté satisfecho con sus conjuntos de datos, es hora de entrenar el modelo. Navegue hasta Impulse Design en el menú de navegación izquierdo.
Seleccione Agregar un bloque de procesamiento y agregue Audio (MFCC). MFCC significa Mel Frequency Cepstral Coefficients (Coeficientes cepstrales de frecuencia Mel). Por lo tanto, intentará convertir el audio en algún tipo de características basadas en características de tiempo y frecuencia que nos ayudarán a realizar la clasificación. Luego, seleccione Agregar bloque de aprendizaje y agregue Clasificación (Keras). Haga clic en Guardar impulso.
Luego, navegue hasta MFCC. La extracción de características es el proceso de descubrir un valor o un grupo de valores que se pueden usar para identificar entidades como objetos, personajes, personas, etc. MFCC se usa a menudo para tareas de reconocimiento de voz.
Haga clic en Guardar parámetros y, por último, presione Generar características.
A continuación, haga clic en Clasificador NN en el menú de navegación. Entrenaremos un modelo para 500 épocas y una tasa de aprendizaje de 0,005. Haga clic en el botón Iniciar entrenamiento. El entrenamiento del modelo puede llevar un tiempo. Mientras el entrenamiento está en curso, verá una barra de progreso. El entrenamiento debería llevar alrededor de 5 a 6 minutos o menos si se utilizan las 500 épocas.
A continuación, se incluye un breve video para una mejor comprensión.
-Proceso de entrenamiento de impulso de borde en detalle-
Cuando se complete el proceso de entrenamiento deberías tener un resultado como el que se muestra en la siguiente imagen:
Los datos del entrenamiento se pasaron a través de la primera capa convolucional 1D. El vector unidimensional es fácil de usar para fines de clasificación y, por lo tanto, se utilizó para aplanar los datos. La capa de exclusión se utilizó para reducir la posibilidad de sobreajuste.
Obtenemos una precisión de validación del 64,0 %. Aumentar la cantidad de épocas de entrenamiento y el conjunto de datos puede aumentar potencialmente esta puntuación de precisión.
Una vez completado el entrenamiento, puede transferir el modelo a Nordic Thingy:53 mediante las aplicaciones móviles nRF edge impulse.
Implementación del modelo entrenado en Nordic Thingy53
El video muestra cómo transferimos el modelo de aprendizaje automático a la placa Nordic Thingy53 usando las aplicaciones móviles nRF Edge Impulse.
Implementación del modelo ML y prueba del modelo mediante la aplicación móvil nRF Edge Impulse
Escenario de caso de uso
El sistema de detección de plagas activa el aerosol de control de plagas o el zumbador cuando detecta alguna plaga o insecto.
Trabajo futuro
Planeamos integrar múltiples modelos de aprendizaje automático para monitorear la salud de las plantas de los jardines de las azoteas.
Referencia
- https://docs.edgeimpulse.com/docs/
- https://www.nordicsemi.com/Products/Development-hardware/Nordic-Thingy-53
- https://www.agrilinks.org/post/reducing-health-risks-pests-agriculture
Circuito
Código
{
«format-version»: 0,
«time»: 1666502222,
«files»: [
{
«type»: «application»,
«board»: «thingy53_nrf5340_cpuapp»,
«soc»: «nRF5340_CPUAPP_QKAA»,
«load_address»: 66048,
«image_index»: «0»,
«slot_index_primary»: «1»,
«slot_index_secondary»: «2»,
«version_MCUBOOT»: «1.0.0»,
«size»: 551080,
«file»: «app_update.bin»,
«modtime»: 1666502222
},
{
«type»: «application»,
«board»: «thingy53_nrf5340_cpunet»,
«soc»: «nRF5340_CPUNET_QKAA»,
«image_index»: «1»,
«slot_index_primary»: «3»,
«slot_index_secondary»: «4»,
«load_address»: 16812032,
«version»: «1»,
«size»: 171348,
«file»: «net_core_app_update.bin»,
«modtime»: 1666360125
}
],
«name»: «firmware-thingy53»,
«firmware»: {
«zephyr»: {
«revision»: «b05b8ad63acf30e08a570ce553831a06db27a2e0-dirty»
},
«nrf»: {
«revision»: «126fad0e2e5cbe5b965a45efc6a5e31f40d6020c-dirty»
}
}
}
Sé el primero en comentar