Obsah:
- Zásoby
- Krok 1: Schéma zapojenia
- Krok 2: Vytvorenie množiny údajov pre stroj na detekciu kašľa
- Krok 3: Pripojte sa k mobilnému telefónu
- Krok 4:
- Krok 5: Tréning modelu a doladenie kódu
- Krok 6:
- Krok 7: Kód
Video: Vreckový detektor kašľa: 7 krokov
2024 Autor: John Day | [email protected]. Naposledy zmenené: 2024-01-30 11:55
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 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
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
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:
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:
DIY vreckový merač napätia DC: 5 krokov
DIY vreckový merač napätia DC: V tomto návode vám ukážem, ako si vyrobiť vreckový merač jednosmerného napätia DIY s piezovým bzučiakom na kontrolu obvodu sami. Všetko, čo potrebujete, je základná znalosť elektroniky a trochu času. Ak máte akékoľvek otázky alebo problémy, môžete
Vreckový zbytočný box (s osobnosťou): 9 krokov (s obrázkami)
Vreckový zbytočný box (s osobnosťou): Aj keď sme možno veľmi ďaleko od povstania robotov, existuje jeden stroj, ktorý už ľuďom protirečí, aj keď tým najmenším možným spôsobom. Či už to chcete nazvať zbytočnou škatuľou alebo strojom, ktorý necháte osamote, tento odvážny a drzý robot je
Vreckový vizualizér signálu (vreckový osciloskop): 10 krokov (s obrázkami)
Vreckový vizualizér signálu (vreckový osciloskop): Dobrý deň, všetci robíme veľa vecí každý deň. Na každú prácu tam, kde potrebujete nejaké nástroje. To je na výrobu, meranie, konečnú úpravu atď. Takže pre elektronických pracovníkov potrebujú nástroje ako spájkovačku, multimetr, osciloskop atď.
Vreckový detektor CO (oxidu uhoľnatého): 5 krokov
Vreckový detektor CO (oxidu uhoľnatého): Ako už názov napovedá, jedná sa o vreckový detektor CO, ktorý sa používa na detekciu oxidu uhoľnatého vo vzduchu, naším cieľom bolo urobiť toto zariadenie prenosným a ktoré sa zmestí do veľkosti vrecka. Teraz stojíme tvárou v tvár problém znečistenia ovzdušia v dôsledku industrializácie
Vreckový alttoidový vreckový super spájkovač Breadboard Junior: 4 kroky
Altoids Pocket Super spájkovačka Breadboard Junior: Bezpájkovacia doska je veľmi príjemná na rýchle prototypovanie obvodu, sú lacné a dajú sa používať takmer neobmedzene. Trochu som premýšľal o tom, čo by som mohol urobiť na zlepšenie na základnej doske, a na to som prišiel. Môj dizajn