Sadržaj:
- Supplies
- Korak 1: Dijagram kola
- Korak 2: Kreiranje skupa podataka za aparat za otkrivanje kašlja
- Korak 3: Povežite se s mobilnim telefonom
- Korak 4:
- Korak 5: Obuka modela i dorada koda
- Korak 6:
- Korak 7: Kodirajte
Video: Džepni detektor kašlja: 7 koraka
2024 Autor: John Day | [email protected]. Zadnja izmjena: 2024-01-30 08:04
COVID19 je zaista povijesna pandemija koja jako loše pogađa cijeli svijet i ljudi grade mnogo novih uređaja za borbu protiv njega. Izgradili smo i automatsku mašinu za dezinfekciju i termalni pištolj za beskontaktno mjerenje temperature. Danas ćemo izgraditi još jedan uređaj za borbu protiv koronavirusa. To je sistem za detekciju kašlja, koji može razlikovati buku i zvuk kašlja i može pomoći u pronalaženju osumnjičenog za Koronu. Za to će koristiti tehnike mašinskog učenja.
U ovom ćemo vodiču izgraditi sustav za otkrivanje kašlja koristeći Arduino 33 BLE Sense i Edge Impulse Studio. Može razlikovati normalnu pozadinsku buku i kašalj u zvuku u stvarnom vremenu. Koristili smo Edge Impulse Studio za obuku skupa podataka o uzorcima kašlja i pozadinske buke i za izradu visoko optimiziranog TInyML modela koji može otkriti zvuk kašlja u stvarnom vremenu.
Supplies
Hardver
- Arduino 33 BLE Sense
- LEDJumper
- Žice
Softver
- Edge Impulse Studio
- Arduino IDE
Korak 1: Dijagram kola
Dijagram kola za otkrivanje kašlja pomoću Arduina 33 BLE Sense dat je gore. Fritzing dio za Arduino 33 BLE nije bio dostupan, pa sam koristio Arduino Nano jer oba imaju isti pin-out.
Pozitivni provodnik LED diode spojen je na digitalni pin 4 Arduino 33 BLE senzora, a negativni vod je spojen na GND pin Arduina.
Korak 2: Kreiranje skupa podataka za aparat za otkrivanje kašlja
Kao što je ranije spomenuto, koristimo Edge Impulse Studio za obuku našeg modela otkrivanja kašlja. Za to moramo prikupiti skup podataka koji sadrži uzorke podataka koje bismo željeli prepoznati na našem Arduinu. Budući da je cilj otkriti kašalj, morat ćete prikupiti neke uzorke tog i nekih drugih uzoraka za buku, tako da može razlikovati kašalj i druge šumove. Napravit ćemo skup podataka s dvije klase “kašalj” i “buka”. Da biste stvorili skup podataka, stvorite Edge Impulse račun, potvrdite svoj račun, a zatim pokrenite novi projekt. Uzorke možete učitati pomoću mobilnog telefona, Arduino ploče ili možete uvesti skup podataka u svoj rubni impulsni račun. Najjednostavniji način da učitate uzorke na svoj račun je pomoću mobilnog telefona. Da biste to učinili, morate povezati svoj mobilni telefon s Edge Impulse. Da biste povezali svoj mobilni telefon, kliknite na „Uređaji“, a zatim na „Poveži novi uređaj“.
Korak 3: Povežite se s mobilnim telefonom
Sada u sljedećem prozoru kliknite "Koristi svoj mobilni telefon" i pojavit će se QR kôd. Skenirajte QR kôd svojim mobilnim telefonom pomoću Google objektiva ili druge aplikacije za skeniranje QR koda.
Ovo će povezati vaš telefon sa Edge Impulse studijem.
Kad je vaš telefon povezan s Edge Impulse Studio, sada možete učitati uzorke. Da biste učitali uzorke, kliknite na „Prikupljanje podataka“. Sada na stranici Prikupljanje podataka unesite naziv naljepnice, odaberite mikrofon kao senzor i unesite dužinu uzorka. Kliknite na „Pokreni uzorkovanje“da biste započeli uzorkovanje uzorka od 40 sekundi. Umjesto da se prisiljavate na kašalj, možete koristiti internetske uzorke kašlja različite dužine. Snimite ukupno 10 do 12 uzoraka kašlja različite dužine.
Korak 4:
Nakon što ste učitali uzorke kašlja, sada postavite oznaku na „buka“i prikupite još 10 do 12 uzoraka buke.
Ovi uzorci su za obuku modula, u sljedećim koracima prikupit ćemo podatke o testiranju. Podaci o testiranju trebali bi činiti najmanje 30% podataka o obuci, pa prikupite 3 uzorka "buke" i 4 do 5 uzoraka "kašlja". Umjesto prikupljanja vaših podataka, možete uvesti naš skup podataka u svoj račun Edge Impulse koristeći Edge Impulse CLI Uploader. Da biste instalirali CLI Uploader, prvo preuzmite i instalirajte Node.js na prijenosno računalo. Nakon toga otvorite naredbeni redak i unesite naredbu ispod:
npm install -g edge-impulse-cli
Sada preuzmite skup podataka (veza do skupa podataka) i izdvojite datoteku u mapu projekta. Otvorite naredbeni redak i idite na lokaciju skupa podataka i pokrenite naredbe u nastavku:
edge-impulse-uploader --cleanedge-impulse-uploader-trening za kategoriju/*. json
edge-impulse-uploader-trening za kategorijsku obuku/*. cbor
edge-impulse-uploader-testiranje testiranja kategorija/*. json edge-impulse-uploader-testiranje kategorizacije testiranja/*. cbor
Korak 5: Obuka modela i dorada koda
Kako je skup podataka spreman, sada ćemo stvoriti impuls za podatke. Za to idite na stranicu „Kreiraj impuls“.
Sada na stranici „Kreiraj impuls“kliknite na „Dodaj blok za obradu“. U sljedećem prozoru odaberite audio (MFCC) blok. Nakon toga kliknite na ‘Dodaj blok za učenje’ i odaberite blok Neural Network (Keras). Zatim kliknite na "Save Impulse".
U sljedećem koraku idite na stranicu MFCC, a zatim kliknite na "Generiraj značajke". On će generirati MFCC blokove za sve naše audio prozore.
Nakon toga idite na stranicu 'NN Classifier' i kliknite na tri točke u gornjem desnom kutu 'Postavke neuronske mreže' i odaberite 'Prebaci na način rada Keras (stručni)'.
Zamijenite original sljedećim kodom i promijenite „Minimalnu ocjenu pouzdanosti“na „0,70“. Zatim kliknite na dugme „Započni obuku“. Počet će obučavati vaš model.
uvoziti tensorflow kao tffrom tensorflow.keras.models uvoz Sekvencijalno sa tensorflow.keras.layers uvoziti Dense, InputLayer, Dropout, Flatten, Reshape, BatchNormalization, Conv2D, MaxPooling2D, AveragePooling2D from tensorflow.keras.optimizers MaxNorm # model arhitekture 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 = 'isto', 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 (Gusti (klase, aktivacija = 'softmax', name = 'y_pred', kernel_constraint = MaxNorm (3))) # ovo kontrolira brzinu učenja opt = Adam (lr = 0,005, beta_ 1 = 0,9, beta_2 = 0,999) # obučite model neuronske mreže.compile (loss = 'kategorična_krossentropija', optimizator = opt, metrika = ['tačnost']) model.fit (X_train, Y_train, batch_size = 32, epochs = 9, validation_data = (X_test, Y_test), detaljno = 2)
Korak 6:
Nakon obuke modela, prikazat će se performanse treninga. Za mene je tačnost bila 96,5%, a gubitak 0,10, što je dobro za nastavak.
Pošto je naš model otkrivanja kašlja spreman, ovaj model ćemo primijeniti kao Arduino biblioteku. Prije preuzimanja modela kao biblioteke, možete testirati performanse tako što ćete otići na stranicu „Klasifikacija uživo“. Idite na stranicu "Raspoređivanje" i odaberite "Arduino biblioteka". Sada se pomaknite prema dolje i kliknite na 'Izradi' za početak procesa. Ovo će izgraditi Arduino biblioteku za vaš projekt.
Sada dodajte biblioteku u svoj Arduino IDE. Za to otvorite Arduino IDE, a zatim kliknite Sketch> Include Library> Add. ZIP library. Zatim učitajte primjer tako što ćete otići na Datoteka> Primjeri> Naziv vašeg projekta - Edge Impulse> nano_ble33_sense_microphone. Napravit ćemo neke promjene u kodu kako bismo mogli oglasiti zvuk upozorenja kada Arduino otkrije kašalj. U tu svrhu, zujalica je povezana s Arduinom i kad god otkrije kašalj, LED će treptati tri puta. Promjene se vrše u funkcijama void loop () gdje ispisuje vrijednosti šuma i kašlja. U originalnom kodu ispisuje naljepnice i njihove vrijednosti zajedno. za (size_t ix = 0; ix <EI_CLASSIFIER_LABEL_COUNT; ix ++) {ei_printf (" %s: %.5f / n", result.classification [ix].label, result.classification [ix].value); } Spremit ćemo vrijednosti buke i kašlja u različite varijable i uporediti vrijednosti buke. Ako vrijednost buke padne ispod 0,50, to znači da je vrijednost kašlja veća od 0,50 i dat će zvuk. Zamijenite originalni kod za loop () ovim: for (size_t ix = 1; ix <EI_CLASSIFIER_LABEL_COUNT; ix ++) {Serial.print (result.classification [ix].value); float Data = result.classification [ix].value; if (Podaci <0,50) {Serial.print ("Otkriven kašalj"); alarm (); }} Nakon što unesete promjene, prenesite kôd u svoj Arduino. Otvorite serijski monitor na 115200 bauda.
Dakle, ovako se može izgraditi mašina za otkrivanje kašlja, to nije vrlo efikasna metoda za pronalaženje sumnjivih osoba na COVID19, ali može dobro raditi u nekim gužvama.
Korak 7: Kodirajte
Molimo vas da pronađete priloženi fajl, A ako vam se svidjelo, ne zaboravite glasati za mene na donjem takmičenju.
Preporučuje se:
Džepni sat "uradi sam": 9 koraka
Uradi sam džepni sat: U ovom užurbanom svijetu praćenje vremena potrebno je za bolje performanse i biti hobist zašto ne biste napravili uređaj za praćenje vremena. Zahvaljujući tehnologiji postoje uređaji koji se zovu 'sat' ali! zadovoljstvo kada radite sami
DŽEPNI MUZIČKI IGRAČ: 6 koraka
DŽEPNI MUZIČKI IGRAČ: U ovom uputstvu naučit ćete kako napraviti vlastiti džepni muzički player s vlastitim rukama, sa preskakanjem reprodukcije pa možete i druge značajke koristiti arduino pro mini ili arduino nano
Uradi sam džepni alarm protiv krađe!: 3 koraka
Uradi sam džepni džepni alarm protiv krađe!: JE LI netko uštipnuo vaše stvari, a ne možete pronaći tko je to? Ne znate tko je to? Onda je ovo uputstvo za vas da ih ulovite! u ovom uputstvu ću vam pokazati kako napraviti džepni alarm za uljeza
Džepni detektor CO (ugljikov monoksid): 5 koraka
Detektor CO (ugljikov monoksid) džepne veličine: Kao što naziv kaže, radi se o džepnom detektoru CO koji se koristi za otkrivanje ugljičnog monoksida u zraku, cilj nam je bio učiniti ovaj uređaj prijenosnim i koji stane u džepnu veličinu. problem zagađenja zraka zbog industrijalizacije ev
IOT detektor dima: Ažurirajte postojeći detektor dima sa IOT -om: 6 koraka (sa slikama)
IOT detektor dima: Ažurirajte postojeći detektor dima sa IOT -om: Spisak saradnika, izumitelj: Tan Siew Chin, Tan Yit Peng, Tan Wee Heng Nadzornik: Dr Chia Kim Seng Odsjek za mehatroničko i robotsko inženjerstvo, Fakultet elektrotehnike i elektronike, Univerzitet Tun Hussein Onn Malaysia.Distribut