Satura rādītājs:

Kabatas izmēra klepus detektors: 7 soļi
Kabatas izmēra klepus detektors: 7 soļi

Video: Kabatas izmēra klepus detektors: 7 soļi

Video: Kabatas izmēra klepus detektors: 7 soļi
Video: 20 товаров для автомобиля с Алиэкспресс, автотовары №33 2024, Jūlijs
Anonim
Kabatas izmēra klepus detektors
Kabatas izmēra klepus detektors

Covid19 patiešām ir vēsturiska pandēmija, kas ļoti slikti ietekmē visu pasauli, un cilvēki veido daudz jaunu ierīču, lai ar to cīnītos. Mēs esam izveidojuši arī automātisku dezinfekcijas mašīnu un termisko pistoli bezkontakta temperatūras pārbaudei. Šodien mēs izveidosim vēl vienu ierīci cīņai ar koronavīrusu. Tā ir klepus noteikšanas sistēma, kas var atšķirt troksni un klepus skaņu un var palīdzēt atrast aizdomās turēto par koronavīrusu. Tam tiks izmantotas mašīnmācīšanās metodes.

Šajā apmācībā mēs izveidosim klepus noteikšanas sistēmu, izmantojot Arduino 33 BLE Sense un Edge Impulse Studio. Tas var atšķirt parasto fona troksni un klepu reālā laika audio. Mēs izmantojām Edge Impulse Studio, lai apmācītu klepus un fona trokšņa paraugu datu kopu un izveidotu ļoti optimizētu TInyML modeli, kas reālā laikā var noteikt klepus skaņu.

Piegādes

Aparatūra

  • Arduino 33 BLE Sense
  • LEDJumper
  • Vadi

Programmatūra

  • Edge Impulse Studio
  • Arduino IDE

1. darbība: shēmas shēma

Ķēdes diagramma
Ķēdes diagramma
Ķēdes diagramma
Ķēdes diagramma

Ķēdes shēma klepus noteikšanai, izmantojot Arduino 33 BLE Sense, ir dota iepriekš. Arduino 33 BLE putojošā daļa nebija pieejama, tāpēc es izmantoju Arduino Nano, jo abiem ir vienāda tapas.

Gaismas diodes pozitīvais vads ir savienots ar Arduino 33 BLE sensoru 4. ciparu tapu, un negatīvais vads ir pievienots Arduino GND tapai.

2. darbība. Datu kopas izveide klepus noteikšanas mašīnai

Datu kopas izveide klepus noteikšanas mašīnai
Datu kopas izveide klepus noteikšanas mašīnai

Kā minēts iepriekš, mēs izmantojam Edge Impulse Studio, lai apmācītu savu klepus noteikšanas modeli. Šim nolūkam mums ir jāapkopo datu kopa, kurā ir datu paraugi, kurus mēs vēlētos atpazīt savā Arduino. Tā kā mērķis ir atklāt klepu, jums ir jāapkopo daži tā paraugi un daži citi paraugi trokšņa dēļ, lai varētu atšķirt klepu un citus trokšņus. Mēs izveidosim datu kopu ar divām klasēm “klepus” un “troksnis”. Lai izveidotu datu kopu, izveidojiet Edge Impulse kontu, pārbaudiet savu kontu un pēc tam sāciet jaunu projektu. Jūs varat ielādēt paraugus, izmantojot savu mobilo tālruni, savu Arduino dēli vai importēt datu kopu savā malas impulsa kontā. Vienkāršākais veids, kā ievietot paraugus savā kontā, ir izmantot mobilo tālruni. Lai to izdarītu, mobilais tālrunis ir jāsavieno ar Edge Impulse. Lai savienotu savu mobilo tālruni, noklikšķiniet uz “Ierīces” un pēc tam noklikšķiniet uz “Savienot jaunu ierīci”.

3. darbība: izveidojiet savienojumu ar mobilo tālruni

Izveidojiet savienojumu ar mobilo tālruni
Izveidojiet savienojumu ar mobilo tālruni

Tagad nākamajā logā noklikšķiniet uz “Izmantot savu mobilo tālruni”, un parādīsies QR kods. Skenējiet QR kodu ar savu mobilo tālruni, izmantojot Google Lens vai citu QR kodu skenera lietotni.

Tādējādi tālrunis tiks savienots ar Edge Impulse studio.

Kad tālrunis ir savienots ar Edge Impulse Studio, tagad varat ielādēt savus paraugus. Lai ielādētu paraugus, noklikšķiniet uz “Datu iegūšana”. Tagad lapā Datu iegūšana ievadiet etiķetes nosaukumu, atlasiet mikrofonu kā sensoru un ievadiet parauga garumu. Noklikšķiniet uz “Sākt paraugu ņemšanu”, lai sāktu 40 sek parauga paraugu ņemšanu. Tā vietā, lai piespiestu sevi klepus, varat izmantot dažāda garuma tiešsaistes klepus paraugus. Ierakstiet kopā 10 līdz 12 dažāda garuma klepus paraugus.

4. solis:

Attēls
Attēls
Attēls
Attēls

Pēc klepus paraugu augšupielādes iestatiet etiķeti uz “troksnis” un savāc vēl 10 līdz 12 trokšņa paraugus.

Šie paraugi ir paredzēti moduļa apmācībai, nākamajos soļos mēs apkoposim testa datus. Pārbaudes datiem jābūt vismaz 30% no apmācības datiem, tāpēc savāciet trīs “trokšņa” un 4–5 “klepus” paraugus. Tā vietā, lai apkopotu savus datus, varat importēt mūsu datu kopu savā Edge Impulse kontā, izmantojot Edge Impulsu CLI augšupielādētājs. Lai instalētu CLI augšupielādētāju, vispirms lejupielādējiet un instalējiet Node.js savā klēpjdatorā. Pēc tam atveriet komandu uzvedni un ievadiet zemāk esošo komandu:

npm instalēt -g edge-impulse-cli

Tagad lejupielādējiet datu kopu (datu kopas saite) un izvelciet failu savā projekta mapē. Atveriet komandu uzvedni un dodieties uz datu kopas atrašanās vietu un palaidiet tālāk norādītās komandas.

malas impulsa augšupielādētājs-tīrīšanas-impulsa augšupielādētājs-kategorijas apmācība/*. json

malas impulsu augšupielādētājs-kategorijas apmācība/*. cbor

malas impulsa augšupielādētājs-kategorijas testēšana/*. json edge-impulse-uploader-kategorijas testēšana/*. cbor

5. solis: modeļa apmācība un koda pielāgošana

Tā kā datu kopa ir gatava, tagad mēs radīsim impulsu datiem. Lai to izdarītu, dodieties uz lapu “Izveidot impulsu”.

Tagad lapā “Izveidot impulsu” noklikšķiniet uz “Pievienot apstrādes bloku”. Nākamajā logā atlasiet audio (MFCC) bloku. Pēc tam noklikšķiniet uz “Pievienot mācību bloku” un atlasiet neironu tīkla (Keras) bloku. Pēc tam noklikšķiniet uz “Saglabāt impulsu”.

Nākamajā solī dodieties uz MFCC lapu un pēc tam noklikšķiniet uz “Ģenerēt funkcijas”. Tas ģenerēs MFCC blokus visiem mūsu audio logiem.

Pēc tam dodieties uz lapu “NN klasifikators” un noklikšķiniet uz trim punktiem “Neironu tīkla iestatījumu” augšējā labajā stūrī un atlasiet “Pārslēgties uz Keras (ekspertu) režīmu”.

Nomainiet oriģinālu ar šādu kodu un mainiet “Minimālais ticamības vērtējums” uz “0,70”. Pēc tam noklikšķiniet uz pogas “Sākt apmācību”. Tas sāks apmācīt jūsu modeli.

importēt tensorflow kā tffor tensorflow.keras.models importēt secīgi no tensorflow.keras.layers importēt blīvus, InputLayer, Dropout, Flatten, Reshape, BatchNormalization, Conv2D, MaxPooling2D, AveragePooling2D no tensorflow.keras.optimimizers importēt no MaxNorm # modeļa arhitektūras modelis = Secīga () 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, aktivizēšana = 'relu', polsterējums = 'tas pats', kernel_constraint = MaxNorm (3)))) model.add (AveragePooling2D (pool_size = 2, padding = 'same')) model.add (Conv2D (5, kernel_size = 5, aktivizācija = 'relu', padding = 'same', kernel_constraint = MaxNorm (3))]) model.add (AveragePooling2D (pool_size = 2, padding = 'same')) model.add (Flatten ()) model.add (Blīvs (klases, aktivizēšana = 'softmax', name = 'y_pred', kernel_constraint = MaxNorm) (3))) # tas kontrolē mācīšanās ātruma izvēli = Ādams (lr = 0,005, beta_ 1 = 0,9, beta_2 = 0,999) # apmācīt neironu tīkla modeli. Apkopot (zudums = 'kategoriska_crossentropija', optimizētājs = izvēlēties, metrika = ['precizitāte']) model.fit (X_train, Y_train, batch_size = 32, epochs = 9, validation_data = (X_test, Y_test), detalizēts = 2)

6. darbība

Pēc modeļa apmācības tas parādīs mācību sniegumu. Manuprāt, precizitāte bija 96,5%, bet zaudējums - 0,10, tāpēc ir labi turpināt.

Tagad, kad mūsu klepus noteikšanas modelis ir gatavs, mēs šo modeli izmantosim kā Arduino bibliotēku. Pirms modeļa lejupielādes kā bibliotēkas varat pārbaudīt veiktspēju, dodoties uz lapu “Live Classification”. Dodieties uz lapu “Izvietošana” un atlasiet “Arduino bibliotēka”. Tagad ritiniet uz leju un noklikšķiniet uz “Veidot”, lai sāktu procesu. Tas jūsu projektam izveidos Arduino bibliotēku.

Tagad pievienojiet bibliotēku savā Arduino IDE. Lai to izdarītu, atveriet Arduino IDE un pēc tam noklikšķiniet uz Skice> Iekļaut bibliotēku> Pievienot. ZIP bibliotēka. Pēc tam ielādējiet piemēru, dodoties uz Fails> Piemēri> Jūsu projekta nosaukums - Edge Impulse> nano_ble33_sense_microphone. Mēs veiksim dažas izmaiņas kodā, lai mēs varētu brīdināt, kad Arduino atklāj klepu. Šim nolūkam skaņas signāls ir savienots ar Arduino un, kad tas atklāj klepu, gaismas diode mirgos trīs reizes. Izmaiņas tiek veiktas void loop () funkcijās, kurās tiek drukātas trokšņa un klepus vērtības. Sākotnējā kodā tas drukā gan etiķetes, gan to vērtības kopā. par (size_t ix = 0; ix <EI_CLASSIFIER_LABEL_COUNT; ix ++) {ei_printf (" %s: %.5f / n", result.classification [ix].label, result.classification [ix].value); } Mēs saglabāsim gan trokšņa, gan klepus vērtības dažādos mainīgos un salīdzināsim trokšņa vērtības. Ja trokšņa vērtība ir zemāka par 0,50, tas nozīmē, ka klepus vērtība ir lielāka par 0,50, un tā radīs skaņu. Aizstājiet cilpas () koda oriģinālu ar šādu: for (size_t ix = 1; ix <EI_CLASSIFIER_LABEL_COUNT; ix ++) {Serial.print (result.classification [ix].value); float Data = result.classification [ix].value; ja (dati <0,50) {Serial.print ("Atklāts klepus"); modinātājs (); }} Pēc izmaiņu veikšanas augšupielādējiet kodu savā Arduino. Atveriet seriālo monitoru ar 115200 bodu.

Tātad šādā veidā var izveidot klepus noteikšanas mašīnu, tā nav ļoti efektīva metode, lai atrastu aizdomās turēto par Covid19, taču tā var labi darboties dažās pārpildītās vietās.

7. solis: kods

Lūdzu atrodiet pievienoto failu, Un, ja jums tas patika, neaizmirstiet nobalsot par mani zemāk esošajā konkursā.

Ieteicams: