Turinys:

Kišeninio dydžio kosulio jutiklis: 7 žingsniai
Kišeninio dydžio kosulio jutiklis: 7 žingsniai

Video: Kišeninio dydžio kosulio jutiklis: 7 žingsniai

Video: Kišeninio dydžio kosulio jutiklis: 7 žingsniai
Video: kišeninio drono testas / FQ777 124 quick test 2024, Liepa
Anonim
Kišeninio dydžio kosulio detektorius
Kišeninio dydžio kosulio detektorius

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

Grandinės schema
Grandinės schema
Grandinės schema
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į

Kosulio aptikimo mašinos duomenų rinkinio kūrimas
Kosulio aptikimo mašinos duomenų rinkinio kūrimas

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

Prisijunkite prie mobiliojo telefono
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:

Vaizdas
Vaizdas
Vaizdas
Vaizdas

Į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: