Taula de continguts:

Detector de tos de butxaca: 7 passos
Detector de tos de butxaca: 7 passos

Vídeo: Detector de tos de butxaca: 7 passos

Vídeo: Detector de tos de butxaca: 7 passos
Vídeo: Беслан. Помни / Beslan. Remember (english & español subs) 2024, De novembre
Anonim
Detector de tos de butxaca
Detector de tos de butxaca

COVID19 és realment una pandèmia històrica que afecta molt malament a tot el món i la gent està construint molts nous dispositius per lluitar-hi. També hem construït una màquina de sanejament automàtic i una pistola tèrmica per al cribratge de temperatura sense contacte. Avui construirem un dispositiu més per ajudar a combatre amb el coronavirus. Es tracta d’un sistema de detecció de tos, que pot distingir entre soroll i so de tos i pot ajudar a trobar sospites de Corona. Utilitzarà tècniques d’aprenentatge automàtic per a això.

En aquest tutorial, crearem un sistema de detecció de tos mitjançant Arduino 33 BLE Sense i Edge Impulse Studio. Pot diferenciar entre el soroll de fons normal i la tos en àudio en temps real. Hem utilitzat Edge Impulse Studio per formar un conjunt de dades de mostres de tos i soroll de fons i vam crear un model TInyML altament optimitzat, que pugui detectar un so de tos en temps real.

Subministraments

Maquinari

  • Arduino 33 BLE Sense
  • LEDJumper
  • Filferros

Programari

  • Edge Impulse Studio
  • IDE Arduino

Pas 1: diagrama del circuit

Esquema de connexions
Esquema de connexions
Esquema de connexions
Esquema de connexions

Es mostra el diagrama de circuits per a la detecció de la tos mitjançant Arduino 33 BLE Sense. La peça Fritzing per a Arduino 33 BLE no estava disponible, així que vaig fer servir Arduino Nano, ja que tots dos tenen el mateix pin-out.

El cable positiu del LED està connectat al pin digital 4 d'Arduino 33 BLE sense i el cable negatiu està connectat al pin GND d'Arduino.

Pas 2: creació del conjunt de dades per a la màquina de detecció de tos

Creació del conjunt de dades per a la màquina de detecció de tos
Creació del conjunt de dades per a la màquina de detecció de tos

Com es va esmentar anteriorment, utilitzem Edge Impulse Studio per formar el nostre model de detecció de tos. Per a això, hem de recopilar un conjunt de dades que conté les mostres de dades que ens agradaria poder reconèixer al nostre Arduino. Com que l'objectiu és detectar la tos, haureu de recollir algunes mostres d'aquesta i algunes altres mostres per obtenir sorolls, de manera que pugui distingir entre tos i altres sorolls. Crearem un conjunt de dades amb dues classes "tos" i "soroll". Per crear un conjunt de dades, creeu un compte Edge Impulse, verifiqueu-lo i, a continuació, inicieu un projecte nou. Podeu carregar les mostres mitjançant el mòbil, la placa Arduino o bé podeu importar un conjunt de dades al vostre compte d’impulsos Edge. La manera més senzilla de carregar les mostres al vostre compte és mitjançant el telèfon mòbil. Per a això, heu de connectar el vostre mòbil amb Edge Impulse. Per connectar el telèfon mòbil, feu clic a "Dispositius" i, a continuació, feu clic a "Connecta un dispositiu nou".

Pas 3: connecteu-vos al telèfon mòbil

Connecteu-vos al telèfon mòbil
Connecteu-vos al telèfon mòbil

Ara, a la finestra següent, feu clic a "Utilitza el telèfon mòbil" i apareixerà un codi QR. Escaneja el codi QR amb el telèfon mòbil mitjançant Google Lens o una altra aplicació d’escaneig de codis QR.

Això connectarà el telèfon amb l’estudi Edge Impulse.

Amb el telèfon connectat a Edge Impulse Studio, ara podeu carregar les vostres mostres. Per carregar les mostres, feu clic a "Adquisició de dades". Ara, a la pàgina d’adquisició de dades, introduïu el nom de l’etiqueta, seleccioneu el micròfon com a sensor i introduïu la longitud de la mostra. Feu clic a "Inicia el mostreig" per iniciar el mostreig d'una mostra de 40 segons. En lloc d’obligar-vos a tossir, podeu utilitzar mostres de tos en línia de diferents longituds. Registre un total de 10 a 12 mostres de tos de diferents longituds.

Pas 4:

Imatge
Imatge
Imatge
Imatge

Després de penjar les mostres de tos, ara configureu l’etiqueta com a "soroll" i recopileu altres 10 a 12 mostres de soroll.

Aquestes mostres són per a la formació del mòdul; en els passos següents, recollirem les dades de prova. Les dades de les proves haurien de ser com a mínim el 30% de les dades de formació, de manera que recopileu les 3 mostres de "soroll" i de 4 a 5 mostres de "tos". En lloc de recopilar les vostres dades, podeu importar el nostre conjunt de dades al vostre compte Edge Impulse mitjançant Edge Impulse CLI Uploader. Per instal·lar CLI Uploader, primer, descarregueu i instal·leu Node.js al vostre ordinador portàtil. Després d'això, obriu el símbol del sistema i introduïu l'ordre següent:

npm instal·lar -g edge-impulse-cli

Ara baixeu el conjunt de dades (Enllaç de conjunt de dades) i extraieu el fitxer a la carpeta del projecte. Obriu el símbol del sistema i aneu a la ubicació del conjunt de dades i executeu les ordres següents:

edge-impuls-uploader --cleanedge-impulse-uploader - formació en formació de categoria / *. json

edge-impulse-uploader --category training training / *. cbor

edge-impulse-uploader - proves de proves de categoria / *. json edge-impulse-uploader - proves de proves de categories / *. cbor

Pas 5: entrenar el model i ajustar el codi

Com que el conjunt de dades està a punt, ara crearem un impuls per a les dades. Per a això, aneu a la pàgina "Crea un impuls".

Ara, a la pàgina "Crea impuls", feu clic a "Afegeix un bloc de processament". A la finestra següent, seleccioneu el bloc Àudio (MFCC). Després, feu clic a "Afegeix un bloc d'aprenentatge" i seleccioneu el bloc Neural Network (Keras). A continuació, feu clic a "Desa l'impuls".

Al pas següent, aneu a la pàgina MFCC i feu clic a "Genera funcions". Generarà blocs MFCC per a totes les nostres finestres d’àudio.

Després, aneu a la pàgina "Classificador NN" i feu clic als tres punts de l'extrem superior dret de la "Configuració de la xarxa neuronal" i seleccioneu "Canvia al mode Keras (expert)".

Substituïu l'original pel codi següent i canvieu la "Classificació mínima de confiança" a "0,70". A continuació, feu clic al botó "Comença a entrenar". Començarà a entrenar el vostre model.

importa tensorflow com tffrom tensorflow.keras.models importa Seqüencial de tensorflow.keras.layers importen Dense, InputLayer, Dropout, Flatten, Reshape, BatchNormalization, Conv2D, MaxPooling2D, AveragePooling2D des tensorflow.keras.optimizers importen Adam de tensorflow.keras.constraints 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, activation = 'relu', padding = 'same', kernel_constraint = MaxNorm (3))) model.add (AveragePooling2D (pool_size = 2, padding = 'same')) model.add (Conv2D (5, kernel_size = 5, activation = 'relu', padding = 'same', kernel_constraint = MaxNorm (3))) model.add (AveragePooling2D (pool_size = 2, padding = 'same')) model.add (Flatten ()) model.add (Dense (classes, activation = 'softmax', name = 'y_pred', kernel_constraint = MaxNorm (3))) # això controla la taxa d'aprenentatge opt = Adam (lr = 0,005, beta_ 1 = 0,9, beta_2 = 0,999) # entrenar la xarxa neuronal model.compile (pèrdua = 'categoric_crossentropy', optimitzador = opt, mètriques = ['precisió']) model.fit (X_train, Y_train, batch_size = 32, èpoques = 9, validation_data = (X_test, Y_test), detallada = 2)

Pas 6:

Després d'entrenar el model, mostrarà el rendiment de l'entrenament. Per a mi, la precisió va ser del 96,5% i la pèrdua del 0,10, cosa que és bo procedir.

Ara que el nostre model de detecció de la tos està a punt, el desplegarem com a biblioteca Arduino. Abans de descarregar el model com a biblioteca, podeu provar el rendiment anant a la pàgina "Classificació en directe". Aneu a la pàgina "Desplegament" i seleccioneu "Biblioteca Arduino". Ara desplaceu-vos cap avall i feu clic a "Construeix" per iniciar el procés. Això crearà una biblioteca Arduino per al vostre projecte.

Ara afegiu la biblioteca al vostre IDE Arduino. Per a això, obriu l'IDE Arduino i feu clic a Sketch> Include Library> Add. ZIP library. A continuació, carregueu un exemple anant a Fitxer> Exemples> Nom del vostre projecte: Edge Impulse> nano_ble33_sense_microphone. Farem alguns canvis al codi perquè puguem fer sonar una alerta quan l’Arduino detecti la tos. Per a això, un brunzidor s’interface amb Arduino i, sempre que detecta la tos, el LED parpellejarà tres vegades. Els canvis es fan a les funcions void loop () on s’imprimeixen els valors de soroll i tos. Al codi original, imprimeix les etiquetes i els seus valors junts. for (size_t ix = 0; ix <EI_CLASSIFIER_LABEL_COUNT; ix ++) {ei_printf ("% s:%.5f / n", result.classification [ix].label, result.classification [ix].value); } Estalviarem tant els valors de soroll com de tos en diferents variables i compararem els valors de soroll. Si el valor del soroll és inferior a 0,50, significa que el valor de la tos és superior a 0,50 i produirà el so. Substituïu el codi original de loop () per aquest: per a (size_t ix = 1; ix <EI_CLASSIFIER_LABEL_COUNT; ix ++) {Serial.print (result.classification [ix].value); float Data = result.classification [ix].value; if (Dades <0,50) {Serial.print ("Tos detectada"); alarm (); }} Després de fer els canvis, pengeu el codi al vostre Arduino. Obriu el monitor sèrie a 115200 bauds.

Així doncs, es pot construir una màquina de detecció de tos, no és un mètode molt eficaç per trobar cap sospitós de COVID19, però pot funcionar molt bé en una zona concorreguda.

Pas 7: Codi

Trobeu el fitxer adjunt, I si us ha agradat, no oblideu votar-me al concurs següent.

Recomanat: