Tabla de contenido:

Detector de tos de bolsillo: 7 pasos
Detector de tos de bolsillo: 7 pasos

Video: Detector de tos de bolsillo: 7 pasos

Video: Detector de tos de bolsillo: 7 pasos
Video: Esos cambios de actitud repentinos 😂 #jcandsondra #humor #gringa 2024, Noviembre
Anonim
Detector de tos de bolsillo
Detector de tos de bolsillo

COVID19 es realmente una pandemia histórica que afecta mucho al mundo entero y la gente está construyendo muchos dispositivos nuevos para combatirla. También hemos construido una máquina de desinfección automática y una pistola térmica para la detección de temperatura sin contacto. Hoy construiremos un dispositivo más para ayudar a combatir el coronavirus. Es un sistema de detección de tos, que puede distinguir entre el ruido y el sonido de la tos y puede ayudar a encontrar a Corona sospechoso. Utilizará técnicas de aprendizaje automático para eso.

En este tutorial, vamos a construir un sistema de detección de tos usando Arduino 33 BLE Sense y Edge Impulse Studio. Puede diferenciar entre el ruido de fondo normal y la tos en audio en tiempo real. Usamos Edge Impulse Studio para entrenar un conjunto de datos de muestras de tos y ruido de fondo y construir un modelo TInyML altamente optimizado, que puede detectar un sonido de tos en tiempo real.

Suministros

Hardware

  • Arduino 33 BLE Sense
  • LEDJumper
  • Alambres

Software

  • Estudio Edge Impulse
  • IDE de Arduino

Paso 1: diagrama de circuito

Diagrama de circuito
Diagrama de circuito
Diagrama de circuito
Diagrama de circuito

El diagrama de circuito para la detección de tos con Arduino 33 BLE Sense se muestra arriba. La parte Fritzing para Arduino 33 BLE no estaba disponible, así que usé Arduino Nano ya que ambos tienen el mismo pin-out.

El cable positivo del LED está conectado al pin digital 4 de Arduino 33 BLE sense y el cable negativo está conectado al pin GND de Arduino.

Paso 2: Creación del conjunto de datos para la máquina de detección de tos

Creación del conjunto de datos para la máquina de detección de tos
Creación del conjunto de datos para la máquina de detección de tos

Como se mencionó anteriormente, estamos usando Edge Impulse Studio para entrenar nuestro modelo de detección de tos. Para eso, tenemos que recopilar un conjunto de datos que tenga las muestras de datos que nos gustaría poder reconocer en nuestro Arduino. Dado que el objetivo es detectar la tos, deberá recolectar algunas muestras de eso y algunas otras muestras de ruido, para que pueda distinguir entre la tos y otros ruidos. Crearemos un conjunto de datos con dos clases "tos" y "ruido". Para crear un conjunto de datos, cree una cuenta de Edge Impulse, verifique su cuenta y luego comience un nuevo proyecto. Puede cargar las muestras utilizando su teléfono móvil, su placa Arduino o puede importar un conjunto de datos a su cuenta de impulso de borde. La forma más sencilla de cargar las muestras en su cuenta es utilizando su teléfono móvil. Para eso, debes conectar tu móvil con Edge Impulse. Para conectar su teléfono móvil, haga clic en "Dispositivos" y luego haga clic en "Conectar un nuevo dispositivo".

Paso 3: conéctese al teléfono móvil

Conectarse al teléfono móvil
Conectarse al teléfono móvil

Ahora, en la siguiente ventana, haga clic en "Use su teléfono móvil" y aparecerá un código QR. Escanee el código QR con su teléfono móvil usando Google Lens u otra aplicación de escáner de código QR.

Esto conectará su teléfono con Edge Impulse Studio.

Con su teléfono conectado con Edge Impulse Studio, ahora puede cargar sus muestras. Para cargar las muestras, haga clic en "Adquisición de datos". Ahora, en la página de adquisición de datos, ingrese el nombre de la etiqueta, seleccione el micrófono como sensor e ingrese la longitud de la muestra. Haga clic en "Iniciar muestreo" para comenzar a muestrear una muestra de 40 segundos. En lugar de obligarse a toser, puede utilizar muestras de tos en línea de diferentes longitudes. Registre un total de 10 a 12 muestras de tos de diferentes longitudes.

Paso 4:

Imagen
Imagen
Imagen
Imagen

Después de cargar las muestras de tos, ahora establezca la etiqueta en "ruido" y recopile otras 10 a 12 muestras de ruido.

Estas muestras son para entrenar el módulo, en los siguientes pasos, recopilaremos los datos de prueba. Los datos de prueba deben ser al menos el 30% de los datos de entrenamiento, así que recopile las 3 muestras de 'ruido' y de 4 a 5 muestras de 'tos'. En lugar de recopilar sus datos, puede importar nuestro conjunto de datos a su cuenta de Edge Impulse utilizando Edge Impulse CLI Uploader. Para instalar CLI Uploader, primero, descargue e instale Node.js en su computadora portátil. Después de eso, abra el símbolo del sistema e ingrese el siguiente comando:

npm install -g edge-impulse-cli

Ahora descargue el conjunto de datos (Enlace del conjunto de datos) y extraiga el archivo en la carpeta de su proyecto. Abra el símbolo del sistema, navegue hasta la ubicación del conjunto de datos y ejecute los siguientes comandos:

edge-impulse-uploader --cleanedge-impulse-uploader --category training training / *. json

Edge-Impulse-Uploader --Category Training Training / *. cbor

edge-impulse-uploader - prueba de categoría prueba / *. json edge-impulse-uploader - prueba de categoría prueba / *. cbor

Paso 5: entrenar el modelo y ajustar el código

Cuando el conjunto de datos esté listo, ahora crearemos un impulso para los datos. Para eso, vaya a la página "Crear impulso".

Ahora, en la página "Crear impulso", haga clic en "Agregar un bloque de procesamiento". En la siguiente ventana, seleccione el bloque Audio (MFCC). Después de eso, haga clic en "Agregar un bloque de aprendizaje" y seleccione el bloque Red neuronal (Keras). Luego haga clic en "Guardar impulso".

En el siguiente paso, vaya a la página de MFCC y luego haga clic en "Generar funciones". Generará bloques MFCC para todas nuestras ventanas de audio.

Después de eso, vaya a la página "Clasificador NN" y haga clic en los tres puntos en la esquina superior derecha de la "Configuración de red neuronal" y seleccione "Cambiar al modo Keras (experto)".

Reemplace el original con el siguiente código y cambie el "Índice de confianza mínimo" a "0.70". Luego haga clic en el botón "Comenzar a entrenar". Comenzará a entrenar su modelo.

importar tensorflow como tffrom tensorflow.keras.models import Sequential de tensorflow.keras.layers import Dense, InputLayer, Dropout, Flatten, Reshape, BatchNormalization, Conv2D, MaxPooling2D, AveragePooling2D de tensorflow.keras.optimizers importras Adam de tensorflow.keras.optimizers importras de tensorflow.keras MaxNorm # model architecture model = Sequential () model.add (InputLayer (input_shape = (X_train.shape [1],), name = 'x_input')) model.add (Reshape ((int (X_train.shape [1] / 13), 13, 1), input_shape = (X_train.shape [1],))) model.add (Conv2D (10, kernel_size = 5, activación = 'relu', padding = 'same', kernel_constraint = MaxNorm (3)))) model.add (AveragePooling2D (pool_size = 2, padding = 'same')) model.add (Conv2D (5, kernel_size = 5, activación = 'relu', padding = 'same', kernel_constraint = MaxNorm (3))) model.add (AveragePooling2D (pool_size = 2, padding = 'same')) model.add (Flatten ()) model.add (Dense (clases, activación = 'softmax', nombre = 'y_pred', kernel_constraint = MaxNorm (3))) # esto controla la tasa de aprendizaje opt = Adam (lr = 0.005, beta_ 1 = 0.9, beta_2 = 0.999) # entrenar el modelo de red neuronal., validation_data = (X_test, Y_test), detallado = 2)

Paso 6:

Después de entrenar el modelo, mostrará el rendimiento del entrenamiento. Para mí, la precisión fue del 96,5% y la pérdida fue de 0,10, por lo que es bueno continuar.

Ahora que nuestro modelo de detección de tos esté listo, implementaremos este modelo como biblioteca Arduino. Antes de descargar el modelo como biblioteca, puede probar el rendimiento en la página "Clasificación en vivo". Vaya a la página "Implementación" y seleccione "Biblioteca Arduino". Ahora desplácese hacia abajo y haga clic en "Crear" para iniciar el proceso. Esto creará una biblioteca Arduino para su proyecto.

Ahora agregue la biblioteca en su Arduino IDE. Para eso, abra el IDE de Arduino y luego haga clic en Sketch> Incluir biblioteca> Agregar biblioteca ZIP. Luego, cargue un ejemplo yendo a Archivo> Ejemplos> Nombre de su proyecto - Edge Impulse> nano_ble33_sense_microphone. Realizaremos algunos cambios en el código para que podamos hacer un sonido de alerta cuando el Arduino detecte tos. Para eso, un zumbador se interconecta con Arduino y cada vez que detecta tos, el LED parpadeará tres veces. Los cambios se realizan en las funciones void loop () donde imprime los valores de ruido y tos. En el código original, imprime las etiquetas y sus valores juntos. for (size_t ix = 0; ix <EI_CLASSIFIER_LABEL_COUNT; ix ++) {ei_printf ("% s:%.5f / n", result.classification [ix].label, result.classification [ix].value); } Vamos a guardar los valores de ruido y tos en diferentes variables y comparar los valores de ruido. Si el valor del ruido desciende por debajo de 0,50, significa que el valor de la tos es superior a 0,50 y emitirá el sonido. Reemplace el código original for loop () con esto: for (size_t ix = 1; ix <EI_CLASSIFIER_LABEL_COUNT; ix ++) {Serial.print (result.classification [ix].value); Float Data = result.classification [ix].value; if (Datos <0.50) {Serial.print ("Detectado tos"); alarma(); }} Después de realizar los cambios, cargue el código en su Arduino. Abra el monitor en serie a 115200 baudios.

Entonces, así es como se puede construir una máquina de detección de tos, no es un método muy efectivo para encontrar a un sospechoso de COVID19, pero puede funcionar bien en un área concurrida.

Paso 7: Código

Por favor, encontrar el archivo adjunto, Y si te ha gustado no olvides votarme en el concurso de abajo.

Recomendado: