Sisukord:
- Tarvikud
- Samm: vooluahela skeem
- 2. samm: köha tuvastamise masina andmekogumi loomine
- Samm: ühendage mobiiltelefoniga
- 4. samm:
- Samm: mudeli koolitamine ja koodi muutmine
- 6. samm:
- Samm: kood
Video: Taskusuuruse köha detektor: 7 sammu
2024 Autor: John Day | [email protected]. Viimati modifitseeritud: 2024-01-30 08:46
COVID19 on tõesti ajalooline pandeemia, mis mõjutab kogu maailma väga halvasti ja inimesed ehitavad sellega võitlemiseks palju uusi seadmeid. Oleme ehitanud ka automaatse desinfitseerimismasina ja termopüstoli kontaktivaba temperatuuri sõelumiseks. Täna ehitame veel ühe seadme koroonaviiruse vastu võitlemiseks. See on köha avastamissüsteem, mis suudab eristada müra ja köhaheli ning aitab leida Corona kahtlustatavat. Ta kasutab selleks masinõppe tehnikaid.
Selles õpetuses ehitame köha tuvastamise süsteemi, kasutades Arduino 33 BLE Sense ja Edge Impulse Studio. See suudab reaalajas helis eristada tavalist taustamüra ja köhimist. Kasutasime Edge Impulse Studio'i, et koolitada köhimise ja taustamüra proovide andmestikku ning ehitada üles väga optimeeritud TInyML-mudel, mis tuvastab köhaheli reaalajas.
Tarvikud
Riistvara
- Arduino 33 BLE Sense
- LEDJumper
- Juhtmed
Tarkvara
- Edge Impulse stuudio
- Arduino IDE
Samm: vooluahela skeem
Ülaltoodud skeem köha tuvastamiseks Arduino 33 BLE Sense abil. Arduino 33 BLE hõõrumisosa polnud saadaval, seega kasutasin Arduino Nano, kuna mõlemal on sama pistikupesa.
LED -i positiivne juhe on ühendatud Arduino 33 BLE sensori digitaalse tihvtiga 4 ja negatiivne juhe on ühendatud Arduino GND -tihvtiga.
2. samm: köha tuvastamise masina andmekogumi loomine
Nagu varem mainitud, kasutame köha avastamise mudeli koolitamiseks Edge Impulse Studio'i. Selleks peame koguma andmestiku, mis sisaldab andmeproove, mida sooviksime oma Arduino abil ära tunda. Kuna eesmärk on köha tuvastada, peate müra jaoks koguma mõned selle ja mõned proovid, et saaksite köha ja muud mürad eristada. Loome andmekogumi kahe klassiga “köha” ja “müra”. Andmekogumi loomiseks looge Edge Impulse konto, kinnitage oma konto ja alustage seejärel uut projekti. Proove saate laadida oma mobiiltelefoni, Arduino tahvli abil või importida andmekogumi oma servaimpulsi kontole. Lihtsaim viis proovide oma kontole laadimiseks on mobiiltelefoni kasutamine. Selleks peate oma mobiiltelefoni Edge Impulse'iga ühendama. Mobiiltelefoni ühendamiseks klõpsake nuppu "Seadmed" ja seejärel nuppu "Ühenda uus seade".
Samm: ühendage mobiiltelefoniga
Nüüd klõpsake järgmises aknas nuppu „Kasuta oma mobiiltelefoni” ja kuvatakse QR -kood. Skaneerige oma mobiiltelefoniga QR -kood Google Lensi või mõne muu QR -koodi skanneri rakenduse abil.
See ühendab teie telefoni Edge Impulse stuudioga.
Kui telefon on ühendatud Edge Impulse Studioga, saate nüüd oma proovid laadida. Proovide laadimiseks klõpsake nuppu „Andmete hankimine”. Nüüd sisestage lehele Andmete hankimine sildi nimi, valige anduriks mikrofon ja sisestage proovi pikkus. 40 -sekundilise proovi võtmise alustamiseks klõpsake nuppu „Alusta proovide võtmist”. Selle asemel, et sundida ennast köhima, võite kasutada erineva pikkusega veebipõhiseid köhaproove. Salvestage kokku 10 kuni 12 erineva pikkusega köhaproovi.
4. samm:
Pärast köhaproovide üleslaadimist seadke silt „müra” ja koguge veel 10–12 müraproovi.
Need proovid on mõeldud mooduli koolitamiseks, järgmistes etappides kogume testiandmeid. Testiandmed peaksid moodustama vähemalt 30% koolitusandmetest, seega koguge kolm müra- ja 4–5 köhaproovi. Andmete kogumise asemel saate Edge abil oma andmekogumi oma Edge Impulse kontole importida Impulsi CLI üleslaadija. CLI üleslaadija installimiseks laadige kõigepealt alla ja installige sülearvutisse Node.js. Pärast seda avage käsuviip ja sisestage järgmine käsk:
npm install -g edge-impulse-cli
Laadige nüüd alla andmekogum (andmekogumi link) ja eraldage fail oma projekti kausta. Avage käsuviip ja navigeerige andmekogumi asukohta ning käivitage järgmised käsud:
serv-impulss-üleslaadija-puhastus-impulss-üleslaadija-kategooria koolitus/*. json
serv-impulss-üleslaadija-kategooria koolitus/*. cbor
serva-impulsi üleslaadija-kategooria testimise testimine/*. json serva-impulsi üleslaadija-kategooria testimise testimine/*. cbor
Samm: mudeli koolitamine ja koodi muutmine
Kuna andmekogum on valmis, loome nüüd andmete jaoks impulsi. Selleks minge lehele „Impulsi loomine”.
Nüüd klõpsake lehel „Loo impulss” nuppu „Lisa töötlusplokk”. Järgmises aknas valige heli (MFCC) plokk. Pärast seda klõpsake nuppu „Lisa õppimisplokk” ja valige Neuraalvõrgu (Keras) plokk. Seejärel klõpsake nuppu "Salvesta impulss".
Järgmises etapis minge lehele MFCC ja klõpsake nuppu „Loo funktsioonid”. See loob kõigi meie heliakende jaoks MFCC -plokid.
Pärast seda minge lehele „NN klassifikaator” ja klõpsake „Neuraalvõrgu seadete” paremas ülanurgas asuvat kolme punkti ja valige „Lülitu režiimile Keras” (ekspert).
Asendage originaal järgmise koodiga ja muutke minimaalse usaldusreitingu väärtuseks 0,70. Seejärel klõpsake nuppu "Alusta treeningut". See hakkab teie mudelit koolitama.
impordi tensorflow tffrom tensorflow.keras.models import järjestikku tensorflow.keras.layers impordi tihedus, InputLayer, väljalangemine, lamendamine, ümberkujundamine, BatchNormalization, Conv2D, MaxPooling2D, AveragePooling2D tensorflow.keras.oprasimers import importijalt MaxNorm # mudeli arhitektuuri mudel = Järjestikune () 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, aktivation = 'relu', padding = 'sama', kernel_constraint = MaxNorm (3))) model.add (AveragePooling2D (pool_size = 2, padding = 'sama')) model.add (Conv2D (5, kernel_size = 5, aktiveerimine = 'relu', padding = 'sama', kernel_constraint = MaxNorm (3)]) model.add (AveragePooling2D (pool_size = 2, padding = 'sama')) model.add (Flatten ()) model.add (Tihe (klassid, aktiveerimine = 'softmax', nimi = 'y_pred', kernel_constraint = MaxNorm) (3))) # see juhib õppimise määra opt = Adam (lr = 0,005, beeta_ 1 = 0,9, beeta_2 = 0,999) # treenige närvivõrgu mudelit.komplekteerige (kadu = 'kategooriline_ristsentroopia', optimeerija = opt, mõõdikud = ['täpsus']) model.fit (X_train, Y_train, batch_size = 32, epochs = 9, valideerimisandmed = (X_test, Y_test), paljusõnaline = 2)
6. samm:
Pärast mudeli treenimist näitab see treeningtulemusi. Minu jaoks oli täpsus 96,5% ja kaotus 0,10, mis on hea jätkata.
Nüüd, kui meie köha avastamise mudel on valmis, kasutame seda mudelit Arduino raamatukoguna. Enne mudeli raamatukoguna allalaadimist saate toimivust testida, minnes lehele „Live Classification”. Minge lehele „Juurutamine” ja valige „Arduino raamatukogu”. Nüüd kerige alla ja klõpsake protsessi alustamiseks nuppu „Ehita”. See loob teie projekti jaoks Arduino raamatukogu.
Nüüd lisage raamatukogu oma Arduino IDE -sse. Selleks avage Arduino IDE ja seejärel klõpsake Sketch> Include Library> Add. ZIP library. Seejärel laadige näide menüüst Fail> Näited> Teie projekti nimi - servaimpulss> nano_ble33_sense_microphone. Teeme koodis mõningaid muudatusi, et saaksime anda märguandeheli, kui Arduino tuvastab köha. Selleks ühendatakse helisignaal Arduinoga ja kui see köha tuvastab, vilgub LED kolm korda. Muudatused tehakse void loop () funktsioonides, kus see prindib müra ja köha väärtusi. Esialgses koodis trükitakse nii sildid kui ka nende väärtused koos. jaoks (size_t ix = 0; ix <EI_CLASSIFIER_LABEL_COUNT; ix ++) {ei_printf (" %s: %.5f / n", result.classification [ix].etikett, result.classification [ix].väärtus); } Salvestame nii müra kui ka köha väärtused erinevatesse muutujatesse ja võrdleme müra väärtusi. Kui müra väärtus langeb alla 0,50, tähendab see, et köha väärtus on üle 0,50 ja see teeb heli. Asenda silmuse () koodi originaal järgmisega: for (size_t ix = 1; ix <EI_CLASSIFIER_LABEL_COUNT; ix ++) {Serial.print (result.classification [ix].value); float Data = result.classification [ix].value; if (andmed <0,50) {Serial.print ("Köha tuvastatud"); alarm (); }} Pärast muudatuste tegemist laadige kood oma Arduinosse üles. Avage jadamonitor 115200 baudiga.
Nii saab köha tuvastamise masinat ehitada nii, see ei ole kuigi tõhus meetod COVID19 kahtlustatava leidmiseks, kuid mõnes rahvarohkes piirkonnas võib see kenasti töötada.
Samm: kood
Palun leidke lisatud fail, Ja kui teile see meeldis, ärge unustage mind allpool oleval konkursil hääletada.
Soovitan:
Veetaseme detektor: 7 sammu
Veetaseme detektor: ultraheliandur töötab samadel põhimõtetel nagu radarisüsteem. Ultraheli andur võib muuta elektrienergia akustilisteks laineteks ja vastupidi. Kuulus ultraheli andur HC SR04 genereerib ultrahelilaineid 40 kHz sagedusel
Zigbee voodi olemasolu detektor: 8 sammu
Zigbee voodi olemasolu detektor: Otsisin juba mõnda aega võimalust tuvastada, millal me voodis oleme. Seda selle teabe kasutamiseks Homeassistantis. Selle teabe abil saaksin automatiseerida öösel tulede väljalülitamise või näiteks aktiveerida oma hoiatussüsteemi
Projeto IoT - Sema detektor De Fumaça: 5 sammu
Projeto IoT - Sistema Detector De Fumaça: Sissejuhatus Sistema Detector de Fumaça koosneb igast lahendusest IoT -le või lubade andmisele või häirete jälgimisele Androidis. O projeto ja baseado em um microcontrolador que se comunica com a nu
Arduino avatud akende detektor - talveks: 6 sammu
Arduino avatud akende detektor - talveks: väljas läheb jahedaks, kuid mõnikord vajan oma tubades värsket õhku. Niisiis, ma avan akna, lahkun toast, sulgen ukse ja tahan 5-10 minuti pärast tagasi tulla. Ja mõne tunni pärast meenub mulle, et aken on lahti … Võib -olla teate, et
Kuidas ehitada parkimisandurit vaba koha leidmise valu lahendamiseks: 12 sammu
Kuidas ehitada parkimisandurit vaba koha leidmise valu lahendamiseks: Selles projektis ehitame Raspberry Pi abil lihtsa parkimisanduri. Tuleb välja, et pean igal hommikul silmitsi seisma järgmise küsimusega: kas AINULT parkimiskoht mu kontori ees on juba võetud? Sest kui see tegelikult on, pean ma ringi liikuma