Sisällysluettelo:
- Tarvikkeet
- Vaihe 1: Piirikaavio
- Vaihe 2: Tietojoukon luominen yskän tunnistuskoneelle
- Vaihe 3: Yhdistä matkapuhelimeen
- Vaihe 4:
- Vaihe 5: Mallin kouluttaminen ja koodin säätäminen
- Vaihe 6:
- Vaihe 7: Koodi
Video: Taskukokoinen yskänilmaisin: 7 vaihetta
2024 Kirjoittaja: John Day | [email protected]. Viimeksi muokattu: 2024-01-30 08:59
COVID19 on todella historiallinen pandemia, joka vaikuttaa koko maailmaan erittäin pahasti, ja ihmiset rakentavat paljon uusia laitteita taistellakseen sen kanssa. Olemme myös rakentaneet automaattisen desinfiointikoneen ja lämpöpistoolin kontaktittomaan lämpötilan seulontaan. Tänään rakennamme vielä yhden laitteen koronaviruksen torjumiseksi. Se on yskänilmaisujärjestelmä, joka erottaa melun ja yskääänen ja auttaa löytämään koronasta epäillyn. Se käyttää koneoppimistekniikoita siihen.
Tässä opetusohjelmassa aiomme rakentaa yskän tunnistusjärjestelmän käyttämällä Arduino 33 BLE Sense- ja Edge Impulse Studiota. Se voi erottaa normaalin taustamelun ja yskimisen reaaliaikaisessa äänessä. Harjoittelimme Edge Impulse Studiota yskimis- ja taustakohinanäytteiden aineistosta ja rakensimme erittäin optimoidun TInyML-mallin, joka voi havaita yskän äänen reaaliajassa.
Tarvikkeet
Laitteisto
- Arduino 33 BLE Sense
- LEDJumper
- Johdot
Ohjelmisto
- Edge Impulse Studio
- Arduino IDE
Vaihe 1: Piirikaavio
Yllä oleva piirikaavio yskän havaitsemiseksi Arduino 33 BLE Sense -sovelluksella. Arduino 33 BLE: n huurtumisosaa ei ollut saatavilla, joten käytin Arduino Nano -laitetta, koska molemmilla on sama nasta.
LEDin positiivinen johto on kytketty Arduino 33 BLE sense -laitteen digitaaliseen nastaan 4 ja negatiivinen johto Arduinon GND -nastaan.
Vaihe 2: Tietojoukon luominen yskän tunnistuskoneelle
Kuten aiemmin mainittiin, käytämme Edge Impulse Studiota yskänilmaisumallimme kouluttamiseen. Tätä varten meidän on kerättävä tietojoukko, joka sisältää näytteitä tiedoista, jotka haluaisimme tunnistaa Arduinollamme. Koska tavoitteena on havaita yskä, sinun on kerättävä joitakin näytteitä siitä ja joitain muita näytteitä melun varalta, jotta se voi erottaa yskän ja muut melut. Luomme tietojoukon, jossa on kaksi luokkaa”yskä” ja “melu”. Jos haluat luoda tietojoukon, luo Edge Impulse -tili, vahvista tilisi ja aloita sitten uusi projekti. Voit ladata näytteitä matkapuhelimellasi, Arduino -kortillasi tai tuoda tietojoukon reunaimpulssitilillesi. Helpoin tapa ladata näytteet tilillesi on käyttää matkapuhelinta. Tätä varten sinun on yhdistettävä matkapuhelimesi Edge Impulseen. Yhdistä matkapuhelimesi napsauttamalla Laitteet ja sitten Yhdistä uusi laite.
Vaihe 3: Yhdistä matkapuhelimeen
Napsauta seuraavassa ikkunassa Käytä matkapuhelinta ja QR -koodi tulee näkyviin. Skannaa QR -koodi matkapuhelimellasi Google Lensin tai muun QR -koodiskannerisovelluksen avulla.
Tämä yhdistää puhelimesi Edge Impulse studioon.
Kun puhelin on yhdistetty Edge Impulse Studioon, voit nyt ladata näytteitä. Lataa näytteet napsauttamalla "Tietojen kerääminen". Kirjoita nyt tiedonkeruu -sivulle tarran nimi, valitse mikrofoni anturiksi ja syötä näytteen pituus. Aloita näytteenotto 40 sekunnin näytteestä napsauttamalla Aloita näytteenotto. Sen sijaan, että pakottaisit itsesi yskimään, voit käyttää eri pituisia online -yskänäytteitä. Tallenna yhteensä 10–12 eripituista yskänäytettä.
Vaihe 4:
Kun olet ladannut yskänäytteet, aseta nyt tarraksi "kohina" ja kerää vielä 10-12 kohinaäytettä.
Nämä näytteet on tarkoitettu moduulin kouluttamiseen, seuraavissa vaiheissa keräämme testitietoja. Testitietojen tulisi olla vähintään 30% harjoitustiedoista, joten kerää 3 kohina- ja 4-5 yskänäytettä. Tietojesi keräämisen sijaan voit tuoda tietojoukomme Edge Impulse -tilillesi Edgen avulla Impulse CLI Uploader. Jos haluat asentaa CLI Uploaderin, lataa ja asenna Node.js kannettavaan tietokoneeseen. Avaa sen jälkeen komentorivi ja kirjoita alla oleva komento:
npm install -g edge-impulse-cli
Lataa nyt tietojoukko (Dataset Link) ja purkaa tiedosto projektikansioosi. Avaa komentokehote ja siirry tietojoukon sijaintiin ja suorita alla olevat komennot:
reuna-impulssi-lataaja-puhdista-impulsi-lataaja-luokkakoulutus/*. json
reuna-impulssien lataaja-luokkakoulutus/*. cbor
reuna-impulssi-lataaja-luokan testaus testaus/*. json reuna-impulssin lataaja-luokan testaus testaus/*. cbor
Vaihe 5: Mallin kouluttaminen ja koodin säätäminen
Kun tietojoukko on valmis, luomme nyt impulssin tiedoille. Siirry tätä varten "Luo impulsi" -sivulle.
Napsauta nyt Luo impulssi -sivulla Lisää käsittelylohko. Valitse seuraavassa ikkunassa Audio (MFCC) -lohko. Napsauta sen jälkeen "Lisää oppimislohko" ja valitse neuroverkko (Keras). Napsauta sitten Tallenna impulssi.
Siirry seuraavassa vaiheessa MFCC -sivulle ja napsauta sitten "Luo ominaisuuksia". Se luo MFCC -lohkoja kaikille ääni -ikkunoillemme.
Siirry sen jälkeen "NN -luokittelija" -sivulle ja napsauta "Neuraaliverkon asetusten" oikeassa yläkulmassa olevia kolmea pistettä ja valitse "Vaihda Keras (asiantuntija) -tilaan".
Korvaa alkuperäinen seuraavalla koodilla ja vaihda vähimmäisluottamusluokitus arvoon 0,70. Napsauta sitten Aloita harjoitus -painiketta. Se alkaa kouluttaa malliasi.
tuoda tensorflow tffromina tensorflow.keras.models tuoda peräkkäin tensorflow.keras.layers -materiaalista tuoda tiheää, InputLayer, Dropout, Flatten, Reshape, BatchNormalization, Conv2D, MaxPooling2D, AveragePooling2D tensorflow.keras.oprasimensorista. MaxNorm # malliarkkitehtuurimalli = Järjestys () 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, aktivointi = 'relu', padding = 'sama', kernel_constraint = MaxNorm (3)))) model.add (AveragePooling2D (pool_size = 2, padding = 'same')) model.add (Conv2D (5, kernel_size = 5, aktivointi = 'relu', padding = 'sama', kernel_constraint = MaxNorm (3))) model.add (AveragePooling2D (pool_size = 2, padding = 'same')) model.add (Flatten ()) model.add (Tiheä (luokat, aktivointi = 'softmax', name = 'y_pred', kernel_constraint = MaxNorm) (3))) # tämä ohjaa oppimisprosenttia opt = Adam (lr = 0,005, beta_ 1 = 0,9, beta_2 = 0,999) # kouluttaa hermoverkon mallia. Koota (tappio = 'kategorinen_risteys, optimoija = opt, metrics = [' tarkkuus ']) model.fit (X_train, Y_train, batch_size = 32, epochs = 9), validation_data = (X_test, Y_test), verbose = 2)
Vaihe 6:
Mallin harjoittelun jälkeen se näyttää harjoitustuloksen. Minulle tarkkuus oli 96,5% ja tappio 0,10, joten on hyvä jatkaa.
Nyt kun yskänilmaisumallimme on valmis, otamme tämän mallin käyttöön Arduino -kirjastona. Ennen kuin lataat mallin kirjastoksi, voit testata suorituskykyä siirtymällä Live -luokittelu -sivulle. Siirry "Käyttöönotto" -sivulle ja valitse "Arduino -kirjasto". Vieritä nyt alas ja napsauta 'Rakenna' aloittaaksesi prosessin. Tämä rakentaa projektillesi Arduino -kirjaston.
Lisää nyt kirjasto Arduino IDE -laitteeseesi. Avaa sitä varten Arduino IDE ja napsauta sitten Luonnos> Sisällytä kirjasto> Lisää. ZIP -kirjasto. Lataa sitten esimerkki valitsemalla Tiedosto> Esimerkit> Projektisi nimi - Edge Impulse> nano_ble33_sense_microphone. Teemme joitain muutoksia koodiin, jotta voimme antaa hälytysäänen, kun Arduino havaitsee yskän. Tätä varten summeri on liitetty Arduinon kanssa ja aina kun se havaitsee yskän, LED vilkkuu kolme kertaa. Muutokset tehdään void loop -toimintoihin, joissa se tulostaa kohina- ja yskäarvot. Alkuperäisessä koodissa se tulostaa sekä tarrat että niiden arvot yhdessä. for (size_t ix = 0; ix <EI_CLASSIFIER_LABEL_COUNT; ix ++) {ei_printf (" %s: %.5f / n", result.classification [ix].label, result.classification [ix].arvo); } Tallennamme sekä melu- että yskäarvot eri muuttujiin ja vertaamme meluarvoja. Jos kohina -arvo laskee alle 0,50, yskäarvo on yli 0,50 ja se antaa äänen. Korvaa alkuperäinen silmukan () koodi seuraavasti: for (size_t ix = 1; ix <EI_CLASSIFIER_LABEL_COUNT; ix ++) {Serial.print (result.classification [ix].value); float Data = tulos.luokitus [ix].arvo; if (Data <0,50) {Serial.print ("Yskä havaittu"); hälytys(); }} Kun olet tehnyt muutokset, lataa koodi Arduinoosi. Avaa sarjamonitori 115200 baudilla.
Joten yskänilmaisukone voidaan rakentaa tällä tavalla, se ei ole kovin tehokas tapa löytää COVID19 -epäiltyä, mutta se voi toimia hienosti joillakin tungosta alueilla.
Vaihe 7: Koodi
Löydät oheisen tiedoston, Ja jos pidit siitä, älä unohda äänestää minua alla olevassa kilpailussa.
Suositeltava:
DIY -taskukokoinen DC -jännitemittari: 5 vaihetta
DIY -taskukokoinen DC -jännitemittari: Tässä ohjeessa näytän sinulle, kuinka tehdä DIY -taskukokoinen DC -jännitemittari pietsosummerilla piirin tarkistamiseksi itse. Tarvitset vain perustiedot elektroniikasta ja vähän aikaa. Jos sinulla on kysyttävää tai ongelmia, voit
DIY taskukokoinen varkaudenestohälytys!: 3 vaihetta
DIY-taskukokoinen varkaudenestohälytys!: Onko joku nipistänyt tavarasi etkä löydä kuka se on? Et tiedä kuka joku on? tässä ohjeessa näytän sinulle, kuinka tehdä taskukokoinen tunkeutujahälytys
Taskukokoinen kaiutin: 3 vaihetta
Taskukokoinen kaiutin: Ota se minne ikinä menetkin! Musiikkia liikkeellä! Hei kaikki tässä opettavaisessa (joka on ensimmäinen) Aion näyttää teille, miten tein tämän taskukaiuttimen
GranCare: Taskukokoinen terveysmonitori!: 8 vaihetta (kuvilla)
GranCare: Taskutason terveysmonitori !: Joten anna minun aloittaa, minulla on mummo. Hän on vähän vanha, mutta erittäin hyväkuntoinen ja terve. Hyvin äskettäin olimme olleet lääkärissä kuukausitarkastuksessa ja lääkäri neuvoi häntä kävelemään joka päivä vähintään puoli tuntia pitämään nivelet terveinä. Me tarvitsemme
Tyylikkäin USB L.E.D. Taskukokoinen valo (taskukokoinen merkintä): 6 vaihetta
Tyylikkäin USB L.E.D. Taskukokoinen valo (taskukokoinen merkintä): Tässä ohjeessa näytän sinulle, kuinka tehdä USB-virtalähde L.E.D. valo, joka voidaan taittaa X-it Mints -kotelon kokoiseksi ja mahtuu helposti taskuun. Jos pidät siitä, muista + lisätä se ja äänestää minua kilpailussa! Materiaalit ja