Turinys:
- Prekės
- 1 žingsnis: grandinės schema
- 2 veiksmas: sukurkite kosulio aptikimo mašinos duomenų rinkinį
- 3 veiksmas: prisijunkite prie mobiliojo telefono
- 4 žingsnis:
- 5 žingsnis: modelio mokymas ir kodo keitimas
- 6 žingsnis:
- 7 žingsnis: kodas
Video: Kišeninio dydžio kosulio jutiklis: 7 žingsniai
2024 Autorius: John Day | [email protected]. Paskutinį kartą keistas: 2024-01-30 10:44
COVID19 tikrai yra istorinė pandemija, kuri labai skaudžiai veikia visą pasaulį, ir žmonės kuria daug naujų prietaisų kovai su ja. Mes taip pat sukūrėme automatinę dezinfekavimo mašiną ir terminį pistoletą bekontaktiniam temperatūros patikrinimui. Šiandien mes sukursime dar vieną prietaisą, padedantį kovoti su koronavirusu. Tai kosulio aptikimo sistema, galinti atskirti triukšmą ir kosulio garsą ir padėti surasti įtariamą koroną. Tam ji naudos mašininio mokymosi metodus.
Šioje pamokoje mes sukursime kosulio aptikimo sistemą, naudodami „Arduino 33 BLE Sense“ir „Edge Impulse Studio“. Jis gali atskirti įprastą foninį triukšmą ir kosulį realiuoju laiku. Mes naudojome „Edge Impulse Studio“, kad išmokytume kosulio ir foninio triukšmo pavyzdžių duomenų rinkinį ir sukurtume labai optimizuotą „TInyML“modelį, kuris realiu laiku galėtų aptikti kosulio garsą.
Prekės
Techninė įranga
- „Arduino 33 BLE Sense“
- LEDJumper
- Laidai
Programinė įranga
- „Edge Impulse Studio“
- „Arduino IDE“
1 žingsnis: grandinės schema
Aukščiau pateikta kosulio aptikimo schema naudojant „Arduino 33 BLE Sense“. „Arduino 33 BLE“trapios dalies nebuvo, todėl naudojau „Arduino Nano“, nes abu turi tą patį kaištį.
Teigiamas šviesos diodo laidas yra prijungtas prie „Arduino 33 BLE sense“skaitmeninio 4 kaiščio, o neigiamas laidas yra prijungtas prie „Arduino“GND kaiščio.
2 veiksmas: sukurkite kosulio aptikimo mašinos duomenų rinkinį
Kaip minėta anksčiau, kosulio aptikimo modeliui apmokyti naudojame „Edge Impulse Studio“. Norėdami tai padaryti, turime surinkti duomenų rinkinį, kuriame yra duomenų pavyzdžių, kuriuos norėtume atpažinti „Arduino“. Kadangi tikslas yra aptikti kosulį, turėsite surinkti kai kuriuos to ir kai kurių kitų mėginių triukšmui, kad būtų galima atskirti kosulį ir kitus triukšmus. Mes sukursime duomenų rinkinį su dviem klasėmis „kosulys“ir „triukšmas“. Norėdami sukurti duomenų rinkinį, sukurkite „Edge Impulse“paskyrą, patvirtinkite paskyrą ir pradėkite naują projektą. Pavyzdžius galite įkelti naudodami savo mobilųjį telefoną, „Arduino“plokštę arba importuodami duomenų rinkinį į savo krašto impulsų paskyrą. Lengviausias būdas įkelti pavyzdžius į savo sąskaitą yra naudojant mobilųjį telefoną. Norėdami tai padaryti, turite prijungti savo mobilųjį telefoną prie „Edge Impulse“. Norėdami prijungti savo mobilųjį telefoną, spustelėkite „Įrenginiai“, tada spustelėkite „Prijunkite naują įrenginį“.
3 veiksmas: prisijunkite prie mobiliojo telefono
Dabar kitame lange spustelėkite „Naudoti savo mobilųjį telefoną“ir pasirodys QR kodas. Nuskaitykite QR kodą savo mobiliuoju telefonu naudodami „Google Lens“ar kitą QR kodų skaitytuvo programą.
Tai sujungs jūsų telefoną su „Edge Impulse“studija.
Kai telefonas prijungtas prie „Edge Impulse Studio“, dabar galite įkelti savo pavyzdžius. Norėdami įkelti pavyzdžius, spustelėkite „Duomenų rinkimas“. Dabar duomenų rinkimo puslapyje įveskite etiketės pavadinimą, pasirinkite mikrofoną kaip jutiklį ir įveskite mėginio ilgį. Norėdami pradėti imti 40 sek. Mėginį, spustelėkite „Pradėti atranką“. Užuot priversę save kosėti, galite naudoti įvairaus ilgio kosulio pavyzdžius internete. Iš viso įrašykite 10–12 įvairaus ilgio kosulio mėginių.
4 žingsnis:
Įkėlę kosulio mėginius, dabar nustatykite etiketę kaip „triukšmas“ir surinkite dar 10–12 triukšmo mėginių.
Šie pavyzdžiai skirti modulio mokymui, tolesniuose veiksmuose rinksime bandymo duomenis. Bandymo duomenys turėtų sudaryti ne mažiau kaip 30% mokymo duomenų, todėl surinkite 3 „triukšmo“ir 4–5 „kosulio“pavyzdžius. Užuot rinkę savo duomenis, galite importuoti mūsų duomenų rinkinį į savo „Edge Impulse“paskyrą naudodami „Edge“„Impulse CLI Uploader“. Norėdami įdiegti „CLI Uploader“, pirmiausia atsisiųskite ir įdiekite „Node.js“į savo nešiojamąjį kompiuterį. Po to atidarykite komandų eilutę ir įveskite žemiau esančią komandą:
npm įdiegti -g edge-impulse-cli
Dabar atsisiųskite duomenų rinkinį (duomenų rinkinio nuoroda) ir išskleiskite failą į savo projekto aplanką. Atidarykite komandų eilutę ir eikite į duomenų rinkinio vietą ir paleiskite šias komandas:
kraštas-impulsų įkėlėjas-valymo-impulsų įkėlėjas-kategorijos mokymo mokymas/*. json
edge-impulse-uploader-kategorijos mokymo mokymai/*. cbor
edge-impulse-uploader --kategorijos testavimas/*. json edge-impulse-uploader --kategorijos testavimas/*. cbor
5 žingsnis: modelio mokymas ir kodo keitimas
Kadangi duomenų rinkinys yra paruoštas, dabar sukursime impulsą duomenims. Norėdami tai padaryti, eikite į puslapį „Sukurti impulsą“.
Dabar puslapyje „Sukurti impulsą“spustelėkite „Pridėti apdorojimo bloką“. Kitame lange pasirinkite garso (MFCC) bloką. Po to spustelėkite „Pridėti mokymosi bloką“ir pasirinkite bloką „Neural Network“(Keras). Tada spustelėkite „Išsaugoti impulsą“.
Kitame žingsnyje eikite į MFCC puslapį ir spustelėkite „Generuoti funkcijas“. Jis sukurs MFCC blokus visiems mūsų garso langams.
Po to eikite į „NN klasifikatoriaus“puslapį ir viršutiniame dešiniajame „Neuroninio tinklo nustatymų“kampe spustelėkite tris taškus ir pasirinkite „Perjungti į„ Keras “(ekspertų) režimą“.
Pakeiskite originalą šiuo kodu ir pakeiskite „Minimalus patikimumo įvertinimas“į „0,70“. Tada spustelėkite mygtuką „Pradėti treniruotę“. Tai pradės mokyti jūsų modelį.
importuoti „tensorflow“kaip „tensorflow.keras.models“importuoti nuosekliai iš „tensorflow.keras.layers“importuoti tankų, „InputLayer“, „Dropout“, „Flatten“, „Reshape“, „BatchNormalization“, „Conv2D“, „MaxPooling2D“, „AveragePooling2D“iš „tensorflow.keras.oprasimers“. MaxNorm # modelio architektūros modelis = Sequential () model.add (InputLayer (input_shape = (X_train.shape [1],), name = 'x_input')) model.add (Pertvarkyti ((int (X_train.shape [1]) 13), 13, 1), input_shape = (X_train.shape [1],))) model.add (Conv2D (10, kernel_size = 5, aktivavimas = 'relu', padding = 'tas pats', kernel_constraint = MaxNorm (3)))) model.add (AveragePooling2D (pool_size = 2, padding = 'same')) model.add (Conv2D (5, kernel_size = 5, aktivavimas = 'relu', padding = 'tas pats', kernel_constraint = MaxNorm (3))]) model.add (AveragePooling2D (pool_size = 2, padding = 'same')) model.add (Flatten ()) model.add (Tankus (klasės, aktyvinimas = 'softmax', pavadinimas = 'y_pred', kernel_constraint = MaxNorm) (3))) # tai kontroliuoja mokymosi dažnio pasirinkimą = Adomas (lr = 0,005, beta_ 1 = 0,9, beta_2 = 0,999) # treniruoti neuroninio tinklo modelį.com. Rinkti (nuostoliai = 'kategorinė_kryžminė krypčių sistema, optimizatorius = pasirinkti, metrika = [' tikslumas ']) model.fit (X_train, Y_train, batch_size = 32, epochs = 9, validation_data = (X_test, Y_test), išsamus = 2)
6 žingsnis:
Išmokę modelį, jis parodys mokymo rezultatus. Man tikslumas buvo 96,5%, o praradimas - 0,10, todėl gerai tęsti.
Dabar, kai mūsų kosulio aptikimo modelis yra paruoštas, mes įdiegsime šį modelį kaip „Arduino“biblioteką. Prieš atsisiųsdami modelį kaip biblioteką, galite patikrinti našumą apsilankę puslapyje „Tiesioginė klasifikacija“. Eikite į puslapį „Diegimas“ir pasirinkite „Arduino biblioteka“. Dabar slinkite žemyn ir spustelėkite „Sukurti“, kad pradėtumėte procesą. Tai sukurs „Arduino“biblioteką jūsų projektui.
Dabar pridėkite biblioteką prie „Arduino IDE“. Norėdami tai padaryti, atidarykite „Arduino IDE“ir spustelėkite Eskizas> Įtraukti biblioteką> Pridėti. ZIP biblioteką. Tada įkelkite pavyzdį, eidami į Failas> Pavyzdžiai> Jūsų projekto pavadinimas - „Edge Impulse“> nano_ble33_sense_microphone. Mes padarysime keletą kodo pakeitimų, kad galėtume įspėti, kai „Arduino“aptiks kosulį. Tam „Arduino“yra prijungtas garso signalas ir, kai jis aptinka kosulį, šviesos diodas mirksi tris kartus. Pakeitimai atliekami tuštumos ciklo () funkcijose, kuriose spausdinamos triukšmo ir kosulio vertės. Originaliame kode kartu spausdinamos etiketės ir jų vertės. for (size_t ix = 0; ix <EI_CLASSIFIER_LABEL_COUNT; ix ++) {ei_printf (" %s: %.5f / n", result.classification [ix].label, result.classification [ix].value); } Mes išsaugosime triukšmo ir kosulio vertes skirtinguose kintamuosiuose ir palyginsime triukšmo vertes. Jei triukšmo vertė nukrenta žemiau 0,50, tai reiškia, kad kosulio vertė yra didesnė nei 0,50, ir jis skleis garsą. Pakeiskite kilpos () kodo originalą taip: for (size_t ix = 1; ix <EI_CLASSIFIER_LABEL_COUNT; ix ++) {Serial.print (result.classification [ix].value); float Duomenys = rezultatas.klasifikacija [ix].value; if (duomenys <0,50) {Serial.print („Aptiktas kosulys“); aliarmas (); }} Atlikę pakeitimus, įkelkite kodą į „Arduino“. Atidarykite nuoseklųjį monitorių esant 115200 baudų.
Taigi taip galima sukurti kosulio aptikimo aparatą, tai nėra labai efektyvus būdas surasti bet kurį įtariamą COVID19, tačiau jis gali puikiai veikti kai kuriose perpildytose vietose.
7 žingsnis: kodas
Raskite pridedamą failą, Ir jei jums tai patiko, nepamirškite balsuoti už mane žemiau esančiame konkurse.
Rekomenduojamas:
„Pasidaryk pats“kišeninio dydžio nuolatinės srovės įtampos matuoklis: 5 žingsniai
„Pasidaryk pats“kišeninio dydžio nuolatinės įtampos matuoklis: šioje instrukcijoje aš jums parodysiu, kaip patiems pasidaryti „pasidaryk pats“kišeninio dydžio nuolatinės įtampos matuoklį su pjezo garsiniu signalu. Viskas, ko jums reikia, yra pagrindinės elektronikos žinios ir šiek tiek laiko. Jei turite klausimų ar problemų, galite
„GranCare“: kišeninio dydžio sveikatos monitorius!: 8 žingsniai (su nuotraukomis)
„GranCare“: kišeninio dydžio sveikatos monitorius !: Taigi leiskite man pradėti, turiu močiutę. Ji yra šiek tiek sena, bet labai tinkama ir sveika. Na, neseniai buvome pas gydytoją, kad ji kas mėnesį tikrintųsi, ir gydytojas patarė jai kasdien vaikščioti bent pusvalandį, kad sąnariai būtų sveiki. Mums reikia
Kišeninio dydžio vandenilio/deguonies generatorius: 5 žingsniai
Kišeninio dydžio vandenilio/deguonies generatorius: Vandeniliu labai smagu žaisti, tačiau efektyviausi generatoriai yra dideli. Norėjau pagaminti kažką, kas būtų maža ir galėtų gaminti vandenilį. Ši pamoka parodys, kaip pasidaryti kišeninį vandenilio/deguonies generatorių. Deja, tai ne
Kaip pasidaryti kišeninio dydžio daiktų interneto oro stotį: 7 žingsniai (su nuotraukomis)
Kaip pasidaryti kišeninio dydžio daiktų interneto oro stotį: Sveiki, skaitytojau! Šioje pamokoje sužinosite, kaip padaryti mažą „Weather Cube“naudojant „D1 mini“(ESP8266), prijungtą prie jūsų namų „WiFi“, kad galėtumėte žiūrėti į jo išvestį bet kurioje žemės vietoje, žinoma, jei tik turite interneto ryšį
Nuo kišeninio fazerio iki kišeninio lazerio: 6 žingsniai
Iš kišeninio fazerio į kišeninį lazerį: Šiame projekte mes paversime mažą žaislą „Star Trek Phaser“, kurį radau „Barnes & Kilnus lazerinei rodyklei. Turiu du iš šių fazerių, o viename išsikrovė akumuliatorius, kad įsižiebtų, todėl nusprendžiau jį pakeisti į įkraunamą lazerį