Përmbajtje:

Detektor i kollës me madhësi xhepi: 7 hapa
Detektor i kollës me madhësi xhepi: 7 hapa

Video: Detektor i kollës me madhësi xhepi: 7 hapa

Video: Detektor i kollës me madhësi xhepi: 7 hapa
Video: Часть 2 - Трипланетная аудиокнига Э. Э. Смита (главы 5–8) 2024, Korrik
Anonim
Detektor i kollës me madhësi xhepi
Detektor i kollës me madhësi xhepi

COVID19 është me të vërtetë një pandemi historike që prek gjithë botën shumë keq dhe njerëzit po ndërtojnë shumë pajisje të reja për të luftuar me të. Ne gjithashtu kemi ndërtuar një makinë sanitare automatike dhe Armë Termike për kontrollimin e temperaturës pa Kontakt. Sot do të ndërtojmë një pajisje tjetër për të ndihmuar në luftimin e Coronavirus. Shtë një sistem zbulimi i kollës, i cili mund të bëjë dallimin midis zhurmës dhe tingullit të kollës dhe mund të ndihmojë në gjetjen e të dyshuarit për Corona. Për këtë do të përdorë teknika të mësimit të makinerisë.

Në këtë tutorial, ne do të ndërtojmë një sistem të zbulimit të kollës duke përdorur Arduino 33 BLE Sense dhe Edge Impulse Studio. Mund të bëjë dallimin midis zhurmës normale të sfondit dhe kollitjes në audio në kohë reale. Ne përdorëm Edge Impulse Studio për të trajnuar një grup të dhënash të mostrave të kollitjes dhe zhurmës në sfond dhe për të ndërtuar një model TInyML shumë të optimizuar, që mund të zbulojë një tingull kollë në kohë reale.

Furnizimet

Hardware

  • Arduino 33 BLE Sense
  • Bluzë LED
  • Telat

Softuer

  • Studio Edge Impulse
  • Arduino IDE

Hapi 1: Diagrami i Qarkut

Diagrami i qarkut
Diagrami i qarkut
Diagrami i qarkut
Diagrami i qarkut

Diagrami qarkor për zbulimin e kollës duke përdorur Arduino 33 BLE Sense është dhënë më lart. Pjesa e ngrirjes për Arduino 33 BLE nuk ishte e disponueshme, kështu që unë përdor Arduino Nano pasi të dy kanë të njëjtin pin-out.

Plumbi pozitiv i LED është i lidhur me kunjin dixhital 4 të Arduino 33 BLE sense dhe plumbi negativ është i lidhur me kunjin GND të Arduino.

Hapi 2: Krijimi i grupit të të dhënave për makinën e zbulimit të kollës

Krijimi i bazës së të dhënave për makinën e zbulimit të kollës
Krijimi i bazës së të dhënave për makinën e zbulimit të kollës

Siç u përmend më herët, ne po përdorim Edge Impulse Studio për të trajnuar modelin tonë të zbulimit të kollës. Për këtë, ne duhet të mbledhim një grup të dhënash që ka mostrat e të dhënave që ne do të donim të ishim në gjendje të njihnim në Arduino -n tonë. Meqenëse qëllimi është zbulimi i kollës, do t'ju duhet të mbledhni disa mostra të atij dhe disa mostra të tjera për zhurmë, në mënyrë që të bëjë dallimin midis Kollitjes dhe Zhurmave të tjera. Ne do të krijojmë një grup të dhënash me dy klasa "kollë" dhe "zhurmë". Për të krijuar një grup të dhënash, krijoni një llogari Edge Impulse, verifikoni llogarinë tuaj dhe më pas filloni një projekt të ri. Ju mund t'i ngarkoni mostrat duke përdorur celularin tuaj, bordin tuaj Arduino ose mund të importoni një grup të dhënash në llogarinë tuaj të impulsit buzë. Mënyra më e lehtë për të ngarkuar mostrat në llogarinë tuaj është duke përdorur telefonin tuaj celular. Për këtë, duhet të lidhni celularin tuaj me Edge Impulse. Për të lidhur telefonin tuaj celular, klikoni në "Pajisjet" dhe pastaj klikoni në "Lidhni një pajisje të re".

Hapi 3: Lidhu me telefonin celular

Lidhu me telefonin celular
Lidhu me telefonin celular

Tani në dritaren tjetër, klikoni në "Përdorni telefonin tuaj celular" dhe do të shfaqet një kod QR. Skanoni kodin QR me telefonin tuaj celular duke përdorur Google Lens ose aplikacionin tjetër të skanimit të kodit QR.

Kjo do të lidhë telefonin tuaj me studion Edge Impulse.

Me telefonin tuaj të lidhur me Edge Impulse Studio, tani mund të ngarkoni mostrat tuaja. Për të ngarkuar mostrat, klikoni në "Marrja e të dhënave". Tani në faqen e marrjes së të dhënave, futni emrin e etiketës, zgjidhni mikrofonin si sensor dhe futni gjatësinë e mostrës. Klikoni në 'Filloni marrjen e mostrave', për të filluar marrjen e mostrës së një mostre 40 sek. Në vend që të detyroheni të kolliteni, mund të përdorni mostra online të kollës me gjatësi të ndryshme. Regjistroni gjithsej 10 deri në 12 mostra kollë me gjatësi të ndryshme.

Hapi 4:

Imazhi
Imazhi
Imazhi
Imazhi

Pas ngarkimit të mostrave të kollës, tani vendosni etiketën në 'zhurmë' dhe mblidhni 10 deri në 12 mostra të tjera të zhurmës.

Këto mostra janë për Trajnimin e modulit, në hapat e ardhshëm, ne do të mbledhim të dhënat e testit. Të dhënat e testit duhet të jenë të paktën 30% të të dhënave të trajnimit, kështu që mblidhni 3 mostrat e "zhurmës" dhe 4 deri në 5 mostra të "kollës". Në vend që të grumbulloni të dhënat tuaja, mund të importoni grupin tonë të të dhënave në llogarinë tuaj Edge Impulse duke përdorur Edge Ngarkuesi Impulse CLI. Për të instaluar Ngarkuesin CLI, së pari, shkarkoni dhe instaloni Node.js në laptopin tuaj. Pas kësaj hapni komandën dhe futni komandën më poshtë:

npm install -g edge-impuls-cli

Tani shkarkoni grupin e të dhënave (Link Dataset) dhe nxirrni skedarin në dosjen e projektit tuaj. Hapni vijën e komandës dhe lundroni në vendndodhjen e të dhënave dhe ekzekutoni komandat e mëposhtme:

edge-impulse-uploader --cleanedge-impulse-uploader-trajnim i kategorisë së trajnimit/*. json

edge-impulse-uploader-trajnim i kategorisë së trajnimit/*. cbor

edge-impulse-uploader-testimi i testimit të kategorisë/*. json edge-impulse-uploader-testimi i testimit të kategorisë/*. cbor

Hapi 5: Trajnimi i modelit dhe rregullimi i kodit

Ndërsa grupi i të dhënave është gati, tani ne do të krijojmë një impuls për të dhënat. Për këtë, shkoni në faqen "Krijo impuls".

Tani në faqen "Krijo impuls", klikoni në "Shto një bllok përpunimi". Në dritaren tjetër, zgjidhni bllokun Audio (MFCC). Pas kësaj klikoni në 'Shto një bllok mësimi' dhe zgjidhni bllokun e Rrjetit Neural (Keras). Pastaj klikoni në 'Ruaj Impulsin'.

Në hapin tjetër, shkoni në faqen MFCC dhe më pas klikoni në 'Gjeneroni Veçoritë'. Do të gjenerojë blloqe MFCC për të gjitha dritaret tona të audios.

Pas kësaj, shkoni te faqja "NN Classifier" dhe klikoni në tre pikat në këndin e sipërm të djathtë të "Cilësimeve të Rrjetit Neural" dhe zgjidhni "Kaloni në modalitetin Keras (ekspert)".

Zëvendësoni origjinalin me kodin e mëposhtëm dhe ndryshoni 'Vlerësimi minimal i besimit' në '0.70'. Pastaj klikoni në butonin ‘Fillo stërvitjen’. Do të fillojë të trajnojë modelin tuaj.

import tensorflow si tffrom tensorflow.keras.modele import Sequential nga tensorflow.keras.layers import Dense, InputLayer, Dropout, Flatten, Reshape, BatchNormalization, Conv2D, MaxPooling2D, AveragePooling2D nga tensorflow.keras.optimonstrators Adams MaxNorm # model arkitekture model = Sekuenciale () model.add (InputLayer (input_shape = (X_train.shape [1],), emri = 'x_input')) model.add (Ndrysho ((int (X_train.shape [1] /) 13), 13, 1), input_shape = (X_train.shape [1],))) model.add (Conv2D (10, kernel_size = 5, activation = 'relu', padding = 'same', kernel_constraint = MaxNorm (3))) model.add (AveragePooling2D (pool_size = 2, padding = 'same')) model.add (Conv2D (5, kernel_size = 5, activation = 'relu', padding = 'same', kernel_constraint = MaxNorm (3))) model.add (AveragePooling2D (size_ pool = 2, padding = 'same')) model.add (Flatten ()) model.add (I dendur (klasa, aktivizimi = 'softmax', name = 'y_pred', kernel_constraint = MaxNorm (3))) # kjo kontrollon shkallën e të mësuarit opt = Adam (lr = 0.005, beta_ 1 = 0.9, beta_2 = 0.999) # trajnoni modelin e rrjetit nervor. Grumbull (humbje = 'kryqëzim kategorik', optimizues = zgjedh, metrikë = ['saktësi']) model.fit (X_train, Y_train, batch_size = 32, epoka = 9, validation_data = (X_test, Y_test), e folur = 2)

Hapi 6:

Pas trajnimit të modelit, ai do të tregojë performancën e trajnimit. Për mua, saktësia ishte 96.5% dhe humbja ishte 0.10 që është mirë të vazhdohet.

Tani pasi modeli ynë i zbulimit të kollës është gati, ne do ta vendosim këtë model si bibliotekë Arduino. Para se të shkarkoni modelin si bibliotekë, mund të testoni performancën duke shkuar në faqen "Klasifikimi i drejtpërdrejtë". Shkoni në faqen "Vendosja" dhe zgjidhni "Biblioteka Arduino". Tani lëvizni poshtë dhe klikoni në "Ndërto" për të filluar procesin. Kjo do të krijojë një bibliotekë Arduino për projektin tuaj.

Tani shtoni bibliotekën në IDE tuaj Arduino. Për këtë hapni Arduino IDE dhe pastaj klikoni në Skicë> Përfshi Bibliotekën> Biblioteka Shto. ZIP. Pastaj, ngarkoni një shembull duke shkuar te Skedari> Shembuj> Emri i projektit tuaj - Edge Impulse> nano_ble33_sense_microphone. Ne do të bëjmë disa ndryshime në kod në mënyrë që të mund të bëjmë një tingull alarmi kur Arduino zbulon kollën. Për këtë, një zile është e ndërlidhur me Arduino dhe sa herë që zbulon kollën, LED do të pulsojë tre herë. Ndryshimet bëhen në funksionet void loop () ku printon vlerat e zhurmës dhe kollës. Në kodin origjinal, po shtyp të dy etiketat dhe vlerat e tyre së bashku. për (size_t ix = 0; ix <EI_CLASSIFIER_LABEL_COUNT; ix ++) {ei_printf (" %s: %.5f / n", result.classification [ix].label, result.classification [ix].vlera); } Ne do të ruajmë vlerat e zhurmës dhe kollës në variabla të ndryshëm dhe do të krahasojmë vlerat e zhurmës. Nëse vlera e zhurmës bie nën 0.50 kjo do të thotë se vlera e kollës është më shumë se 0.50 dhe do të bëjë zhurmë. Zëvendësoni kodin origjinal për loop () me këtë: për (size_t ix = 1; ix <EI_CLASSIFIER_LABEL_COUNT; ix ++) {Serial.print (result.classification [ix].vlera); float Data = rezultati.klasifikimi [ix].vlera; nëse (Të dhënat <0.50) {Serial.print ("Kollë e Zbuluar"); alarm (); }} Pasi të keni bërë ndryshimet, ngarkoni kodin në Arduino tuaj. Hapni monitorin serik në 115200 baud.

Kështu mund të ndërtohet një makinë për zbulimin e kollës, nuk është një metodë shumë efektive për të gjetur ndonjë të dyshuar për COVID19, por mund të funksionojë mirë në disa zona të mbushura me njerëz.

Hapi 7: Kodi

Ju lutemi gjeni skedarin e bashkangjitur, Dhe nëse ju pëlqeu mos harroni të më votoni në konkursin më poshtë.

Recommended: