Cuprins:

Detector de tuse de buzunar: 7 pași
Detector de tuse de buzunar: 7 pași

Video: Detector de tuse de buzunar: 7 pași

Video: Detector de tuse de buzunar: 7 pași
Video: Iti place soricul? 🐷 2024, Noiembrie
Anonim
Detector de tuse de buzunar
Detector de tuse de buzunar

COVID19 este într-adevăr o pandemie istorică care afectează întreaga lume foarte rău și oamenii construiesc o mulțime de dispozitive noi pentru a lupta cu ea. De asemenea, am construit o mașină de igienizare automată și un pistol termic pentru screeningul temperaturii fără contact. Astăzi vom construi încă un dispozitiv pentru a ajuta la lupta cu Coronavirus. Este un sistem de detectare a tusei, care poate distinge între zgomot și sunetul tusei și poate ajuta la găsirea suspectului Corona. Pentru aceasta, va folosi tehnici de învățare automată.

În acest tutorial, vom construi un sistem de detectare a tusei folosind Arduino 33 BLE Sense și Edge Impulse Studio. Poate diferenția între zgomotul normal de fundal și tusea în timp real. Am folosit Edge Impulse Studio pentru a instrui un set de date de tuse și probe de zgomot de fundal și pentru a construi un model TInyML extrem de optimizat, care poate detecta un sunet de tuse în timp real.

Provizii

Hardware

  • Arduino 33 BLE Sense
  • LEDJumper
  • Fire

Software

  • Edge Impulse Studio
  • IDE Arduino

Pasul 1: Diagrama circuitului

Diagrama circuitului
Diagrama circuitului
Diagrama circuitului
Diagrama circuitului

Diagrama circuitului pentru detectarea tusei folosind Arduino 33 BLE Sense este prezentată mai sus. Partea Fritzing pentru Arduino 33 BLE nu era disponibilă, așa că am folosit Arduino Nano deoarece ambele au același pin-out.

Conductorul pozitiv al LED-ului este conectat la pinul digital 4 al Arduino 33 BLE sense iar cablul negativ este conectat la pinul GND al Arduino.

Pasul 2: Crearea setului de date pentru aparatul de detectare a tusei

Crearea setului de date pentru aparatul de detectare a tusei
Crearea setului de date pentru aparatul de detectare a tusei

Așa cum am menționat anterior, folosim Edge Impulse Studio pentru a ne antrena modelul de detectare a tusei. Pentru aceasta, trebuie să colectăm un set de date care conține mostre de date pe care am dori să le putem recunoaște pe Arduino. Deoarece scopul este detectarea tusei, va trebui să colectați câteva mostre din aceasta și alte probe pentru zgomot, astfel încât să poată distinge între tuse și alte zgomote. Vom crea un set de date cu două clase „tuse” și „zgomot”. Pentru a crea un set de date, creați un cont Edge Impulse, verificați-vă contul și apoi începeți un nou proiect. Puteți încărca eșantioanele folosind telefonul mobil, placa Arduino sau puteți importa un set de date în contul dvs. de impuls de margine. Cel mai simplu mod de a încărca probele în contul dvs. este prin utilizarea telefonului mobil. Pentru asta, trebuie să vă conectați telefonul mobil cu Edge Impulse. Pentru a vă conecta telefonul mobil, faceți clic pe „Dispozitive”, apoi faceți clic pe „Conectați un dispozitiv nou”.

Pasul 3: Conectați-vă la telefonul mobil

Conectați-vă la telefonul mobil
Conectați-vă la telefonul mobil

Acum, în fereastra următoare, faceți clic pe „Utilizați telefonul mobil” și va apărea un cod QR. Scanați codul QR cu telefonul mobil utilizând Google Lens sau altă aplicație de scanare a codului QR.

Acest lucru vă va conecta telefonul la studioul Edge Impulse.

Cu telefonul conectat la Edge Impulse Studio, puteți încărca acum mostrele. Pentru a încărca mostrele, faceți clic pe „Achiziție date”. Acum, pe pagina de achiziție de date, introduceți numele etichetei, selectați microfonul ca senzor și introduceți lungimea eșantionului. Faceți clic pe „Începe eșantionarea”, pentru a începe eșantionarea unui eșantion de 40 sec. În loc să te forțezi să tuși, poți folosi probe de tuse online de diferite lungimi. Înregistrați în total 10 până la 12 probe de tuse de diferite lungimi.

Pasul 4:

Imagine
Imagine
Imagine
Imagine

După încărcarea probelor de tuse, setați acum eticheta la „zgomot” și colectați alte 10 până la 12 probe de zgomot.

Aceste mostre sunt destinate instruirii modulului, în următorii pași, vom colecta datele de testare. Datele de testare trebuie să fie de cel puțin 30% din datele de antrenament, deci colectați cele 3 eșantioane de „zgomot” și 4 până la 5 eșantioane de „tuse”. În loc să colectați datele, puteți importa setul nostru de date în contul dvs. Edge Impulse folosind Edge Impulse CLI Uploader. Pentru a instala CLI Uploader, mai întâi, descărcați și instalați Node.js pe laptop. După aceea deschideți promptul de comandă și introduceți comanda de mai jos:

npm instala -g edge-impuls-cli

Acum descărcați setul de date (Link set de date) și extrageți fișierul din folderul proiectului. Deschideți promptul de comandă și navigați la locația setului de date și rulați comenzile de mai jos:

edge-impuls-uploader --cleanedge-impuls-uploader - instruire de formare categorie / *. json

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

edge-impuls-uploader - testarea testelor de categorie / *. json edge-impuls-uploader - testarea testelor de categorie / *. cbor

Pasul 5: Instruirea modelului și modificarea codului

Deoarece setul de date este gata, acum vom crea un impuls pentru date. Pentru aceasta, accesați pagina „Creați impuls”.

Acum, pe pagina „Creați impuls”, faceți clic pe „Adăugați un bloc de procesare”. În fereastra următoare, selectați blocul Audio (MFCC). După aceea, faceți clic pe „Adăugați un bloc de învățare” și selectați blocul Neural Network (Keras). Apoi faceți clic pe „Salvați impulsul”.

În pasul următor, accesați pagina MFCC și apoi faceți clic pe „Generați caracteristici”. Acesta va genera blocuri MFCC pentru toate ferestrele noastre audio.

După aceea, accesați pagina „Clasificator NN” și faceți clic pe cele trei puncte din colțul din dreapta sus al „Setărilor rețelei neuronale” și selectați „Comutare la modul Keras (expert)”.

Înlocuiți originalul cu următorul cod și schimbați „Evaluarea minimă de încredere” la „0,70”. Apoi faceți clic pe butonul „Începeți antrenamentul”. Va începe să vă pregătiți modelul.

import tensorflow ca tffrom tensorflow.keras.models import Secvențial din tensorflow.keras.layers import Dense, InputLayer, Dropout, Flatten, Reshape, BatchNormalization, Conv2D, MaxPooling2D, AveragePooling2D din tensorflow.keras.optimizers import Adam din 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))) # aceasta controlează rata de învățare opt = Adam (lr = 0,005, beta_ 1 = 0.9;, validare_date = (X_test, Y_test), detaliat = 2)

Pasul 6:

După antrenamentul modelului, acesta va arăta performanța antrenamentului. Pentru mine, precizia a fost de 96,5%, iar pierderea a fost de 0,10, ceea ce este bine să procedăm.

Acum, deoarece modelul nostru de detectare a tusei este gata, vom implementa acest model ca bibliotecă Arduino. Înainte de a descărca modelul ca bibliotecă, puteți testa performanța accesând pagina „Clasificare live”. Accesați pagina „Implementare” și selectați „Arduino Library”. Acum derulați în jos și faceți clic pe „Construiți” pentru a începe procesul. Aceasta va crea o bibliotecă Arduino pentru proiectul dvs.

Acum adăugați biblioteca în ID-ul dvs. Arduino. Pentru aceasta deschideți ID-ul Arduino și apoi faceți clic pe Sketch> Include Library> Add. ZIP library. Apoi, încărcați un exemplu accesând Fișier> Exemple> Numele proiectului dvs. - Edge Impulse> nano_ble33_sense_microphone. Vom face unele modificări în cod, astfel încât să putem emite un sunet de alertă atunci când Arduino detectează tuse. Pentru aceasta, un buzzer este interfațat cu Arduino și ori de câte ori detectează tuse, LED-ul va clipi de trei ori. Modificările sunt făcute în funcțiile void loop () în care se imprimă valorile de zgomot și tuse. În codul original, imprimă atât etichetele, cât și valorile lor împreună. for (size_t ix = 0; ix <EI_CLASSIFIER_LABEL_COUNT; ix ++) {ei_printf ("% s:%.5f / n", result.classification [ix].label, result.classification [ix].value); } Vom salva atât valorile de zgomot și tuse în diferite variabile și vom compara valorile de zgomot. Dacă valoarea zgomotului scade sub 0,50, înseamnă că valoarea tusei este mai mare de 0,50 și va emite sunetul. Înlocuiți codul original pentru loop () cu acesta: for (size_t ix = 1; ix <EI_CLASSIFIER_LABEL_COUNT; ix ++) {Serial.print (result.classification [ix].value); float Data = result.classification [ix].value; if (Date <0,50) {Serial.print ("Tuse detectată"); alarma(); }} După efectuarea modificărilor, încărcați codul în Arduino. Deschideți monitorul serial la 115200 baud.

Deci, astfel se poate construi o mașină de detectare a tusei, nu este o metodă foarte eficientă pentru a găsi vreun suspect COVID19, dar poate funcționa frumos într-o zonă aglomerată.

Pasul 7: Cod

Vă rugăm să găsiți fișierul atașat, Și dacă ți-a plăcut nu uita să mă votezi în concursul de mai jos.

Recomandat: