Obsah:

Vreckový detektor kašľa: 7 krokov
Vreckový detektor kašľa: 7 krokov

Video: Vreckový detektor kašľa: 7 krokov

Video: Vreckový detektor kašľa: 7 krokov
Video: Chapter 07 - Triplanetary by E. E. Smith - Pirates of Space 2024, November
Anonim
Vreckový detektor kašľa
Vreckový detektor kašľa

COVID19 je skutočne historická pandémia, ktorá veľmi zle postihuje celý svet a ľudia stavajú veľa nových zariadení, ktoré s ním bojujú. Postavili sme tiež automatický dezinfekčný stroj a tepelnú pištoľ na bezkontaktné snímanie teploty. Dnes postavíme ďalšie zariadenie, ktoré pomôže v boji s koronavírusom. Ide o systém detekcie kašľa, ktorý dokáže rozlíšiť hluk a zvuk kašľa a môže pomôcť pri hľadaní podozrivých z Corony. Na to bude používať techniky strojového učenia.

V tomto tutoriáli sa chystáme vybudovať systém na detekciu kašľa pomocou Arduino 33 BLE Sense a Edge Impulse Studio. V zvuku v reálnom čase môže rozlišovať medzi normálnym hlukom na pozadí a kašľom. Edge Impulse Studio sme použili na školenie súboru údajov o vzorkách kašľa a hluku na pozadí a vybudovali sme vysoko optimalizovaný model TInyML, ktorý dokáže v reálnom čase rozpoznať zvuk kašľa.

Zásoby

Hardvér

  • Arduino 33 BLE Sense
  • LED prepojka
  • Drôty

Softvér

  • Edge Impulse Studio
  • Arduino IDE

Krok 1: Schéma zapojenia

Schéma zapojenia
Schéma zapojenia
Schéma zapojenia
Schéma zapojenia

Schéma zapojenia na detekciu kašľa pomocou systému Arduino 33 BLE Sense je uvedený vyššie. Fritzujúca časť pre Arduino 33 BLE nebola k dispozícii, takže som použil Arduino Nano, pretože obe majú rovnaký vývod.

Pozitívny vodič LED je pripojený k digitálnemu pinu 4 Arduino 33 BLE sense a negatívny vodič je pripojený k kolíku GND Arduina.

Krok 2: Vytvorenie množiny údajov pre stroj na detekciu kašľa

Vytvorenie množiny údajov pre stroj na detekciu kašľa
Vytvorenie množiny údajov pre stroj na detekciu kašľa

Ako už bolo spomenuté, na trénovanie nášho modelu detekcie kašľa používame Edge Impulse Studio. Na to musíme zhromaždiť množinu údajov, ktorá obsahuje vzorky údajov, ktoré by sme chceli na našom Arduine rozpoznať. Pretože cieľom je zistiť kašeľ, budete musieť zozbierať niekoľko jeho vzoriek a niekoľko ďalších vzoriek na šum, aby bolo možné rozlíšiť kašeľ a iné zvuky. Vytvoríme súbor údajov s dvoma triedami „kašeľ“a „hluk“. Ak chcete vytvoriť množinu údajov, vytvorte si účet Edge Impulse, overte svoje konto a potom začnite nový projekt. Vzorky môžete načítať pomocou mobilného telefónu, dosky Arduino alebo môžete importovať množinu údajov do svojho účtu Edge Impuls. Ukážky môžete najľahšie načítať do svojho účtu pomocou mobilného telefónu. Na to musíte svoj mobil prepojiť s Edge Impulse. Ak chcete pripojiť svoj mobilný telefón, kliknite na „Zariadenia“a potom na „Pripojiť nové zariadenie“.

Krok 3: Pripojte sa k mobilnému telefónu

Pripojte sa k mobilnému telefónu
Pripojte sa k mobilnému telefónu

Teraz v nasledujúcom okne kliknite na „Použiť mobilný telefón“a zobrazí sa QR kód. Naskenujte QR kód pomocou mobilného telefónu pomocou objektívu Google alebo inej aplikácie na skenovanie QR kódov.

Váš telefón sa tak prepojí so štúdiom Edge Impulse.

S telefónom prepojeným s Edge Impulse Studio môžete teraz načítať svoje vzorky. Ak chcete načítať vzorky, kliknite na položku „Získavanie údajov“. Teraz na stránke Získavanie údajov zadajte názov štítka, vyberte mikrofón ako snímač a zadajte dĺžku vzorky. Kliknutím na „Spustiť vzorkovanie“spustíte vzorkovanie 40 -sekundovej vzorky. Namiesto toho, aby ste sa prinútili kašľať, môžete použiť online ukážky kašľa rôznych dĺžok. Zaznamenajte celkom 10 až 12 vzoriek kašľa rôznych dĺžok.

Krok 4:

Obrázok
Obrázok
Obrázok
Obrázok

Po nahratí vzoriek kašľa teraz nastavte štítok na „hluk“a zozbierajte ďalších 10 až 12 vzoriek hluku.

Tieto vzorky sú určené na školenie modulu, v ďalších krokoch budeme zbierať testovacie údaje. Testovacie údaje by mali predstavovať najmenej 30% tréningových údajov, zozbierajte teda 3 vzorky „hluku“a 4 až 5 vzoriek „kašľa“. Namiesto zhromažďovania údajov môžete náš súbor údajov importovať do svojho účtu Edge Impulse pomocou Edge. Impulse CLI Uploader. Ak chcete nainštalovať CLI Uploader, najskôr si stiahnite a nainštalujte Node.js do svojho prenosného počítača. Potom otvorte príkazový riadok a zadajte nasledujúci príkaz:

npm install -g edge-impulse-cli

Teraz stiahnite množinu údajov (Odkaz na množinu údajov) a rozbaľte súbor do priečinka projektu. Otvorte príkazový riadok, prejdite na umiestnenie množiny údajov a spustite nasledujúce príkazy:

edge-impulse-uploader --cleanedge-impulse-uploader-školenie kategórie//. json

edge-impulse-uploader-školenie kategórie//. sk

edge-impulse-uploader-testovanie testovania kategórií/*. json edge-impulse-uploader-testovanie testovania kategórie/*. cbor

Krok 5: Tréning modelu a doladenie kódu

Keď je súbor údajov pripravený, teraz vytvoríme impulz pre údaje. Za týmto účelom prejdite na stránku „Vytvoriť impulz“.

Teraz na stránke „Vytvoriť impulz“kliknite na „Pridať blok spracovania“. V nasledujúcom okne vyberte blok Audio (MFCC). Potom kliknite na „Pridať vzdelávací blok“a vyberte blok Neural Network (Keras). Potom kliknite na „Uložiť impulz“.

V ďalšom kroku prejdite na stránku MFCC a potom kliknite na „Generovať funkcie“. Generuje bloky MFCC pre všetky naše zvukové okná.

Potom prejdite na stránku „Klasifikátor NN“a kliknite na tri bodky v pravom hornom rohu „Nastavenia neurónovej siete“a vyberte „Prepnúť do režimu Keras (expert)“.

Nahraďte originál nasledujúcim kódom a zmeňte „Minimálne hodnotenie spoľahlivosti“na „0,70“. Potom kliknite na tlačidlo „Začať trénovať“. Začne to trénovať váš model.

import tensorflow ako tens from tensorflow.keras.models import Sequential from tensorflow.keras.layers import Dense, InputLayer, Dropout, Flatten, Reshape, BatchNormalization, Conv2D, MaxPooling2D, averagePooling2D from tensorflow.keras.optimizers import Adam from tensorflow.keras.conas MaxNorm # model architektúry 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 = '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 (pool_size = 2, padding = 'same')) model.add (Flatten ()) model.add (Husté (triedy, aktivácia = 'softmax', názov = 'y_pred', obmedzenie jadra = MaxNorm (3))) # toto riadi rýchlosť učenia sa opt = Adam (lr = 0,005, beta_ 1 = 0,9, beta_2 = 0,999) # trénujte model neurónovej siete. Hromada (strata = 'categoryorical_crossentropy', optimalizátor = opt, metriky = ['presnosť']) model.fit (X_train, Y_train, batch_size = 32, epochs = 9, validation_data = (X_test, Y_test), podrobne = 2)

Krok 6:

Po natrénovaní modelu ukáže tréningový výkon. Pre mňa bola presnosť 96,5% a strata 0,10, s ktorou je dobré pokračovať.

Teraz, keď je náš model detekcie kašľa pripravený, nasadíme tento model ako knižnicu Arduino. Pred stiahnutím modelu ako knižnice si môžete vyskúšať výkonnosť na stránke „Živá klasifikácia“. Prejdite na stránku „Nasadenie“a vyberte „Knižnica Arduino“. Teraz prejdite nadol a kliknutím na „Zostaviť“spustite postup. Tým sa pre váš projekt vybuduje knižnica Arduino.

Teraz pridajte knižnicu do svojho Arduino IDE. Za týmto účelom otvorte Arduino IDE a potom kliknite na položku Skica> Zahrnúť knižnicu> Knižnica Add. ZIP. Potom načítajte príklad v časti Súbor> Príklady> Názov vášho projektu - Edge Impulse> nano_ble33_sense_microphone. Vykonáme niekoľko zmien v kóde, aby sme mohli vydať výstražný zvuk, keď Arduino zistí kašeľ. Za týmto účelom je bzučiak prepojený s Arduino a vždy, keď zistí kašeľ, LED trikrát zabliká. Zmeny sa vykonávajú vo funkciách void loop (), kde sa tlačia hodnoty hluku a kašľa. V pôvodnom kóde je tlač štítkov a ich hodnôt spoločne. pre (size_t ix = 0; ix <EI_CLASSIFIER_LABEL_COUNT; ix ++) {ei_printf (" %s: %.5f / n", result.classification [ix].label, result.classification [ix].value); } Uložíme hodnoty hluku a kašľa do rôznych premenných a porovnáme hodnoty hluku. Ak hodnota hluku klesne pod 0,50, znamená to, že hodnota kašľa je viac ako 0,50 a zvuk zaznie. Nahraďte kód originálu for loop () týmto: for (size_t ix = 1; ix <EI_CLASSIFIER_LABEL_COUNT; ix ++) {Serial.print (result.classification [ix].value); float Údaje = result.classification [ix].hodnota; if (Údaje <0,50) {Serial.print ("Zistený kašeľ"); alarm (); }} Po vykonaní zmien nahrajte kód do svojho Arduina. Otvorte sériový monitor na 115200 baudov.

Takto je možné postaviť stroj na detekciu kašľa. Nie je to veľmi efektívna metóda na nájdenie akéhokoľvek podozrivého na COVID19, ale môže fungovať dobre v preplnenej oblasti.

Krok 7: Kód

Prosím nájdite priložený súbor, A ak sa vám páčilo, nezabudnite mi dať hlas v nižšie uvedenej súťaži.

Odporúča: