Talaan ng mga Nilalaman:

Detalye ng Laki ng Saku sa Pocket: 7 Mga Hakbang
Detalye ng Laki ng Saku sa Pocket: 7 Mga Hakbang

Video: Detalye ng Laki ng Saku sa Pocket: 7 Mga Hakbang

Video: Detalye ng Laki ng Saku sa Pocket: 7 Mga Hakbang
Video: Брэнсон Тэй | Это «НОВОЕ» 7 приложений заплатит вам $ 700 ... 2024, Nobyembre
Anonim
Pocket Sized Cough Detector
Pocket Sized Cough Detector

Ang COVID19 ay talagang isang makasaysayang pandemikong nakakaapekto sa buong mundo nang masama at ang mga tao ay nagtatayo ng maraming mga bagong aparato upang makipaglaban dito. Nakagawa rin kami ng isang awtomatikong sanitization machine at Thermal Gun para sa screening ng temperatura na Walang contact. Ngayon ay magtatayo kami ng isa pang aparato upang matulungan ang pakikipaglaban sa Coronavirus. Ito ay isang sistema ng pagtuklas ng ubo, na makikilala sa pagitan ng ingay at tunog ng ubo at makakatulong sa paghanap ng hinala ni Corona. Gumagamit ito ng mga diskarte sa pag-aaral ng machine para doon.

Sa tutorial na ito, magtatayo kami ng isang sistema ng Pagtuklas ng Cough gamit ang Arduino 33 BLE Sense at Edge Impulse Studio. Maaari nitong makilala ang pagitan ng normal na ingay sa background at pag-ubo sa real-time na audio. Ginamit namin ang Edge Impulse Studio upang sanayin ang isang dataset ng pag-ubo at mga sample ng ingay sa background at bumuo ng isang lubos na na-optimize na modelo ng TInyML, na makakakita ng tunog ng Ubo sa real-time.

Mga gamit

Hardware

  • Arduino 33 BLE Sense
  • LEDJumper
  • Mga wire

Software

  • Edge Impulse Studio
  • Arduino IDE

Hakbang 1: Diagram ng Circuit

Diagram ng Circuit
Diagram ng Circuit
Diagram ng Circuit
Diagram ng Circuit

Circuit Diagram para sa Pagtuklas ng Cough Gamit ang Arduino 33 BLE Sense ay ibinibigay sa itaas. Hindi magagamit ang fritzing part para sa Arduino 33 BLE, kaya ginamit ko ang Arduino Nano na pareho ang parehong pin-out.

Ang Positibong tingga ng LED ay konektado sa digital pin 4 ng Arduino 33 BLE sense at Negatibong tingga ay konektado sa GND pin ng Arduino.

Hakbang 2: Paglikha ng Dataset para sa Cough Detection Machine

Paglikha ng Dataset para sa Cough Detection Machine
Paglikha ng Dataset para sa Cough Detection Machine

Tulad ng nabanggit kanina, gumagamit kami ng Edge Impulse Studio upang sanayin ang aming modelo ng pagtuklas ng ubo. Para doon, kailangan naming kolektahin ang isang dataset na may mga sample ng data na nais naming makilala sa aming Arduino. Dahil ang layunin ay upang makita ang ubo, kakailanganin mong kolektahin ang ilang mga sample ng iyon at ilang iba pang mga sample para sa ingay, upang makilala nito ang pagitan ng Ubo at iba pang mga Ingay. Lilikha kami ng isang dataset na may dalawang klase na "ubo" at "ingay". Upang lumikha ng isang dataset, lumikha ng isang Edge Impulse account, i-verify ang iyong account at pagkatapos ay magsimula ng isang bagong proyekto. Maaari mong mai-load ang mga sample sa pamamagitan ng paggamit ng iyong mobile, iyong Arduino board o maaari kang mag-import ng isang dataset sa iyong edge na salpok na account. Ang pinakamadaling paraan upang mai-load ang mga sample sa iyong account ay sa pamamagitan ng paggamit ng iyong mobile phone. Para doon, kailangan mong ikonekta ang iyong mobile sa Edge Impulse. Upang ikonekta ang iyong Mobile phone, mag-click sa 'Mga Device' at pagkatapos ay mag-click sa 'Kumonekta ng isang Bagong Device'.

Hakbang 3: Kumonekta sa Mobile Phone

Kumonekta sa Mobile Phone
Kumonekta sa Mobile Phone

Ngayon sa susunod na window, mag-click sa 'Gamitin ang iyong Mobile Phone', at lilitaw ang isang QR code. I-scan ang QR code gamit ang iyong Mobile Phone gamit ang Google Lens o iba pang QR code scanner app.

Ikonekta nito ang iyong telepono sa Edge Impulse studio.

Sa iyong telepono na konektado sa Edge Impulse Studio, maaari mo na ngayong mai-load ang iyong mga sample. Upang mai-load ang mga sample, mag-click sa 'Pagkuha ng data'. Ngayon sa pahina ng Pagkuha ng data, ipasok ang pangalan ng label, piliin ang mikropono bilang isang sensor, at ipasok ang haba ng sample. Mag-click sa 'Simulang sampling', upang simulan ang pag-sample ng isang 40 sec sample. Sa halip na pilitin ang iyong sarili na umubo, maaari kang gumamit ng mga sample ng online na ubo na may iba't ibang haba. Itala ang isang kabuuang 10 hanggang 12 mga sample ng ubo na magkakaiba ang haba.

Hakbang 4:

Larawan
Larawan
Larawan
Larawan

Matapos i-upload ang mga sample ng ubo, itakda ngayon ang label sa 'ingay' at mangolekta ng isa pang 10 hanggang 12 mga sample ng ingay.

Ang mga sample na ito ay para sa Pagsasanay ng module, sa mga susunod na hakbang, kokolektahin namin ang Data ng Pagsubok. Ang data ng pagsubok ay dapat na hindi bababa sa 30% ng data ng pagsasanay, kaya kolektahin ang 3 mga sample ng 'ingay' at 4 hanggang 5 mga sample ng 'ubo'. Sa halip na kolektahin ang iyong data, maaari mong mai-import ang aming dataset sa iyong Edge Impulse account gamit ang Edge Impulse CLI Uploader. Upang mai-install ang CLI Uploader, una, mag-download at mag-install ng Node.js sa iyong laptop. Pagkatapos nito buksan ang prompt ng utos at ipasok ang utos sa ibaba:

npm install -g edge-impulse-kliyente

Ngayon i-download ang dataset (Link ng Dataset) at i-extract ang file sa iyong folder ng proyekto. Buksan ang prompt ng utos at mag-navigate sa lokasyon ng dataset at patakbuhin ang mga utos sa ibaba:

edge-impulse-uploader --cleanedge-impulse-uploader --category training training / *. json

edge-impulse-uploader - pagsasanay sa pagsasanay sa kategorya / *. cbor

edge-impulse-uploader --category testing test / *. json edge-impulse-uploader --category testing test / *. cbor

Hakbang 5: Pagsasanay sa Modelo at Pagbabago ng Code

Habang handa ang dataset, ngayon lilikha kami ng isang salpok para sa data. Para doon pumunta sa pahina na 'Lumikha ng salpok'.

Ngayon sa pahina ng 'Lumikha ng salpok', mag-click sa 'Magdagdag ng isang block ng pagproseso'. Sa susunod na window, piliin ang Audio (MFCC) block. Matapos ang pag-click sa 'Magdagdag ng isang bloke ng pag-aaral' at piliin ang bloke ng Neural Network (Keras). Pagkatapos mag-click sa 'I-save ang Impulse'.

Sa susunod na hakbang, pumunta sa pahina ng MFCC at pagkatapos ay mag-click sa 'Bumuo ng Mga Tampok'. Lilikha ito ng mga bloke ng MFCC para sa lahat ng aming windows ng audio.

Pagkatapos nito pumunta sa pahina ng 'NN Classifier' at mag-click sa tatlong mga tuldok sa kanang sulok sa itaas ng 'Mga setting ng Neural Network' at piliin ang mode na 'Lumipat sa Keras (dalubhasa)'.

Palitan ang orihinal ng sumusunod na code at palitan ang 'Minimum na rating ng kumpiyansa' sa '0.70'. Pagkatapos mag-click sa pindutang 'Magsimula sa pagsasanay'. Magsisimula itong sanayin ang iyong modelo.

i-import ang tensorflow bilang tffrom tensorflow.keras.models import Sequential mula sa tensorflow.keras.layers import Dense, InputLayer, Dropout, Flatten, Reshape, BatchNormalization, Conv2D, MaxPooling2D, AveragePooling2D mula sa tensorflow.keras.optimizers import si Adam mula sa tensorflowintsker Modelong arkitektura ng MaxNorm # model = Sequential () 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, activation = 'relu', padding = 'pareho', kernel_constraint = MaxNorm (3))) model.add (AveragePooling2D (pool_size = 2, padding = 'pareho')) model.add (Conv2D (5, kernel_size = 5, activation = 'relu', padding = 'pareho', kernel_constraint = MaxNorm (3))) model.add (AveragePooling2D (pool_size = 2, padding = 'pareho')) model.add (Flatten ()) model.add (Dense (mga klase, pag-activate = 'softmax', pangalan = 'y_pred', kernel_constraint = MaxNorm (3))) # kinokontrol nito ang rate ng pag-aaral na opt = Adam (lr = 0.005, beta_ 1 = 0.9, beta_2 = 0.999) # sanayin ang neural network model.compile (loss = 'categorical_crossentropy', optimizer = opt, mga sukatan = ['kawastuhan']) modelo. Mod (X_train, Y_train, batch_size = 32, epochs = 9, validation_data = (X_test, Y_test), verbose = 2)

Hakbang 6:

Pagkatapos ng pagsasanay sa modelo, ipapakita nito ang pagganap ng pagsasanay. Para sa akin, ang kawastuhan ay 96.5% at ang pagkawala ay 0.10 na mabuting magpatuloy.

Ngayon dahil handa na ang aming modelo ng pagtuklas ng ubo, ilalagay namin ang modelong ito bilang Arduino library. Bago i-download ang modelo bilang isang silid-aklatan, maaari mong subukan ang pagganap sa pamamagitan ng pagpunta sa pahina ng 'Live na Pag-uuri'. Pumunta sa pahina ng 'Pag-deploy' at piliin ang 'Arduino Library'. Ngayon mag-scroll pababa at mag-click sa 'Build' upang simulan ang proseso. Bumubuo ito ng isang Arduino library para sa iyong proyekto.

Idagdag ngayon ang library sa iyong Arduino IDE. Para doon buksan ang Arduino IDE at pagkatapos ay mag-click sa Sketch> Isama ang Library> Add. ZIP library. Pagkatapos, mag-load ng isang halimbawa sa pamamagitan ng pagpunta sa File> Mga Halimbawa> Ang iyong pangalan ng proyekto - Edge Impulse> nano_ble33_sense_microphone. Gumagawa kami ng ilang mga pagbabago sa code upang makagawa kami ng isang alerto na tunog kapag nakita ng Arduino ang ubo. Para doon, ang isang buzzer ay nakipag-interfaced sa Arduino at tuwing nakakakita ito ng ubo, ang LED ay kumikislap ng tatlong beses. Ang mga pagbabago ay ginawa sa void loop () na mga pagpapaandar kung saan ito ay nagpi-print ng mga halaga ng ingay at ubo. Sa orihinal na code, pini-print nito ang parehong mga label at kanilang mga halaga nang magkasama. para sa (size_t ix = 0; ix <EI_CLASSIFIER_LABEL_COUNT; ix ++) {ei_printf ("% s:%.5f / n", resulta.classification [ix].label, resulta.classification [ix].value); } Kami ay magse-save ang parehong halaga ng ingay at ubo sa iba't ibang mga variable at ihambing ang mga halaga ng ingay. Kung ang halaga ng ingay ay napupunta sa ibaba 0.50 na nangangahulugang ang halaga ng ubo ay higit sa 0.50 at gagawa ito ng tunog. Palitan ang orihinal para sa loop () code ng ito: para sa (size_t ix = 1; ix <EI_CLASSIFIER_LABEL_COUNT; ix ++) {Serial.print (result.classification [ix].value); float Data = resulta.classification [ix].value; kung (Data <0.50) {Serial.print ("Cough Detected"); alarma (); }} Matapos gawin ang mga pagbabago, i-upload ang code sa iyong Arduino. Buksan ang serial monitor sa 115200 baud.

Kaya't ito ay kung paano maitatayo ang isang machine ng pagtuklas ng ubo, hindi ito isang napaka mabisang pamamaraan upang makahanap ng anumang hinihinalang COVID19 ngunit maaari itong gumana nang maayos sa ilang lugar na masikip.

Hakbang 7: Code

Mangyaring hanapin ang nakalakip na file, At kung nagustuhan mo huwag kalimutan na iboto ako sa paligsahan sa ibaba.

Inirerekumendang: