Obsah:
- Zásoby
- Krok 1: Schéma zapojení
- Krok 2: Vytvoření datové sady pro stroj pro detekci kašle
- Krok 3: Připojte se k mobilnímu telefonu
- Krok 4:
- Krok 5: Trénování modelu a vyladění kódu
- Krok 6:
- Krok 7: Kód
Video: Kapesní detektor kašle: 7 kroků
2024 Autor: John Day | [email protected]. Naposledy změněno: 2024-01-30 08:18
COVID19 je opravdu historická pandemie, která velmi špatně zasahuje celý svět a lidé staví spoustu nových zařízení, aby s ním mohli bojovat. Postavili jsme také automatický dezinfekční stroj a termální pistoli pro bezkontaktní teplotní screening. Dnes postavíme ještě jedno zařízení, které pomůže v boji s koronavirem. Jedná se o systém detekce kašle, který dokáže rozlišit hluk a zvuk kašle a může pomoci najít podezřelého z Corony. K tomu bude využívat techniky strojového učení.
V tomto tutoriálu se chystáme vybudovat systém pro detekci kašle pomocí Arduino 33 BLE Sense a Edge Impulse Studio. Ve zvuku v reálném čase dokáže rozlišovat mezi běžným šumem na pozadí a kašlem. Edge Impulse Studio jsme použili k trénování datové sady vzorků kašle a šumu na pozadí a vybudování vysoce optimalizovaného modelu TInyML, který dokáže detekovat zvuk kašle v reálném čase.
Zásoby
Hardware
- Arduino 33 BLE Sense
- LED propojka
- Dráty
Software
- Edge Impulse Studio
- Arduino IDE
Krok 1: Schéma zapojení
Schéma zapojení pro detekci kašle pomocí Arduino 33 BLE Sense je uvedeno výše. Fritzovací část pro Arduino 33 BLE nebyla k dispozici, takže jsem použil Arduino Nano, protože oba mají stejný pin-out.
Kladný vodič LED je připojen k digitálnímu pinu 4 Arduino 33 BLE sense a záporný vodič je připojen ke kolíku GND Arduina.
Krok 2: Vytvoření datové sady pro stroj pro detekci kašle
Jak již bylo zmíněno dříve, k trénování našeho modelu detekce kašle používáme Edge Impulse Studio. K tomu musíme shromáždit datovou sadu, která obsahuje vzorky dat, které bychom chtěli na našem Arduinu rozpoznat. Vzhledem k tomu, že cílem je detekovat kašel, budete muset shromáždit několik jeho vzorků a další vzorky na hluk, aby bylo možné rozlišovat mezi kašlem a jinými zvuky. Vytvoříme datovou sadu se dvěma třídami „kašel“a „hluk“. Chcete -li vytvořit datovou sadu, vytvořte účet Edge Impulse, ověřte svůj účet a poté spusťte nový projekt. Ukázky můžete načíst pomocí mobilního telefonu, desky Arduino nebo můžete importovat datovou sadu do svého účtu Edge Impuls. Nejjednodušší způsob načtení vzorků na váš účet je pomocí mobilního telefonu. K tomu musíte svůj mobil propojit s Edge Impulse. Chcete -li připojit svůj mobilní telefon, klikněte na „Zařízení“a poté na „Připojit nové zařízení“.
Krok 3: Připojte se k mobilnímu telefonu
Nyní v dalším okně klikněte na „Použít mobilní telefon“a zobrazí se QR kód. Naskenujte QR kód pomocí svého mobilního telefonu pomocí Google Lens nebo jiné aplikace pro skenování QR kódů.
Tím se váš telefon propojí s Edge Impulse studio.
S telefonem propojeným s Edge Impulse Studio můžete nyní načíst své vzorky. Chcete -li načíst vzorky, klikněte na „Získávání dat“. Nyní na stránce Získávání dat zadejte název štítku, vyberte mikrofon jako senzor a zadejte délku vzorku. Kliknutím na „Spustit vzorkování“zahájíte vzorkování 40sekundového vzorku. Místo toho, abyste se ke kašli nutili, můžete použít online vzorky kašle různé délky. Zaznamenejte celkem 10 až 12 vzorků kašle různé délky.
Krok 4:
Po nahrání vzorků kašle nyní nastavte štítek na „šum“a nasbírejte dalších 10 až 12 vzorků hluku.
Tyto vzorky jsou pro školení modulu, v dalších krocích budeme shromažďovat testovací data. Testovací data by měla tvořit alespoň 30% tréninkových dat, shromážděte tedy 3 vzorky „hluku“a 4 až 5 vzorků „kašle“. Namísto shromažďování dat můžete importovat naši datovou sadu do svého účtu Edge Impulse pomocí Edge Impulse CLI Uploader. Chcete -li nainstalovat CLI Uploader, nejprve si stáhněte a nainstalujte Node.js do svého notebooku. Poté otevřete příkazový řádek a zadejte níže uvedený příkaz:
npm install -g edge-impulse-cli
Nyní si stáhněte datovou sadu (Dataset Link) a rozbalte soubor do složky projektu. Otevřete příkazový řádek, přejděte do umístění datové sady a spusťte následující příkazy:
edge-impulse-uploader --cleanedge-impulse-uploader-školení školení kategorie/*. json
edge-impulse-uploader-školení školení kategorie/*. cbor
edge-impulse-uploader-testování testování kategorie/*. json edge-impulse-uploader-testování testování kategorie/*. cbor
Krok 5: Trénování modelu a vyladění kódu
Jakmile je datová sada připravena, vytvoříme impuls pro data. Chcete -li to provést, přejděte na stránku „Vytvořit impuls“.
Nyní na stránce „Vytvořit impuls“klikněte na „Přidat blok zpracování“. V dalším okně vyberte blok Audio (MFCC). Poté klikněte na „Přidat blok učení“a vyberte blok Neural Network (Keras). Poté klikněte na „Uložit impuls“.
V dalším kroku přejděte na stránku MFCC a poté klikněte na „Generovat funkce“. Bude generovat bloky MFCC pro všechna naše okna zvuku.
Poté přejděte na stránku „Klasifikátor NN“a klikněte na tři tečky v pravém horním rohu „Nastavení neurální sítě“a vyberte „Přepnout do režimu Keras (expert)“.
Nahraďte originál následujícím kódem a změňte „Minimální spolehlivost“na „0,70“. Poté klikněte na tlačítko „Zahájit trénink“. Začne trénovat váš model.
importovat tensorflow jako tffrom 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 architektury 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é (třídy, aktivace = 'softmax', název = 'y_pred', kernel_constraint = MaxNorm (3))) # toto řídí rychlost učení opt = Adam (lr = 0,005, beta_ 1 = 0,9, beta_2 = 0,999) # trénujte model neuronové sítě. Hromada (ztráta = 'categoryorical_crossentropy', optimalizátor = opt, metrics = ['přesnost']) model.fit (X_train, Y_train, batch_size = 32, epochs = 9, validation_data = (X_test, Y_test), podrobný = 2)
Krok 6:
Po natrénování modelu předvede tréninkový výkon. Pro mě byla přesnost 96,5% a ztráta 0,10, což je dobré pokračovat.
Nyní, když je náš model detekce kašle připraven, nasadíme tento model jako knihovnu Arduino. Před stažením modelu jako knihovny si můžete vyzkoušet výkon na stránce „Klasická klasifikace“. Přejděte na stránku „Nasazení“a vyberte „Knihovna Arduino“. Nyní přejděte dolů a kliknutím na „Sestavit“spusťte proces. Tím pro váš projekt vytvoříte knihovnu Arduino.
Nyní přidejte knihovnu do svého Arduino IDE. K tomu otevřete Arduino IDE a poté klikněte na Sketch> Include Library> Add. ZIP library. Poté načtěte příklad v části Soubor> Příklady> Název vašeho projektu - Edge Impulse> nano_ble33_sense_microphone. Provedeme některé změny v kódu, abychom mohli vydat výstražný zvuk, když Arduino detekuje kašel. Za tímto účelem je bzučák propojen s Arduino a kdykoli detekuje kašel, LED třikrát zabliká. Změny se provádějí ve funkcích void loop (), kde se tisknou hodnoty hluku a kašle. V původním kódu je tisk štítků a jejich hodnot dohromady. pro (velikost_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šle do různých proměnných a porovnáme hodnoty hluku. Pokud hodnota hluku klesne pod 0,50, znamená to, že hodnota kašle je větší než 0,50 a vydá zvuk. Nahraďte původní kód for loop () tímto: for (size_t ix = 1; ix <EI_CLASSIFIER_LABEL_COUNT; ix ++) {Serial.print (result.classification [ix].value); float Data = result.classification [ix].value; if (Data <0,50) {Serial.print ("Kašel detekován"); poplach(); }} Po provedení změn nahrajte kód do svého Arduina. Otevřete sériový monitor na 115200 baudů.
Takhle lze postavit stroj pro detekci kašle, není to příliš účinná metoda k nalezení jakéhokoli podezřelého z COVID19, ale může fungovat pěkně v nějaké přeplněné oblasti.
Krok 7: Kód
Prosím, najděte připojený soubor, A pokud se vám to líbilo, nezapomeňte mi dát hlas v níže uvedené soutěži.
Doporučuje:
Kapesní hodinky pro kutily: 9 kroků
DIY kapesní hodinky: V tomto rušném světě je sledování času nezbytné pro lepší výkon a být fandou, proč nevytvořit zařízení pro sledování času. Díky technologii existují zařízení zvaná 'hodinky' ale! když děláš věci sám potěšením
Kapesní vizualizátor signálu (kapesní osciloskop): 10 kroků (s obrázky)
Pocket Signal Visualizer (Pocket Oscilloscope): Ahoj všichni, všichni děláme tolik věcí každý den. Pro každou práci tam, kde je potřeba nějaké nářadí. To je pro výrobu, měření, dokončování atd. Takže pro elektronické pracovníky potřebují nástroje jako páječku, multimetr, osciloskop atd
Kapesní detektor CO (oxidu uhelnatého): 5 kroků
Kapesní detektor CO (oxidu uhelnatého): Jak název napovídá, jedná se o kapesní detektor CO, který se používá k detekci oxidu uhelnatého ve vzduchu, naším cílem bylo zajistit, aby bylo toto zařízení přenosné a aby se vešlo do kapesní velikosti. problém znečištění ovzduší v důsledku industrializace ev
Detektor kouře IOT: Aktualizujte stávající detektor kouře pomocí IOT: 6 kroků (s obrázky)
Detektor kouře IOT: Aktualizujte stávající detektor kouře pomocí IOT: Seznam přispěvatelů, Vynálezce: Tan Siew Chin, Tan Yit Peng, Tan Wee Heng Vedoucí: Dr. Chia Kim Seng Katedra mechatronického a robotického inženýrství, Fakulta elektrotechniky a elektroniky, Universiti Tun Hussein Onn Malajsie. Distribuovat
Nejchladnější USB L.E.D. Kapesní světlo (kapesní vstup): 6 kroků
Nejchladnější USB L.E.D. Pocket-Sized Light (Pocket-Sized Entry): V tomto Instructable vám ukážu, jak vyrobit USB napájený L.E.D. světlo, které lze složit do velikosti plechovky X-it Mints a snadno se vejde do kapsy. Pokud se vám to líbí, určitě to dejte + a hlasujte pro mě v soutěži! Materiály a