Sisukord:

Taskusuuruse köha detektor: 7 sammu
Taskusuuruse köha detektor: 7 sammu

Video: Taskusuuruse köha detektor: 7 sammu

Video: Taskusuuruse köha detektor: 7 sammu
Video: Максим Головко – Детектор брехні. Сезон 9. Выпуск 15. Часть 1 от 16.05.16 2024, November
Anonim
Taskusuuruse köha detektor
Taskusuuruse köha detektor

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

Lülitusskeem
Lülitusskeem
Lülitusskeem
Lülitusskeem

Ü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

Köha tuvastamise masina andmekogumi loomine
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

Ühendage mobiiltelefoniga
Ü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:

Pilt
Pilt
Pilt
Pilt

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: